kjb_bessel_I0 - Computes modified Bessel function, order 0
Example compile flags (system dependent):
-DLINUX_X86_64 -DLINUX_X86_64_OPTERON -DGNU_COMPILER
-lKJB -lfftw3 -lgsl -lgslcblas -ljpeg -lSVM -lstdc++ -lpthread -lSLATEC -lg2c -lacml -lacml_mv -lblas -lg2c -lncursesw
Pointer to where the result should be stored
Value at which to evaluate erf
If possible, computes the modified Bessel function, order 0,
usually denoted by something like I_0(x). This is defined as
I_0(x) = i * J_0(i*x), where J_0 is the ordinary Bessel function, order 0,
and little i is the imaginary unit.
This routine is a thin wrapper to GSL code that computes this special
function. If the GSL library is not available, this routine fails with a
return value of ERROR. Otherwise, the value is returned in the location
pointed to by pointer P_ptr, which must not equal null. The argument to
the function is stored in x.
Keep in mind that I_0(x) grows very quickly with increasing x, on the order
of exp(x)/sqrt(x). If you need to compute I_0 for a large value (perhaps in
a ratio calculation), please consider using kjb_scaled_bessel_I0() instead.
In this context if x has three digits, it is LARGE.
If successful, the value is written to *P_ptr and this function returns
NO_ERROR. If the routine fails -- caused by the library being unavailable
during linking -- an error message is set and the return value is ERROR.
This software is not adequatedly tested. It is recomended that
results are checked independantly where appropriate.