\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 -7.910525873650278 \cdot 10^{27}:\\
\;\;\;\;\mathsf{fma}\left(1, \frac{x}{\sin B \cdot {F}^{2}}, -\mathsf{fma}\left(1, \frac{x \cdot \cos B}{\sin B}, \frac{1}{\sin B}\right)\right)\\
\mathbf{elif}\;F \le 261935352784.4859:\\
\;\;\;\;\mathsf{fma}\left(\frac{F}{\sin B}, {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}, -\frac{x \cdot 1}{\tan B}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-1, \frac{x \cdot \cos B}{\sin B} + \frac{x}{\sin B \cdot {F}^{2}}, \frac{1}{\sin B}\right)\\
\end{array}double f(double F, double B, double x) {
double r31393 = x;
double r31394 = 1.0;
double r31395 = B;
double r31396 = tan(r31395);
double r31397 = r31394 / r31396;
double r31398 = r31393 * r31397;
double r31399 = -r31398;
double r31400 = F;
double r31401 = sin(r31395);
double r31402 = r31400 / r31401;
double r31403 = r31400 * r31400;
double r31404 = 2.0;
double r31405 = r31403 + r31404;
double r31406 = r31404 * r31393;
double r31407 = r31405 + r31406;
double r31408 = r31394 / r31404;
double r31409 = -r31408;
double r31410 = pow(r31407, r31409);
double r31411 = r31402 * r31410;
double r31412 = r31399 + r31411;
return r31412;
}
double f(double F, double B, double x) {
double r31413 = F;
double r31414 = -7.910525873650278e+27;
bool r31415 = r31413 <= r31414;
double r31416 = 1.0;
double r31417 = x;
double r31418 = B;
double r31419 = sin(r31418);
double r31420 = 2.0;
double r31421 = pow(r31413, r31420);
double r31422 = r31419 * r31421;
double r31423 = r31417 / r31422;
double r31424 = cos(r31418);
double r31425 = r31417 * r31424;
double r31426 = r31425 / r31419;
double r31427 = 1.0;
double r31428 = r31427 / r31419;
double r31429 = fma(r31416, r31426, r31428);
double r31430 = -r31429;
double r31431 = fma(r31416, r31423, r31430);
double r31432 = 261935352784.4859;
bool r31433 = r31413 <= r31432;
double r31434 = r31413 / r31419;
double r31435 = r31413 * r31413;
double r31436 = 2.0;
double r31437 = r31435 + r31436;
double r31438 = r31436 * r31417;
double r31439 = r31437 + r31438;
double r31440 = r31416 / r31436;
double r31441 = -r31440;
double r31442 = pow(r31439, r31441);
double r31443 = r31417 * r31416;
double r31444 = tan(r31418);
double r31445 = r31443 / r31444;
double r31446 = -r31445;
double r31447 = fma(r31434, r31442, r31446);
double r31448 = -r31416;
double r31449 = r31426 + r31423;
double r31450 = fma(r31448, r31449, r31428);
double r31451 = r31433 ? r31447 : r31450;
double r31452 = r31415 ? r31431 : r31451;
return r31452;
}



Bits error versus F



Bits error versus B



Bits error versus x
if F < -7.910525873650278e+27Initial program 27.1
Simplified27.1
Taylor expanded around -inf 0.2
Simplified0.2
if -7.910525873650278e+27 < F < 261935352784.4859Initial program 0.5
Simplified0.5
rmApplied associate-*r/0.4
if 261935352784.4859 < F Initial program 25.8
Simplified25.8
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.3
herbie shell --seed 2020056 +o rules:numerics
(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))))))