New Optimization for BuildDouble

Still with the off by one error, this time is tested
I have not been able to discover what are the cases where the value is
off
Note: there is a bug in BigInteger that needs fixing