Found a 64bit double implementation library, but I cannot compile it

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