[R] R mathlib

Dirk Eddelbuettel edd at debian.org
Tue Jun 22 16:10:00 CEST 2004


On Tue, Jun 22, 2004 at 05:41:53PM +0400, Timur Elzhov wrote:
> Hello, dear R experts!
> 
> I run R on Debian 'sarge' platform. There is 'r-mathlib' package in
> Debian distribution, which is described as:
>    $ dpkg --status r-mathlib
>    ...
>    This packages provides the libRmath shared and static libraries which
>    can be called from standalone C or C++ code.
> 
> Well, I use runif() function in test_runif.c:
> 
> #include <Rmath.h>
> 
> main()
> {
> // ...
>     printf("%f\n", runif(0, 1));
> }
> 
> and compile it:
> 
> $ gcc -I/usr/lib/R/include -lRmath -lm -o test_runif test_runif.c 
>  /tmp/ccmICWeD.o(.text+0x2d): In function `main':
>  : undefined reference to `Rf_runif'
>  collect2: ld returned 1 exit status
> 
> Replacing `-lm' with `-lR' solves the problem. So, I need libR.so anyway?

I haven't glanced at the docs in a while, but I think you premiser is wrong.
The standalone library libRmath from the r-mathlib package offers
probability functions and other 'utilities', but not random number
generators which are stateful, can be selected and switched etc pp which
leads to the requirement of libR, and with that come possible requirements
for R initializations.

Whereas the standalone library really is that:

edd at basebud:~> head /usr/share/doc/r-mathlib/examples/test.c 
/*
 *  Mathlib : A C Library of Special Functions
 *  Copyright (C) 2000  The R Development Core Team
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
edd at basebud:~> tail /usr/share/doc/r-mathlib/examples/test.c 
#define MATHLIB_STANDALONE 1
#include <Rmath.h>
 
int
main()
{
/* something to force the library to be included */
    qnorm(0.7, 0.0, 1.0, 0, 0);
    return 0;
}
edd at basebud:~> gcc -o /tmp/foo /usr/share/doc/r-mathlib/examples/test.c -lm -lRmath
edd at basebud:~> /tmp/foo
edd at basebud:~> 

So it compiles and builds standalone as promised.

Dirk

-- 
FEATURE:  VW Beetle license plate in California




More information about the R-help mailing list