Average Error: 0.2 → 0.2
Time: 24.6s
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 r98490 = a;
        double r98491 = r98490 * r98490;
        double r98492 = b;
        double r98493 = r98492 * r98492;
        double r98494 = r98491 + r98493;
        double r98495 = 2.0;
        double r98496 = pow(r98494, r98495);
        double r98497 = 4.0;
        double r98498 = 1.0;
        double r98499 = r98498 + r98490;
        double r98500 = r98491 * r98499;
        double r98501 = 3.0;
        double r98502 = r98501 * r98490;
        double r98503 = r98498 - r98502;
        double r98504 = r98493 * r98503;
        double r98505 = r98500 + r98504;
        double r98506 = r98497 * r98505;
        double r98507 = r98496 + r98506;
        double r98508 = r98507 - r98498;
        return r98508;
}

double f(double a, double b) {
        double r98509 = a;
        double r98510 = r98509 * r98509;
        double r98511 = b;
        double r98512 = r98511 * r98511;
        double r98513 = r98510 + r98512;
        double r98514 = 2.0;
        double r98515 = pow(r98513, r98514);
        double r98516 = 4.0;
        double r98517 = 1.0;
        double r98518 = r98517 + r98509;
        double r98519 = r98510 * r98518;
        double r98520 = 3.0;
        double r98521 = r98520 * r98509;
        double r98522 = r98517 - r98521;
        double r98523 = r98512 * r98522;
        double r98524 = r98519 + r98523;
        double r98525 = r98516 * r98524;
        double r98526 = r98515 + r98525;
        double r98527 = r98526 - r98517;
        return r98527;
}

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 +o rules:numerics
(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))