Average Error: 0.2 → 0.2
Time: 23.5s
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 r178526 = a;
        double r178527 = r178526 * r178526;
        double r178528 = b;
        double r178529 = r178528 * r178528;
        double r178530 = r178527 + r178529;
        double r178531 = 2.0;
        double r178532 = pow(r178530, r178531);
        double r178533 = 4.0;
        double r178534 = 1.0;
        double r178535 = r178534 - r178526;
        double r178536 = r178527 * r178535;
        double r178537 = 3.0;
        double r178538 = r178537 + r178526;
        double r178539 = r178529 * r178538;
        double r178540 = r178536 + r178539;
        double r178541 = r178533 * r178540;
        double r178542 = r178532 + r178541;
        double r178543 = r178542 - r178534;
        return r178543;
}

double f(double a, double b) {
        double r178544 = a;
        double r178545 = r178544 * r178544;
        double r178546 = b;
        double r178547 = r178546 * r178546;
        double r178548 = r178545 + r178547;
        double r178549 = 2.0;
        double r178550 = pow(r178548, r178549);
        double r178551 = 4.0;
        double r178552 = 1.0;
        double r178553 = r178552 - r178544;
        double r178554 = r178545 * r178553;
        double r178555 = 3.0;
        double r178556 = r178555 + r178544;
        double r178557 = r178547 * r178556;
        double r178558 = r178554 + r178557;
        double r178559 = r178551 * r178558;
        double r178560 = r178550 + r178559;
        double r178561 = r178560 - r178552;
        return r178561;
}

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 2019325 
(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))