Average Error: 0.0 → 0.0
Time: 24.0s
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{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)}\]
\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{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)}
double f(double t) {
        double r50922 = 1.0;
        double r50923 = 2.0;
        double r50924 = t;
        double r50925 = r50923 * r50924;
        double r50926 = r50922 + r50924;
        double r50927 = r50925 / r50926;
        double r50928 = r50927 * r50927;
        double r50929 = r50922 + r50928;
        double r50930 = r50923 + r50928;
        double r50931 = r50929 / r50930;
        return r50931;
}

double f(double t) {
        double r50932 = 2.0;
        double r50933 = t;
        double r50934 = r50932 * r50933;
        double r50935 = 1.0;
        double r50936 = r50935 + r50933;
        double r50937 = r50934 / r50936;
        double r50938 = fma(r50937, r50937, r50935);
        double r50939 = fma(r50937, r50937, r50932);
        double r50940 = r50938 / r50939;
        return r50940;
}

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(\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 *-un-lft-identity0.0

    \[\leadsto \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}, \color{blue}{1 \cdot \frac{2 \cdot t}{1 + t}}, 2\right)}\]
  5. Final simplification0.0

    \[\leadsto \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)}\]

Reproduce

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