\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 -2.088831848152024661481232075006803673459 \cdot 10^{45}:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right)\\
\mathbf{elif}\;F \le 29425.17876553115638671442866325378417969:\\
\;\;\;\;\left(-x \cdot \frac{1}{\tan B}\right) + \frac{\frac{F}{\sin B}}{{\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}\\
\mathbf{else}:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \left(\frac{1}{\sin B} - 1 \cdot \frac{1}{\sin B \cdot {F}^{2}}\right)\\
\end{array}double f(double F, double B, double x) {
double r50929 = x;
double r50930 = 1.0;
double r50931 = B;
double r50932 = tan(r50931);
double r50933 = r50930 / r50932;
double r50934 = r50929 * r50933;
double r50935 = -r50934;
double r50936 = F;
double r50937 = sin(r50931);
double r50938 = r50936 / r50937;
double r50939 = r50936 * r50936;
double r50940 = 2.0;
double r50941 = r50939 + r50940;
double r50942 = r50940 * r50929;
double r50943 = r50941 + r50942;
double r50944 = r50930 / r50940;
double r50945 = -r50944;
double r50946 = pow(r50943, r50945);
double r50947 = r50938 * r50946;
double r50948 = r50935 + r50947;
return r50948;
}
double f(double F, double B, double x) {
double r50949 = F;
double r50950 = -2.0888318481520247e+45;
bool r50951 = r50949 <= r50950;
double r50952 = x;
double r50953 = 1.0;
double r50954 = r50952 * r50953;
double r50955 = B;
double r50956 = tan(r50955);
double r50957 = r50954 / r50956;
double r50958 = -r50957;
double r50959 = 1.0;
double r50960 = sin(r50955);
double r50961 = 2.0;
double r50962 = pow(r50949, r50961);
double r50963 = r50960 * r50962;
double r50964 = r50959 / r50963;
double r50965 = r50953 * r50964;
double r50966 = r50959 / r50960;
double r50967 = r50965 - r50966;
double r50968 = r50958 + r50967;
double r50969 = 29425.178765531156;
bool r50970 = r50949 <= r50969;
double r50971 = r50953 / r50956;
double r50972 = r50952 * r50971;
double r50973 = -r50972;
double r50974 = r50949 / r50960;
double r50975 = r50949 * r50949;
double r50976 = 2.0;
double r50977 = r50975 + r50976;
double r50978 = r50976 * r50952;
double r50979 = r50977 + r50978;
double r50980 = r50953 / r50976;
double r50981 = pow(r50979, r50980);
double r50982 = r50974 / r50981;
double r50983 = r50973 + r50982;
double r50984 = r50966 - r50965;
double r50985 = r50958 + r50984;
double r50986 = r50970 ? r50983 : r50985;
double r50987 = r50951 ? r50968 : r50986;
return r50987;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -2.0888318481520247e+45Initial program 26.5
rmApplied div-inv26.5
Applied associate-*l*20.7
Simplified20.7
rmApplied associate-*r/20.7
Taylor expanded around -inf 0.2
if -2.0888318481520247e+45 < F < 29425.178765531156Initial program 0.5
rmApplied pow-neg0.5
Applied un-div-inv0.5
if 29425.178765531156 < F Initial program 25.5
rmApplied div-inv25.4
Applied associate-*l*19.4
Simplified19.4
rmApplied associate-*r/19.4
Taylor expanded around inf 0.2
Final simplification0.3
herbie shell --seed 2019346
(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))))))