\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.4806380137470963 \cdot 10^{+18}:\\
\;\;\;\;\left(\frac{1}{\sin B \cdot \left(F \cdot F\right)} - \frac{1}{\sin B}\right) - \frac{x}{\tan B}\\
\mathbf{elif}\;F \le 4.714618311488689 \cdot 10^{+47}:\\
\;\;\;\;\left(F \cdot \left({\left(\sqrt{2 + \left(F \cdot F + x \cdot 2\right)}\right)}^{\frac{-1}{2}} \cdot {\left(\sqrt{2 + \left(F \cdot F + x \cdot 2\right)}\right)}^{\frac{-1}{2}}\right)\right) \cdot \frac{1}{\sin B} - \frac{x}{\tan B}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{\sin B} - \frac{1}{\sin B \cdot \left(F \cdot F\right)}\right) - \frac{x}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r751056 = x;
double r751057 = 1.0;
double r751058 = B;
double r751059 = tan(r751058);
double r751060 = r751057 / r751059;
double r751061 = r751056 * r751060;
double r751062 = -r751061;
double r751063 = F;
double r751064 = sin(r751058);
double r751065 = r751063 / r751064;
double r751066 = r751063 * r751063;
double r751067 = 2.0;
double r751068 = r751066 + r751067;
double r751069 = r751067 * r751056;
double r751070 = r751068 + r751069;
double r751071 = r751057 / r751067;
double r751072 = -r751071;
double r751073 = pow(r751070, r751072);
double r751074 = r751065 * r751073;
double r751075 = r751062 + r751074;
return r751075;
}
double f(double F, double B, double x) {
double r751076 = F;
double r751077 = -1.4806380137470963e+18;
bool r751078 = r751076 <= r751077;
double r751079 = 1.0;
double r751080 = B;
double r751081 = sin(r751080);
double r751082 = r751076 * r751076;
double r751083 = r751081 * r751082;
double r751084 = r751079 / r751083;
double r751085 = r751079 / r751081;
double r751086 = r751084 - r751085;
double r751087 = x;
double r751088 = tan(r751080);
double r751089 = r751087 / r751088;
double r751090 = r751086 - r751089;
double r751091 = 4.714618311488689e+47;
bool r751092 = r751076 <= r751091;
double r751093 = 2.0;
double r751094 = r751087 * r751093;
double r751095 = r751082 + r751094;
double r751096 = r751093 + r751095;
double r751097 = sqrt(r751096);
double r751098 = -0.5;
double r751099 = pow(r751097, r751098);
double r751100 = r751099 * r751099;
double r751101 = r751076 * r751100;
double r751102 = r751101 * r751085;
double r751103 = r751102 - r751089;
double r751104 = r751085 - r751084;
double r751105 = r751104 - r751089;
double r751106 = r751092 ? r751103 : r751105;
double r751107 = r751078 ? r751090 : r751106;
return r751107;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -1.4806380137470963e+18Initial program 26.1
Simplified25.4
Taylor expanded around -inf 0.2
Simplified0.2
if -1.4806380137470963e+18 < F < 4.714618311488689e+47Initial program 0.5
Simplified0.3
rmApplied div-inv0.3
Applied *-un-lft-identity0.3
Applied unpow-prod-down0.3
Applied times-frac0.3
Simplified0.3
Simplified0.3
rmApplied add-sqr-sqrt0.3
Applied unpow-prod-down0.3
if 4.714618311488689e+47 < F Initial program 28.0
Simplified27.1
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.2
herbie shell --seed 2019152
(FPCore (F B x)
:name "VandenBroeck and Keller, Equation (23)"
(+ (- (* x (/ 1 (tan B)))) (* (/ F (sin B)) (pow (+ (+ (* F F) 2) (* 2 x)) (- (/ 1 2))))))