Interfacing with C Code

For example, consider the task of computing some function given two vectors a and b of size n. The C code to compute the result appears below (fooC.c); note the presence of the pre-processor directive include <R.h>. You may execute code from fooC.R after running the command R CMD SHLIB fooC.c; the runnable example below runs that command for you:

#include <R.h>
#include <math.h>
void fooC(double* a, double* b, int* n, double* result) {
int i, j;
for (i = 0; i < (*n); i++) {
result[i] = 0;
for (j = 0; j < (*n); j++)
result[i] += pow(a[j] + i + 1, b[j]);
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Open Source Your Knowledge: become a Contributor and help others learn.