Average Error: 0.0 → 0.0
Time: 11.8s
Precision: 64
\[1 - \frac{1}{2 + \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right) \cdot \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right)}\]
\[1 - \frac{1}{2 + \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right) \cdot \mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{\left(1 + \frac{1}{t}\right) \cdot t}\right)}\]
1 - \frac{1}{2 + \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right) \cdot \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right)}
1 - \frac{1}{2 + \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right) \cdot \mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{\left(1 + \frac{1}{t}\right) \cdot t}\right)}
double f(double t) {
        double r56142 = 1.0;
        double r56143 = 2.0;
        double r56144 = t;
        double r56145 = r56143 / r56144;
        double r56146 = r56142 / r56144;
        double r56147 = r56142 + r56146;
        double r56148 = r56145 / r56147;
        double r56149 = r56143 - r56148;
        double r56150 = r56149 * r56149;
        double r56151 = r56143 + r56150;
        double r56152 = r56142 / r56151;
        double r56153 = r56142 - r56152;
        return r56153;
}

double f(double t) {
        double r56154 = 1.0;
        double r56155 = 2.0;
        double r56156 = t;
        double r56157 = r56155 / r56156;
        double r56158 = r56154 / r56156;
        double r56159 = r56154 + r56158;
        double r56160 = r56157 / r56159;
        double r56161 = r56155 - r56160;
        double r56162 = sqrt(r56155);
        double r56163 = -r56155;
        double r56164 = r56159 * r56156;
        double r56165 = r56163 / r56164;
        double r56166 = fma(r56162, r56162, r56165);
        double r56167 = r56161 * r56166;
        double r56168 = r56155 + r56167;
        double r56169 = r56154 / r56168;
        double r56170 = r56154 - r56169;
        return r56170;
}

Error

Bits error versus t

Derivation

  1. Initial program 0.0

    \[1 - \frac{1}{2 + \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right) \cdot \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right)}\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt0.0

    \[\leadsto 1 - \frac{1}{2 + \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right) \cdot \left(\color{blue}{\sqrt{2} \cdot \sqrt{2}} - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right)}\]
  4. Applied fma-neg0.0

    \[\leadsto 1 - \frac{1}{2 + \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right) \cdot \color{blue}{\mathsf{fma}\left(\sqrt{2}, \sqrt{2}, -\frac{\frac{2}{t}}{1 + \frac{1}{t}}\right)}}\]
  5. Simplified0.0

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

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

Reproduce

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