void BiquadLowShelf::SetupFast ( Float32 normFreq, Float32 dB, Float32 shelfSlope ){ Float32 A = pow( 10, dB/40 ); Float32 w0 = 2 * M_PI * normFreq; Float32 sn, cs; fastsincos( w0, &sn, &cs ); Float32 al = sn / 2 * fastsqrt1( (A + 1/A) * (1/shelfSlope - 1) + 2 ); Float32 sa = 2 * fastsqrt1( A ) * al; SetupCommon( cs, A, sa ); }
bool TestSinCos() { for (int i = -100; i <= 100; i++) { float f = i / 30.0f; // The PSP sin/cos take as argument angle * M_PI_2. // We need to match that. float slowsin = sinf(f * M_PI_2), slowcos = cosf(f * M_PI_2); float fastsin, fastcos; fastsincos(f, fastsin, fastcos); printf("%f: slow: %0.8f, %0.8f fast: %0.8f, %0.8f\n", f, slowsin, slowcos, fastsin, fastcos); } return true; }