Average Error: 0.2 → 0.2
Time: 8.5s
Precision: 64
\[\frac{x}{1 + \sqrt{x + 1}}\]
\[\frac{x}{\mathsf{fma}\left(1, 1, \sqrt{x + 1}\right)}\]
\frac{x}{1 + \sqrt{x + 1}}
\frac{x}{\mathsf{fma}\left(1, 1, \sqrt{x + 1}\right)}
double f(double x) {
        double r135543 = x;
        double r135544 = 1.0;
        double r135545 = r135543 + r135544;
        double r135546 = sqrt(r135545);
        double r135547 = r135544 + r135546;
        double r135548 = r135543 / r135547;
        return r135548;
}

double f(double x) {
        double r135549 = x;
        double r135550 = 1.0;
        double r135551 = 1.0;
        double r135552 = r135549 + r135551;
        double r135553 = sqrt(r135552);
        double r135554 = fma(r135550, r135551, r135553);
        double r135555 = r135549 / r135554;
        return r135555;
}

Error

Bits error versus x

Derivation

  1. Initial program 0.2

    \[\frac{x}{1 + \sqrt{x + 1}}\]
  2. Using strategy rm
  3. Applied *-un-lft-identity0.2

    \[\leadsto \frac{x}{\color{blue}{1 \cdot 1} + \sqrt{x + 1}}\]
  4. Applied fma-def0.2

    \[\leadsto \frac{x}{\color{blue}{\mathsf{fma}\left(1, 1, \sqrt{x + 1}\right)}}\]
  5. Final simplification0.2

    \[\leadsto \frac{x}{\mathsf{fma}\left(1, 1, \sqrt{x + 1}\right)}\]

Reproduce

herbie shell --seed 2020047 +o rules:numerics
(FPCore (x)
  :name "Numeric.Log:$clog1p from log-domain-0.10.2.1, B"
  :precision binary64
  (/ x (+ 1 (sqrt (+ x 1)))))