Average Error: 0.0 → 0.0
Time: 13.6s
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 r1805736 = 1.0;
        double r1805737 = 2.0;
        double r1805738 = t;
        double r1805739 = r1805737 * r1805738;
        double r1805740 = r1805736 + r1805738;
        double r1805741 = r1805739 / r1805740;
        double r1805742 = r1805741 * r1805741;
        double r1805743 = r1805736 + r1805742;
        double r1805744 = r1805737 + r1805742;
        double r1805745 = r1805743 / r1805744;
        return r1805745;
}

double f(double t) {
        double r1805746 = 2.0;
        double r1805747 = 1.0;
        double r1805748 = t;
        double r1805749 = r1805747 + r1805748;
        double r1805750 = r1805749 / r1805748;
        double r1805751 = r1805746 / r1805750;
        double r1805752 = fma(r1805751, r1805751, r1805747);
        double r1805753 = fma(r1805751, r1805751, r1805746);
        double r1805754 = r1805752 / r1805753;
        return r1805754;
}

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