Average Error: 0.2 → 0.2
Time: 13.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(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 r228295 = a;
        double r228296 = r228295 * r228295;
        double r228297 = b;
        double r228298 = r228297 * r228297;
        double r228299 = r228296 + r228298;
        double r228300 = 2.0;
        double r228301 = pow(r228299, r228300);
        double r228302 = 4.0;
        double r228303 = 1.0;
        double r228304 = r228303 - r228295;
        double r228305 = r228296 * r228304;
        double r228306 = 3.0;
        double r228307 = r228306 + r228295;
        double r228308 = r228298 * r228307;
        double r228309 = r228305 + r228308;
        double r228310 = r228302 * r228309;
        double r228311 = r228301 + r228310;
        double r228312 = r228311 - r228303;
        return r228312;
}

double f(double a, double b) {
        double r228313 = a;
        double r228314 = r228313 * r228313;
        double r228315 = b;
        double r228316 = r228315 * r228315;
        double r228317 = r228314 + r228316;
        double r228318 = 2.0;
        double r228319 = pow(r228317, r228318);
        double r228320 = 4.0;
        double r228321 = 1.0;
        double r228322 = r228321 - r228313;
        double r228323 = r228314 * r228322;
        double r228324 = 3.0;
        double r228325 = r228324 + r228313;
        double r228326 = r228316 * r228325;
        double r228327 = r228323 + r228326;
        double r228328 = r228320 * r228327;
        double r228329 = r228319 + r228328;
        double r228330 = r228329 - r228321;
        return r228330;
}

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