externconstfloat*sin90d1024f32;staticfloatsinfpu(float x)/* x must have been normalized by 2pi */{float s, y, y1;long i;
x -=(long)x;/* (-1, 1) */
x += x<0.0f?1.0f:0.0f;/* [0, 1) */if(x >=0.5f){
x -=0.5f; s =-1.0f;/* [0.5, 1) */}else{
x +=0.0f; s =+1.0f;/* [0, 0.5) */}if(x >=0.25f){
x =0.5f- x;/* [0.25, 0.5) */}else{
x = x;/* [0, 0.25) */}
x *=4092;// 4096; //
i =(long)x;
y = sin90d1024f32[i];/* look up table */
y1 = sin90d1024f32[i+1];
y +=(y1 - y)*(x-i);/* Linear interpolation */
y *= s;/* Signed */return y;}floatsinfacc(float x){
x =x *0.159154943f;/* x / 2pi */returnsinfpu(x);}floatcosfacc(float x){
x = x *0.159154943f+0.25f;returnsinfpu(x);}