\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 -752955800017062.75:\\
\;\;\;\;\frac{\frac{\frac{1}{F}}{F} - 1}{\sin B} - \frac{x \cdot 1}{\tan B}\\
\mathbf{elif}\;F \le 7212012.3360460978:\\
\;\;\;\;\frac{F}{\frac{\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 r44554 = x;
double r44555 = 1.0;
double r44556 = B;
double r44557 = tan(r44556);
double r44558 = r44555 / r44557;
double r44559 = r44554 * r44558;
double r44560 = -r44559;
double r44561 = F;
double r44562 = sin(r44556);
double r44563 = r44561 / r44562;
double r44564 = r44561 * r44561;
double r44565 = 2.0;
double r44566 = r44564 + r44565;
double r44567 = r44565 * r44554;
double r44568 = r44566 + r44567;
double r44569 = r44555 / r44565;
double r44570 = -r44569;
double r44571 = pow(r44568, r44570);
double r44572 = r44563 * r44571;
double r44573 = r44560 + r44572;
return r44573;
}
double f(double F, double B, double x) {
double r44574 = F;
double r44575 = -752955800017062.8;
bool r44576 = r44574 <= r44575;
double r44577 = 1.0;
double r44578 = r44577 / r44574;
double r44579 = r44578 / r44574;
double r44580 = 1.0;
double r44581 = r44579 - r44580;
double r44582 = B;
double r44583 = sin(r44582);
double r44584 = r44581 / r44583;
double r44585 = x;
double r44586 = r44585 * r44577;
double r44587 = tan(r44582);
double r44588 = r44586 / r44587;
double r44589 = r44584 - r44588;
double r44590 = 7212012.336046098;
bool r44591 = r44574 <= r44590;
double r44592 = r44574 * r44574;
double r44593 = 2.0;
double r44594 = r44592 + r44593;
double r44595 = r44593 * r44585;
double r44596 = r44594 + r44595;
double r44597 = r44577 / r44593;
double r44598 = -r44597;
double r44599 = pow(r44596, r44598);
double r44600 = r44583 / r44599;
double r44601 = r44574 / r44600;
double r44602 = r44601 - r44588;
double r44603 = r44580 / r44583;
double r44604 = 2.0;
double r44605 = pow(r44574, r44604);
double r44606 = r44583 * r44605;
double r44607 = r44580 / r44606;
double r44608 = r44577 * r44607;
double r44609 = r44603 - r44608;
double r44610 = r44609 - r44588;
double r44611 = r44591 ? r44602 : r44610;
double r44612 = r44576 ? r44589 : r44611;
return r44612;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -752955800017062.8Initial program 25.8
Simplified25.8
rmApplied associate-*l/19.8
rmApplied associate-*r/19.8
Taylor expanded around -inf 0.1
Simplified0.1
if -752955800017062.8 < F < 7212012.336046098Initial program 0.4
Simplified0.4
rmApplied associate-*l/0.4
rmApplied associate-*r/0.3
rmApplied associate-/l*0.3
if 7212012.336046098 < F Initial program 25.5
Simplified25.5
rmApplied associate-*l/20.0
rmApplied associate-*r/20.0
Taylor expanded around inf 0.2
Final simplification0.2
herbie shell --seed 2020036
(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))))))