Average Error: 0.2 → 0.2
Time: 20.8s
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(3 + 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(3 + 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(3 + 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(3 + a\right)\right)\right) - 1
double f(double a, double b) {
        double r298503 = a;
        double r298504 = r298503 * r298503;
        double r298505 = b;
        double r298506 = r298505 * r298505;
        double r298507 = r298504 + r298506;
        double r298508 = 2.0;
        double r298509 = pow(r298507, r298508);
        double r298510 = 4.0;
        double r298511 = 1.0;
        double r298512 = r298511 - r298503;
        double r298513 = r298504 * r298512;
        double r298514 = 3.0;
        double r298515 = r298514 + r298503;
        double r298516 = r298506 * r298515;
        double r298517 = r298513 + r298516;
        double r298518 = r298510 * r298517;
        double r298519 = r298509 + r298518;
        double r298520 = r298519 - r298511;
        return r298520;
}

double f(double a, double b) {
        double r298521 = a;
        double r298522 = r298521 * r298521;
        double r298523 = b;
        double r298524 = r298523 * r298523;
        double r298525 = r298522 + r298524;
        double r298526 = 2.0;
        double r298527 = pow(r298525, r298526);
        double r298528 = 4.0;
        double r298529 = 1.0;
        double r298530 = r298529 - r298521;
        double r298531 = r298522 * r298530;
        double r298532 = 3.0;
        double r298533 = r298532 + r298521;
        double r298534 = r298524 * r298533;
        double r298535 = r298531 + r298534;
        double r298536 = r298528 * r298535;
        double r298537 = r298527 + r298536;
        double r298538 = r298537 - r298529;
        return r298538;
}

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(3 + 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(3 + a\right)\right)\right) - 1\]

Reproduce

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