Average Error: 0.1 → 0.1
Time: 23.7s
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{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + t}, 1\right)}{\mathsf{fma}\left(\frac{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + 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{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + t}, 1\right)}{\mathsf{fma}\left(\frac{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + t}, 2\right)}
double f(double t) {
        double r1350117 = 1.0;
        double r1350118 = 2.0;
        double r1350119 = t;
        double r1350120 = r1350118 * r1350119;
        double r1350121 = r1350117 + r1350119;
        double r1350122 = r1350120 / r1350121;
        double r1350123 = r1350122 * r1350122;
        double r1350124 = r1350117 + r1350123;
        double r1350125 = r1350118 + r1350123;
        double r1350126 = r1350124 / r1350125;
        return r1350126;
}

double f(double t) {
        double r1350127 = t;
        double r1350128 = 2.0;
        double r1350129 = r1350127 * r1350128;
        double r1350130 = 1.0;
        double r1350131 = r1350130 + r1350127;
        double r1350132 = r1350129 / r1350131;
        double r1350133 = fma(r1350132, r1350132, r1350130);
        double r1350134 = fma(r1350132, r1350132, r1350128);
        double r1350135 = r1350133 / r1350134;
        return r1350135;
}

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

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

Reproduce

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