Average Error: 0.2 → 0.2
Time: 11.6s
Precision: 64
\[\left(-x \cdot \frac{1}{\tan B}\right) + \frac{1}{\sin B}\]
\[\frac{1}{\sin B} - \frac{x \cdot 1}{\sin B} \cdot \cos B\]
\left(-x \cdot \frac{1}{\tan B}\right) + \frac{1}{\sin B}
\frac{1}{\sin B} - \frac{x \cdot 1}{\sin B} \cdot \cos B
double f(double B, double x) {
        double r15953 = x;
        double r15954 = 1.0;
        double r15955 = B;
        double r15956 = tan(r15955);
        double r15957 = r15954 / r15956;
        double r15958 = r15953 * r15957;
        double r15959 = -r15958;
        double r15960 = sin(r15955);
        double r15961 = r15954 / r15960;
        double r15962 = r15959 + r15961;
        return r15962;
}

double f(double B, double x) {
        double r15963 = 1.0;
        double r15964 = B;
        double r15965 = sin(r15964);
        double r15966 = r15963 / r15965;
        double r15967 = x;
        double r15968 = r15967 * r15963;
        double r15969 = r15968 / r15965;
        double r15970 = cos(r15964);
        double r15971 = r15969 * r15970;
        double r15972 = r15966 - r15971;
        return r15972;
}

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

    \[\leadsto \color{blue}{\frac{1}{\sin B} - x \cdot \frac{1}{\tan B}}\]
  3. Using strategy rm
  4. Applied associate-*r/0.2

    \[\leadsto \frac{1}{\sin B} - \color{blue}{\frac{x \cdot 1}{\tan B}}\]
  5. Using strategy rm
  6. Applied tan-quot0.2

    \[\leadsto \frac{1}{\sin B} - \frac{x \cdot 1}{\color{blue}{\frac{\sin B}{\cos B}}}\]
  7. Applied associate-/r/0.2

    \[\leadsto \frac{1}{\sin B} - \color{blue}{\frac{x \cdot 1}{\sin B} \cdot \cos B}\]
  8. Final simplification0.2

    \[\leadsto \frac{1}{\sin B} - \frac{x \cdot 1}{\sin B} \cdot \cos B\]

Reproduce

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