\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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right)\right) + (b \cdot \left((b \cdot b + \left(\left(a \cdot a\right) \cdot 2\right))_* \cdot b\right) + \left({a}^{4}\right))_*\right) - 1double f(double a, double b) {
double r14742649 = a;
double r14742650 = r14742649 * r14742649;
double r14742651 = b;
double r14742652 = r14742651 * r14742651;
double r14742653 = r14742650 + r14742652;
double r14742654 = 2.0;
double r14742655 = pow(r14742653, r14742654);
double r14742656 = 4.0;
double r14742657 = 1.0;
double r14742658 = r14742657 + r14742649;
double r14742659 = r14742650 * r14742658;
double r14742660 = 3.0;
double r14742661 = r14742660 * r14742649;
double r14742662 = r14742657 - r14742661;
double r14742663 = r14742652 * r14742662;
double r14742664 = r14742659 + r14742663;
double r14742665 = r14742656 * r14742664;
double r14742666 = r14742655 + r14742665;
double r14742667 = r14742666 - r14742657;
return r14742667;
}
double f(double a, double b) {
double r14742668 = 4.0;
double r14742669 = a;
double r14742670 = r14742669 * r14742669;
double r14742671 = 1.0;
double r14742672 = r14742671 + r14742669;
double r14742673 = r14742670 * r14742672;
double r14742674 = b;
double r14742675 = r14742674 * r14742674;
double r14742676 = 3.0;
double r14742677 = r14742669 * r14742676;
double r14742678 = r14742671 - r14742677;
double r14742679 = r14742675 * r14742678;
double r14742680 = r14742673 + r14742679;
double r14742681 = r14742668 * r14742680;
double r14742682 = 2.0;
double r14742683 = r14742670 * r14742682;
double r14742684 = fma(r14742674, r14742674, r14742683);
double r14742685 = r14742684 * r14742674;
double r14742686 = pow(r14742669, r14742668);
double r14742687 = fma(r14742674, r14742685, r14742686);
double r14742688 = r14742681 + r14742687;
double r14742689 = r14742688 - r14742671;
return r14742689;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Taylor expanded around 0 0.0
Simplified0.2
rmApplied pow10.2
Applied pow10.2
Applied pow-sqr0.2
Applied pow10.2
Applied pow-plus0.2
Applied pow-prod-up0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019104 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))