Average Error: 0.0 → 0.0
Time: 4.7s
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(\frac{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + t}, 1\right)}{\mathsf{fma}\left(\frac{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + 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(\frac{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + t}, 1\right)}{\mathsf{fma}\left(\frac{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + t}, 2\right)}
double f(double t) {
        double r662490 = 1.0;
        double r662491 = 2.0;
        double r662492 = t;
        double r662493 = r662491 * r662492;
        double r662494 = r662490 + r662492;
        double r662495 = r662493 / r662494;
        double r662496 = r662495 * r662495;
        double r662497 = r662490 + r662496;
        double r662498 = r662491 + r662496;
        double r662499 = r662497 / r662498;
        return r662499;
}

double f(double t) {
        double r662500 = t;
        double r662501 = 2.0;
        double r662502 = r662500 * r662501;
        double r662503 = 1.0;
        double r662504 = r662503 + r662500;
        double r662505 = r662502 / r662504;
        double r662506 = fma(r662505, r662505, r662503);
        double r662507 = fma(r662505, r662505, r662501);
        double r662508 = r662506 / r662507;
        return r662508;
}

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(\frac{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + t}, 1\right)}{\mathsf{fma}\left(\frac{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + t}, 2\right)}}\]
  3. Final simplification0.0

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

Reproduce

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