\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 -6.519456150228116 \cdot 10^{+18}:\\
\;\;\;\;\left(\frac{1}{\sin B \cdot \left(F \cdot F\right)} - \frac{1}{\sin B}\right) - \frac{x}{\tan B}\\
\mathbf{elif}\;F \le 15215.487136152646:\\
\;\;\;\;\left(F \cdot {\left(2 + \left(F \cdot F + x \cdot 2\right)\right)}^{\frac{-1}{2}}\right) \cdot \frac{1}{\sin B} - \frac{x}{\tan B}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{\sin B} - \frac{1}{\sin B \cdot \left(F \cdot F\right)}\right) - \frac{x}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r1288714 = x;
double r1288715 = 1.0;
double r1288716 = B;
double r1288717 = tan(r1288716);
double r1288718 = r1288715 / r1288717;
double r1288719 = r1288714 * r1288718;
double r1288720 = -r1288719;
double r1288721 = F;
double r1288722 = sin(r1288716);
double r1288723 = r1288721 / r1288722;
double r1288724 = r1288721 * r1288721;
double r1288725 = 2.0;
double r1288726 = r1288724 + r1288725;
double r1288727 = r1288725 * r1288714;
double r1288728 = r1288726 + r1288727;
double r1288729 = r1288715 / r1288725;
double r1288730 = -r1288729;
double r1288731 = pow(r1288728, r1288730);
double r1288732 = r1288723 * r1288731;
double r1288733 = r1288720 + r1288732;
return r1288733;
}
double f(double F, double B, double x) {
double r1288734 = F;
double r1288735 = -6.519456150228116e+18;
bool r1288736 = r1288734 <= r1288735;
double r1288737 = 1.0;
double r1288738 = B;
double r1288739 = sin(r1288738);
double r1288740 = r1288734 * r1288734;
double r1288741 = r1288739 * r1288740;
double r1288742 = r1288737 / r1288741;
double r1288743 = r1288737 / r1288739;
double r1288744 = r1288742 - r1288743;
double r1288745 = x;
double r1288746 = tan(r1288738);
double r1288747 = r1288745 / r1288746;
double r1288748 = r1288744 - r1288747;
double r1288749 = 15215.487136152646;
bool r1288750 = r1288734 <= r1288749;
double r1288751 = 2.0;
double r1288752 = r1288745 * r1288751;
double r1288753 = r1288740 + r1288752;
double r1288754 = r1288751 + r1288753;
double r1288755 = -0.5;
double r1288756 = pow(r1288754, r1288755);
double r1288757 = r1288734 * r1288756;
double r1288758 = r1288757 * r1288743;
double r1288759 = r1288758 - r1288747;
double r1288760 = r1288743 - r1288742;
double r1288761 = r1288760 - r1288747;
double r1288762 = r1288750 ? r1288759 : r1288761;
double r1288763 = r1288736 ? r1288748 : r1288762;
return r1288763;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -6.519456150228116e+18Initial program 25.3
Simplified24.4
Taylor expanded around -inf 0.2
Simplified0.2
if -6.519456150228116e+18 < F < 15215.487136152646Initial program 0.4
Simplified0.3
rmApplied div-inv0.3
Applied *-un-lft-identity0.3
Applied unpow-prod-down0.3
Applied times-frac0.3
Simplified0.3
Simplified0.3
if 15215.487136152646 < F Initial program 24.7
Simplified24.1
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019155
(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))))))