R-alpha: unif_rand() again
Peter Dalgaard BSA
p.dalgaard@kubism.ku.dk
03 Jun 1997 19:21:57 +0200
Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at> writes:
> I did. I hoped that something like
>
> static char *func = "runif";
>
> double unif_rand() {
...
>
> might work, but it does not ...
Here's a model that does (seem to) work:
> dyn.load("runif.so");.C("select_rand",runif); .C("unif_rand",3.3)
[[1]]
function (n, min = 0, max = 1)
.Internal(runif(n, min, max))
[[1]]
[1] 0.126975
> .C("unif_rand",3.3) # the 3.3 is just an arbitrary double...
[[1]]
[1] 0.9233792
> .C("unif_rand",3.3)
[[1]]
[1] 0.03410953
>
with
runif.c:
-------------------------
static void * func;
double select_rand(void * f)
{
func = f;
}
static long one = 1L, zero = 0L;
unif_rand(double *x) {
void *in[3];
char *modes[] = { "integer", "integer", "integer" };
long lengths[] = { 1, 1, 1 };
double result;
double *values[1];
in[0] = (void *)&one;
in[1] = (void *)&zero;
in[2] = (void *)&one;
call_S((void *)func, 3L, in, modes, lengths, 0L, 1L, values);
x[0] = values[0][0];
}
--------------------------
--
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
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-