Average Error: 0.2 → 0.2
Time: 11.1s
Precision: 64
\[\left(-x \cdot \frac{1}{\tan B}\right) + \frac{1}{\sin B}\]
\[\left(-1 \cdot \frac{x \cdot \cos B}{\sin B}\right) + \frac{1}{\sin B}\]
\left(-x \cdot \frac{1}{\tan B}\right) + \frac{1}{\sin B}
\left(-1 \cdot \frac{x \cdot \cos B}{\sin B}\right) + \frac{1}{\sin B}
double f(double B, double x) {
        double r62422 = x;
        double r62423 = 1.0;
        double r62424 = B;
        double r62425 = tan(r62424);
        double r62426 = r62423 / r62425;
        double r62427 = r62422 * r62426;
        double r62428 = -r62427;
        double r62429 = sin(r62424);
        double r62430 = r62423 / r62429;
        double r62431 = r62428 + r62430;
        return r62431;
}

double f(double B, double x) {
        double r62432 = 1.0;
        double r62433 = x;
        double r62434 = B;
        double r62435 = cos(r62434);
        double r62436 = r62433 * r62435;
        double r62437 = sin(r62434);
        double r62438 = r62436 / r62437;
        double r62439 = r62432 * r62438;
        double r62440 = -r62439;
        double r62441 = r62432 / r62437;
        double r62442 = r62440 + r62441;
        return r62442;
}

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. Taylor expanded around inf 0.2

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

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

Reproduce

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