\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 -128261773733317940760234426804207616:\\
\;\;\;\;\left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right) - x \cdot \frac{1}{\tan B}\\
\mathbf{elif}\;F \le 97659.61383224776363931596279144287109375:\\
\;\;\;\;F \cdot \frac{1}{\sin B \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}} - \frac{x \cdot 1}{\tan B}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{\sin B} - 1 \cdot \frac{1}{\sin B \cdot {F}^{2}}\right) - \frac{x \cdot 1}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r53011 = x;
double r53012 = 1.0;
double r53013 = B;
double r53014 = tan(r53013);
double r53015 = r53012 / r53014;
double r53016 = r53011 * r53015;
double r53017 = -r53016;
double r53018 = F;
double r53019 = sin(r53013);
double r53020 = r53018 / r53019;
double r53021 = r53018 * r53018;
double r53022 = 2.0;
double r53023 = r53021 + r53022;
double r53024 = r53022 * r53011;
double r53025 = r53023 + r53024;
double r53026 = r53012 / r53022;
double r53027 = -r53026;
double r53028 = pow(r53025, r53027);
double r53029 = r53020 * r53028;
double r53030 = r53017 + r53029;
return r53030;
}
double f(double F, double B, double x) {
double r53031 = F;
double r53032 = -1.2826177373331794e+35;
bool r53033 = r53031 <= r53032;
double r53034 = 1.0;
double r53035 = 1.0;
double r53036 = B;
double r53037 = sin(r53036);
double r53038 = 2.0;
double r53039 = pow(r53031, r53038);
double r53040 = r53037 * r53039;
double r53041 = r53035 / r53040;
double r53042 = r53034 * r53041;
double r53043 = r53035 / r53037;
double r53044 = r53042 - r53043;
double r53045 = x;
double r53046 = tan(r53036);
double r53047 = r53034 / r53046;
double r53048 = r53045 * r53047;
double r53049 = r53044 - r53048;
double r53050 = 97659.61383224776;
bool r53051 = r53031 <= r53050;
double r53052 = r53031 * r53031;
double r53053 = 2.0;
double r53054 = r53052 + r53053;
double r53055 = r53053 * r53045;
double r53056 = r53054 + r53055;
double r53057 = r53034 / r53053;
double r53058 = pow(r53056, r53057);
double r53059 = r53037 * r53058;
double r53060 = r53035 / r53059;
double r53061 = r53031 * r53060;
double r53062 = r53045 * r53034;
double r53063 = r53062 / r53046;
double r53064 = r53061 - r53063;
double r53065 = r53043 - r53042;
double r53066 = r53065 - r53063;
double r53067 = r53051 ? r53064 : r53066;
double r53068 = r53033 ? r53049 : r53067;
return r53068;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -1.2826177373331794e+35Initial program 27.6
Simplified27.6
Taylor expanded around -inf 0.2
if -1.2826177373331794e+35 < F < 97659.61383224776Initial program 0.4
Simplified0.4
rmApplied pow-neg0.5
Applied frac-times0.4
Simplified0.4
rmApplied associate-*r/0.3
rmApplied div-inv0.3
if 97659.61383224776 < F Initial program 24.2
Simplified24.2
rmApplied pow-neg24.2
Applied frac-times19.0
Simplified19.0
rmApplied associate-*r/18.9
Taylor expanded around inf 0.1
Final simplification0.2
herbie shell --seed 2019322
(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))))))