Average Error: 0.2 → 0.2
Time: 30.5s
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 r15827423 = a;
        double r15827424 = r15827423 * r15827423;
        double r15827425 = b;
        double r15827426 = r15827425 * r15827425;
        double r15827427 = r15827424 + r15827426;
        double r15827428 = 2.0;
        double r15827429 = pow(r15827427, r15827428);
        double r15827430 = 4.0;
        double r15827431 = 1.0;
        double r15827432 = r15827431 - r15827423;
        double r15827433 = r15827424 * r15827432;
        double r15827434 = 3.0;
        double r15827435 = r15827434 + r15827423;
        double r15827436 = r15827426 * r15827435;
        double r15827437 = r15827433 + r15827436;
        double r15827438 = r15827430 * r15827437;
        double r15827439 = r15827429 + r15827438;
        double r15827440 = r15827439 - r15827431;
        return r15827440;
}

double f(double a, double b) {
        double r15827441 = a;
        double r15827442 = r15827441 * r15827441;
        double r15827443 = b;
        double r15827444 = r15827443 * r15827443;
        double r15827445 = r15827442 + r15827444;
        double r15827446 = 2.0;
        double r15827447 = pow(r15827445, r15827446);
        double r15827448 = 3.0;
        double r15827449 = r15827441 + r15827448;
        double r15827450 = r15827449 * r15827444;
        double r15827451 = 1.0;
        double r15827452 = r15827451 - r15827441;
        double r15827453 = r15827442 * r15827452;
        double r15827454 = r15827450 + r15827453;
        double r15827455 = 4.0;
        double r15827456 = r15827454 * r15827455;
        double r15827457 = r15827447 + r15827456;
        double r15827458 = r15827457 - r15827451;
        return r15827458;
}

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 2019158 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (24)"
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))