Average Error: 0.2 → 0.2
Time: 7.3s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r119582 = a;
        double r119583 = r119582 * r119582;
        double r119584 = b;
        double r119585 = r119584 * r119584;
        double r119586 = r119583 + r119585;
        double r119587 = 2.0;
        double r119588 = pow(r119586, r119587);
        double r119589 = 4.0;
        double r119590 = 1.0;
        double r119591 = r119590 + r119582;
        double r119592 = r119583 * r119591;
        double r119593 = 3.0;
        double r119594 = r119593 * r119582;
        double r119595 = r119590 - r119594;
        double r119596 = r119585 * r119595;
        double r119597 = r119592 + r119596;
        double r119598 = r119589 * r119597;
        double r119599 = r119588 + r119598;
        double r119600 = r119599 - r119590;
        return r119600;
}

double f(double a, double b) {
        double r119601 = a;
        double r119602 = r119601 * r119601;
        double r119603 = b;
        double r119604 = r119603 * r119603;
        double r119605 = r119602 + r119604;
        double r119606 = 2.0;
        double r119607 = pow(r119605, r119606);
        double r119608 = 4.0;
        double r119609 = 1.0;
        double r119610 = r119609 + r119601;
        double r119611 = r119602 * r119610;
        double r119612 = 3.0;
        double r119613 = r119612 * r119601;
        double r119614 = r119609 - r119613;
        double r119615 = r119604 * r119614;
        double r119616 = r119611 + r119615;
        double r119617 = r119608 * r119616;
        double r119618 = r119607 + r119617;
        double r119619 = r119618 - r119609;
        return r119619;
}

Error

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.2

    \[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  2. Final simplification0.2

    \[\leadsto \left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]

Reproduce

herbie shell --seed 2019354 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))