\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)}\begin{array}{l}
\mathbf{if}\;F \le -13373.23580706387:\\
\;\;\;\;\frac{\frac{1}{F \cdot F} - 1}{\sin B} - \frac{x}{\tan B}\\
\mathbf{elif}\;F \le 13.525519432605135:\\
\;\;\;\;\frac{{\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\frac{-1}{2}}}{\frac{\sin B}{F}} - \frac{x}{\tan B}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 - \frac{1}{F \cdot F}}{\sin B} - \frac{x}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r1487841 = x;
double r1487842 = 1.0;
double r1487843 = B;
double r1487844 = tan(r1487843);
double r1487845 = r1487842 / r1487844;
double r1487846 = r1487841 * r1487845;
double r1487847 = -r1487846;
double r1487848 = F;
double r1487849 = sin(r1487843);
double r1487850 = r1487848 / r1487849;
double r1487851 = r1487848 * r1487848;
double r1487852 = 2.0;
double r1487853 = r1487851 + r1487852;
double r1487854 = r1487852 * r1487841;
double r1487855 = r1487853 + r1487854;
double r1487856 = r1487842 / r1487852;
double r1487857 = -r1487856;
double r1487858 = pow(r1487855, r1487857);
double r1487859 = r1487850 * r1487858;
double r1487860 = r1487847 + r1487859;
return r1487860;
}
double f(double F, double B, double x) {
double r1487861 = F;
double r1487862 = -13373.23580706387;
bool r1487863 = r1487861 <= r1487862;
double r1487864 = 1.0;
double r1487865 = r1487861 * r1487861;
double r1487866 = r1487864 / r1487865;
double r1487867 = r1487866 - r1487864;
double r1487868 = B;
double r1487869 = sin(r1487868);
double r1487870 = r1487867 / r1487869;
double r1487871 = x;
double r1487872 = tan(r1487868);
double r1487873 = r1487871 / r1487872;
double r1487874 = r1487870 - r1487873;
double r1487875 = 13.525519432605135;
bool r1487876 = r1487861 <= r1487875;
double r1487877 = 2.0;
double r1487878 = r1487865 + r1487877;
double r1487879 = r1487877 * r1487871;
double r1487880 = r1487878 + r1487879;
double r1487881 = -0.5;
double r1487882 = pow(r1487880, r1487881);
double r1487883 = r1487869 / r1487861;
double r1487884 = r1487882 / r1487883;
double r1487885 = r1487884 - r1487873;
double r1487886 = r1487864 - r1487866;
double r1487887 = r1487886 / r1487869;
double r1487888 = r1487887 - r1487873;
double r1487889 = r1487876 ? r1487885 : r1487888;
double r1487890 = r1487863 ? r1487874 : r1487889;
return r1487890;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -13373.23580706387Initial program 24.7
Simplified19.3
Taylor expanded around -inf 0.1
Simplified0.1
if -13373.23580706387 < F < 13.525519432605135Initial program 0.4
Simplified0.3
rmApplied associate-/l*0.3
if 13.525519432605135 < F Initial program 24.6
Simplified19.3
Taylor expanded around inf 0.3
Simplified0.3
Final simplification0.2
herbie shell --seed 2019158
(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))))))