Re: [Rd] bus error on calling nmmin

From: David Faden <dfaden_at_gmail.com>
Date: Fri 14 Apr 2006 - 17:30:49 GMT

2006/4/14, Prof Brian Ripley <ripley@stats.ox.ac.uk>:
> You appear to be trying to call nmmin from a standalone program.
> You linked against -lR, but failed to initialize R, hence the segfault.
>
> nmmin is not a part of R that is made available except to a running R
> process: it is documented in `Writing R Extensions' for use in R packages.

Thanks. Initializing R does seem to have fixed the problem. In this, I have followed the code in tests/Embedding, in particular embeddedRCall.c. I was led to this code by Section 7.1 of "Writing R Extensions."

Below is the corrected code and an example session:

#include <R_ext/Applic.h>
#include <stdio.h>

double parabola(int n, double *par, void *ex) {   double xm = par[0] - 1;
  return xm * xm + 13;
}

/*
 * Copied from tests/Embedded/embeddedRCall.c:
 */

extern int Rf_initEmbeddedR(int argc, char *argv[]);

int main()
{
  char *argv[]= {"nmminDemo", "--gui=none", "--silent"};   const int argc = 3;

  double initial[1] = {1.5};
  double result[1];
  double value;
  int convergenceCode;

  /*
   * The following values are based on the help
   * page for optim.
   */

  const double abstol = 1e-16;
  const double reltol = 1e-8;
  const double alpha = 1.0; /* reflection factor */   const double beta = 0.5; /* contraction factor */   const double gamm = 2.0; /* expansion factor */   const int trace = 0; /* tracing on */
  int fncount;
  const int maxit = 10000;

  Rf_initEmbeddedR(argc, argv);

  nmmin(1, initial, result, &value, parabola,

	&convergenceCode, abstol, reltol,
	NULL, alpha, beta, gamm,
	trace, &fncount, maxit);
  printf("fncount: %d\n", fncount);

  printf("convergence code: %d\n", convergenceCode);   printf("min of %f at x = %f\n", value, result[0]);   return 0;
}

$ gcc nmminDemo.c -g
-I/Library/Frameworks/R.framework/Versions/2.1.1/Resources/include -L/Library/Frameworks/R.framework/Versions/2.1.1/Resources/lib -lR $ R CMD ./a.out
fncount: 24
convergence code: 0
min of 13.000000 at x = 1.000195

--
David Faden, dfaden@iastate.edu
AIM: pitulx

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Sat Apr 15 03:59:42 2006

This archive was generated by hypermail 2.1.8 : Fri 14 Apr 2006 - 20:17:07 GMT