[R] lsoda( linking to GMP for big numbers from C code)

Redding, Matthew Matthew.Redding at dpi.qld.gov.au
Wed Sep 17 01:37:59 CEST 2008


Hi R used with C-code experts,

I had a look at the archives and did not find anything on this, so 
hopefully I am not doubling up.
 
I have previously used the following approach where I needed some very
small/large numbers (using Brobdingnag):


surfacewithdiff <- function(t, y, p)
  {
    const=p["const"]
    kay =p["kay"]
    psii=p["psii"]
    m1=p["m1"]
    m2=p["m2"]
    M=p["M"]
    N=p["N"]
    T=p["T"]

    bexp<-as.brob((const*(psii-m1*y[1]-m2*M/N))/T)
    yd1<-as.numeric((kay*exp(bexp))/(kay*t*exp(bexp)+1)-
    	(kay^2*t*exp(2*bexp))/(kay*t*exp(bexp)+1)^2)
    	
    list(c(yd1))
  }


Now I guess this could be done with gmp.

Now I use this stuff in the function that odesolve's lsoda refers to,
and I have found that my approach using pure R code is not fast enough,
so I need to convert my function to C code. This is all on a windows
system.

Is it possible to access gmp or Brobdingnag dll's from the C code?
Or do I need to install and compile the gmp library itself?

I see that the gmp library for R contains the dll.

How do I access this from the C-code?

I see that according to the manual on extending R, 
there are a heap of header file available for R functionality, but since
gmp is a contrib package, I guess it is not amongst them.


Kind regards, 

Matt Redding
********************************DISCLAIMER******************...{{dropped:12}}



More information about the R-help mailing list