Average Error: 0.2 → 0.2
Time: 6.3s
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 r118774 = a;
        double r118775 = r118774 * r118774;
        double r118776 = b;
        double r118777 = r118776 * r118776;
        double r118778 = r118775 + r118777;
        double r118779 = 2.0;
        double r118780 = pow(r118778, r118779);
        double r118781 = 4.0;
        double r118782 = 1.0;
        double r118783 = r118782 + r118774;
        double r118784 = r118775 * r118783;
        double r118785 = 3.0;
        double r118786 = r118785 * r118774;
        double r118787 = r118782 - r118786;
        double r118788 = r118777 * r118787;
        double r118789 = r118784 + r118788;
        double r118790 = r118781 * r118789;
        double r118791 = r118780 + r118790;
        double r118792 = r118791 - r118782;
        return r118792;
}

double f(double a, double b) {
        double r118793 = a;
        double r118794 = r118793 * r118793;
        double r118795 = b;
        double r118796 = r118795 * r118795;
        double r118797 = r118794 + r118796;
        double r118798 = 2.0;
        double r118799 = pow(r118797, r118798);
        double r118800 = 4.0;
        double r118801 = 1.0;
        double r118802 = r118801 + r118793;
        double r118803 = r118794 * r118802;
        double r118804 = 3.0;
        double r118805 = r118804 * r118793;
        double r118806 = r118801 - r118805;
        double r118807 = r118796 * r118806;
        double r118808 = r118803 + r118807;
        double r118809 = r118800 * r118808;
        double r118810 = r118799 + r118809;
        double r118811 = r118810 - r118801;
        return r118811;
}

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