Average Error: 0.1 → 0.2
Time: 46.5s
Precision: 64
\[0 \le e \le 1\]
\[\frac{e \cdot \sin v}{1 + e \cdot \cos v}\]
\[\sin v \cdot \frac{1}{\frac{(\left(\cos v\right) \cdot e + 1)_*}{e}}\]
\frac{e \cdot \sin v}{1 + e \cdot \cos v}
\sin v \cdot \frac{1}{\frac{(\left(\cos v\right) \cdot e + 1)_*}{e}}
double f(double e, double v) {
        double r1684380 = e;
        double r1684381 = v;
        double r1684382 = sin(r1684381);
        double r1684383 = r1684380 * r1684382;
        double r1684384 = 1.0;
        double r1684385 = cos(r1684381);
        double r1684386 = r1684380 * r1684385;
        double r1684387 = r1684384 + r1684386;
        double r1684388 = r1684383 / r1684387;
        return r1684388;
}

double f(double e, double v) {
        double r1684389 = v;
        double r1684390 = sin(r1684389);
        double r1684391 = 1.0;
        double r1684392 = cos(r1684389);
        double r1684393 = e;
        double r1684394 = fma(r1684392, r1684393, r1684391);
        double r1684395 = r1684394 / r1684393;
        double r1684396 = r1684391 / r1684395;
        double r1684397 = r1684390 * r1684396;
        return r1684397;
}

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}{(\left(\cos v\right) \cdot e + 1)_*} \cdot \sin v}\]
  3. Using strategy rm
  4. Applied *-un-lft-identity0.1

    \[\leadsto \frac{\color{blue}{1 \cdot e}}{(\left(\cos v\right) \cdot e + 1)_*} \cdot \sin v\]
  5. Applied associate-/l*0.2

    \[\leadsto \color{blue}{\frac{1}{\frac{(\left(\cos v\right) \cdot e + 1)_*}{e}}} \cdot \sin v\]
  6. Final simplification0.2

    \[\leadsto \sin v \cdot \frac{1}{\frac{(\left(\cos v\right) \cdot e + 1)_*}{e}}\]

Reproduce

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