I was trying to understand some of the source in optimi.c and in the SANN source I see: SETCADR(OS->R_gcall, x); PROTECT_WITH_INDEX(s = eval(OS->R_gcall, OS->R_env), &ipx); REPROTECT(s = coerceVector(s, REALSXP), ipx); if(LENGTH(s) != n) error(_("candidate point in optim evaluated to length %d not %d"), LENGTH(s), n); I think I need a little help it it is not too much to ask. Admitedly I could search for the definition of each of these macros and after some time decipher their meaning. But in an effort to save some time I am appealing to this group. First, SETCADR(OS->R_gcall, x); I was unable to find thie function call in the sources it seems to be called everywhere so searches turn up many hits. Second, PROTECT_WITH_INDEX(s = eval(OS->R_gcall, OS->R_env), &ipx); I am assuming that this acutall calls the function pointed to by R_gcall. But, I am not sure where &ipx fits in and what PROTECT_WITH_INDEX does. I read the "wirting exstensions" documentation and this specific macro is dealt with in section 5.9.1 but I still am having a hard time understanding what is happening. Perhaps the added call to eval is confiusing me. I am assuing that this makes the function call. Third, REPROTECT(s = coerceVector(s, REALSXP), ipx); Again the vector ipx shows up. Would someone please help me to understand what this statement is doing? Thank you for your time and patience. Kevin