\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 -5.832220880681004 \cdot 10^{+46}:\\
\;\;\;\;\left(\frac{\frac{1}{F}}{F \cdot \sin B} - \frac{1}{\sin B}\right) - \frac{x}{\tan B}\\
\mathbf{elif}\;F \le 219633.3474896462:\\
\;\;\;\;\frac{F}{\sin B} \cdot {\left(x \cdot 2 + \left(2 + F \cdot F\right)\right)}^{\frac{-1}{2}} - \frac{\cos B \cdot x}{\sin B}\\
\mathbf{else}:\\
\;\;\;\;\left(1 - \frac{\frac{1}{F}}{F}\right) \cdot \frac{1}{\sin B} - \frac{x}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r773469 = x;
double r773470 = 1.0;
double r773471 = B;
double r773472 = tan(r773471);
double r773473 = r773470 / r773472;
double r773474 = r773469 * r773473;
double r773475 = -r773474;
double r773476 = F;
double r773477 = sin(r773471);
double r773478 = r773476 / r773477;
double r773479 = r773476 * r773476;
double r773480 = 2.0;
double r773481 = r773479 + r773480;
double r773482 = r773480 * r773469;
double r773483 = r773481 + r773482;
double r773484 = r773470 / r773480;
double r773485 = -r773484;
double r773486 = pow(r773483, r773485);
double r773487 = r773478 * r773486;
double r773488 = r773475 + r773487;
return r773488;
}
double f(double F, double B, double x) {
double r773489 = F;
double r773490 = -5.832220880681004e+46;
bool r773491 = r773489 <= r773490;
double r773492 = 1.0;
double r773493 = r773492 / r773489;
double r773494 = B;
double r773495 = sin(r773494);
double r773496 = r773489 * r773495;
double r773497 = r773493 / r773496;
double r773498 = r773492 / r773495;
double r773499 = r773497 - r773498;
double r773500 = x;
double r773501 = tan(r773494);
double r773502 = r773500 / r773501;
double r773503 = r773499 - r773502;
double r773504 = 219633.3474896462;
bool r773505 = r773489 <= r773504;
double r773506 = r773489 / r773495;
double r773507 = 2.0;
double r773508 = r773500 * r773507;
double r773509 = r773489 * r773489;
double r773510 = r773507 + r773509;
double r773511 = r773508 + r773510;
double r773512 = -0.5;
double r773513 = pow(r773511, r773512);
double r773514 = r773506 * r773513;
double r773515 = cos(r773494);
double r773516 = r773515 * r773500;
double r773517 = r773516 / r773495;
double r773518 = r773514 - r773517;
double r773519 = r773493 / r773489;
double r773520 = r773492 - r773519;
double r773521 = r773520 * r773498;
double r773522 = r773521 - r773502;
double r773523 = r773505 ? r773518 : r773522;
double r773524 = r773491 ? r773503 : r773523;
return r773524;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -5.832220880681004e+46Initial program 27.3
Simplified27.3
Taylor expanded around -inf 0.2
Simplified0.2
if -5.832220880681004e+46 < F < 219633.3474896462Initial program 0.5
Simplified0.4
Taylor expanded around inf 0.4
if 219633.3474896462 < F Initial program 25.5
Simplified25.4
rmApplied div-inv25.4
Applied associate-*r*20.1
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.3
herbie shell --seed 2019133
(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))))))