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

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to