\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 -8.2357196407830214 \cdot 10^{30}:\\
\;\;\;\;\left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right) - \frac{x \cdot 1}{\tan B}\\
\mathbf{elif}\;F \le 519496060.91579181:\\
\;\;\;\;\frac{F}{\sin B} \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)} - 1 \cdot \frac{x \cdot \cos B}{\sin B}\\
\mathbf{else}:\\
\;\;\;\;\frac{F \cdot \left(\frac{1}{F} - 1 \cdot \frac{1}{{F}^{3}}\right)}{\sin B} - \frac{x \cdot 1}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r42670 = x;
double r42671 = 1.0;
double r42672 = B;
double r42673 = tan(r42672);
double r42674 = r42671 / r42673;
double r42675 = r42670 * r42674;
double r42676 = -r42675;
double r42677 = F;
double r42678 = sin(r42672);
double r42679 = r42677 / r42678;
double r42680 = r42677 * r42677;
double r42681 = 2.0;
double r42682 = r42680 + r42681;
double r42683 = r42681 * r42670;
double r42684 = r42682 + r42683;
double r42685 = r42671 / r42681;
double r42686 = -r42685;
double r42687 = pow(r42684, r42686);
double r42688 = r42679 * r42687;
double r42689 = r42676 + r42688;
return r42689;
}
double f(double F, double B, double x) {
double r42690 = F;
double r42691 = -8.235719640783021e+30;
bool r42692 = r42690 <= r42691;
double r42693 = 1.0;
double r42694 = 1.0;
double r42695 = B;
double r42696 = sin(r42695);
double r42697 = 2.0;
double r42698 = pow(r42690, r42697);
double r42699 = r42696 * r42698;
double r42700 = r42694 / r42699;
double r42701 = r42693 * r42700;
double r42702 = r42694 / r42696;
double r42703 = r42701 - r42702;
double r42704 = x;
double r42705 = r42704 * r42693;
double r42706 = tan(r42695);
double r42707 = r42705 / r42706;
double r42708 = r42703 - r42707;
double r42709 = 519496060.9157918;
bool r42710 = r42690 <= r42709;
double r42711 = r42690 / r42696;
double r42712 = r42690 * r42690;
double r42713 = 2.0;
double r42714 = r42712 + r42713;
double r42715 = r42713 * r42704;
double r42716 = r42714 + r42715;
double r42717 = r42693 / r42713;
double r42718 = -r42717;
double r42719 = pow(r42716, r42718);
double r42720 = r42711 * r42719;
double r42721 = cos(r42695);
double r42722 = r42704 * r42721;
double r42723 = r42722 / r42696;
double r42724 = r42693 * r42723;
double r42725 = r42720 - r42724;
double r42726 = r42694 / r42690;
double r42727 = 3.0;
double r42728 = pow(r42690, r42727);
double r42729 = r42694 / r42728;
double r42730 = r42693 * r42729;
double r42731 = r42726 - r42730;
double r42732 = r42690 * r42731;
double r42733 = r42732 / r42696;
double r42734 = r42733 - r42707;
double r42735 = r42710 ? r42725 : r42734;
double r42736 = r42692 ? r42708 : r42735;
return r42736;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -8.235719640783021e+30Initial program 26.7
Simplified26.7
rmApplied associate-*l/20.3
rmApplied associate-*r/20.2
Taylor expanded around -inf 0.1
if -8.235719640783021e+30 < F < 519496060.9157918Initial program 0.4
Simplified0.4
Taylor expanded around inf 0.3
if 519496060.9157918 < F Initial program 26.0
Simplified26.0
rmApplied associate-*l/19.9
rmApplied associate-*r/19.9
Taylor expanded around inf 0.2
Final simplification0.3
herbie shell --seed 2020035
(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))))))