The basic convolution example from Section 5.10.1 of 'Writing R Extensions'
#include <R.h>
#include <Rdefines.h>
{
na = LENGTH(a); nb = LENGTH(b); nab = na + nb - 1;
xa = NUMERIC_POINTER(a); xb = NUMERIC_POINTER(b);
xab = NUMERIC_POINTER(ab);
for(i = 0; i <
nab; i++) xab[i] = 0.0;
for(j = 0; j <
nb; j++) xab[i + j] += xa[i] * xb[j];
UNPROTECT(3);
return(ab);
}