\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 -1.302914408708786268625634574942143609494 \cdot 10^{114}:\\
\;\;\;\;\left(\frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right) - \frac{x \cdot 1}{\tan B}\\
\mathbf{elif}\;F \le 11806.98018049278834951110184192657470703:\\
\;\;\;\;\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 r55003 = x;
double r55004 = 1.0;
double r55005 = B;
double r55006 = tan(r55005);
double r55007 = r55004 / r55006;
double r55008 = r55003 * r55007;
double r55009 = -r55008;
double r55010 = F;
double r55011 = sin(r55005);
double r55012 = r55010 / r55011;
double r55013 = r55010 * r55010;
double r55014 = 2.0;
double r55015 = r55013 + r55014;
double r55016 = r55014 * r55003;
double r55017 = r55015 + r55016;
double r55018 = r55004 / r55014;
double r55019 = -r55018;
double r55020 = pow(r55017, r55019);
double r55021 = r55012 * r55020;
double r55022 = r55009 + r55021;
return r55022;
}
double f(double F, double B, double x) {
double r55023 = F;
double r55024 = -1.3029144087087863e+114;
bool r55025 = r55023 <= r55024;
double r55026 = 1.0;
double r55027 = B;
double r55028 = sin(r55027);
double r55029 = 2.0;
double r55030 = pow(r55023, r55029);
double r55031 = r55028 * r55030;
double r55032 = r55026 / r55031;
double r55033 = 1.0;
double r55034 = r55033 / r55028;
double r55035 = r55032 - r55034;
double r55036 = x;
double r55037 = r55036 * r55026;
double r55038 = tan(r55027);
double r55039 = r55037 / r55038;
double r55040 = r55035 - r55039;
double r55041 = 11806.980180492788;
bool r55042 = r55023 <= r55041;
double r55043 = r55023 / r55028;
double r55044 = r55023 * r55023;
double r55045 = 2.0;
double r55046 = r55044 + r55045;
double r55047 = r55045 * r55036;
double r55048 = r55046 + r55047;
double r55049 = r55026 / r55045;
double r55050 = pow(r55048, r55049);
double r55051 = r55043 / r55050;
double r55052 = r55051 - r55039;
double r55053 = r55034 - r55032;
double r55054 = r55053 - r55039;
double r55055 = r55042 ? r55052 : r55054;
double r55056 = r55025 ? r55040 : r55055;
return r55056;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -1.3029144087087863e+114Initial program 34.9
Simplified34.9
rmApplied pow-neg34.9
Applied frac-times28.6
Simplified28.6
rmApplied associate-*r/28.5
rmApplied div-inv28.5
Taylor expanded around -inf 0.1
Simplified0.1
if -1.3029144087087863e+114 < F < 11806.980180492788Initial program 1.1
Simplified1.1
rmApplied pow-neg1.2
Applied frac-times0.4
Simplified0.4
rmApplied associate-*r/0.3
rmApplied associate-/r*1.0
if 11806.980180492788 < F Initial program 23.6
Simplified23.6
rmApplied pow-neg23.6
Applied frac-times17.5
Simplified17.5
rmApplied associate-*r/17.4
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.6
herbie shell --seed 2019209
(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))))))