Average Error: 0.0 → 0.0
Time: 5.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(\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 r1129067 = 1.0;
        double r1129068 = 2.0;
        double r1129069 = t;
        double r1129070 = r1129068 * r1129069;
        double r1129071 = r1129067 + r1129069;
        double r1129072 = r1129070 / r1129071;
        double r1129073 = r1129072 * r1129072;
        double r1129074 = r1129067 + r1129073;
        double r1129075 = r1129068 + r1129073;
        double r1129076 = r1129074 / r1129075;
        return r1129076;
}

double f(double t) {
        double r1129077 = t;
        double r1129078 = 2.0;
        double r1129079 = r1129077 * r1129078;
        double r1129080 = 1.0;
        double r1129081 = r1129080 + r1129077;
        double r1129082 = r1129079 / r1129081;
        double r1129083 = fma(r1129082, r1129082, r1129080);
        double r1129084 = fma(r1129082, r1129082, r1129078);
        double r1129085 = r1129083 / r1129084;
        return r1129085;
}

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(\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.0

    \[\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 2019130 +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))))))