Average Error: 0.2 → 0.2
Time: 6.7s
Precision: 64
\[\left(-x \cdot \frac{1}{\tan B}\right) + \frac{1}{\sin B}\]
\[\left(-x \cdot \left(\frac{1}{\sin B} \cdot \cos B\right)\right) + \frac{1}{\sin B}\]
\left(-x \cdot \frac{1}{\tan B}\right) + \frac{1}{\sin B}
\left(-x \cdot \left(\frac{1}{\sin B} \cdot \cos B\right)\right) + \frac{1}{\sin B}
double f(double B, double x) {
        double r19001 = x;
        double r19002 = 1.0;
        double r19003 = B;
        double r19004 = tan(r19003);
        double r19005 = r19002 / r19004;
        double r19006 = r19001 * r19005;
        double r19007 = -r19006;
        double r19008 = sin(r19003);
        double r19009 = r19002 / r19008;
        double r19010 = r19007 + r19009;
        return r19010;
}

double f(double B, double x) {
        double r19011 = x;
        double r19012 = 1.0;
        double r19013 = B;
        double r19014 = sin(r19013);
        double r19015 = r19012 / r19014;
        double r19016 = cos(r19013);
        double r19017 = r19015 * r19016;
        double r19018 = r19011 * r19017;
        double r19019 = -r19018;
        double r19020 = r19019 + r19015;
        return r19020;
}

Error

Bits error versus B

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.2

    \[\left(-x \cdot \frac{1}{\tan B}\right) + \frac{1}{\sin B}\]
  2. Using strategy rm
  3. Applied tan-quot0.2

    \[\leadsto \left(-x \cdot \frac{1}{\color{blue}{\frac{\sin B}{\cos B}}}\right) + \frac{1}{\sin B}\]
  4. Applied associate-/r/0.2

    \[\leadsto \left(-x \cdot \color{blue}{\left(\frac{1}{\sin B} \cdot \cos B\right)}\right) + \frac{1}{\sin B}\]
  5. Final simplification0.2

    \[\leadsto \left(-x \cdot \left(\frac{1}{\sin B} \cdot \cos B\right)\right) + \frac{1}{\sin B}\]

Reproduce

herbie shell --seed 2020083 +o rules:numerics
(FPCore (B x)
  :name "VandenBroeck and Keller, Equation (24)"
  :precision binary64
  (+ (- (* x (/ 1 (tan B)))) (/ 1 (sin B))))