public static double I0 ( double x ) { double ans ; double ax = Math . abs ( x ) ; if ( ax < 3.75 ) { double y = x / 3.75 ; y = y * y ; ans = 1.0 + y * ( 3.5156229 + y * ( 3.0899424 + y * ( 1.2067492 + y * ( 0.2659732 + y * ( 0.360768e-1 + y * 0.45813e-2 ) ) ) ) ) ; } else { double y = 3.75 / ax ; ans = ( Math . exp ( ax ) / Math . sqrt ( ax ) ) * ( 0.39894228 + y * ( 0.1328592e-1 + y * ( 0.225319e-2 + y * ( - 0.157565e-2 + y * ( 0.916281e-2 + y * ( - 0.2057706e-1 + y * ( 0.2635537e-1 + y * ( - 0.1647633e-1 + y * 0.392377e-2 ) ) ) ) ) ) ) ) ; } return ans ; }
Bessel function of the first kind of order 0 .