Average Error: 0.0 → 0.0
Time: 5.1s
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{2 \cdot t}{t + 1}, \frac{2 \cdot t}{t + 1}, 1\right)}{\mathsf{fma}\left(\frac{2 \cdot t}{t + 1}, \frac{2 \cdot t}{t + 1}, 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{2 \cdot t}{t + 1}, \frac{2 \cdot t}{t + 1}, 1\right)}{\mathsf{fma}\left(\frac{2 \cdot t}{t + 1}, \frac{2 \cdot t}{t + 1}, 2\right)}
double f(double t) {
        double r1515227 = 1.0;
        double r1515228 = 2.0;
        double r1515229 = t;
        double r1515230 = r1515228 * r1515229;
        double r1515231 = r1515227 + r1515229;
        double r1515232 = r1515230 / r1515231;
        double r1515233 = r1515232 * r1515232;
        double r1515234 = r1515227 + r1515233;
        double r1515235 = r1515228 + r1515233;
        double r1515236 = r1515234 / r1515235;
        return r1515236;
}

double f(double t) {
        double r1515237 = 2.0;
        double r1515238 = t;
        double r1515239 = r1515237 * r1515238;
        double r1515240 = 1.0;
        double r1515241 = r1515238 + r1515240;
        double r1515242 = r1515239 / r1515241;
        double r1515243 = fma(r1515242, r1515242, r1515240);
        double r1515244 = fma(r1515242, r1515242, r1515237);
        double r1515245 = r1515243 / r1515244;
        return r1515245;
}

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

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

Reproduce

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