\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.5035968290748607 \cdot 10^{47}:\\
\;\;\;\;\left(-x \cdot \frac{1}{\tan B}\right) + \left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right)\\
\mathbf{elif}\;F \le 5.75706281603868059 \cdot 10^{-13}:\\
\;\;\;\;\left(-1 \cdot \frac{x}{\frac{\sin B}{\cos B}}\right) + F \cdot \frac{1}{\sin B \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}\\
\mathbf{else}:\\
\;\;\;\;\left(-x \cdot \frac{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 r37507 = x;
double r37508 = 1.0;
double r37509 = B;
double r37510 = tan(r37509);
double r37511 = r37508 / r37510;
double r37512 = r37507 * r37511;
double r37513 = -r37512;
double r37514 = F;
double r37515 = sin(r37509);
double r37516 = r37514 / r37515;
double r37517 = r37514 * r37514;
double r37518 = 2.0;
double r37519 = r37517 + r37518;
double r37520 = r37518 * r37507;
double r37521 = r37519 + r37520;
double r37522 = r37508 / r37518;
double r37523 = -r37522;
double r37524 = pow(r37521, r37523);
double r37525 = r37516 * r37524;
double r37526 = r37513 + r37525;
return r37526;
}
double f(double F, double B, double x) {
double r37527 = F;
double r37528 = -4.503596829074861e+47;
bool r37529 = r37527 <= r37528;
double r37530 = x;
double r37531 = 1.0;
double r37532 = B;
double r37533 = tan(r37532);
double r37534 = r37531 / r37533;
double r37535 = r37530 * r37534;
double r37536 = -r37535;
double r37537 = 1.0;
double r37538 = sin(r37532);
double r37539 = 2.0;
double r37540 = pow(r37527, r37539);
double r37541 = r37538 * r37540;
double r37542 = r37537 / r37541;
double r37543 = r37531 * r37542;
double r37544 = r37537 / r37538;
double r37545 = r37543 - r37544;
double r37546 = r37536 + r37545;
double r37547 = 5.757062816038681e-13;
bool r37548 = r37527 <= r37547;
double r37549 = cos(r37532);
double r37550 = r37538 / r37549;
double r37551 = r37530 / r37550;
double r37552 = r37531 * r37551;
double r37553 = -r37552;
double r37554 = r37527 * r37527;
double r37555 = 2.0;
double r37556 = r37554 + r37555;
double r37557 = r37555 * r37530;
double r37558 = r37556 + r37557;
double r37559 = r37531 / r37555;
double r37560 = pow(r37558, r37559);
double r37561 = r37538 * r37560;
double r37562 = r37537 / r37561;
double r37563 = r37527 * r37562;
double r37564 = r37553 + r37563;
double r37565 = r37544 - r37543;
double r37566 = r37536 + r37565;
double r37567 = r37548 ? r37564 : r37566;
double r37568 = r37529 ? r37546 : r37567;
return r37568;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -4.503596829074861e+47Initial program 29.0
Taylor expanded around -inf 0.2
if -4.503596829074861e+47 < F < 5.757062816038681e-13Initial program 0.5
rmApplied pow-neg0.6
Applied frac-times0.4
Simplified0.4
Taylor expanded around inf 0.3
rmApplied associate-/l*0.3
rmApplied div-inv0.3
if 5.757062816038681e-13 < F Initial program 24.2
Taylor expanded around inf 2.2
Final simplification0.8
herbie shell --seed 2020056
(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))))))