Average Error: 0.1 → 0.1
Time: 13.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}}\]
\[\log \left(e^{\frac{\mathsf{fma}\left(\frac{2 \cdot t}{1 + t}, \frac{2 \cdot t}{1 + t}, 1\right)}{\mathsf{fma}\left(\frac{2 \cdot t}{1 + t}, \frac{2 \cdot t}{1 + t}, 2\right)}}\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}}
\log \left(e^{\frac{\mathsf{fma}\left(\frac{2 \cdot t}{1 + t}, \frac{2 \cdot t}{1 + t}, 1\right)}{\mathsf{fma}\left(\frac{2 \cdot t}{1 + t}, \frac{2 \cdot t}{1 + t}, 2\right)}}\right)
double f(double t) {
        double r35697 = 1.0;
        double r35698 = 2.0;
        double r35699 = t;
        double r35700 = r35698 * r35699;
        double r35701 = r35697 + r35699;
        double r35702 = r35700 / r35701;
        double r35703 = r35702 * r35702;
        double r35704 = r35697 + r35703;
        double r35705 = r35698 + r35703;
        double r35706 = r35704 / r35705;
        return r35706;
}

double f(double t) {
        double r35707 = 2.0;
        double r35708 = t;
        double r35709 = r35707 * r35708;
        double r35710 = 1.0;
        double r35711 = r35710 + r35708;
        double r35712 = r35709 / r35711;
        double r35713 = fma(r35712, r35712, r35710);
        double r35714 = fma(r35712, r35712, r35707);
        double r35715 = r35713 / r35714;
        double r35716 = exp(r35715);
        double r35717 = log(r35716);
        return r35717;
}

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

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

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

Reproduce

herbie shell --seed 2019199 +o rules:numerics
(FPCore (t)
  :name "Kahan p13 Example 1"
  (/ (+ 1.0 (* (/ (* 2.0 t) (+ 1.0 t)) (/ (* 2.0 t) (+ 1.0 t)))) (+ 2.0 (* (/ (* 2.0 t) (+ 1.0 t)) (/ (* 2.0 t) (+ 1.0 t))))))