\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 -1354270687656807936:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right)\\
\mathbf{elif}\;F \le 23947.60619441725793876685202121734619141:\\
\;\;\;\;\left(-1 \cdot \frac{x \cdot \cos B}{\sin B}\right) + \frac{F}{\sin B} \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \left(\frac{1}{\sin B} - 1 \cdot \frac{1}{\sin B \cdot {F}^{2}}\right)\\
\end{array}double f(double F, double B, double x) {
double r42363 = x;
double r42364 = 1.0;
double r42365 = B;
double r42366 = tan(r42365);
double r42367 = r42364 / r42366;
double r42368 = r42363 * r42367;
double r42369 = -r42368;
double r42370 = F;
double r42371 = sin(r42365);
double r42372 = r42370 / r42371;
double r42373 = r42370 * r42370;
double r42374 = 2.0;
double r42375 = r42373 + r42374;
double r42376 = r42374 * r42363;
double r42377 = r42375 + r42376;
double r42378 = r42364 / r42374;
double r42379 = -r42378;
double r42380 = pow(r42377, r42379);
double r42381 = r42372 * r42380;
double r42382 = r42369 + r42381;
return r42382;
}
double f(double F, double B, double x) {
double r42383 = F;
double r42384 = -1.354270687656808e+18;
bool r42385 = r42383 <= r42384;
double r42386 = x;
double r42387 = 1.0;
double r42388 = r42386 * r42387;
double r42389 = B;
double r42390 = tan(r42389);
double r42391 = r42388 / r42390;
double r42392 = -r42391;
double r42393 = 1.0;
double r42394 = sin(r42389);
double r42395 = 2.0;
double r42396 = pow(r42383, r42395);
double r42397 = r42394 * r42396;
double r42398 = r42393 / r42397;
double r42399 = r42387 * r42398;
double r42400 = r42393 / r42394;
double r42401 = r42399 - r42400;
double r42402 = r42392 + r42401;
double r42403 = 23947.606194417258;
bool r42404 = r42383 <= r42403;
double r42405 = cos(r42389);
double r42406 = r42386 * r42405;
double r42407 = r42406 / r42394;
double r42408 = r42387 * r42407;
double r42409 = -r42408;
double r42410 = r42383 / r42394;
double r42411 = r42383 * r42383;
double r42412 = 2.0;
double r42413 = r42411 + r42412;
double r42414 = r42412 * r42386;
double r42415 = r42413 + r42414;
double r42416 = r42387 / r42412;
double r42417 = -r42416;
double r42418 = pow(r42415, r42417);
double r42419 = r42410 * r42418;
double r42420 = r42409 + r42419;
double r42421 = r42400 - r42399;
double r42422 = r42392 + r42421;
double r42423 = r42404 ? r42420 : r42422;
double r42424 = r42385 ? r42402 : r42423;
return r42424;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -1.354270687656808e+18Initial program 24.5
rmApplied pow-neg24.5
Applied frac-times19.1
Simplified19.1
rmApplied associate-*r/19.0
Taylor expanded around -inf 0.2
if -1.354270687656808e+18 < F < 23947.606194417258Initial program 0.4
Taylor expanded around inf 0.3
if 23947.606194417258 < F Initial program 25.5
rmApplied pow-neg25.5
Applied frac-times19.4
Simplified19.4
rmApplied associate-*r/19.3
Taylor expanded around inf 0.2
Final simplification0.2
herbie shell --seed 2019346 +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))))))