static void M_get_log_guess(BigNumber a, BigNumber r) { double dd; String buf = BigNumber.ToExpString(a, 15); dd = BigNumber.ExpStringToDouble(buf); BigNumber.SetFromDouble(r, (1.00001 * Math.Log(dd))); /* induce error of 10 ^ -5 */ }
static void SQrtGuess(BigNumber a, BigNumber r) { /* sqrt algorithm actually finds 1/sqrt */ double dd; String buf = BigNumber.ToExpString(a, 15); scci.NumberFormat.NumberDecimalSeparator = "."; dd = Convert.ToDouble(buf, scci); BigNumber.SetFromDouble(r, (1.0 / Math.Sqrt(dd))); }