Average Error: 0.0 → 0.0
Time: 17.4s
Precision: 64
\[\frac{1 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}{2 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}\]
\[\frac{\mathsf{fma}\left(2 \cdot t, \frac{\frac{2 \cdot t}{1 + t}}{1 + t}, 1\right)}{\mathsf{fma}\left(\frac{\frac{2 \cdot t}{1 + t}}{1 + t}, 2 \cdot t, 2\right)}\]
\frac{1 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}{2 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}
\frac{\mathsf{fma}\left(2 \cdot t, \frac{\frac{2 \cdot t}{1 + t}}{1 + t}, 1\right)}{\mathsf{fma}\left(\frac{\frac{2 \cdot t}{1 + t}}{1 + t}, 2 \cdot t, 2\right)}
double f(double t) {
        double r60204 = 1.0;
        double r60205 = 2.0;
        double r60206 = t;
        double r60207 = r60205 * r60206;
        double r60208 = r60204 + r60206;
        double r60209 = r60207 / r60208;
        double r60210 = r60209 * r60209;
        double r60211 = r60204 + r60210;
        double r60212 = r60205 + r60210;
        double r60213 = r60211 / r60212;
        return r60213;
}

double f(double t) {
        double r60214 = 2.0;
        double r60215 = t;
        double r60216 = r60214 * r60215;
        double r60217 = 1.0;
        double r60218 = r60217 + r60215;
        double r60219 = r60216 / r60218;
        double r60220 = r60219 / r60218;
        double r60221 = fma(r60216, r60220, r60217);
        double r60222 = fma(r60220, r60216, r60214);
        double r60223 = r60221 / r60222;
        return r60223;
}

Error

Bits error versus t

Derivation

  1. Initial program 0.0

    \[\frac{1 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}{2 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(2 \cdot t, \frac{\frac{2 \cdot t}{1 + t}}{1 + t}, 1\right)}{\mathsf{fma}\left(\frac{\frac{2 \cdot t}{1 + t}}{1 + t}, 2 \cdot t, 2\right)}}\]
  3. Final simplification0.0

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

Reproduce

herbie shell --seed 2019323 +o rules:numerics
(FPCore (t)
  :name "Kahan p13 Example 1"
  :precision binary64
  (/ (+ 1 (* (/ (* 2 t) (+ 1 t)) (/ (* 2 t) (+ 1 t)))) (+ 2 (* (/ (* 2 t) (+ 1 t)) (/ (* 2 t) (+ 1 t))))))