\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.91574468424460201 \cdot 10^{23}:\\
\;\;\;\;\left(\frac{1}{\sin B \cdot {F}^{2}} + \frac{-1}{\sin B}\right) - 1 \cdot \frac{x \cdot \cos B}{\sin B}\\
\mathbf{elif}\;F \le 1.2208528278557798 \cdot 10^{27}:\\
\;\;\;\;F \cdot \frac{{\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}}{\sin B} - \frac{1}{\frac{\tan B}{x \cdot 1}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{\sin B} - \frac{\frac{1}{\sin B}}{F \cdot F}\right) - x \cdot \frac{1}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r48933 = x;
double r48934 = 1.0;
double r48935 = B;
double r48936 = tan(r48935);
double r48937 = r48934 / r48936;
double r48938 = r48933 * r48937;
double r48939 = -r48938;
double r48940 = F;
double r48941 = sin(r48935);
double r48942 = r48940 / r48941;
double r48943 = r48940 * r48940;
double r48944 = 2.0;
double r48945 = r48943 + r48944;
double r48946 = r48944 * r48933;
double r48947 = r48945 + r48946;
double r48948 = r48934 / r48944;
double r48949 = -r48948;
double r48950 = pow(r48947, r48949);
double r48951 = r48942 * r48950;
double r48952 = r48939 + r48951;
return r48952;
}
double f(double F, double B, double x) {
double r48953 = F;
double r48954 = -1.915744684244602e+23;
bool r48955 = r48953 <= r48954;
double r48956 = 1.0;
double r48957 = B;
double r48958 = sin(r48957);
double r48959 = 2.0;
double r48960 = pow(r48953, r48959);
double r48961 = r48958 * r48960;
double r48962 = r48956 / r48961;
double r48963 = -1.0;
double r48964 = r48963 / r48958;
double r48965 = r48962 + r48964;
double r48966 = x;
double r48967 = cos(r48957);
double r48968 = r48966 * r48967;
double r48969 = r48968 / r48958;
double r48970 = r48956 * r48969;
double r48971 = r48965 - r48970;
double r48972 = 1.2208528278557798e+27;
bool r48973 = r48953 <= r48972;
double r48974 = r48953 * r48953;
double r48975 = 2.0;
double r48976 = r48974 + r48975;
double r48977 = r48975 * r48966;
double r48978 = r48976 + r48977;
double r48979 = r48956 / r48975;
double r48980 = -r48979;
double r48981 = pow(r48978, r48980);
double r48982 = r48981 / r48958;
double r48983 = r48953 * r48982;
double r48984 = 1.0;
double r48985 = tan(r48957);
double r48986 = r48966 * r48956;
double r48987 = r48985 / r48986;
double r48988 = r48984 / r48987;
double r48989 = r48983 - r48988;
double r48990 = r48984 / r48958;
double r48991 = r48956 / r48958;
double r48992 = r48991 / r48974;
double r48993 = r48990 - r48992;
double r48994 = r48956 / r48985;
double r48995 = r48966 * r48994;
double r48996 = r48993 - r48995;
double r48997 = r48973 ? r48989 : r48996;
double r48998 = r48955 ? r48971 : r48997;
return r48998;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -1.915744684244602e+23Initial program 26.9
Simplified26.9
rmApplied div-inv26.9
Applied associate-*l*20.7
Simplified20.7
Taylor expanded around inf 20.7
Taylor expanded around -inf 0.2
Simplified0.2
if -1.915744684244602e+23 < F < 1.2208528278557798e+27Initial program 0.5
Simplified0.5
rmApplied div-inv0.5
Applied associate-*l*0.4
Simplified0.4
rmApplied associate-*r/0.3
rmApplied clear-num0.4
if 1.2208528278557798e+27 < F Initial program 27.2
Simplified27.2
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.3
herbie shell --seed 2020047
(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))))))