\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 -8575.24190677927:\\
\;\;\;\;\left(\frac{1}{\sin B \cdot \left(F \cdot F\right)} - \frac{1}{\sin B}\right) - \frac{x}{\tan B}\\
\mathbf{elif}\;F \le 59636856.48207364:\\
\;\;\;\;\frac{{\left(x \cdot 2 + \left(2 + F \cdot F\right)\right)}^{\frac{-1}{2}}}{\frac{\sin B}{F}} - \frac{x \cdot \cos B}{\sin 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 r820286 = x;
double r820287 = 1.0;
double r820288 = B;
double r820289 = tan(r820288);
double r820290 = r820287 / r820289;
double r820291 = r820286 * r820290;
double r820292 = -r820291;
double r820293 = F;
double r820294 = sin(r820288);
double r820295 = r820293 / r820294;
double r820296 = r820293 * r820293;
double r820297 = 2.0;
double r820298 = r820296 + r820297;
double r820299 = r820297 * r820286;
double r820300 = r820298 + r820299;
double r820301 = r820287 / r820297;
double r820302 = -r820301;
double r820303 = pow(r820300, r820302);
double r820304 = r820295 * r820303;
double r820305 = r820292 + r820304;
return r820305;
}
double f(double F, double B, double x) {
double r820306 = F;
double r820307 = -8575.24190677927;
bool r820308 = r820306 <= r820307;
double r820309 = 1.0;
double r820310 = B;
double r820311 = sin(r820310);
double r820312 = r820306 * r820306;
double r820313 = r820311 * r820312;
double r820314 = r820309 / r820313;
double r820315 = r820309 / r820311;
double r820316 = r820314 - r820315;
double r820317 = x;
double r820318 = tan(r820310);
double r820319 = r820317 / r820318;
double r820320 = r820316 - r820319;
double r820321 = 59636856.48207364;
bool r820322 = r820306 <= r820321;
double r820323 = 2.0;
double r820324 = r820317 * r820323;
double r820325 = r820323 + r820312;
double r820326 = r820324 + r820325;
double r820327 = -0.5;
double r820328 = pow(r820326, r820327);
double r820329 = r820311 / r820306;
double r820330 = r820328 / r820329;
double r820331 = cos(r820310);
double r820332 = r820317 * r820331;
double r820333 = r820332 / r820311;
double r820334 = r820330 - r820333;
double r820335 = r820315 - r820314;
double r820336 = r820335 - r820319;
double r820337 = r820322 ? r820334 : r820336;
double r820338 = r820308 ? r820320 : r820337;
return r820338;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -8575.24190677927Initial program 26.2
Simplified25.4
Taylor expanded around -inf 0.2
Simplified0.2
if -8575.24190677927 < F < 59636856.48207364Initial program 0.4
Simplified0.3
Taylor expanded around -inf 0.3
if 59636856.48207364 < F Initial program 23.7
Simplified22.9
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.2
herbie shell --seed 2019153
(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))))))