\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)}\mathsf{fma}\left({\left(\mathsf{fma}\left(2, x, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\left(-\frac{1}{2}\right)}, \frac{F}{\sin B}, -1 \cdot \frac{x \cdot \cos B}{\sin B}\right)double f(double F, double B, double x) {
double r42501 = x;
double r42502 = 1.0;
double r42503 = B;
double r42504 = tan(r42503);
double r42505 = r42502 / r42504;
double r42506 = r42501 * r42505;
double r42507 = -r42506;
double r42508 = F;
double r42509 = sin(r42503);
double r42510 = r42508 / r42509;
double r42511 = r42508 * r42508;
double r42512 = 2.0;
double r42513 = r42511 + r42512;
double r42514 = r42512 * r42501;
double r42515 = r42513 + r42514;
double r42516 = r42502 / r42512;
double r42517 = -r42516;
double r42518 = pow(r42515, r42517);
double r42519 = r42510 * r42518;
double r42520 = r42507 + r42519;
return r42520;
}
double f(double F, double B, double x) {
double r42521 = 2.0;
double r42522 = x;
double r42523 = F;
double r42524 = fma(r42523, r42523, r42521);
double r42525 = fma(r42521, r42522, r42524);
double r42526 = 1.0;
double r42527 = r42526 / r42521;
double r42528 = -r42527;
double r42529 = pow(r42525, r42528);
double r42530 = B;
double r42531 = sin(r42530);
double r42532 = r42523 / r42531;
double r42533 = cos(r42530);
double r42534 = r42522 * r42533;
double r42535 = r42534 / r42531;
double r42536 = r42526 * r42535;
double r42537 = -r42536;
double r42538 = fma(r42529, r42532, r42537);
return r42538;
}



Bits error versus F



Bits error versus B



Bits error versus x
Initial program 14.2
Simplified14.2
Taylor expanded around inf 14.1
Final simplification14.1
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))))))