1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
extern float A[], B[]; extern float MAXNUMF; float chbevlf(float, float *, int); float expf(float), i1f(float), logf(float), sqrtf(float); 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) ); }