Average Error: 13.9 → 14.0
Time: 20.6s
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}, -\left(x \cdot \frac{1}{\sin B}\right) \cdot \cos 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}, -\left(x \cdot \frac{1}{\sin B}\right) \cdot \cos B\right)
double f(double F, double B, double x) {
        double r51272 = x;
        double r51273 = 1.0;
        double r51274 = B;
        double r51275 = tan(r51274);
        double r51276 = r51273 / r51275;
        double r51277 = r51272 * r51276;
        double r51278 = -r51277;
        double r51279 = F;
        double r51280 = sin(r51274);
        double r51281 = r51279 / r51280;
        double r51282 = r51279 * r51279;
        double r51283 = 2.0;
        double r51284 = r51282 + r51283;
        double r51285 = r51283 * r51272;
        double r51286 = r51284 + r51285;
        double r51287 = r51273 / r51283;
        double r51288 = -r51287;
        double r51289 = pow(r51286, r51288);
        double r51290 = r51281 * r51289;
        double r51291 = r51278 + r51290;
        return r51291;
}

double f(double F, double B, double x) {
        double r51292 = 2.0;
        double r51293 = x;
        double r51294 = F;
        double r51295 = fma(r51294, r51294, r51292);
        double r51296 = fma(r51292, r51293, r51295);
        double r51297 = 1.0;
        double r51298 = r51297 / r51292;
        double r51299 = -r51298;
        double r51300 = pow(r51296, r51299);
        double r51301 = B;
        double r51302 = sin(r51301);
        double r51303 = r51294 / r51302;
        double r51304 = r51297 / r51302;
        double r51305 = r51293 * r51304;
        double r51306 = cos(r51301);
        double r51307 = r51305 * r51306;
        double r51308 = -r51307;
        double r51309 = fma(r51300, r51303, r51308);
        return r51309;
}

Error

Bits error versus F

Bits error versus B

Bits error versus x

Derivation

  1. Initial program 13.9

    \[\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.9

    \[\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. Using strategy rm
  4. Applied tan-quot13.9

    \[\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}, -x \cdot \frac{1}{\color{blue}{\frac{\sin B}{\cos B}}}\right)\]
  5. Applied associate-/r/14.0

    \[\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}, -x \cdot \color{blue}{\left(\frac{1}{\sin B} \cdot \cos B\right)}\right)\]
  6. Applied associate-*r*14.0

    \[\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}{\left(x \cdot \frac{1}{\sin B}\right) \cdot \cos B}\right)\]
  7. Final simplification14.0

    \[\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}, -\left(x \cdot \frac{1}{\sin B}\right) \cdot \cos B\right)\]

Reproduce

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