From dfaden at gmail.com  Fri Apr 14 00:47:08 2006
From: dfaden at gmail.com (David Faden)
Date: Thu, 13 Apr 2006 17:47:08 -0500
Subject: [Rd] bus error on calling nmmin
Message-ID: <6730abff0604131547s1e774aadgf91fa93ea0ee8205@mail.gmail.com>

Hi,

I'm trying to get a toy program making use of nmmin to run
successfully. I've gotten to the point of compiling. However, when I
attempt to run my executable, I guess a bus error. I see that someone
else has asked about using nmmin before
<http://tolstoy.newcastle.edu.au/R/help/06/03/23944.html>, but I
haven't come across any replies.

Is there some documentation on how to call nmmin apart the optim help
page and the page in the R extensions manual giving the declaration?
What do I need to change in the below to get it to work? (I also get a
bus error with trace set to 0.)

The source code and an example session:

nmminDemo.c:
#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;
}

int main()
{
  double initial[1] = {1.5};
  double result[1];
  double value;
  int convergenceCode;
  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 = 4; /* tracing on */
  int fncount;
  const int maxit = 10000;
  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
$ ./a.out Bus error
$ gdb a.out
GNU gdb 5.3-20030128 (Apple version gdb-330.1) (Fri Jul 16 21:42:28 GMT 2004)
...
(gdb) run
Starting program: /Users/dfaden/Desktop/R/a.out
Reading symbols for shared libraries +......... done

Program received signal EXC_BAD_ACCESS, Could not access memory.
0x00000000 in ?? ()
(gdb) bt
#0  0x00000000 in ?? ()
Cannot access memory at address 0x0
Cannot access memory at address 0x0
#1  0x0054dd5c in REvprintf (format=0x5f0dc8 "%s", arg=0xbfffb5fc "")
at ../../../../R-2.1.1/src/main/printutils.c:541
#2  0x0054dab0 in REprintf (format=0xbfff9570 "Error: invalid
connection\n") at ../../../../R-2.1.1/src/main/printutils.c:458
#3  0x004de8c4 in verrorcall_dflt (call=0x0, format=0x5f0dc8 "%s",
ap=0xbfffda30 "???P") at ../../../../R-2.1.1/src/main/errors.c:470
#4  0x004dea1c in Rf_errorcall (call=0x5f0dc8, format=0xbfffb5fc "")
at ../../../../R-2.1.1/src/main/errors.c:514
#5  0x004deb38 in Rf_error (format=0xbfff9570 "Error: invalid
connection\n") at ../../../../R-2.1.1/src/main/errors.c:538
#6  0x004acc18 in getConnection (n=-1073769104) at
../../../../R-2.1.1/src/main/connections.c:95
#7  0x0054dc04 in Rvprintf (format=0x5fe004 "  Nelder-Mead direct
search function minimizer\n", arg=0xbffffb7c "???P???X???`") at
../../../../R-2.1.1/src/main/printutils.c:494
#8  0x0054da70 in Rprintf (format=0xbfff9570 "Error: invalid
connection\n") at ../../../../R-2.1.1/src/main/printutils.c:445
#9  0x0051bcec in nmmin (n=6575856, Bvec=0x5f0dc8, X=0xbffffd58,
Fmin=0xbffffd60, fminfn=0x2b8c <parabola>, fail=0xbffffd68,
abstol=9.9999999999999998e-17, intol=1e-08, ex=0x0, alpha=1, bet=0.5,
gamm=2, trace=4, fncount=0xbffffd9c, maxit=1000) at
../../../../R-2.1.1/src/main/optim.c:667
#10 0x00002ce0 in main () at nmminDemo.c:30

-----

I'm working under Mac OS X 10.3.9 with gcc 3.3 and R
platform powerpc-apple-darwin7.9.0
arch     powerpc
os       darwin7.9.0
system   powerpc, darwin7.9.0
status
major    2
minor    1.1
year     2005
month    06
day      20
language R

Thank you.

David



[Rd] bus error on calling nmmin
David Faden