Average Error: 0.2 → 0.2
Time: 7.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(a \cdot a\right) \cdot \left(1 + a\right) + \left(\sqrt[3]{\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)} \cdot \sqrt[3]{\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)}\right) \cdot \sqrt[3]{\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(a \cdot a\right) \cdot \left(1 + a\right) + \left(\sqrt[3]{\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)} \cdot \sqrt[3]{\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)}\right) \cdot \sqrt[3]{\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)}\right)\right) - 1
double f(double a, double b) {
        double r121672 = a;
        double r121673 = r121672 * r121672;
        double r121674 = b;
        double r121675 = r121674 * r121674;
        double r121676 = r121673 + r121675;
        double r121677 = 2.0;
        double r121678 = pow(r121676, r121677);
        double r121679 = 4.0;
        double r121680 = 1.0;
        double r121681 = r121680 + r121672;
        double r121682 = r121673 * r121681;
        double r121683 = 3.0;
        double r121684 = r121683 * r121672;
        double r121685 = r121680 - r121684;
        double r121686 = r121675 * r121685;
        double r121687 = r121682 + r121686;
        double r121688 = r121679 * r121687;
        double r121689 = r121678 + r121688;
        double r121690 = r121689 - r121680;
        return r121690;
}

double f(double a, double b) {
        double r121691 = a;
        double r121692 = r121691 * r121691;
        double r121693 = b;
        double r121694 = r121693 * r121693;
        double r121695 = r121692 + r121694;
        double r121696 = 2.0;
        double r121697 = pow(r121695, r121696);
        double r121698 = 4.0;
        double r121699 = 1.0;
        double r121700 = r121699 + r121691;
        double r121701 = r121692 * r121700;
        double r121702 = 3.0;
        double r121703 = r121702 * r121691;
        double r121704 = r121699 - r121703;
        double r121705 = r121694 * r121704;
        double r121706 = cbrt(r121705);
        double r121707 = r121706 * r121706;
        double r121708 = r121707 * r121706;
        double r121709 = r121701 + r121708;
        double r121710 = r121698 * r121709;
        double r121711 = r121697 + r121710;
        double r121712 = r121711 - r121699;
        return r121712;
}

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(\left(a \cdot a\right) \cdot \left(1 + a\right) + \color{blue}{\left(\sqrt[3]{\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)} \cdot \sqrt[3]{\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)}\right) \cdot \sqrt[3]{\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(a \cdot a\right) \cdot \left(1 + a\right) + \left(\sqrt[3]{\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)} \cdot \sqrt[3]{\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)}\right) \cdot \sqrt[3]{\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)}\right)\right) - 1\]

Reproduce

herbie shell --seed 2019346 +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))