Average Error: 0.0 → 0.0
Time: 6.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(\frac{2}{\frac{1 + t}{t}}, \frac{2}{\frac{1 + t}{t}}, 1\right)}{\mathsf{fma}\left(\frac{2}{\frac{1 + t}{t}}, \frac{2}{\frac{1 + t}{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{2}{\frac{1 + t}{t}}, \frac{2}{\frac{1 + t}{t}}, 1\right)}{\mathsf{fma}\left(\frac{2}{\frac{1 + t}{t}}, \frac{2}{\frac{1 + t}{t}}, 2\right)}
double f(double t) {
        double r2040002 = 1.0;
        double r2040003 = 2.0;
        double r2040004 = t;
        double r2040005 = r2040003 * r2040004;
        double r2040006 = r2040002 + r2040004;
        double r2040007 = r2040005 / r2040006;
        double r2040008 = r2040007 * r2040007;
        double r2040009 = r2040002 + r2040008;
        double r2040010 = r2040003 + r2040008;
        double r2040011 = r2040009 / r2040010;
        return r2040011;
}

double f(double t) {
        double r2040012 = 2.0;
        double r2040013 = 1.0;
        double r2040014 = t;
        double r2040015 = r2040013 + r2040014;
        double r2040016 = r2040015 / r2040014;
        double r2040017 = r2040012 / r2040016;
        double r2040018 = fma(r2040017, r2040017, r2040013);
        double r2040019 = fma(r2040017, r2040017, r2040012);
        double r2040020 = r2040018 / r2040019;
        return r2040020;
}

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

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

Reproduce

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