Average Error: 0.2 → 0.2
Time: 13.4s
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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) + {\left(a \cdot a + b \cdot b\right)}^{2}\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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) + {\left(a \cdot a + b \cdot b\right)}^{2}\right) - 1
double f(double a, double b) {
        double r577 = a;
        double r578 = r577 * r577;
        double r579 = b;
        double r580 = r579 * r579;
        double r581 = r578 + r580;
        double r582 = 2.0;
        double r583 = pow(r581, r582);
        double r584 = 4.0;
        double r585 = 1.0;
        double r586 = r585 - r577;
        double r587 = r578 * r586;
        double r588 = 3.0;
        double r589 = r588 + r577;
        double r590 = r580 * r589;
        double r591 = r587 + r590;
        double r592 = r584 * r591;
        double r593 = r583 + r592;
        double r594 = r593 - r585;
        return r594;
}

double f(double a, double b) {
        double r595 = 4.0;
        double r596 = a;
        double r597 = r596 * r596;
        double r598 = 1.0;
        double r599 = r598 - r596;
        double r600 = r597 * r599;
        double r601 = b;
        double r602 = r601 * r601;
        double r603 = 3.0;
        double r604 = r603 + r596;
        double r605 = r602 * r604;
        double r606 = r600 + r605;
        double r607 = r595 * r606;
        double r608 = r597 + r602;
        double r609 = 2.0;
        double r610 = pow(r608, r609);
        double r611 = r607 + r610;
        double r612 = r611 - r598;
        return r612;
}

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. Using strategy rm
  3. Applied +-commutative0.2

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

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

Reproduce

herbie shell --seed 2020025 +o rules:numerics
(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))