Average Error: 0.2 → 0.2
Time: 6.3s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
double f(double a, double b) {
        double r174415 = a;
        double r174416 = r174415 * r174415;
        double r174417 = b;
        double r174418 = r174417 * r174417;
        double r174419 = r174416 + r174418;
        double r174420 = 2.0;
        double r174421 = pow(r174419, r174420);
        double r174422 = 4.0;
        double r174423 = r174422 * r174418;
        double r174424 = r174421 + r174423;
        double r174425 = 1.0;
        double r174426 = r174424 - r174425;
        return r174426;
}

double f(double a, double b) {
        double r174427 = a;
        double r174428 = r174427 * r174427;
        double r174429 = b;
        double r174430 = r174429 * r174429;
        double r174431 = r174428 + r174430;
        double r174432 = 2.0;
        double r174433 = pow(r174431, r174432);
        double r174434 = 4.0;
        double r174435 = r174434 * r174430;
        double r174436 = r174433 + r174435;
        double r174437 = 1.0;
        double r174438 = r174436 - r174437;
        return r174438;
}

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(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]

Reproduce

herbie shell --seed 2019308 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (26)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (* b b))) 1))