/// <summary> /// This routine simply tests for robustness of the ToString function. /// </summary> private static void WriteRepeatedSqrt(DD xdd) { int count = 0; while (xdd.ToDoubleValue() > 1e-300) { count++; // if (count == 100) // count = count; double x = xdd.ToDoubleValue(); var xSqrt = xdd.Sqrt(); string s = xSqrt.ToString(); // System.Console.WriteLine((count + ": " + s); var xSqrt2 = DD.Parse(s); var xx = xSqrt2.Multiply(xSqrt2); double err = Math.Abs(xx.ToDoubleValue() - x); // assertTrue(err < 1e-10); xdd = xSqrt; // square roots converge on 1 - stop when very close var distFrom1DD = xSqrt.Subtract(DD.ValueOf(1.0)); double distFrom1 = distFrom1DD.ToDoubleValue(); if (Math.Abs(distFrom1) < 1.0e-40) { break; } } }
private void CheckSqrt(DD x, double errBound) { DD sqrt = x.Sqrt(); DD x2 = sqrt.Multiply(sqrt); CheckErrorBound("Sqrt", x, x2, errBound); }
private void CheckSqrt(DD x, double errBound) { var sqrt = x.Sqrt(); var x2 = sqrt * sqrt; CheckErrorBound("Sqrt", x, x2, errBound); }
/// <summary> /// Tests that printing values with many decimal places works. /// This tests the correctness and robustness of both output and input. /// </summary> static void WriteAndReadSqrt(double x) { DD xdd = DD.ValueOf(x); DD xSqrt = xdd.Sqrt(); String s = xSqrt.ToString(); // System.out.println(s); DD xSqrt2 = DD.Parse(s); DD xx = xSqrt2 * xSqrt2; String xxStr = xx.ToString(); // System.out.println("==> " + xxStr); DD xx2 = DD.Parse(xxStr); double err = Math.Abs(xx2.ToDoubleValue() - x); Assert.IsTrue(err < 1e-10); }
/** * This routine simply tests for robustness of the toString function. * * @param xdd */ private static void WriteRepeatedSqrt(DD xdd) { int count = 0; while (xdd.ToDoubleValue() > 1e-300) { count++; //if (count == 100) // count = count; double x = xdd.ToDoubleValue(); DD xSqrt = xdd.Sqrt(); String s = xSqrt.ToString(); // System.out.println(count + ": " + s); DD xSqrt2 = DD.Parse(s); DD xx = xSqrt2.Multiply(xSqrt2); double err = Math.Abs(xx.ToDoubleValue() - x); //assertTrue(err < 1e-10); xdd = xSqrt; // square roots converge on 1 - stop when very close DD distFrom1DD = xSqrt.Subtract(DD.ValueOf(1.0)); double distFrom1 = distFrom1DD.ToDoubleValue(); if (Math.Abs(distFrom1) < 1.0e-40) break; } }