\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.331755897157237081298683867708090760062 \cdot 10^{154}:\\
\;\;\;\;\left(\frac{1}{\sin B \cdot {F}^{2}} + \frac{-1}{\sin B}\right) - \frac{x \cdot 1}{\tan B}\\
\mathbf{elif}\;F \le 9.754679358530796536193448728543810818608 \cdot 10^{148}:\\
\;\;\;\;\frac{1}{\sin B} \cdot \frac{F}{{\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}} - \frac{x \cdot 1}{\tan B}\\
\mathbf{else}:\\
\;\;\;\;\frac{F}{\sin B \cdot \left(F + 1 \cdot {\left(\frac{1}{{F}^{1}}\right)}^{1}\right)} - \frac{x \cdot 1}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r46749 = x;
double r46750 = 1.0;
double r46751 = B;
double r46752 = tan(r46751);
double r46753 = r46750 / r46752;
double r46754 = r46749 * r46753;
double r46755 = -r46754;
double r46756 = F;
double r46757 = sin(r46751);
double r46758 = r46756 / r46757;
double r46759 = r46756 * r46756;
double r46760 = 2.0;
double r46761 = r46759 + r46760;
double r46762 = r46760 * r46749;
double r46763 = r46761 + r46762;
double r46764 = r46750 / r46760;
double r46765 = -r46764;
double r46766 = pow(r46763, r46765);
double r46767 = r46758 * r46766;
double r46768 = r46755 + r46767;
return r46768;
}
double f(double F, double B, double x) {
double r46769 = F;
double r46770 = -1.3317558971572371e+154;
bool r46771 = r46769 <= r46770;
double r46772 = 1.0;
double r46773 = B;
double r46774 = sin(r46773);
double r46775 = 2.0;
double r46776 = pow(r46769, r46775);
double r46777 = r46774 * r46776;
double r46778 = r46772 / r46777;
double r46779 = -1.0;
double r46780 = r46779 / r46774;
double r46781 = r46778 + r46780;
double r46782 = x;
double r46783 = r46782 * r46772;
double r46784 = tan(r46773);
double r46785 = r46783 / r46784;
double r46786 = r46781 - r46785;
double r46787 = 9.754679358530797e+148;
bool r46788 = r46769 <= r46787;
double r46789 = 1.0;
double r46790 = r46789 / r46774;
double r46791 = r46769 * r46769;
double r46792 = 2.0;
double r46793 = r46791 + r46792;
double r46794 = r46792 * r46782;
double r46795 = r46793 + r46794;
double r46796 = r46772 / r46792;
double r46797 = pow(r46795, r46796);
double r46798 = r46769 / r46797;
double r46799 = r46790 * r46798;
double r46800 = r46799 - r46785;
double r46801 = pow(r46769, r46772);
double r46802 = r46789 / r46801;
double r46803 = pow(r46802, r46772);
double r46804 = r46772 * r46803;
double r46805 = r46769 + r46804;
double r46806 = r46774 * r46805;
double r46807 = r46769 / r46806;
double r46808 = r46807 - r46785;
double r46809 = r46788 ? r46800 : r46808;
double r46810 = r46771 ? r46786 : r46809;
return r46810;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -1.3317558971572371e+154Initial program 41.3
Simplified41.3
rmApplied associate-*r/41.3
Taylor expanded around -inf 0.2
Simplified0.2
if -1.3317558971572371e+154 < F < 9.754679358530797e+148Initial program 2.6
Simplified2.6
rmApplied associate-*r/2.5
rmApplied pow-neg2.5
Applied frac-times0.3
Simplified0.3
rmApplied *-un-lft-identity0.3
Applied times-frac0.2
if 9.754679358530797e+148 < F Initial program 41.2
Simplified41.2
rmApplied associate-*r/41.1
rmApplied pow-neg41.1
Applied frac-times35.7
Simplified35.7
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019325
(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))))))