你能帮我理解Cubature package的C代码吗?
我的具体问题:
1)fwrapper函数rcubature.c文件的用途是什么?
void fWrapper(unsigned ndim, const double *x, void *fdata, unsigned fdim, double *fval) {
SEXP xx, fx;
double *rx, *rfx;
int i;
PROTECT(xx = allocVector(REALSXP, ndim));
rx = REAL(xx);
for (i = 0; i < ndim; ++i) {
rx[i] = x[i];
}
defineVar(install("x"), xx, CUB_common_env);
PROTECT(fx = eval(f, CUB_common_env));
rfx = REAL(fx);
for (i = 0; i < fdim; ++i) {
fval[i] = rfx[i];
}
UNPROTECT(2);
count++;
}
2)defineVar
中的fWrapper
电话有什么作用?