Average Error: 13.2 → 10.4
Time: 2.3m
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)}\]
\[\frac{F \cdot \left({\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{4}} \cdot {\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{4}}\right)}{\sin B} - \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)}
\frac{F \cdot \left({\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{4}} \cdot {\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{4}}\right)}{\sin B} - \frac{x}{\tan B}
double f(double F, double B, double x) {
        double r9374578 = x;
        double r9374579 = 1.0;
        double r9374580 = B;
        double r9374581 = tan(r9374580);
        double r9374582 = r9374579 / r9374581;
        double r9374583 = r9374578 * r9374582;
        double r9374584 = -r9374583;
        double r9374585 = F;
        double r9374586 = sin(r9374580);
        double r9374587 = r9374585 / r9374586;
        double r9374588 = r9374585 * r9374585;
        double r9374589 = 2.0;
        double r9374590 = r9374588 + r9374589;
        double r9374591 = r9374589 * r9374578;
        double r9374592 = r9374590 + r9374591;
        double r9374593 = r9374579 / r9374589;
        double r9374594 = -r9374593;
        double r9374595 = pow(r9374592, r9374594);
        double r9374596 = r9374587 * r9374595;
        double r9374597 = r9374584 + r9374596;
        return r9374597;
}

double f(double F, double B, double x) {
        double r9374598 = F;
        double r9374599 = 2.0;
        double r9374600 = x;
        double r9374601 = fma(r9374598, r9374598, r9374599);
        double r9374602 = fma(r9374599, r9374600, r9374601);
        double r9374603 = -0.25;
        double r9374604 = pow(r9374602, r9374603);
        double r9374605 = r9374604 * r9374604;
        double r9374606 = r9374598 * r9374605;
        double r9374607 = B;
        double r9374608 = sin(r9374607);
        double r9374609 = r9374606 / r9374608;
        double r9374610 = tan(r9374607);
        double r9374611 = r9374600 / r9374610;
        double r9374612 = r9374609 - r9374611;
        return r9374612;
}

Error

Bits error versus F

Bits error versus B

Bits error versus x

Derivation

  1. Initial program 13.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. Simplified13.1

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

    \[\leadsto \color{blue}{\frac{{\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{2}} \cdot F}{\sin B}} - \frac{x}{\tan B}\]
  5. Using strategy rm
  6. Applied sqr-pow10.4

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

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

Reproduce

herbie shell --seed 2019128 +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))))))