Jag har en sinus approximation som fungerar mellan -pi och pi.
Kod: Markera allt
float fast_sin(x)
{
const float B = 4/pi;
const float C = -4/(pi*pi);
const float P = 0.225;
y = B * x + C * x * abs(x);
y = P * (y * abs(y) - y) + y;
}
Jag funderar på att använda modulo på något vis för att fixa detta, men det blir inte riktigt korrekt:
Kod: Markera allt
float a = 5.7f;
float pi = 3.1415f;
float res = modulo(a, pi); // = 2.56 = a - pi <- fel, vill ha a - 2pi
float modulo(float x, float m)
{
int tmp = (int)(x / m);
return x - ((float)tmp) * m;
}
Har någon är en bra tanke om hur man fixar detta? Jag behöver att det går fort så helst utan att använda if satser.