From p.dalgaard@kubism.ku.dk  Tue Jun  3 17:23:24 1997
From: p.dalgaard@kubism.ku.dk (Peter Dalgaard BSA)
Date: 03 Jun 1997 18:23:24 +0200
Subject: R-alpha: unif_rand() again
In-Reply-To: Kurt Hornik's message of Tue, 3 Jun 1997 17:17:29 +0200
References: <199706031445.QAA13652@aragorn.ci.tuwien.ac.at>
 <x2yb8r4t31.fsf@bush.kubism.ku.dk>
 <199706031517.RAA13734@aragorn.ci.tuwien.ac.at>
Message-ID: <x2u3jf4pvm.fsf@bush.kubism.ku.dk>

Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at> writes:

> >> What I need is to call runif() (more precisely, `runif(1, 0, 1)') from
> >> inside a C function.  Is this possible using call_S?  If so, how?
> 
> > Hmm ... Stupid counter-question: Did you study the zfun() function in
> > $RHOME/demos/dynload/zero.c ? Looks pretty straightforward to me,
> > except that I have no offhand guess what the 0L argument to call_S is
> > good for. Peeking at the source should cure that.
> 
> I did.  I hoped that something like
> 
> static char *func = "runif";
> 
> double unif_rand() {
...
>   return(result[0]);
> }
> 
> might work, but it does not ...

Aha. I see, call_R seems to want an SEXP parameter, not a character
pointer. So some way of converting "runif" into the relevant SEXPREC seems
to be needed. Something like mkChar() <um, no, that doesn't seem to be
the way to make a "SEXPsymbol"..> followed by findFun(). Or just pass
it as a parameter to .C

This looks like a bug in the S compatibility, doesn't it? Nothing in
the Splus examples indicate that the first argument should be a
string, but I seem to recall seeing something to that effect in the
blue book (?) 

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk)             FAX: (+45) 35327907
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


R-alpha: unif_rand() again
Peter Dalgaard BSA