Average Error: 0.2 → 0.2
Time: 8.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(1 - 3 \cdot a\right)\right)\right) - 1\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(\sqrt[3]{\left(a \cdot a\right) \cdot \left(1 + a\right)} \cdot \sqrt[3]{\left(a \cdot a\right) \cdot \left(1 + a\right)}\right) \cdot \sqrt[3]{\left(a \cdot a\right) \cdot \left(1 + a\right)} + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot 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(1 - 3 \cdot a\right)\right)\right) - 1
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(\sqrt[3]{\left(a \cdot a\right) \cdot \left(1 + a\right)} \cdot \sqrt[3]{\left(a \cdot a\right) \cdot \left(1 + a\right)}\right) \cdot \sqrt[3]{\left(a \cdot a\right) \cdot \left(1 + a\right)} + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r105560 = a;
        double r105561 = r105560 * r105560;
        double r105562 = b;
        double r105563 = r105562 * r105562;
        double r105564 = r105561 + r105563;
        double r105565 = 2.0;
        double r105566 = pow(r105564, r105565);
        double r105567 = 4.0;
        double r105568 = 1.0;
        double r105569 = r105568 + r105560;
        double r105570 = r105561 * r105569;
        double r105571 = 3.0;
        double r105572 = r105571 * r105560;
        double r105573 = r105568 - r105572;
        double r105574 = r105563 * r105573;
        double r105575 = r105570 + r105574;
        double r105576 = r105567 * r105575;
        double r105577 = r105566 + r105576;
        double r105578 = r105577 - r105568;
        return r105578;
}

double f(double a, double b) {
        double r105579 = a;
        double r105580 = r105579 * r105579;
        double r105581 = b;
        double r105582 = r105581 * r105581;
        double r105583 = r105580 + r105582;
        double r105584 = 2.0;
        double r105585 = pow(r105583, r105584);
        double r105586 = 4.0;
        double r105587 = 1.0;
        double r105588 = r105587 + r105579;
        double r105589 = r105580 * r105588;
        double r105590 = cbrt(r105589);
        double r105591 = r105590 * r105590;
        double r105592 = r105591 * r105590;
        double r105593 = 3.0;
        double r105594 = r105593 * r105579;
        double r105595 = r105587 - r105594;
        double r105596 = r105582 * r105595;
        double r105597 = r105592 + r105596;
        double r105598 = r105586 * r105597;
        double r105599 = r105585 + r105598;
        double r105600 = r105599 - r105587;
        return r105600;
}

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(1 - 3 \cdot a\right)\right)\right) - 1\]
  2. Using strategy rm
  3. Applied add-cube-cbrt0.2

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

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

Reproduce

herbie shell --seed 2020035 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))