Average Error: 0.2 → 0.2
Time: 17.2s
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} + 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} + 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} + 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
double f(double a, double b) {
        double r225826 = a;
        double r225827 = r225826 * r225826;
        double r225828 = b;
        double r225829 = r225828 * r225828;
        double r225830 = r225827 + r225829;
        double r225831 = 2.0;
        double r225832 = pow(r225830, r225831);
        double r225833 = 4.0;
        double r225834 = 1.0;
        double r225835 = r225834 - r225826;
        double r225836 = r225827 * r225835;
        double r225837 = 3.0;
        double r225838 = r225837 + r225826;
        double r225839 = r225829 * r225838;
        double r225840 = r225836 + r225839;
        double r225841 = r225833 * r225840;
        double r225842 = r225832 + r225841;
        double r225843 = r225842 - r225834;
        return r225843;
}

double f(double a, double b) {
        double r225844 = a;
        double r225845 = r225844 * r225844;
        double r225846 = b;
        double r225847 = r225846 * r225846;
        double r225848 = r225845 + r225847;
        double r225849 = 2.0;
        double r225850 = pow(r225848, r225849);
        double r225851 = 4.0;
        double r225852 = 1.0;
        double r225853 = r225852 - r225844;
        double r225854 = r225845 * r225853;
        double r225855 = 3.0;
        double r225856 = r225855 + r225844;
        double r225857 = r225847 * r225856;
        double r225858 = r225854 + r225857;
        double r225859 = r225851 * r225858;
        double r225860 = r225850 + r225859;
        double r225861 = r225860 - r225852;
        return r225861;
}

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} + 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\]

Reproduce

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