Average Error: 13.6 → 10.8
Time: 48.2s
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)}\]
\[F \cdot \frac{1}{\frac{\sin B}{{\left(\mathsf{fma}\left(2, x, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}}}} - \frac{x}{\tan B}\]
\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)}
F \cdot \frac{1}{\frac{\sin B}{{\left(\mathsf{fma}\left(2, x, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}}}} - \frac{x}{\tan B}
double f(double F, double B, double x) {
        double r2594571 = x;
        double r2594572 = 1.0;
        double r2594573 = B;
        double r2594574 = tan(r2594573);
        double r2594575 = r2594572 / r2594574;
        double r2594576 = r2594571 * r2594575;
        double r2594577 = -r2594576;
        double r2594578 = F;
        double r2594579 = sin(r2594573);
        double r2594580 = r2594578 / r2594579;
        double r2594581 = r2594578 * r2594578;
        double r2594582 = 2.0;
        double r2594583 = r2594581 + r2594582;
        double r2594584 = r2594582 * r2594571;
        double r2594585 = r2594583 + r2594584;
        double r2594586 = r2594572 / r2594582;
        double r2594587 = -r2594586;
        double r2594588 = pow(r2594585, r2594587);
        double r2594589 = r2594580 * r2594588;
        double r2594590 = r2594577 + r2594589;
        return r2594590;
}

double f(double F, double B, double x) {
        double r2594591 = F;
        double r2594592 = 1.0;
        double r2594593 = B;
        double r2594594 = sin(r2594593);
        double r2594595 = 2.0;
        double r2594596 = x;
        double r2594597 = fma(r2594591, r2594591, r2594595);
        double r2594598 = fma(r2594595, r2594596, r2594597);
        double r2594599 = -0.5;
        double r2594600 = pow(r2594598, r2594599);
        double r2594601 = r2594594 / r2594600;
        double r2594602 = r2594592 / r2594601;
        double r2594603 = r2594591 * r2594602;
        double r2594604 = tan(r2594593);
        double r2594605 = r2594596 / r2594604;
        double r2594606 = r2594603 - r2594605;
        return r2594606;
}

Error

Bits error versus F

Bits error versus B

Bits error versus x

Derivation

  1. Initial program 13.6

    \[\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. Simplified10.8

    \[\leadsto \color{blue}{\frac{{\left(\mathsf{fma}\left(2, x, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}}}{\sin B} \cdot F - \frac{x}{\tan B}}\]
  3. Using strategy rm
  4. Applied *-un-lft-identity10.8

    \[\leadsto \frac{\color{blue}{1 \cdot {\left(\mathsf{fma}\left(2, x, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}}}}{\sin B} \cdot F - \frac{x}{\tan B}\]
  5. Applied associate-/l*10.8

    \[\leadsto \color{blue}{\frac{1}{\frac{\sin B}{{\left(\mathsf{fma}\left(2, x, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}}}}} \cdot F - \frac{x}{\tan B}\]
  6. Final simplification10.8

    \[\leadsto F \cdot \frac{1}{\frac{\sin B}{{\left(\mathsf{fma}\left(2, x, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}}}} - \frac{x}{\tan B}\]

Reproduce

herbie shell --seed 2019138 +o rules:numerics
(FPCore (F B x)
  :name "VandenBroeck and Keller, Equation (23)"
  (+ (- (* x (/ 1 (tan B)))) (* (/ F (sin B)) (pow (+ (+ (* F F) 2) (* 2 x)) (- (/ 1 2))))))