private static DD inverse3()

in commons-statistics-inference/src/main/java/org/apache/commons/statistics/inference/DD.java [1584:1615]


    private static DD inverse3(double y, double yy, double yyy, DD q) {
        // Long division (1, 0, 0) / (y, yy, yyy)
        double r;
        double rr;
        double rrr;
        double t;
        // quotient q0 = x / y
        final double q0 = 1 / y;
        // remainder r0 = x - q0 * y
        t = multiply3(y, yy, yyy, q0, q);
        r = add3(-t, -q.hi, -q.lo, 1, q);
        rr = q.hi;
        rrr = q.lo;
        // next quotient q1 = r0 / y
        final double q1 = r / y;
        // remainder r1 = r0 - q1 * y
        t = multiply3(y, yy, yyy, q1, q);
        r = add3(-t, -q.hi, -q.lo, r, rr, rrr, q);
        rr = q.hi;
        rrr = q.lo;
        // next quotient q2 = r1 / y
        final double q2 = r / y;
        // remainder r2 = r1 - q2 * y
        t = multiply3(y, yy, yyy, q2, q);
        r = add3(-t, -q.hi, -q.lo, r, rr, rrr, q);
        // next quotient q3 = r2 / y
        final double q3 = r / y;
        // Collect (q0, q1, q2, q3) to (s0, s1, s2)
        t = norm3(q0, q1, q2, q3, q);
        // Reduce to (s0, s1)
        return fastTwoSum(t, q.hi + q.lo, q);
    }