Average Error: 0.2 → 0.2
Time: 25.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(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(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
double f(double a, double b) {
        double r206767 = a;
        double r206768 = r206767 * r206767;
        double r206769 = b;
        double r206770 = r206769 * r206769;
        double r206771 = r206768 + r206770;
        double r206772 = 2.0;
        double r206773 = pow(r206771, r206772);
        double r206774 = 4.0;
        double r206775 = 1.0;
        double r206776 = r206775 + r206767;
        double r206777 = r206768 * r206776;
        double r206778 = 3.0;
        double r206779 = r206778 * r206767;
        double r206780 = r206775 - r206779;
        double r206781 = r206770 * r206780;
        double r206782 = r206777 + r206781;
        double r206783 = r206774 * r206782;
        double r206784 = r206773 + r206783;
        double r206785 = r206784 - r206775;
        return r206785;
}

double f(double a, double b) {
        double r206786 = a;
        double r206787 = r206786 * r206786;
        double r206788 = b;
        double r206789 = r206788 * r206788;
        double r206790 = r206787 + r206789;
        double r206791 = 2.0;
        double r206792 = pow(r206790, r206791);
        double r206793 = 4.0;
        double r206794 = 1.0;
        double r206795 = r206794 + r206786;
        double r206796 = r206787 * r206795;
        double r206797 = 3.0;
        double r206798 = r206797 * r206786;
        double r206799 = r206794 - r206798;
        double r206800 = r206789 * r206799;
        double r206801 = r206796 + r206800;
        double r206802 = r206793 * r206801;
        double r206803 = r206792 + r206802;
        double r206804 = r206803 - r206794;
        return r206804;
}

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

Reproduce

herbie shell --seed 2019306 
(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))