Average Error: 0.0 → 0.0
Time: 17.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{1 + \frac{t \cdot 2}{1 + t} \cdot \frac{t \cdot 2}{1 + t}}{2 + \frac{t \cdot 2}{1 + t} \cdot \frac{t \cdot 2}{1 + t}}\]
\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{t \cdot 2}{1 + t} \cdot \frac{t \cdot 2}{1 + t}}{2 + \frac{t \cdot 2}{1 + t} \cdot \frac{t \cdot 2}{1 + t}}
double f(double t) {
        double r1660842 = 1.0;
        double r1660843 = 2.0;
        double r1660844 = t;
        double r1660845 = r1660843 * r1660844;
        double r1660846 = r1660842 + r1660844;
        double r1660847 = r1660845 / r1660846;
        double r1660848 = r1660847 * r1660847;
        double r1660849 = r1660842 + r1660848;
        double r1660850 = r1660843 + r1660848;
        double r1660851 = r1660849 / r1660850;
        return r1660851;
}

double f(double t) {
        double r1660852 = 1.0;
        double r1660853 = t;
        double r1660854 = 2.0;
        double r1660855 = r1660853 * r1660854;
        double r1660856 = r1660852 + r1660853;
        double r1660857 = r1660855 / r1660856;
        double r1660858 = r1660857 * r1660857;
        double r1660859 = r1660852 + r1660858;
        double r1660860 = r1660854 + r1660858;
        double r1660861 = r1660859 / r1660860;
        return r1660861;
}

Error

Bits error versus t

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

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. Final simplification0.0

    \[\leadsto \frac{1 + \frac{t \cdot 2}{1 + t} \cdot \frac{t \cdot 2}{1 + t}}{2 + \frac{t \cdot 2}{1 + t} \cdot \frac{t \cdot 2}{1 + t}}\]

Reproduce

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