Average Error: 0.2 → 0.2
Time: 6.2s
Precision: 64
\[\frac{x}{1 + \sqrt{x + 1}}\]
\[\frac{x}{\mathsf{fma}\left(\sqrt{1}, \sqrt{1}, \sqrt{x + 1}\right)}\]
\frac{x}{1 + \sqrt{x + 1}}
\frac{x}{\mathsf{fma}\left(\sqrt{1}, \sqrt{1}, \sqrt{x + 1}\right)}
double f(double x) {
        double r118291 = x;
        double r118292 = 1.0;
        double r118293 = r118291 + r118292;
        double r118294 = sqrt(r118293);
        double r118295 = r118292 + r118294;
        double r118296 = r118291 / r118295;
        return r118296;
}

double f(double x) {
        double r118297 = x;
        double r118298 = 1.0;
        double r118299 = sqrt(r118298);
        double r118300 = r118297 + r118298;
        double r118301 = sqrt(r118300);
        double r118302 = fma(r118299, r118299, r118301);
        double r118303 = r118297 / r118302;
        return r118303;
}

Error

Bits error versus x

Derivation

  1. Initial program 0.2

    \[\frac{x}{1 + \sqrt{x + 1}}\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt0.2

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

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

    \[\leadsto \frac{x}{\mathsf{fma}\left(\sqrt{1}, \sqrt{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)))))