\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\mathsf{fma}\left({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, 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) - 1double f(double a, double b) {
double r103473 = a;
double r103474 = r103473 * r103473;
double r103475 = b;
double r103476 = r103475 * r103475;
double r103477 = r103474 + r103476;
double r103478 = 2.0;
double r103479 = pow(r103477, r103478);
double r103480 = 4.0;
double r103481 = 1.0;
double r103482 = r103481 + r103473;
double r103483 = r103474 * r103482;
double r103484 = 3.0;
double r103485 = r103484 * r103473;
double r103486 = r103481 - r103485;
double r103487 = r103476 * r103486;
double r103488 = r103483 + r103487;
double r103489 = r103480 * r103488;
double r103490 = r103479 + r103489;
double r103491 = r103490 - r103481;
return r103491;
}
double f(double a, double b) {
double r103492 = a;
double r103493 = r103492 * r103492;
double r103494 = b;
double r103495 = r103494 * r103494;
double r103496 = r103493 + r103495;
double r103497 = 2.0;
double r103498 = 2.0;
double r103499 = r103497 / r103498;
double r103500 = pow(r103496, r103499);
double r103501 = 4.0;
double r103502 = 1.0;
double r103503 = r103502 + r103492;
double r103504 = r103493 * r103503;
double r103505 = 3.0;
double r103506 = r103505 * r103492;
double r103507 = r103502 - r103506;
double r103508 = r103495 * r103507;
double r103509 = r103504 + r103508;
double r103510 = r103501 * r103509;
double r103511 = fma(r103500, r103500, r103510);
double r103512 = r103511 - r103502;
return r103512;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied sqr-pow0.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2020060 +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))