How to locate code called by .External2()?
r
Solution
Notice that `C_optimhess` is an object, not a string.
> stats:::C_optimhess
$name
[1] "optimhess"
$address
<pointer: 0x266b1a0>
attr(,"class")
[1] "RegisteredNativeSymbol"
$dll
DLL name: stats
Filename: /usr/lib/R/library/stats/libs/stats.so
Dynamic lookup: FALSE
$numParameters
[1] 4
attr(,"class")
[1] "ExternalRoutine" "NativeSymbolInfo"
So you need to grep for "optimhess" in `$R_SOURCE_DIR/src/library/stats/src/`:
josh@compy: $R_SOURCE_DIR/src/library/stats/src
> grep optimhess *
init.c: EXTDEF(optimhess, 4),
optim.c:SEXP optimhess(SEXP call, SEXP op, SEXP args, SEXP rho)
statsR.h:SEXP optimhess(SEXP call, SEXP op, SEXP args, SEXP rho);
Problem
I would like to learn how `optim(..., hessian=TRUE)` computes a Hessian, so I took a look at the function's definition. Near its end, it includes this call to `.External2()`: ``` if (hessian) res$hessian <- .External2(C_optimhess, res$par, fn1, gr1, con) ``` Looks like there's a call to an external C function named `C_optimhess`, so I `grep`'d the R source directory for `C_optimhess`, but came up emptyhanded. There are only two occurrences of that string in R's code base, one in `optim` and one in `optimHess`. Both functions are defined in `$R_SOURCE_DIR/src/library/stats/R/optim.R`, and that file includes no additional hints/comments/references. `optim`'s help file references code on which several of the function's optimization methods were based, but doesn't (seem to) point to the source of `C_optimhess`. In a case like this, where should I look to find the C code being called by `.External2`?