Dear list,
I'd like to ask for some advice in creating a wrapper function for
this C code,
http://www.fourmilab.ch/documents/specrend/
http://www.fourmilab.ch/documents/specrend/specrend.c
I could probably port it in R, but I've been hoping to use compiled
code for a while and this looks like a good test case.
Unfortunately, the only success I've had so far is with the too simple
factorial(int *n) function,
http://math.acadiau.ca/ACMMaC/howtos/C_R.html
Here, however, the code has several functions, some of which use
structures as input variables and return several values.
I've created a shared library with,
R CMD SHLIB specrend.c
and then ran,
dyn.load('specrend.so')
.C('spectrum_to_xyz', spec_intens=as.numeric(1),
wavelength=as.numeric(1),
x=numeric(1), y=numeric(1),
z=numeric(1))
which obviously resulted in a nice crash,
*** caught illegal operation ***
address 0x942776, cause 'illegal opcode'
Traceback:
1: .C("spectrum_to_xyz", spec_intens = as.numeric(1), wavelength =
as.numeric(1), x = numeric(1), y = numeric(1), z = numeric(1))
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
Selection:
Looking at the C code I want to use, could you direct me to a
beginner's tutorial for similar problems? Specifically:
- how to deal with a function that returns several values (e.g
xy_to_upvp here)
- how to deal with structures (perhaps i needn't worry about this, I'm
not sure)
Many thanks,
baptiste
sessionInfo()
R version 2.8.0 (2008-10-20)
i386-apple-darwin8.11.1
locale:
en_GB.UTF-8/en_GB.UTF-8/C/C/en_GB.UTF-8/en_GB.UTF-8
_____________________________
Baptiste AuguiƩ
School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK
Phone: +44 1392 264187
http://newton.ex.ac.uk/research/emag
______________________________________________
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.