\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{x \cdot 1}{\tan B}\right) + \left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right)\\
\mathbf{elif}\;F \le 2.4906907027944938 \cdot 10^{81}:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \frac{\frac{F}{\sin B}}{{\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}\\
\mathbf{else}:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \left(\frac{1}{\sin B} - 1 \cdot \frac{1}{\sin B \cdot {F}^{2}}\right)\\
\end{array}double f(double F, double B, double x) {
double r38530 = x;
double r38531 = 1.0;
double r38532 = B;
double r38533 = tan(r38532);
double r38534 = r38531 / r38533;
double r38535 = r38530 * r38534;
double r38536 = -r38535;
double r38537 = F;
double r38538 = sin(r38532);
double r38539 = r38537 / r38538;
double r38540 = r38537 * r38537;
double r38541 = 2.0;
double r38542 = r38540 + r38541;
double r38543 = r38541 * r38530;
double r38544 = r38542 + r38543;
double r38545 = r38531 / r38541;
double r38546 = -r38545;
double r38547 = pow(r38544, r38546);
double r38548 = r38539 * r38547;
double r38549 = r38536 + r38548;
return r38549;
}
double f(double F, double B, double x) {
double r38550 = F;
double r38551 = -2.980655836879585e+29;
bool r38552 = r38550 <= r38551;
double r38553 = x;
double r38554 = 1.0;
double r38555 = r38553 * r38554;
double r38556 = B;
double r38557 = tan(r38556);
double r38558 = r38555 / r38557;
double r38559 = -r38558;
double r38560 = 1.0;
double r38561 = sin(r38556);
double r38562 = 2.0;
double r38563 = pow(r38550, r38562);
double r38564 = r38561 * r38563;
double r38565 = r38560 / r38564;
double r38566 = r38554 * r38565;
double r38567 = r38560 / r38561;
double r38568 = r38566 - r38567;
double r38569 = r38559 + r38568;
double r38570 = 2.4906907027944938e+81;
bool r38571 = r38550 <= r38570;
double r38572 = r38550 / r38561;
double r38573 = r38550 * r38550;
double r38574 = 2.0;
double r38575 = r38573 + r38574;
double r38576 = r38574 * r38553;
double r38577 = r38575 + r38576;
double r38578 = r38554 / r38574;
double r38579 = pow(r38577, r38578);
double r38580 = r38572 / r38579;
double r38581 = r38559 + r38580;
double r38582 = r38567 - r38566;
double r38583 = r38559 + r38582;
double r38584 = r38571 ? r38581 : r38583;
double r38585 = r38552 ? r38569 : r38584;
return r38585;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -2.980655836879585e+29Initial program 25.2
rmApplied pow-neg25.2
Applied frac-times20.2
Simplified20.2
rmApplied associate-*r/20.1
Taylor expanded around -inf 0.2
if -2.980655836879585e+29 < F < 2.4906907027944938e+81Initial program 0.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
rmApplied pow-neg32.6
Applied frac-times26.4
Simplified26.4
rmApplied associate-*r/26.4
Taylor expanded around inf 0.2
Final simplification0.4
herbie shell --seed 2020046 +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))))))