\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 -2.1630404384861445 \cdot 10^{+73}:\\
\;\;\;\;\frac{1}{-\left(\sin B + \frac{\sin B}{F \cdot F} \cdot x\right)} - \frac{x}{\tan B}\\
\mathbf{elif}\;F \le 106668299.39412066:\\
\;\;\;\;\frac{{\left(2 \cdot x + \left(F \cdot F + 2\right)\right)}^{\frac{-1}{2}}}{\frac{\sin B}{F}} - \frac{\cos B \cdot x}{\sin B}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\sin B + \frac{\sin B}{F \cdot F} \cdot x} - \frac{x}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r5581366 = x;
double r5581367 = 1.0;
double r5581368 = B;
double r5581369 = tan(r5581368);
double r5581370 = r5581367 / r5581369;
double r5581371 = r5581366 * r5581370;
double r5581372 = -r5581371;
double r5581373 = F;
double r5581374 = sin(r5581368);
double r5581375 = r5581373 / r5581374;
double r5581376 = r5581373 * r5581373;
double r5581377 = 2.0;
double r5581378 = r5581376 + r5581377;
double r5581379 = r5581377 * r5581366;
double r5581380 = r5581378 + r5581379;
double r5581381 = r5581367 / r5581377;
double r5581382 = -r5581381;
double r5581383 = pow(r5581380, r5581382);
double r5581384 = r5581375 * r5581383;
double r5581385 = r5581372 + r5581384;
return r5581385;
}
double f(double F, double B, double x) {
double r5581386 = F;
double r5581387 = -2.1630404384861445e+73;
bool r5581388 = r5581386 <= r5581387;
double r5581389 = 1.0;
double r5581390 = B;
double r5581391 = sin(r5581390);
double r5581392 = r5581386 * r5581386;
double r5581393 = r5581391 / r5581392;
double r5581394 = x;
double r5581395 = r5581393 * r5581394;
double r5581396 = r5581391 + r5581395;
double r5581397 = -r5581396;
double r5581398 = r5581389 / r5581397;
double r5581399 = tan(r5581390);
double r5581400 = r5581394 / r5581399;
double r5581401 = r5581398 - r5581400;
double r5581402 = 106668299.39412066;
bool r5581403 = r5581386 <= r5581402;
double r5581404 = 2.0;
double r5581405 = r5581404 * r5581394;
double r5581406 = r5581392 + r5581404;
double r5581407 = r5581405 + r5581406;
double r5581408 = -0.5;
double r5581409 = pow(r5581407, r5581408);
double r5581410 = r5581391 / r5581386;
double r5581411 = r5581409 / r5581410;
double r5581412 = cos(r5581390);
double r5581413 = r5581412 * r5581394;
double r5581414 = r5581413 / r5581391;
double r5581415 = r5581411 - r5581414;
double r5581416 = r5581389 / r5581396;
double r5581417 = r5581416 - r5581400;
double r5581418 = r5581403 ? r5581415 : r5581417;
double r5581419 = r5581388 ? r5581401 : r5581418;
return r5581419;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -2.1630404384861445e+73Initial program 29.6
Simplified23.8
rmApplied clear-num23.8
Taylor expanded around -inf 0.2
Simplified0.2
if -2.1630404384861445e+73 < F < 106668299.39412066Initial program 0.7
Simplified0.3
Taylor expanded around inf 0.3
rmApplied associate-/l*0.5
if 106668299.39412066 < F Initial program 24.6
Simplified18.6
rmApplied clear-num18.6
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.3
herbie shell --seed 2019121
(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))))))