Average Error: 0.1 → 0.1
Time: 9.0s
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(\left(\frac{t \cdot 2}{1 + t}\right), \left(\frac{t \cdot 2}{1 + t}\right), 1\right)}{\mathsf{fma}\left(\left(\frac{t \cdot 2}{1 + t}\right), \left(\frac{t \cdot 2}{1 + t}\right), 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(\left(\frac{t \cdot 2}{1 + t}\right), \left(\frac{t \cdot 2}{1 + t}\right), 1\right)}{\mathsf{fma}\left(\left(\frac{t \cdot 2}{1 + t}\right), \left(\frac{t \cdot 2}{1 + t}\right), 2\right)}
double f(double t) {
        double r1274684 = 1.0;
        double r1274685 = 2.0;
        double r1274686 = t;
        double r1274687 = r1274685 * r1274686;
        double r1274688 = r1274684 + r1274686;
        double r1274689 = r1274687 / r1274688;
        double r1274690 = r1274689 * r1274689;
        double r1274691 = r1274684 + r1274690;
        double r1274692 = r1274685 + r1274690;
        double r1274693 = r1274691 / r1274692;
        return r1274693;
}

double f(double t) {
        double r1274694 = t;
        double r1274695 = 2.0;
        double r1274696 = r1274694 * r1274695;
        double r1274697 = 1.0;
        double r1274698 = r1274697 + r1274694;
        double r1274699 = r1274696 / r1274698;
        double r1274700 = fma(r1274699, r1274699, r1274697);
        double r1274701 = fma(r1274699, r1274699, r1274695);
        double r1274702 = r1274700 / r1274701;
        return r1274702;
}

Error

Bits error versus t

Derivation

  1. Initial program 0.1

    \[\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.1

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

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

Reproduce

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