\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 -1916035079740980815957939636404224:\\
\;\;\;\;\left(\frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right) - \frac{1 \cdot x}{\tan B}\\
\mathbf{elif}\;F \le 1.59401886481141404148874833157211589052 \cdot 10^{-9}:\\
\;\;\;\;\frac{\frac{F}{\sin B}}{{\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}} - \frac{1 \cdot x}{\tan B}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{\sin B} - \frac{1}{\sin B \cdot {F}^{2}}\right) - \frac{1 \cdot x}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r47040 = x;
double r47041 = 1.0;
double r47042 = B;
double r47043 = tan(r47042);
double r47044 = r47041 / r47043;
double r47045 = r47040 * r47044;
double r47046 = -r47045;
double r47047 = F;
double r47048 = sin(r47042);
double r47049 = r47047 / r47048;
double r47050 = r47047 * r47047;
double r47051 = 2.0;
double r47052 = r47050 + r47051;
double r47053 = r47051 * r47040;
double r47054 = r47052 + r47053;
double r47055 = r47041 / r47051;
double r47056 = -r47055;
double r47057 = pow(r47054, r47056);
double r47058 = r47049 * r47057;
double r47059 = r47046 + r47058;
return r47059;
}
double f(double F, double B, double x) {
double r47060 = F;
double r47061 = -1.9160350797409808e+33;
bool r47062 = r47060 <= r47061;
double r47063 = 1.0;
double r47064 = B;
double r47065 = sin(r47064);
double r47066 = 2.0;
double r47067 = pow(r47060, r47066);
double r47068 = r47065 * r47067;
double r47069 = r47063 / r47068;
double r47070 = 1.0;
double r47071 = r47070 / r47065;
double r47072 = r47069 - r47071;
double r47073 = x;
double r47074 = r47063 * r47073;
double r47075 = tan(r47064);
double r47076 = r47074 / r47075;
double r47077 = r47072 - r47076;
double r47078 = 1.594018864811414e-09;
bool r47079 = r47060 <= r47078;
double r47080 = r47060 / r47065;
double r47081 = r47060 * r47060;
double r47082 = 2.0;
double r47083 = r47081 + r47082;
double r47084 = r47082 * r47073;
double r47085 = r47083 + r47084;
double r47086 = r47063 / r47082;
double r47087 = pow(r47085, r47086);
double r47088 = r47080 / r47087;
double r47089 = r47088 - r47076;
double r47090 = r47071 - r47069;
double r47091 = r47090 - r47076;
double r47092 = r47079 ? r47089 : r47091;
double r47093 = r47062 ? r47077 : r47092;
return r47093;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -1.9160350797409808e+33Initial program 27.3
Simplified27.3
rmApplied pow-neg27.3
Applied frac-times21.5
Simplified21.5
rmApplied associate-*r/21.4
Simplified21.4
Taylor expanded around -inf 0.1
Simplified0.1
if -1.9160350797409808e+33 < F < 1.594018864811414e-09Initial program 0.4
Simplified0.4
rmApplied pow-neg0.5
Applied frac-times0.4
Simplified0.4
rmApplied associate-*r/0.3
Simplified0.3
rmApplied associate-/r*0.3
if 1.594018864811414e-09 < F Initial program 25.3
Simplified25.3
rmApplied pow-neg25.3
Applied frac-times19.1
Simplified19.1
rmApplied associate-*r/19.1
Simplified19.1
Taylor expanded around inf 1.4
Simplified1.4
Final simplification0.6
herbie shell --seed 2019304
(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))))))