\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.980655836879585 \cdot 10^{29}:\\
\;\;\;\;\left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right) - \frac{x \cdot 1}{\tan B}\\
\mathbf{elif}\;F \le 2.4906907027944938 \cdot 10^{81}:\\
\;\;\;\;\frac{\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}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{\sin B} - 1 \cdot \frac{1}{\sin B \cdot {F}^{2}}\right) - \frac{x \cdot 1}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r37348 = x;
double r37349 = 1.0;
double r37350 = B;
double r37351 = tan(r37350);
double r37352 = r37349 / r37351;
double r37353 = r37348 * r37352;
double r37354 = -r37353;
double r37355 = F;
double r37356 = sin(r37350);
double r37357 = r37355 / r37356;
double r37358 = r37355 * r37355;
double r37359 = 2.0;
double r37360 = r37358 + r37359;
double r37361 = r37359 * r37348;
double r37362 = r37360 + r37361;
double r37363 = r37349 / r37359;
double r37364 = -r37363;
double r37365 = pow(r37362, r37364);
double r37366 = r37357 * r37365;
double r37367 = r37354 + r37366;
return r37367;
}
double f(double F, double B, double x) {
double r37368 = F;
double r37369 = -2.980655836879585e+29;
bool r37370 = r37368 <= r37369;
double r37371 = 1.0;
double r37372 = 1.0;
double r37373 = B;
double r37374 = sin(r37373);
double r37375 = 2.0;
double r37376 = pow(r37368, r37375);
double r37377 = r37374 * r37376;
double r37378 = r37372 / r37377;
double r37379 = r37371 * r37378;
double r37380 = r37372 / r37374;
double r37381 = r37379 - r37380;
double r37382 = x;
double r37383 = r37382 * r37371;
double r37384 = tan(r37373);
double r37385 = r37383 / r37384;
double r37386 = r37381 - r37385;
double r37387 = 2.4906907027944938e+81;
bool r37388 = r37368 <= r37387;
double r37389 = r37368 / r37374;
double r37390 = r37368 * r37368;
double r37391 = 2.0;
double r37392 = r37390 + r37391;
double r37393 = r37391 * r37382;
double r37394 = r37392 + r37393;
double r37395 = r37371 / r37391;
double r37396 = pow(r37394, r37395);
double r37397 = r37389 / r37396;
double r37398 = r37397 - r37385;
double r37399 = r37380 - r37379;
double r37400 = r37399 - r37385;
double r37401 = r37388 ? r37398 : r37400;
double r37402 = r37370 ? r37386 : r37401;
return r37402;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -2.980655836879585e+29Initial program 25.2
Simplified25.2
rmApplied pow-neg25.2
Applied frac-times20.2
Simplified20.2
rmApplied associate-*r/20.1
Taylor expanded around -inf 0.2
if -2.980655836879585e+29 < F < 2.4906907027944938e+81Initial program 0.8
Simplified0.8
rmApplied pow-neg0.8
Applied frac-times0.4
Simplified0.4
rmApplied associate-*r/0.3
rmApplied associate-/r*0.7
if 2.4906907027944938e+81 < F Initial program 32.6
Simplified32.6
rmApplied pow-neg32.6
Applied frac-times26.4
Simplified26.4
rmApplied associate-*r/26.4
Taylor expanded around inf 0.2
Final simplification0.4
herbie shell --seed 2020046
(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))))))