Average Error: 0.1 → 0.1
Time: 13.3s
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 r1309087 = 1.0;
        double r1309088 = 2.0;
        double r1309089 = t;
        double r1309090 = r1309088 * r1309089;
        double r1309091 = r1309087 + r1309089;
        double r1309092 = r1309090 / r1309091;
        double r1309093 = r1309092 * r1309092;
        double r1309094 = r1309087 + r1309093;
        double r1309095 = r1309088 + r1309093;
        double r1309096 = r1309094 / r1309095;
        return r1309096;
}

double f(double t) {
        double r1309097 = t;
        double r1309098 = 2.0;
        double r1309099 = r1309097 * r1309098;
        double r1309100 = 1.0;
        double r1309101 = r1309100 + r1309097;
        double r1309102 = r1309099 / r1309101;
        double r1309103 = fma(r1309102, r1309102, r1309100);
        double r1309104 = fma(r1309102, r1309102, r1309098);
        double r1309105 = r1309103 / r1309104;
        return r1309105;
}

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 2019152 +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))))))