float k1f(float xx) { float x, y; x = xx; if( x <= 2.0 ) { y = x * x - 2.0; y = logf( 0.5f * x ) * i1f(x) + chbevlf( y, A, 7 ) / x; return( y ); } return( expf(-x) * chbevlf( (float)(8.0/x - 2.0), B, 10 ) / sqrtf(x) ); }
float i0f( float x ) { float y; if( x < 0 ) x = -x; if( x <= 8.0f ) { y = 0.5f*x - 2.0f; return( expf(x) * chbevlf( y, A_i0f, 18 ) ); } return( expf(x) * chbevlf( 32.0f/x - 2.0f, B_i0f, 7 ) / sqrtf(x) ); }
float i1f(float xx) { float x, y, z; x = xx; z = fabsf(x); if( z <= 8.0f ) { y = 0.5f*z - 2.0f; z = chbevlf( y, A_i1f, 17 ) * z * expf(z); } else { z = expf(z) * chbevlf( 32.0f/z - 2.0f, B_i1f, 7 ) / sqrtf(z); } if( x < 0.0f ) z = -z; return( z ); }
float k1f(float xx) { float x, y; x = xx; if( x <= MINNUMF ) /* { mtherr( "k1f", DOMAIN ); return( MAXNUMF ); } */ assert(0); if( x <= 2.0f ) { y = x * x - 2.0f; y = logf( 0.5f * x ) * i1f(x) + chbevlf( y, A_k1f, 7 ) / x; return( y ); } return( expf(-x) * chbevlf( 8.0f/x - 2.0f, B_k1f, 10 ) / sqrtf(x) ); }
float k0f( float xx ) { float x, y, z; x = xx; if( x <= 0.0f ) /* { mtherr( "k0f", DOMAIN ); return( MAXNUMF ); } */ assert(0); if( x <= 2.0f ) { y = x * x - 2.0f; y = chbevlf( y, A_k0f, 7 ) - logf( 0.5f * x ) * i0f(x); return( y ); } z = 8.0f/x - 2.0f; y = expf(-x) * chbevlf( z, B_k0f, 10 ) / sqrtf(x); return(y); }