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); }
float kaiser(float n, float N, float a) { return i0f((float)M_PI * a * sqrtf(1.0f - powf((2.0f * n) / (N - 1.0f) - 1.0f, 2.0f))) / i0f((float)M_PI * a); }