Avoid unnecessary lookups in fix_sincos

This commit is contained in:
Kp 2012-06-25 02:16:10 +00:00
parent f11d7f6423
commit 6b48994596

View file

@ -258,16 +258,21 @@ fix fix_sqrt(fix a)
void fix_sincos(fix a,fix *s,fix *c)
{
int i,f;
fix ss,cc;
i = (a>>8)&0xff;
f = a&0xff;
ss = sincos_table[i];
if (s) *s = (ss + (((sincos_table[i+1] - ss) * f)>>8))<<2;
if (s)
{
fix ss = sincos_table[i];
*s = (ss + (((sincos_table[i+1] - ss) * f)>>8))<<2;
}
cc = sincos_table[i+64];
if (c) *c = (cc + (((sincos_table[i+64+1] - cc) * f)>>8))<<2;
if (c)
{
fix cc = sincos_table[i+64];
*c = (cc + (((sincos_table[i+64+1] - cc) * f)>>8))<<2;
}
}
//compute sine and cosine of an angle, filling in the variables