Average Error: 0.0 → 0.1
Time: 3.7s
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{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}{\frac{\mathsf{fma}\left({\left(\frac{2 \cdot t}{1 + t}\right)}^{6}, 1, {2}^{3}\right)}{\mathsf{fma}\left(\frac{2 \cdot t}{1 + t}, {\left(\frac{2 \cdot t}{1 + t}\right)}^{3} - \frac{\left(2 \cdot t\right) \cdot 2}{1 + t}, 2 \cdot 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{1 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}{\frac{\mathsf{fma}\left({\left(\frac{2 \cdot t}{1 + t}\right)}^{6}, 1, {2}^{3}\right)}{\mathsf{fma}\left(\frac{2 \cdot t}{1 + t}, {\left(\frac{2 \cdot t}{1 + t}\right)}^{3} - \frac{\left(2 \cdot t\right) \cdot 2}{1 + t}, 2 \cdot 2\right)}}
double f(double t) {
        double r69405 = 1.0;
        double r69406 = 2.0;
        double r69407 = t;
        double r69408 = r69406 * r69407;
        double r69409 = r69405 + r69407;
        double r69410 = r69408 / r69409;
        double r69411 = r69410 * r69410;
        double r69412 = r69405 + r69411;
        double r69413 = r69406 + r69411;
        double r69414 = r69412 / r69413;
        return r69414;
}

double f(double t) {
        double r69415 = 1.0;
        double r69416 = 2.0;
        double r69417 = t;
        double r69418 = r69416 * r69417;
        double r69419 = r69415 + r69417;
        double r69420 = r69418 / r69419;
        double r69421 = r69420 * r69420;
        double r69422 = r69415 + r69421;
        double r69423 = 6.0;
        double r69424 = pow(r69420, r69423);
        double r69425 = 1.0;
        double r69426 = 3.0;
        double r69427 = pow(r69416, r69426);
        double r69428 = fma(r69424, r69425, r69427);
        double r69429 = pow(r69420, r69426);
        double r69430 = r69418 * r69416;
        double r69431 = r69430 / r69419;
        double r69432 = r69429 - r69431;
        double r69433 = r69416 * r69416;
        double r69434 = fma(r69420, r69432, r69433);
        double r69435 = r69428 / r69434;
        double r69436 = r69422 / r69435;
        return r69436;
}

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. Using strategy rm
  3. Applied flip3-+0.0

    \[\leadsto \frac{1 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}{\color{blue}{\frac{{2}^{3} + {\left(\frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}\right)}^{3}}{2 \cdot 2 + \left(\left(\frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}\right) \cdot \left(\frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}\right) - 2 \cdot \left(\frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}\right)\right)}}}\]
  4. Simplified0.0

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

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

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

Reproduce

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