\left(-x \cdot \frac{1}{\tan B}\right) + \frac{F}{\sin B} \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}\frac{F \cdot \left({\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{4}} \cdot {\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{4}}\right)}{\sin B} - \frac{x}{\tan B}double f(double F, double B, double x) {
double r862899 = x;
double r862900 = 1.0;
double r862901 = B;
double r862902 = tan(r862901);
double r862903 = r862900 / r862902;
double r862904 = r862899 * r862903;
double r862905 = -r862904;
double r862906 = F;
double r862907 = sin(r862901);
double r862908 = r862906 / r862907;
double r862909 = r862906 * r862906;
double r862910 = 2.0;
double r862911 = r862909 + r862910;
double r862912 = r862910 * r862899;
double r862913 = r862911 + r862912;
double r862914 = r862900 / r862910;
double r862915 = -r862914;
double r862916 = pow(r862913, r862915);
double r862917 = r862908 * r862916;
double r862918 = r862905 + r862917;
return r862918;
}
double f(double F, double B, double x) {
double r862919 = F;
double r862920 = 2.0;
double r862921 = x;
double r862922 = fma(r862919, r862919, r862920);
double r862923 = fma(r862920, r862921, r862922);
double r862924 = -0.25;
double r862925 = pow(r862923, r862924);
double r862926 = r862925 * r862925;
double r862927 = r862919 * r862926;
double r862928 = B;
double r862929 = sin(r862928);
double r862930 = r862927 / r862929;
double r862931 = tan(r862928);
double r862932 = r862921 / r862931;
double r862933 = r862930 - r862932;
return r862933;
}



Bits error versus F



Bits error versus B



Bits error versus x
Initial program 13.2
Simplified13.1
rmApplied associate-*r/10.3
rmApplied sqr-pow10.4
Final simplification10.4
herbie shell --seed 2019128 +o rules:numerics
(FPCore (F B x)
:name "VandenBroeck and Keller, Equation (23)"
(+ (- (* x (/ 1 (tan B)))) (* (/ F (sin B)) (pow (+ (+ (* F F) 2) (* 2 x)) (- (/ 1 2))))))