\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 -314626798588556.4:\\
\;\;\;\;\frac{\frac{1}{F \cdot F} - 1}{\sin B} - \frac{x}{\tan B}\\
\mathbf{elif}\;F \le 3.537800433451938 \cdot 10^{+16}:\\
\;\;\;\;\frac{{\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\frac{-1}{2}}}{\frac{\sin B}{F}} - \frac{x}{\tan B}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{\sin B} - \frac{\frac{1}{\sin B}}{F \cdot F}\right) - \frac{x}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r4902715 = x;
double r4902716 = 1.0;
double r4902717 = B;
double r4902718 = tan(r4902717);
double r4902719 = r4902716 / r4902718;
double r4902720 = r4902715 * r4902719;
double r4902721 = -r4902720;
double r4902722 = F;
double r4902723 = sin(r4902717);
double r4902724 = r4902722 / r4902723;
double r4902725 = r4902722 * r4902722;
double r4902726 = 2.0;
double r4902727 = r4902725 + r4902726;
double r4902728 = r4902726 * r4902715;
double r4902729 = r4902727 + r4902728;
double r4902730 = r4902716 / r4902726;
double r4902731 = -r4902730;
double r4902732 = pow(r4902729, r4902731);
double r4902733 = r4902724 * r4902732;
double r4902734 = r4902721 + r4902733;
return r4902734;
}
double f(double F, double B, double x) {
double r4902735 = F;
double r4902736 = -314626798588556.4;
bool r4902737 = r4902735 <= r4902736;
double r4902738 = 1.0;
double r4902739 = r4902735 * r4902735;
double r4902740 = r4902738 / r4902739;
double r4902741 = r4902740 - r4902738;
double r4902742 = B;
double r4902743 = sin(r4902742);
double r4902744 = r4902741 / r4902743;
double r4902745 = x;
double r4902746 = tan(r4902742);
double r4902747 = r4902745 / r4902746;
double r4902748 = r4902744 - r4902747;
double r4902749 = 3.537800433451938e+16;
bool r4902750 = r4902735 <= r4902749;
double r4902751 = 2.0;
double r4902752 = r4902739 + r4902751;
double r4902753 = r4902751 * r4902745;
double r4902754 = r4902752 + r4902753;
double r4902755 = -0.5;
double r4902756 = pow(r4902754, r4902755);
double r4902757 = r4902743 / r4902735;
double r4902758 = r4902756 / r4902757;
double r4902759 = r4902758 - r4902747;
double r4902760 = r4902738 / r4902743;
double r4902761 = r4902760 / r4902739;
double r4902762 = r4902760 - r4902761;
double r4902763 = r4902762 - r4902747;
double r4902764 = r4902750 ? r4902759 : r4902763;
double r4902765 = r4902737 ? r4902748 : r4902764;
return r4902765;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -314626798588556.4Initial program 25.1
Simplified19.3
Taylor expanded around -inf 0.2
Simplified0.2
if -314626798588556.4 < F < 3.537800433451938e+16Initial program 0.4
Simplified0.3
rmApplied associate-/l*0.3
if 3.537800433451938e+16 < F Initial program 26.5
Simplified20.5
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.2
herbie shell --seed 2019107
(FPCore (F B x)
:name "VandenBroeck and Keller, Equation (23)"
(+ (- (* x (/ 1 (tan B)))) (* (/ F (sin B)) (pow (+ (+ (* F F) 2) (* 2 x)) (- (/ 1 2))))))