Average Error: 46.3 → 0.2
Time: 22.8s
Precision: 64
\[i \gt 0.0\]
\[\frac{\frac{\left(i \cdot i\right) \cdot \left(i \cdot i\right)}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)}}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right) - 1}\]
\[\frac{i}{2} \cdot \frac{\frac{1}{2}}{\mathsf{fma}\left(2, i \cdot 2, \frac{-1}{i}\right)}\]
\frac{\frac{\left(i \cdot i\right) \cdot \left(i \cdot i\right)}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)}}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right) - 1}
\frac{i}{2} \cdot \frac{\frac{1}{2}}{\mathsf{fma}\left(2, i \cdot 2, \frac{-1}{i}\right)}
double f(double i) {
        double r84793 = i;
        double r84794 = r84793 * r84793;
        double r84795 = r84794 * r84794;
        double r84796 = 2.0;
        double r84797 = r84796 * r84793;
        double r84798 = r84797 * r84797;
        double r84799 = r84795 / r84798;
        double r84800 = 1.0;
        double r84801 = r84798 - r84800;
        double r84802 = r84799 / r84801;
        return r84802;
}

double f(double i) {
        double r84803 = i;
        double r84804 = 2.0;
        double r84805 = r84803 / r84804;
        double r84806 = 1.0;
        double r84807 = r84806 / r84804;
        double r84808 = r84803 * r84804;
        double r84809 = 1.0;
        double r84810 = -r84809;
        double r84811 = r84810 / r84803;
        double r84812 = fma(r84804, r84808, r84811);
        double r84813 = r84807 / r84812;
        double r84814 = r84805 * r84813;
        return r84814;
}

Error

Bits error versus i

Derivation

  1. Initial program 46.3

    \[\frac{\frac{\left(i \cdot i\right) \cdot \left(i \cdot i\right)}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)}}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right) - 1}\]
  2. Simplified0.1

    \[\leadsto \color{blue}{\frac{\frac{\frac{i}{2}}{2}}{2 \cdot \left(i \cdot 2\right) - \frac{1}{i}}}\]
  3. Using strategy rm
  4. Applied *-un-lft-identity0.1

    \[\leadsto \frac{\frac{\frac{i}{2}}{2}}{\color{blue}{1 \cdot \left(2 \cdot \left(i \cdot 2\right) - \frac{1}{i}\right)}}\]
  5. Applied div-inv0.1

    \[\leadsto \frac{\color{blue}{\frac{i}{2} \cdot \frac{1}{2}}}{1 \cdot \left(2 \cdot \left(i \cdot 2\right) - \frac{1}{i}\right)}\]
  6. Applied times-frac0.2

    \[\leadsto \color{blue}{\frac{\frac{i}{2}}{1} \cdot \frac{\frac{1}{2}}{2 \cdot \left(i \cdot 2\right) - \frac{1}{i}}}\]
  7. Simplified0.2

    \[\leadsto \color{blue}{\frac{i}{2}} \cdot \frac{\frac{1}{2}}{2 \cdot \left(i \cdot 2\right) - \frac{1}{i}}\]
  8. Simplified0.2

    \[\leadsto \frac{i}{2} \cdot \color{blue}{\frac{\frac{1}{2}}{\mathsf{fma}\left(2, 2 \cdot i, \frac{-1}{i}\right)}}\]
  9. Final simplification0.2

    \[\leadsto \frac{i}{2} \cdot \frac{\frac{1}{2}}{\mathsf{fma}\left(2, i \cdot 2, \frac{-1}{i}\right)}\]

Reproduce

herbie shell --seed 2019174 +o rules:numerics
(FPCore (i)
  :name "Octave 3.8, jcobi/4, as called"
  :pre (and (> i 0.0))
  (/ (/ (* (* i i) (* i i)) (* (* 2.0 i) (* 2.0 i))) (- (* (* 2.0 i) (* 2.0 i)) 1.0)))