Average Error: 0.0 → 0.0
Time: 7.6s
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(\log \left(e^{\frac{t \cdot 2}{1 + t}}\right)\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(\log \left(e^{\frac{t \cdot 2}{1 + t}}\right)\right), \left(\frac{t \cdot 2}{1 + t}\right), 2\right)}
double f(double t) {
        double r833474 = 1.0;
        double r833475 = 2.0;
        double r833476 = t;
        double r833477 = r833475 * r833476;
        double r833478 = r833474 + r833476;
        double r833479 = r833477 / r833478;
        double r833480 = r833479 * r833479;
        double r833481 = r833474 + r833480;
        double r833482 = r833475 + r833480;
        double r833483 = r833481 / r833482;
        return r833483;
}

double f(double t) {
        double r833484 = t;
        double r833485 = 2.0;
        double r833486 = r833484 * r833485;
        double r833487 = 1.0;
        double r833488 = r833487 + r833484;
        double r833489 = r833486 / r833488;
        double r833490 = fma(r833489, r833489, r833487);
        double r833491 = exp(r833489);
        double r833492 = log(r833491);
        double r833493 = fma(r833492, r833489, r833485);
        double r833494 = r833490 / r833493;
        return r833494;
}

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. Using strategy rm
  4. Applied add-log-exp0.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(\color{blue}{\left(\log \left(e^{\frac{t \cdot 2}{1 + t}}\right)\right)}, \left(\frac{t \cdot 2}{1 + t}\right), 2\right)}\]
  5. 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(\log \left(e^{\frac{t \cdot 2}{1 + t}}\right)\right), \left(\frac{t \cdot 2}{1 + t}\right), 2\right)}\]

Reproduce

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