public void testAddMult2() { checkAddMult2(new DD(3)); checkAddMult2(DD.PI); }
public void testBinomial2() { checkBinomial2(100.0, 1.0); checkBinomial2(1000.0, 1.0); checkBinomial2(10000.0, 1.0); checkBinomial2(100000.0, 1.0); checkBinomial2(1000000.0, 1.0); checkBinomial2(1e8, 1.0); checkBinomial2(1e10, 1.0); checkBinomial2(1e14, 1.0); checkBinomial2(1e14, 291.0); checkBinomial2(5e14, 291.0); checkBinomial2(5e14, 345291.0); }
public void testBinom() { checkBinomialSquare(100.0, 1.0); checkBinomialSquare(1000.0, 1.0); checkBinomialSquare(10000.0, 1.0); checkBinomialSquare(100000.0, 1.0); checkBinomialSquare(1000000.0, 1.0); checkBinomialSquare(1e8, 1.0); checkBinomialSquare(1e10, 1.0); checkBinomialSquare(1e14, 1.0); // Following call will fail, because it requires 32 digits of precision // checkBinomialSquare(1e16, 1.0); checkBinomialSquare(1e14, 291.0); checkBinomialSquare(5e14, 291.0); checkBinomialSquare(5e14, 345291.0); }
private void checkPow(double x, int exp, double errBound) { DD xdd = new DD(x); DD pow = xdd.pow(exp); //System.out.println("Pow(" + x + ", " + exp + ") = " + pow); DD pow2 = slowPow(xdd, exp); double err = pow.subtract(pow2).doubleValue(); boolean isOK = err < errBound; if (! isOK) System.out.println("Test slowPow value " + pow2); assertTrue(err <= errBound); }
private void checkTrunc(DD x, DD expected) { DD trunc = x.trunc(); boolean isEqual = trunc.equals(expected); assertTrue(isEqual); }
printBinomialSquareDouble(a,b); assertTrue(isSame); boolean isDeltaZero = delta.isZero(); assertTrue(isDeltaZero);
private void checkSqrt(DD x, double errBound) { DD sqrt = x.sqrt(); DD x2 = sqrt.multiply(sqrt); checkErrorBound("Sqrt", x, x2, errBound); }
public void testReciprocal() { // error bounds are chosen to be "close enough" (i.e. heuristically) // for some reason many reciprocals are exact checkReciprocal(3.0, 0); checkReciprocal(99.0, 1e-29); checkReciprocal(999.0, 0); checkReciprocal(314159269.0, 0); }
public void testMultiplyDivide() { checkMultiplyDivide(DD.PI, DD.E, 1e-30); checkMultiplyDivide(DD.TWO_PI, DD.E, 1e-30); checkMultiplyDivide(DD.PI_2, DD.E, 1e-30); checkMultiplyDivide(new DD(39.4), new DD(10), 1e-30); }
public void testDivideMultiply() { checkDivideMultiply(DD.PI, DD.E, 1e-30); checkDivideMultiply(new DD(39.4), new DD(10), 1e-30); }
private void checkErrorBound(String tag, DD x, DD y, double errBound) { DD err = x.subtract(y).abs(); //System.out.println(tag + " err=" + err); boolean isWithinEps = err.doubleValue() <= errBound; assertTrue(isWithinEps); }
private void checkDivideMultiply(DD a, DD b, double errBound) { DD a2 = a.divide(b).multiply(b); checkErrorBound("DivideMultiply", a, a2, errBound); }
public void testNaN() { assertTrue(DD.valueOf(1).divide(DD.valueOf(0)).isNaN()); assertTrue(DD.valueOf(1).multiply(DD.NaN).isNaN()); }
private void checkMultiplyDivide(DD a, DD b, double errBound) { DD a2 = a.multiply(b).divide(b); checkErrorBound("MultiplyDivide", a, a2, errBound); }
private void checkReciprocal(double x, double errBound) { DD xdd = new DD(x); DD rr = xdd.reciprocal().reciprocal(); double err = xdd.subtract(rr).doubleValue(); //System.out.println("DD Recip = " + xdd // + " DD delta= " + err // + " double recip delta= " + (x - 1.0/(1.0/x)) ); assertTrue(err <= errBound); }
private void checkAddMult2(DD dd) { DD sum = dd.add(dd); DD prod = dd.multiply(new DD(2.0)); checkErrorBound("AddMult2", sum, prod, 0.0); }
assertTrue(isSame); boolean isDeltaZero = delta.isZero(); assertTrue(isDeltaZero);