public static boolean isInCircleDDFast( Coordinate a, Coordinate b, Coordinate c, Coordinate p) { DD aTerm = (DD.sqr(a.x).selfAdd(DD.sqr(a.y))) .selfMultiply(triAreaDDFast(b, c, p)); DD bTerm = (DD.sqr(b.x).selfAdd(DD.sqr(b.y))) .selfMultiply(triAreaDDFast(a, c, p)); DD cTerm = (DD.sqr(c.x).selfAdd(DD.sqr(c.y))) .selfMultiply(triAreaDDFast(a, b, p)); DD pTerm = (DD.sqr(p.x).selfAdd(DD.sqr(p.y))) .selfMultiply(triAreaDDFast(a, b, c)); DD sum = aTerm.selfSubtract(bTerm).selfAdd(cTerm).selfSubtract(pTerm); boolean isInCircle = sum.doubleValue() > 0; return isInCircle; }
public static boolean isInCircleDD2( Coordinate a, Coordinate b, Coordinate c, Coordinate p) { DD aTerm = (DD.sqr(a.x).selfAdd(DD.sqr(a.y))) .selfMultiply(triAreaDD2(b, c, p)); DD bTerm = (DD.sqr(b.x).selfAdd(DD.sqr(b.y))) .selfMultiply(triAreaDD2(a, c, p)); DD cTerm = (DD.sqr(c.x).selfAdd(DD.sqr(c.y))) .selfMultiply(triAreaDD2(a, b, p)); DD pTerm = (DD.sqr(p.x).selfAdd(DD.sqr(p.y))) .selfMultiply(triAreaDD2(a, b, c)); DD sum = aTerm.selfSubtract(bTerm).selfAdd(cTerm).selfSubtract(pTerm); boolean isInCircle = sum.doubleValue() > 0; return isInCircle; } public static boolean isInCircleDD3(
r = r.sqr();
/** * This routine simply tests for robustness of the toString function. * * @param xdd the value to test (write and parse) */ private void writeRepeatedSqr(DD xdd) { if (xdd.ge(DD.valueOf(1))) throw new IllegalArgumentException("Argument must be < 1"); int count = 0; while (xdd.doubleValue() > 1e-300) { count++; if (count == 100) count = count; double x = xdd.doubleValue(); DD xSqr = xdd.sqr(); String s = xSqr.toString(); //System.out.println(count + ": " + s); DD xSqr2 = DD.parse(s); xdd = xSqr; } }
DD diffSq = this.subtract(axdd.sqr()); double d2 = diffSq.hi * (x * 0.5);
DD t2 = t.sqr(); DD at = new DD(0.0); DD two = new DD(2.0);