Average Error: 13.2 → 10.5
Time: 37.7s
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{{\left(\mathsf{fma}\left(2, x, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}} \cdot F}{\sin B} - x \cdot \frac{1}{\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{{\left(\mathsf{fma}\left(2, x, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}} \cdot F}{\sin B} - x \cdot \frac{1}{\tan B}
double f(double F, double B, double x) {
        double r2023138 = x;
        double r2023139 = 1.0;
        double r2023140 = B;
        double r2023141 = tan(r2023140);
        double r2023142 = r2023139 / r2023141;
        double r2023143 = r2023138 * r2023142;
        double r2023144 = -r2023143;
        double r2023145 = F;
        double r2023146 = sin(r2023140);
        double r2023147 = r2023145 / r2023146;
        double r2023148 = r2023145 * r2023145;
        double r2023149 = 2.0;
        double r2023150 = r2023148 + r2023149;
        double r2023151 = r2023149 * r2023138;
        double r2023152 = r2023150 + r2023151;
        double r2023153 = r2023139 / r2023149;
        double r2023154 = -r2023153;
        double r2023155 = pow(r2023152, r2023154);
        double r2023156 = r2023147 * r2023155;
        double r2023157 = r2023144 + r2023156;
        return r2023157;
}

double f(double F, double B, double x) {
        double r2023158 = 2.0;
        double r2023159 = x;
        double r2023160 = F;
        double r2023161 = fma(r2023160, r2023160, r2023158);
        double r2023162 = fma(r2023158, r2023159, r2023161);
        double r2023163 = -0.5;
        double r2023164 = pow(r2023162, r2023163);
        double r2023165 = r2023164 * r2023160;
        double r2023166 = B;
        double r2023167 = sin(r2023166);
        double r2023168 = r2023165 / r2023167;
        double r2023169 = 1.0;
        double r2023170 = tan(r2023166);
        double r2023171 = r2023169 / r2023170;
        double r2023172 = r2023159 * r2023171;
        double r2023173 = r2023168 - r2023172;
        return r2023173;
}

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.2

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

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

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

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

Reproduce

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