robtillaart:
directly derive cosine from sine uses less steps: cosine(x) = sine(x+PI/2); so might be faster?
You are right, but I couldn't get that to work yesterday. But this is why:
BigNumber::begin (); // initialize library
pi = BigNumber ("3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706");
...
BigNumber::setScale (20);
Should have been:
BigNumber::begin (); // initialize library
BigNumber::setScale (20);
pi = BigNumber ("3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706");
...
It thought pi was 3.
Now cosine can be:
BigNumber cosine (BigNumber x, BigNumber p)
{
return sine (x + pi / BigNumber (2), p);
} // end of cosine