\left(\frac{\pi}{2} \cdot \frac{1}{b \cdot b - a \cdot a}\right) \cdot \left(\frac{1}{a} - \frac{1}{b}\right)\frac{\mathsf{log1p}\left(\mathsf{expm1}\left(\left(1 \cdot \left(b - a\right)\right) \cdot \left(\frac{\frac{\pi}{2}}{b + a} \cdot 1\right)\right)\right)}{\left(b - a\right) \cdot \left(a \cdot b\right)}double f(double a, double b) {
double r54738 = atan2(1.0, 0.0);
double r54739 = 2.0;
double r54740 = r54738 / r54739;
double r54741 = 1.0;
double r54742 = b;
double r54743 = r54742 * r54742;
double r54744 = a;
double r54745 = r54744 * r54744;
double r54746 = r54743 - r54745;
double r54747 = r54741 / r54746;
double r54748 = r54740 * r54747;
double r54749 = r54741 / r54744;
double r54750 = r54741 / r54742;
double r54751 = r54749 - r54750;
double r54752 = r54748 * r54751;
return r54752;
}
double f(double a, double b) {
double r54753 = 1.0;
double r54754 = b;
double r54755 = a;
double r54756 = r54754 - r54755;
double r54757 = r54753 * r54756;
double r54758 = atan2(1.0, 0.0);
double r54759 = 2.0;
double r54760 = r54758 / r54759;
double r54761 = r54754 + r54755;
double r54762 = r54760 / r54761;
double r54763 = r54762 * r54753;
double r54764 = r54757 * r54763;
double r54765 = expm1(r54764);
double r54766 = log1p(r54765);
double r54767 = r54755 * r54754;
double r54768 = r54756 * r54767;
double r54769 = r54766 / r54768;
return r54769;
}



Bits error versus a



Bits error versus b
Results
Initial program 14.5
rmApplied difference-of-squares9.8
Applied *-un-lft-identity9.8
Applied times-frac9.3
Applied associate-*r*9.3
Simplified9.3
rmApplied associate-*r/9.2
Applied associate-*l/0.3
rmApplied frac-sub0.3
Applied associate-*r/0.3
Applied associate-/l/0.8
rmApplied log1p-expm1-u0.8
Simplified0.8
Final simplification0.8
herbie shell --seed 2019325 +o rules:numerics
(FPCore (a b)
:name "NMSE Section 6.1 mentioned, B"
:precision binary64
(* (* (/ PI 2) (/ 1 (- (* b b) (* a a)))) (- (/ 1 a) (/ 1 b))))