Average Error: 0.1 → 0.2
Time: 24.2s
Precision: 64
\[0.0 \le e \le 1\]
\[\frac{e \cdot \sin v}{1 + e \cdot \cos v}\]
\[\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\frac{\mathsf{fma}\left(\cos v, e, 1\right)}{e}} \cdot \sin v\right)\right)\]
\frac{e \cdot \sin v}{1 + e \cdot \cos v}
\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\frac{\mathsf{fma}\left(\cos v, e, 1\right)}{e}} \cdot \sin v\right)\right)
double f(double e, double v) {
        double r23432 = e;
        double r23433 = v;
        double r23434 = sin(r23433);
        double r23435 = r23432 * r23434;
        double r23436 = 1.0;
        double r23437 = cos(r23433);
        double r23438 = r23432 * r23437;
        double r23439 = r23436 + r23438;
        double r23440 = r23435 / r23439;
        return r23440;
}

double f(double e, double v) {
        double r23441 = 1.0;
        double r23442 = v;
        double r23443 = cos(r23442);
        double r23444 = e;
        double r23445 = 1.0;
        double r23446 = fma(r23443, r23444, r23445);
        double r23447 = r23446 / r23444;
        double r23448 = r23441 / r23447;
        double r23449 = sin(r23442);
        double r23450 = r23448 * r23449;
        double r23451 = expm1(r23450);
        double r23452 = log1p(r23451);
        return r23452;
}

Error

Bits error versus e

Bits error versus v

Derivation

  1. Initial program 0.1

    \[\frac{e \cdot \sin v}{1 + e \cdot \cos v}\]
  2. Using strategy rm
  3. Applied log1p-expm1-u0.1

    \[\leadsto \color{blue}{\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{e \cdot \sin v}{1 + e \cdot \cos v}\right)\right)}\]
  4. Simplified0.1

    \[\leadsto \mathsf{log1p}\left(\color{blue}{\mathsf{expm1}\left(\frac{e}{\mathsf{fma}\left(\cos v, e, 1\right)} \cdot \sin v\right)}\right)\]
  5. Using strategy rm
  6. Applied clear-num0.2

    \[\leadsto \mathsf{log1p}\left(\mathsf{expm1}\left(\color{blue}{\frac{1}{\frac{\mathsf{fma}\left(\cos v, e, 1\right)}{e}}} \cdot \sin v\right)\right)\]
  7. Final simplification0.2

    \[\leadsto \mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\frac{\mathsf{fma}\left(\cos v, e, 1\right)}{e}} \cdot \sin v\right)\right)\]

Reproduce

herbie shell --seed 2019199 +o rules:numerics
(FPCore (e v)
  :name "Trigonometry A"
  :pre (<= 0.0 e 1.0)
  (/ (* e (sin v)) (+ 1.0 (* e (cos v)))))