Average Error: 0.2 → 0.2
Time: 20.7s
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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) + {\left(a \cdot a + b \cdot b\right)}^{2}\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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) + {\left(a \cdot a + b \cdot b\right)}^{2}\right) - 1
double f(double a, double b) {
        double r209791 = a;
        double r209792 = r209791 * r209791;
        double r209793 = b;
        double r209794 = r209793 * r209793;
        double r209795 = r209792 + r209794;
        double r209796 = 2.0;
        double r209797 = pow(r209795, r209796);
        double r209798 = 4.0;
        double r209799 = 1.0;
        double r209800 = r209799 - r209791;
        double r209801 = r209792 * r209800;
        double r209802 = 3.0;
        double r209803 = r209802 + r209791;
        double r209804 = r209794 * r209803;
        double r209805 = r209801 + r209804;
        double r209806 = r209798 * r209805;
        double r209807 = r209797 + r209806;
        double r209808 = r209807 - r209799;
        return r209808;
}

double f(double a, double b) {
        double r209809 = 4.0;
        double r209810 = a;
        double r209811 = r209810 * r209810;
        double r209812 = 1.0;
        double r209813 = r209812 - r209810;
        double r209814 = r209811 * r209813;
        double r209815 = b;
        double r209816 = r209815 * r209815;
        double r209817 = 3.0;
        double r209818 = r209817 + r209810;
        double r209819 = r209816 * r209818;
        double r209820 = r209814 + r209819;
        double r209821 = r209809 * r209820;
        double r209822 = r209811 + r209816;
        double r209823 = 2.0;
        double r209824 = pow(r209822, r209823);
        double r209825 = r209821 + r209824;
        double r209826 = r209825 - r209812;
        return r209826;
}

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. Using strategy rm
  3. Applied +-commutative0.2

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

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

Reproduce

herbie shell --seed 2019208 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (24)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))