Special Functions Examples - GNU Scientific Library -- Reference Manual
Description: GNU Scientific Library -- Reference Manual

Next: Special Functions References and Further Reading, Previous: Zeta Functions, Up: Special Functions

### 7.33 Examples

The following example demonstrates the use of the error handling form of the special functions, in this case to compute the Bessel function J_0(5.0),

         #include <stdio.h>
         #include <gsl/gsl_errno.h>
         #include <gsl/gsl_sf_bessel.h>

         int
         main (void)
         {
           double x = 5.0;
           gsl_sf_result result;

           double expected = -0.17759677131433830434739701;

           int status = gsl_sf_bessel_J0_e (x, &result);

           printf ("status  = %s\n", gsl_strerror(status));
           printf ("J0(5.0) = %.18f\n"
                   "      +/- % .18f\n",
                   result.val, result.err);
           printf ("exact   = %.18f\n", expected);
           return status;
         }

Here are the results of running the program,

         $ ./a.out
         status  = success
         J0(5.0) = -0.177596771314338292
               +/-  0.000000000000000193
         exact   = -0.177596771314338292

The next program computes the same quantity using the natural form of the function. In this case the error term result.err and return status are not accessible.

         #include <stdio.h>
         #include <gsl/gsl_sf_bessel.h>

         int
         main (void)
         {
           double x = 5.0;
           double expected = -0.17759677131433830434739701;

           double y = gsl_sf_bessel_J0 (x);

           printf ("J0(5.0) = %.18f\n", y);
           printf ("exact   = %.18f\n", expected);
           return 0;
         }

The results of the function are the same,

         $ ./a.out
         J0(5.0) = -0.177596771314338292
         exact   = -0.177596771314338292

The GNU Scientific Library - a free numerical library licensed under the GNU GPL
Back to the GNU Scientific Library Homepage