[Rcpp-devel] Rcpp catching a domain error

Qiang Kou qkou at umail.iu.edu
Thu Dec 11 16:27:35 CET 2014


Hi, Devin,

I don't whether this is the standard solution.

As I understand, the default error handler in GSL will abort the program
after printing error message. So you need to close it first.

In most time I don't use try-catch with GSL, I detect whether the result is
'nan' or not. Try the code below:

Best,

KK

// [[Rcpp::depends(RcppGSL)]]
#include <RcppGSL.h>
#include <gsl/gsl_sf_hyperg.h>

#include <Rcpp.h>
#include <math.h>
using namespace Rcpp;

// [[Rcpp::export]]
int test()
{
    gsl_set_error_handler_off();
    printf ("status = %f\n", gsl_sf_hyperg_2F1(1,1,1.1467003,1));
    printf ("status = %f\n", gsl_sf_hyperg_2F1(-10.34,2.05,3.05,0.1725));
    return 0;
}


On Thu, Dec 11, 2014 at 10:03 AM, Devin <devin.heer at gmail.com> wrote:

> Dear list
>
>
>
> My Rcpp source file contains a *gsl_sf_hyperg_2F1()* function, and for
> some input values to this function the return value is “NaN”, which leads
> in RStudio to an abortion error.
>
>
>
> In order to avoid abortion errors, I try to implement a try/catch
> exception handler:
>
> *// [[Rcpp::depends(RcppGSL)]]*
>
> *#include <RcppGSL.h>*
>
> *#include <gsl/gsl_sf_hyperg.h>*
>
>
>
> *#include <Rcpp.h>*
>
> *#include <math.h>*
>
> *using namespace Rcpp;*
>
>
>
> *// [[Rcpp::export]]*
>
> *int test()*
>
> *{*
>
> *    try{*
>
> *        gsl_sf_hyperg_2F1(1,1,1.1467003,1); //  abortion error since not
> defined*
>
> *    }*
>
> *    catch(std::domain_error& e){*
>
> *        std::cout << "Domain Error occurred!"  << std::endl;*
>
> *    }*
>
> *    return 0;*
>
> *} *
>
>
>
> This seems to be wrong, since it still causes an abortion error in RStudio.
>
>
>
> I appreciate any input
>
>
>
> Thanks
>
> Devin
>
>
>
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>



-- 
Qiang Kou
qkou at umail.iu.edu
School of Informatics and Computing, Indiana University
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20141211/923d3bc3/attachment-0001.html>


More information about the Rcpp-devel mailing list