Average Error: 47.1 → 0.4
Time: 21.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{1}{\frac{\mathsf{fma}\left(2, 2 \cdot i, -\frac{1}{i}\right)}{\frac{\frac{i}{2}}{2}}}\]
\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{1}{\frac{\mathsf{fma}\left(2, 2 \cdot i, -\frac{1}{i}\right)}{\frac{\frac{i}{2}}{2}}}
double f(double i) {
        double r79104 = i;
        double r79105 = r79104 * r79104;
        double r79106 = r79105 * r79105;
        double r79107 = 2.0;
        double r79108 = r79107 * r79104;
        double r79109 = r79108 * r79108;
        double r79110 = r79106 / r79109;
        double r79111 = 1.0;
        double r79112 = r79109 - r79111;
        double r79113 = r79110 / r79112;
        return r79113;
}

double f(double i) {
        double r79114 = 1.0;
        double r79115 = 2.0;
        double r79116 = i;
        double r79117 = r79115 * r79116;
        double r79118 = 1.0;
        double r79119 = r79118 / r79116;
        double r79120 = -r79119;
        double r79121 = fma(r79115, r79117, r79120);
        double r79122 = r79116 / r79115;
        double r79123 = r79122 / r79115;
        double r79124 = r79121 / r79123;
        double r79125 = r79114 / r79124;
        return r79125;
}

Error

Bits error versus i

Derivation

  1. Initial program 47.1

    \[\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}}{\color{blue}{1 \cdot 2}}}{2 \cdot \left(i \cdot 2\right) - \frac{1}{i}}\]
  5. Applied *-un-lft-identity0.1

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

    \[\leadsto \frac{\color{blue}{\frac{1}{1} \cdot \frac{\frac{i}{2}}{2}}}{2 \cdot \left(i \cdot 2\right) - \frac{1}{i}}\]
  7. Applied associate-/l*0.4

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

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

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

Reproduce

herbie shell --seed 2019194 +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)))