\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 -78083014094234451968:\\
\;\;\;\;\left(\frac{1}{\sin B \cdot \left(F \cdot F\right)} - \frac{1}{\sin B}\right) - \frac{x}{\tan B} \cdot 1\\
\mathbf{elif}\;F \le 18488014.1702118404209613800048828125:\\
\;\;\;\;\frac{\frac{1}{{\left(\left(2 + F \cdot F\right) + x \cdot 2\right)}^{\left(\frac{1}{2}\right)}}}{\frac{\sin B}{F}} - \frac{x}{\tan B} \cdot 1\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{\sin B} - \frac{1}{\sin B \cdot \left(F \cdot F\right)}\right) - \frac{x}{\tan B} \cdot 1\\
\end{array}double f(double F, double B, double x) {
double r1961839 = x;
double r1961840 = 1.0;
double r1961841 = B;
double r1961842 = tan(r1961841);
double r1961843 = r1961840 / r1961842;
double r1961844 = r1961839 * r1961843;
double r1961845 = -r1961844;
double r1961846 = F;
double r1961847 = sin(r1961841);
double r1961848 = r1961846 / r1961847;
double r1961849 = r1961846 * r1961846;
double r1961850 = 2.0;
double r1961851 = r1961849 + r1961850;
double r1961852 = r1961850 * r1961839;
double r1961853 = r1961851 + r1961852;
double r1961854 = r1961840 / r1961850;
double r1961855 = -r1961854;
double r1961856 = pow(r1961853, r1961855);
double r1961857 = r1961848 * r1961856;
double r1961858 = r1961845 + r1961857;
return r1961858;
}
double f(double F, double B, double x) {
double r1961859 = F;
double r1961860 = -7.808301409423445e+19;
bool r1961861 = r1961859 <= r1961860;
double r1961862 = 1.0;
double r1961863 = B;
double r1961864 = sin(r1961863);
double r1961865 = r1961859 * r1961859;
double r1961866 = r1961864 * r1961865;
double r1961867 = r1961862 / r1961866;
double r1961868 = 1.0;
double r1961869 = r1961868 / r1961864;
double r1961870 = r1961867 - r1961869;
double r1961871 = x;
double r1961872 = tan(r1961863);
double r1961873 = r1961871 / r1961872;
double r1961874 = r1961873 * r1961862;
double r1961875 = r1961870 - r1961874;
double r1961876 = 18488014.17021184;
bool r1961877 = r1961859 <= r1961876;
double r1961878 = 2.0;
double r1961879 = r1961878 + r1961865;
double r1961880 = r1961871 * r1961878;
double r1961881 = r1961879 + r1961880;
double r1961882 = r1961862 / r1961878;
double r1961883 = pow(r1961881, r1961882);
double r1961884 = r1961868 / r1961883;
double r1961885 = r1961864 / r1961859;
double r1961886 = r1961884 / r1961885;
double r1961887 = r1961886 - r1961874;
double r1961888 = r1961869 - r1961867;
double r1961889 = r1961888 - r1961874;
double r1961890 = r1961877 ? r1961887 : r1961889;
double r1961891 = r1961861 ? r1961875 : r1961890;
return r1961891;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -7.808301409423445e+19Initial program 26.8
Simplified26.3
rmApplied div-inv26.3
Applied associate-*l*26.3
Simplified26.2
Taylor expanded around -inf 0.2
Simplified0.2
if -7.808301409423445e+19 < F < 18488014.17021184Initial program 0.4
Simplified0.4
rmApplied div-inv0.4
Applied associate-*l*0.4
Simplified0.3
rmApplied distribute-frac-neg0.3
Applied pow-neg0.3
if 18488014.17021184 < F Initial program 26.1
Simplified25.2
rmApplied div-inv25.2
Applied associate-*l*25.2
Simplified25.1
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.2
herbie shell --seed 2019169
(FPCore (F B x)
:name "VandenBroeck and Keller, Equation (23)"
(+ (- (* x (/ 1.0 (tan B)))) (* (/ F (sin B)) (pow (+ (+ (* F F) 2.0) (* 2.0 x)) (- (/ 1.0 2.0))))))