\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 -4.060657734187693706877879794747009471683 \cdot 10^{158}:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \frac{\frac{1}{F \cdot F} + -1}{\sin B}\\
\mathbf{elif}\;F \le 1344.095327323162791799404658377170562744:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \frac{\frac{F}{{\left(\mathsf{fma}\left(2, x, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\left(\frac{1}{2}\right)}}}{\sin B}\\
\mathbf{else}:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \frac{1 - \frac{1}{F \cdot F}}{\sin B}\\
\end{array}double f(double F, double B, double x) {
double r68071 = x;
double r68072 = 1.0;
double r68073 = B;
double r68074 = tan(r68073);
double r68075 = r68072 / r68074;
double r68076 = r68071 * r68075;
double r68077 = -r68076;
double r68078 = F;
double r68079 = sin(r68073);
double r68080 = r68078 / r68079;
double r68081 = r68078 * r68078;
double r68082 = 2.0;
double r68083 = r68081 + r68082;
double r68084 = r68082 * r68071;
double r68085 = r68083 + r68084;
double r68086 = r68072 / r68082;
double r68087 = -r68086;
double r68088 = pow(r68085, r68087);
double r68089 = r68080 * r68088;
double r68090 = r68077 + r68089;
return r68090;
}
double f(double F, double B, double x) {
double r68091 = F;
double r68092 = -4.0606577341876937e+158;
bool r68093 = r68091 <= r68092;
double r68094 = x;
double r68095 = 1.0;
double r68096 = r68094 * r68095;
double r68097 = B;
double r68098 = tan(r68097);
double r68099 = r68096 / r68098;
double r68100 = -r68099;
double r68101 = r68091 * r68091;
double r68102 = r68095 / r68101;
double r68103 = -1.0;
double r68104 = r68102 + r68103;
double r68105 = sin(r68097);
double r68106 = r68104 / r68105;
double r68107 = r68100 + r68106;
double r68108 = 1344.0953273231628;
bool r68109 = r68091 <= r68108;
double r68110 = 2.0;
double r68111 = fma(r68091, r68091, r68110);
double r68112 = fma(r68110, r68094, r68111);
double r68113 = r68095 / r68110;
double r68114 = pow(r68112, r68113);
double r68115 = r68091 / r68114;
double r68116 = r68115 / r68105;
double r68117 = r68100 + r68116;
double r68118 = 1.0;
double r68119 = r68118 - r68102;
double r68120 = r68119 / r68105;
double r68121 = r68100 + r68120;
double r68122 = r68109 ? r68117 : r68121;
double r68123 = r68093 ? r68107 : r68122;
return r68123;
}



Bits error versus F



Bits error versus B



Bits error versus x
if F < -4.0606577341876937e+158Initial program 41.1
rmApplied associate-*l/36.0
Simplified36.0
rmApplied associate-*r/35.9
rmApplied pow-neg35.9
Applied associate-*l/35.9
Simplified35.9
Taylor expanded around -inf 0.1
Simplified0.1
if -4.0606577341876937e+158 < F < 1344.0953273231628Initial program 1.8
rmApplied associate-*l/0.6
Simplified0.6
rmApplied associate-*r/0.5
rmApplied pow-neg0.5
Applied associate-*l/0.4
Simplified0.4
if 1344.0953273231628 < F Initial program 24.4
rmApplied associate-*l/18.9
Simplified18.9
rmApplied associate-*r/18.9
rmApplied pow-neg18.8
Applied associate-*l/18.8
Simplified18.8
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.3
herbie shell --seed 2019351 +o rules:numerics
(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))))))