Usar mathlib de R (libRmath) para nuestros programas en C (Debian, Ubuntu)

El lenguaje de programación C nativamente tiene funciones para generar números aleatorios, pero que mejor que poder usar una librería en C hecha para un lenguaje estadístico (R) la cual es usada y probada diariamente por la comunidad que se dedica a Ciencia de Datos y Computo Estadístico.

Los pasos que describo a continuación aplican para poder usar la librería libRmath en sistemas Debian y derivados si usas otro sistema debe ser algo similar solo cambiaría la instalación (apt-get) y si estas en Windows si no aplica ningún paso de lo aquí descrito.

En este archivo "/usr/share/doc/r-base-core/README.mathlib" se comenta ciertas configuraciones para poder usar la librería de mathlib o libRmath en nuestros programas de C (Para linux) y todos las demás ligas que consulte se encuentran al final, en especial la que mas describe el procedimiento y de la que copie el código de prueba es
https://www.stat.berkeley.edu/classes/s243/rmath.html

Instalación de librería con el paquete r-mathlib

Si no tienes instalado el paquete r-mathlib debes hacer lo siguiente:

Comando para instalar las librerías de R (https://packages.debian.org/sid/r-mathlib)
sudo apt-get install r-mathlib

Después de instalar r-mathlib ya debes de tener en tu sistema la librería compartida libRmath.so

adrian-rdz@adrianrdz-Aspire-E5-473:~$ ll -h $(locate libRmath | grep so | head)  
lrwxrwxrwx 1 root root   13 jul  8 10:07 /usr/lib/libRmath.so -> libRmath.so.1  
lrwxrwxrwx 1 root root   17 jul  8 10:07 /usr/lib/libRmath.so.1 -> libRmath.so.1.0.0  
-rw-r--r-- 1 root root 203K jul  8 10:07 /usr/lib/libRmath.so.1.0.0

Puedes leer mas detenidamente cada paso de como usar la librería en el readme
cat /usr/share/doc/r-base-core/README.mathlib | less

Asignar la variable de entorno (temporalmente)
LD_LIBRARY_PATH="/usr/local/lib"  
export LD_LIBRARY_PATH  
Asignar la variable de entorno (permanentemente)

Para asignar la variable (permanente cada vez que se abre una consola) hay que modificar un archivo de configuraciones
vim ~/.bashrc (o nano ~/.bashrc)

Añadir lo siguiente en ~/.bashrc para que se actualice la variable LD_LIBRARY_PATH cada vez que usemos la terminal

export LD\_LIBRARY\_PATH=/usr/local/lib


Como compilar programa

Después para compilar como lo dice en "README.mathlib" hay que linkear la librería usando "-lRmath"

Ejemplo código en C usando librería y funciones de R
    //****r_ejemplo.c******
    #include <stdio.h>
    #define MATHLIB_STANDALONE
    #include "Rmath.h"

    main(){
       double shape1,shape2,prob;

       printf("Enter first shape parameter: ");
       scanf("%lf",&shape1);

       printf("Enter second shape parameter: ");
       scanf("%lf",&shape2);

       printf("Enter probability level: ");
       scanf("%lf",&prob);

       printf("Critical value is %lf\n",qbeta(prob,shape1,shape2,1,0));
    }
Compilar el código previo que usa funciones de libRmath

gcc r_ejemplo.c -o r_ejemplo_eje -lRmath -lm

Ejecución
adrian-rdz@adrianrdz-Aspire-E5-473:~/Escritorio/CIMAT/1Semestre/Inferencia_Estadistica$ ./r_ejemplo_eje 
Enter first shape parameter: 1.5
Enter second shape parameter: 0.3
Enter probability level: 0.10
Critical value is 0.478398
Referencias:

https://packages.debian.org/sid/r-mathlib
https://unix.stackexchange.com/questions/168340/where-is-ld-library-path-how-do-i-set-the-ld-library-path-env-variable
http://r.789695.n4.nabble.com/where-is-libRmath-a-amp-libRmath-so-td2216048.html
http://r.789695.n4.nabble.com/where-is-libRmath-a-amp-libRmath-so-td2216048.html#a2217224
https://www.stat.berkeley.edu/classes/s243/rmath.html
http://pj.freefaculty.org/guides/c-programming/Examples/FromC-CallRmathlib/README.txt