Average Error: 0.2 → 0.2
Time: 24.0s
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({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(a + 3\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1 - a\right)\right) \cdot 4\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({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(a + 3\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1 - a\right)\right) \cdot 4\right) - 1
double f(double a, double b) {
        double r8924798 = a;
        double r8924799 = r8924798 * r8924798;
        double r8924800 = b;
        double r8924801 = r8924800 * r8924800;
        double r8924802 = r8924799 + r8924801;
        double r8924803 = 2.0;
        double r8924804 = pow(r8924802, r8924803);
        double r8924805 = 4.0;
        double r8924806 = 1.0;
        double r8924807 = r8924806 - r8924798;
        double r8924808 = r8924799 * r8924807;
        double r8924809 = 3.0;
        double r8924810 = r8924809 + r8924798;
        double r8924811 = r8924801 * r8924810;
        double r8924812 = r8924808 + r8924811;
        double r8924813 = r8924805 * r8924812;
        double r8924814 = r8924804 + r8924813;
        double r8924815 = r8924814 - r8924806;
        return r8924815;
}

double f(double a, double b) {
        double r8924816 = a;
        double r8924817 = r8924816 * r8924816;
        double r8924818 = b;
        double r8924819 = r8924818 * r8924818;
        double r8924820 = r8924817 + r8924819;
        double r8924821 = 2.0;
        double r8924822 = pow(r8924820, r8924821);
        double r8924823 = 3.0;
        double r8924824 = r8924816 + r8924823;
        double r8924825 = r8924824 * r8924819;
        double r8924826 = 1.0;
        double r8924827 = r8924826 - r8924816;
        double r8924828 = r8924817 * r8924827;
        double r8924829 = r8924825 + r8924828;
        double r8924830 = 4.0;
        double r8924831 = r8924829 * r8924830;
        double r8924832 = r8924822 + r8924831;
        double r8924833 = r8924832 - r8924826;
        return r8924833;
}

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. Final simplification0.2

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

Reproduce

herbie shell --seed 2019171 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (24)"
  (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (- 1.0 a)) (* (* b b) (+ 3.0 a))))) 1.0))