Average Error: 0.2 → 0.2
Time: 14.7s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\[\left(\left(b \cdot b\right) \cdot 4 + {\left(a \cdot a + b \cdot b\right)}^{2}\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
\left(\left(b \cdot b\right) \cdot 4 + {\left(a \cdot a + b \cdot b\right)}^{2}\right) - 1
double f(double a, double b) {
        double r3737520 = a;
        double r3737521 = r3737520 * r3737520;
        double r3737522 = b;
        double r3737523 = r3737522 * r3737522;
        double r3737524 = r3737521 + r3737523;
        double r3737525 = 2.0;
        double r3737526 = pow(r3737524, r3737525);
        double r3737527 = 4.0;
        double r3737528 = r3737527 * r3737523;
        double r3737529 = r3737526 + r3737528;
        double r3737530 = 1.0;
        double r3737531 = r3737529 - r3737530;
        return r3737531;
}

double f(double a, double b) {
        double r3737532 = b;
        double r3737533 = r3737532 * r3737532;
        double r3737534 = 4.0;
        double r3737535 = r3737533 * r3737534;
        double r3737536 = a;
        double r3737537 = r3737536 * r3737536;
        double r3737538 = r3737537 + r3737533;
        double r3737539 = 2.0;
        double r3737540 = pow(r3737538, r3737539);
        double r3737541 = r3737535 + r3737540;
        double r3737542 = 1.0;
        double r3737543 = r3737541 - r3737542;
        return r3737543;
}

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(b \cdot b\right)\right) - 1\]
  2. Final simplification0.2

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

Reproduce

herbie shell --seed 2019128 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (26)"
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (* b b))) 1))