\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 -2.980655836879585 \cdot 10^{29}:\\
\;\;\;\;\left(\frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right) - \frac{x \cdot 1}{\tan B}\\
\mathbf{elif}\;F \le 2.4906907027944938 \cdot 10^{81}:\\
\;\;\;\;\frac{\frac{F}{\sin B}}{{\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}} - \frac{x \cdot 1}{\tan B}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{\sin B} - \frac{1}{\sin B \cdot {F}^{2}}\right) - \frac{x \cdot 1}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r37982 = x;
double r37983 = 1.0;
double r37984 = B;
double r37985 = tan(r37984);
double r37986 = r37983 / r37985;
double r37987 = r37982 * r37986;
double r37988 = -r37987;
double r37989 = F;
double r37990 = sin(r37984);
double r37991 = r37989 / r37990;
double r37992 = r37989 * r37989;
double r37993 = 2.0;
double r37994 = r37992 + r37993;
double r37995 = r37993 * r37982;
double r37996 = r37994 + r37995;
double r37997 = r37983 / r37993;
double r37998 = -r37997;
double r37999 = pow(r37996, r37998);
double r38000 = r37991 * r37999;
double r38001 = r37988 + r38000;
return r38001;
}
double f(double F, double B, double x) {
double r38002 = F;
double r38003 = -2.980655836879585e+29;
bool r38004 = r38002 <= r38003;
double r38005 = 1.0;
double r38006 = B;
double r38007 = sin(r38006);
double r38008 = 2.0;
double r38009 = pow(r38002, r38008);
double r38010 = r38007 * r38009;
double r38011 = r38005 / r38010;
double r38012 = 1.0;
double r38013 = r38012 / r38007;
double r38014 = r38011 - r38013;
double r38015 = x;
double r38016 = r38015 * r38005;
double r38017 = tan(r38006);
double r38018 = r38016 / r38017;
double r38019 = r38014 - r38018;
double r38020 = 2.4906907027944938e+81;
bool r38021 = r38002 <= r38020;
double r38022 = r38002 / r38007;
double r38023 = r38002 * r38002;
double r38024 = 2.0;
double r38025 = r38023 + r38024;
double r38026 = r38024 * r38015;
double r38027 = r38025 + r38026;
double r38028 = r38005 / r38024;
double r38029 = pow(r38027, r38028);
double r38030 = r38022 / r38029;
double r38031 = r38030 - r38018;
double r38032 = r38013 - r38011;
double r38033 = r38032 - r38018;
double r38034 = r38021 ? r38031 : r38033;
double r38035 = r38004 ? r38019 : r38034;
return r38035;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -2.980655836879585e+29Initial program 25.2
Simplified25.2
rmApplied pow-neg25.2
Applied frac-times20.2
Simplified20.2
rmApplied associate-*r/20.1
Taylor expanded around -inf 0.2
Simplified0.2
if -2.980655836879585e+29 < F < 2.4906907027944938e+81Initial program 0.8
Simplified0.8
rmApplied pow-neg0.8
Applied frac-times0.4
Simplified0.4
rmApplied associate-*r/0.3
rmApplied associate-/r*0.7
if 2.4906907027944938e+81 < F Initial program 32.6
Simplified32.6
rmApplied pow-neg32.6
Applied frac-times26.4
Simplified26.4
rmApplied associate-*r/26.4
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.4
herbie shell --seed 2020046
(FPCore (F B x)
:name "VandenBroeck and Keller, Equation (23)"
:precision binary64
(+ (- (* x (/ 1 (tan B)))) (* (/ F (sin B)) (pow (+ (+ (* F F) 2) (* 2 x)) (- (/ 1 2))))))