Does anyone has a clue what went wrong in the following attempt? I am trying to call the R built-in function Rdqags() from my C program for numerical integration. Following are the C program and the corresponding R program: C program --------- void test(double *a, double *b, double *epsabs, double *epsrel, double *result, double *abserr, int *neval, int *ier, int *limit, int *lenw, int *last, int *iwork, double *work, double *exx) { void *ex; ex = exx; Rdqags(tmpfun, ex, a, b, epsabs, epsrel, result, abserr, neval, ier, limit, lenw, last, iwork, work); } // User supplied function void tmpfun(double *x, int n, void *ex) { int i; double *tmp; tmp = (double *)ex; // for(i=1;i<=n;i++) {x[i] = pow(x[i], *tmp);} for(i=1;i<=n;i++) {x[i] = 2.0*x[i];} return; } R program --------- test <- function(a, b, epsabs .Machine$double.eps^0.25, epsrel = epsabs, limit = 100, lenw = 400, ex = -0.5) { val <- .C("test", as.double(a), as.double(b), as.double(epsabs), as.double(epsrel), result = double(1), abserr = as.double(-1), neval = as.integer(-1), ier = as.integer(-1), as.integer(limit), as.integer(lenw), last = as.integer(-1), integer(limit+1), double(lenw+1), as.double(ex), NAOK=T, specialsok=T ) val } I followed the instructions in Writing R Extensions -> The R API -> Integration, and the program was complied and loaded into R successfully. However, calling R function test(0, 20)$result gives me 385.0554, not 400! The returned ier value of test(0, 20) is 0! But if I call integrate(function(x) 2 * x, lower = 0, upper = 20), I got the correct result of 400. Apparently, there must be something wrong in my programs. But I cannot see where is the mistake. Do I miss anything obvious here? The programs above were tested in R-1.9.0 for MS-Windows and the compiler is MSC++ V6. I have used similar calls to the built-in random generators and never had any problems. Paul.