Average Error: 47.1 → 0.4
Time: 22.9s
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 r80267 = i;
        double r80268 = r80267 * r80267;
        double r80269 = r80268 * r80268;
        double r80270 = 2.0;
        double r80271 = r80270 * r80267;
        double r80272 = r80271 * r80271;
        double r80273 = r80269 / r80272;
        double r80274 = 1.0;
        double r80275 = r80272 - r80274;
        double r80276 = r80273 / r80275;
        return r80276;
}

double f(double i) {
        double r80277 = 1.0;
        double r80278 = 2.0;
        double r80279 = i;
        double r80280 = r80278 * r80279;
        double r80281 = 1.0;
        double r80282 = r80281 / r80279;
        double r80283 = -r80282;
        double r80284 = fma(r80278, r80280, r80283);
        double r80285 = r80279 / r80278;
        double r80286 = r80285 / r80278;
        double r80287 = r80284 / r80286;
        double r80288 = r80277 / r80287;
        return r80288;
}

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)))