\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.5313961451328438 \cdot 10^{69}:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \left(\frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right)\\
\mathbf{elif}\;F \le 1.05767038865912844 \cdot 10^{27}:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \frac{\frac{F}{\sin B}}{{\left(\mathsf{fma}\left(2, x, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\left(\frac{1}{2}\right)}}\\
\mathbf{else}:\\
\;\;\;\;\left(-x \cdot \frac{1}{\tan B}\right) + \left(\frac{1}{\sin B} - \frac{1}{\sin B \cdot {F}^{2}}\right)\\
\end{array}double f(double F, double B, double x) {
double r65421 = x;
double r65422 = 1.0;
double r65423 = B;
double r65424 = tan(r65423);
double r65425 = r65422 / r65424;
double r65426 = r65421 * r65425;
double r65427 = -r65426;
double r65428 = F;
double r65429 = sin(r65423);
double r65430 = r65428 / r65429;
double r65431 = r65428 * r65428;
double r65432 = 2.0;
double r65433 = r65431 + r65432;
double r65434 = r65432 * r65421;
double r65435 = r65433 + r65434;
double r65436 = r65422 / r65432;
double r65437 = -r65436;
double r65438 = pow(r65435, r65437);
double r65439 = r65430 * r65438;
double r65440 = r65427 + r65439;
return r65440;
}
double f(double F, double B, double x) {
double r65441 = F;
double r65442 = -1.5313961451328438e+69;
bool r65443 = r65441 <= r65442;
double r65444 = x;
double r65445 = 1.0;
double r65446 = r65444 * r65445;
double r65447 = B;
double r65448 = tan(r65447);
double r65449 = r65446 / r65448;
double r65450 = -r65449;
double r65451 = sin(r65447);
double r65452 = 2.0;
double r65453 = pow(r65441, r65452);
double r65454 = r65451 * r65453;
double r65455 = r65445 / r65454;
double r65456 = 1.0;
double r65457 = r65456 / r65451;
double r65458 = r65455 - r65457;
double r65459 = r65450 + r65458;
double r65460 = 1.0576703886591284e+27;
bool r65461 = r65441 <= r65460;
double r65462 = r65441 / r65451;
double r65463 = 2.0;
double r65464 = fma(r65441, r65441, r65463);
double r65465 = fma(r65463, r65444, r65464);
double r65466 = r65445 / r65463;
double r65467 = pow(r65465, r65466);
double r65468 = r65462 / r65467;
double r65469 = r65450 + r65468;
double r65470 = r65445 / r65448;
double r65471 = r65444 * r65470;
double r65472 = -r65471;
double r65473 = r65457 - r65455;
double r65474 = r65472 + r65473;
double r65475 = r65461 ? r65469 : r65474;
double r65476 = r65443 ? r65459 : r65475;
return r65476;
}



Bits error versus F



Bits error versus B



Bits error versus x
if F < -1.5313961451328438e+69Initial program 31.0
rmApplied div-inv30.9
Applied associate-*l*24.0
Simplified24.1
rmApplied associate-*r/24.0
rmApplied div-inv24.0
Taylor expanded around -inf 0.1
Simplified0.1
if -1.5313961451328438e+69 < F < 1.0576703886591284e+27Initial program 0.6
rmApplied div-inv0.6
Applied associate-*l*0.4
Simplified0.4
rmApplied associate-*r/0.3
rmApplied div-inv0.3
rmApplied pow-neg0.3
Applied associate-*l/0.3
Applied associate-*r/0.5
Simplified0.5
if 1.0576703886591284e+27 < F Initial program 27.2
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.3
herbie shell --seed 2020047 +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))))))