Average Error: 0.0 → 0.1
Time: 14.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{1}{\frac{\frac{\mathsf{fma}\left(\frac{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + t}, 2\right)}{\sqrt{\mathsf{fma}\left(\frac{2 \cdot t}{1 + t}, \frac{2 \cdot t}{1 + t}, 1\right)}}}{\sqrt{\mathsf{fma}\left(\frac{2 \cdot t}{1 + t}, \frac{2 \cdot t}{1 + t}, 1\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{1}{\frac{\frac{\mathsf{fma}\left(\frac{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + t}, 2\right)}{\sqrt{\mathsf{fma}\left(\frac{2 \cdot t}{1 + t}, \frac{2 \cdot t}{1 + t}, 1\right)}}}{\sqrt{\mathsf{fma}\left(\frac{2 \cdot t}{1 + t}, \frac{2 \cdot t}{1 + t}, 1\right)}}}
double f(double t) {
        double r51298 = 1.0;
        double r51299 = 2.0;
        double r51300 = t;
        double r51301 = r51299 * r51300;
        double r51302 = r51298 + r51300;
        double r51303 = r51301 / r51302;
        double r51304 = r51303 * r51303;
        double r51305 = r51298 + r51304;
        double r51306 = r51299 + r51304;
        double r51307 = r51305 / r51306;
        return r51307;
}

double f(double t) {
        double r51308 = 1.0;
        double r51309 = t;
        double r51310 = 2.0;
        double r51311 = r51309 * r51310;
        double r51312 = 1.0;
        double r51313 = r51312 + r51309;
        double r51314 = r51311 / r51313;
        double r51315 = fma(r51314, r51314, r51310);
        double r51316 = r51310 * r51309;
        double r51317 = r51316 / r51313;
        double r51318 = fma(r51317, r51317, r51312);
        double r51319 = sqrt(r51318);
        double r51320 = r51315 / r51319;
        double r51321 = r51320 / r51319;
        double r51322 = r51308 / r51321;
        return r51322;
}

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. Using strategy rm
  3. Applied clear-num0.0

    \[\leadsto \color{blue}{\frac{1}{\frac{2 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}{1 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}}}\]
  4. Simplified0.0

    \[\leadsto \frac{1}{\color{blue}{\frac{\mathsf{fma}\left(\frac{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + t}, 2\right)}{\mathsf{fma}\left(\frac{2 \cdot t}{1 + t}, \frac{2 \cdot t}{1 + t}, 1\right)}}}\]
  5. Using strategy rm
  6. Applied add-sqr-sqrt0.5

    \[\leadsto \frac{1}{\frac{\mathsf{fma}\left(\frac{t \cdot 2}{1 + t}, \frac{t \cdot 2}{1 + t}, 2\right)}{\color{blue}{\sqrt{\mathsf{fma}\left(\frac{2 \cdot t}{1 + t}, \frac{2 \cdot t}{1 + t}, 1\right)} \cdot \sqrt{\mathsf{fma}\left(\frac{2 \cdot t}{1 + t}, \frac{2 \cdot t}{1 + t}, 1\right)}}}}\]
  7. Applied associate-/r*0.1

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

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

Reproduce

herbie shell --seed 2020043 +o rules:numerics
(FPCore (t)
  :name "Kahan p13 Example 1"
  :precision binary64
  (/ (+ 1 (* (/ (* 2 t) (+ 1 t)) (/ (* 2 t) (+ 1 t)))) (+ 2 (* (/ (* 2 t) (+ 1 t)) (/ (* 2 t) (+ 1 t))))))