Average Error: 0.2 → 0.2
Time: 18.9s
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 r240843 = a;
        double r240844 = r240843 * r240843;
        double r240845 = b;
        double r240846 = r240845 * r240845;
        double r240847 = r240844 + r240846;
        double r240848 = 2.0;
        double r240849 = pow(r240847, r240848);
        double r240850 = 4.0;
        double r240851 = 1.0;
        double r240852 = r240851 + r240843;
        double r240853 = r240844 * r240852;
        double r240854 = 3.0;
        double r240855 = r240854 * r240843;
        double r240856 = r240851 - r240855;
        double r240857 = r240846 * r240856;
        double r240858 = r240853 + r240857;
        double r240859 = r240850 * r240858;
        double r240860 = r240849 + r240859;
        double r240861 = r240860 - r240851;
        return r240861;
}

double f(double a, double b) {
        double r240862 = a;
        double r240863 = r240862 * r240862;
        double r240864 = b;
        double r240865 = r240864 * r240864;
        double r240866 = r240863 + r240865;
        double r240867 = 2.0;
        double r240868 = pow(r240866, r240867);
        double r240869 = 4.0;
        double r240870 = 1.0;
        double r240871 = r240870 + r240862;
        double r240872 = r240863 * r240871;
        double r240873 = 3.0;
        double r240874 = r240873 * r240862;
        double r240875 = r240870 - r240874;
        double r240876 = r240865 * r240875;
        double r240877 = r240872 + r240876;
        double r240878 = r240869 * r240877;
        double r240879 = r240868 + r240878;
        double r240880 = r240879 - r240870;
        return r240880;
}

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