Average Error: 0.1 → 0.1
Time: 22.0s
Precision: 64
\[0.0 \le e \le 1\]
\[\frac{e \cdot \sin v}{1 + e \cdot \cos v}\]
\[\left(e \cdot \sin v\right) \cdot \frac{1}{\mathsf{fma}\left(\cos v, e, 1\right)}\]
\frac{e \cdot \sin v}{1 + e \cdot \cos v}
\left(e \cdot \sin v\right) \cdot \frac{1}{\mathsf{fma}\left(\cos v, e, 1\right)}
double f(double e, double v) {
        double r18540 = e;
        double r18541 = v;
        double r18542 = sin(r18541);
        double r18543 = r18540 * r18542;
        double r18544 = 1.0;
        double r18545 = cos(r18541);
        double r18546 = r18540 * r18545;
        double r18547 = r18544 + r18546;
        double r18548 = r18543 / r18547;
        return r18548;
}

double f(double e, double v) {
        double r18549 = e;
        double r18550 = v;
        double r18551 = sin(r18550);
        double r18552 = r18549 * r18551;
        double r18553 = 1.0;
        double r18554 = cos(r18550);
        double r18555 = 1.0;
        double r18556 = fma(r18554, r18549, r18555);
        double r18557 = r18553 / r18556;
        double r18558 = r18552 * r18557;
        return r18558;
}

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

    \[\leadsto \color{blue}{\frac{e \cdot \sin v}{\mathsf{fma}\left(\cos v, e, 1\right)}}\]
  3. Using strategy rm
  4. Applied div-inv0.1

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

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

Reproduce

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