\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 -1.333939750358132910414665699471913882429 \cdot 10^{154}:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \frac{F}{\sin B \cdot \left({\left(\frac{1}{{-1}^{1} \cdot {F}^{1}}\right)}^{1} \cdot 1 + F \cdot {\left(\frac{1}{{-1}^{1}}\right)}^{1}\right)}\\
\mathbf{elif}\;F \le 21340.5240688307094387710094451904296875:\\
\;\;\;\;\left(-\frac{x \cdot 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)}}\\
\mathbf{else}:\\
\;\;\;\;\left(-x \cdot \frac{1}{\tan B}\right) + \left(\frac{1}{\sin B} - \frac{1}{\sin B \cdot {F}^{2}}\right)\\
\end{array}double f(double F, double B, double x) {
double r50633 = x;
double r50634 = 1.0;
double r50635 = B;
double r50636 = tan(r50635);
double r50637 = r50634 / r50636;
double r50638 = r50633 * r50637;
double r50639 = -r50638;
double r50640 = F;
double r50641 = sin(r50635);
double r50642 = r50640 / r50641;
double r50643 = r50640 * r50640;
double r50644 = 2.0;
double r50645 = r50643 + r50644;
double r50646 = r50644 * r50633;
double r50647 = r50645 + r50646;
double r50648 = r50634 / r50644;
double r50649 = -r50648;
double r50650 = pow(r50647, r50649);
double r50651 = r50642 * r50650;
double r50652 = r50639 + r50651;
return r50652;
}
double f(double F, double B, double x) {
double r50653 = F;
double r50654 = -1.3339397503581329e+154;
bool r50655 = r50653 <= r50654;
double r50656 = x;
double r50657 = 1.0;
double r50658 = r50656 * r50657;
double r50659 = B;
double r50660 = tan(r50659);
double r50661 = r50658 / r50660;
double r50662 = -r50661;
double r50663 = sin(r50659);
double r50664 = 1.0;
double r50665 = -1.0;
double r50666 = pow(r50665, r50657);
double r50667 = pow(r50653, r50657);
double r50668 = r50666 * r50667;
double r50669 = r50664 / r50668;
double r50670 = pow(r50669, r50657);
double r50671 = r50670 * r50657;
double r50672 = r50664 / r50666;
double r50673 = pow(r50672, r50657);
double r50674 = r50653 * r50673;
double r50675 = r50671 + r50674;
double r50676 = r50663 * r50675;
double r50677 = r50653 / r50676;
double r50678 = r50662 + r50677;
double r50679 = 21340.52406883071;
bool r50680 = r50653 <= r50679;
double r50681 = r50653 * r50653;
double r50682 = 2.0;
double r50683 = r50681 + r50682;
double r50684 = r50682 * r50656;
double r50685 = r50683 + r50684;
double r50686 = r50657 / r50682;
double r50687 = pow(r50685, r50686);
double r50688 = r50663 * r50687;
double r50689 = r50653 / r50688;
double r50690 = r50662 + r50689;
double r50691 = r50657 / r50660;
double r50692 = r50656 * r50691;
double r50693 = -r50692;
double r50694 = r50664 / r50663;
double r50695 = 2.0;
double r50696 = pow(r50653, r50695);
double r50697 = r50663 * r50696;
double r50698 = r50657 / r50697;
double r50699 = r50694 - r50698;
double r50700 = r50693 + r50699;
double r50701 = r50680 ? r50690 : r50700;
double r50702 = r50655 ? r50678 : r50701;
return r50702;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -1.3339397503581329e+154Initial program 40.6
rmApplied associate-*l/35.1
rmApplied associate-*r/35.0
rmApplied pow-neg35.0
Applied un-div-inv35.0
Applied associate-/l/35.0
Taylor expanded around -inf 0.2
Simplified0.2
if -1.3339397503581329e+154 < F < 21340.52406883071Initial program 1.7
rmApplied associate-*l/0.4
rmApplied associate-*r/0.3
rmApplied pow-neg0.3
Applied un-div-inv0.3
Applied associate-/l/0.3
if 21340.52406883071 < F Initial program 24.1
rmApplied associate-*l/18.0
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.3
herbie shell --seed 2019306
(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))))))