Average Error: 14.2 → 14.1
Time: 19.1s
Precision: 64
\[\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)\]
\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;
}

Error

Bits error versus F

Bits error versus B

Bits error versus x

Derivation

  1. Initial program 14.2

    \[\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)}\]
  2. Simplified14.2

    \[\leadsto \color{blue}{\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}, -x \cdot \frac{1}{\tan B}\right)}\]
  3. Taylor expanded around inf 14.1

    \[\leadsto \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}, -\color{blue}{1 \cdot \frac{x \cdot \cos B}{\sin B}}\right)\]
  4. Final simplification14.1

    \[\leadsto \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)\]

Reproduce

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))))))