Average Error: 0.6 → 0.6
Time: 19.7s
Precision: 64
\[\left(\frac{\left(1\right)}{\left(\sqrt{x}\right)}\right) - \left(\frac{\left(1\right)}{\left(\sqrt{\left(\frac{x}{\left(1\right)}\right)}\right)}\right)\]
\[\left(\frac{\left(1\right)}{\left(\sqrt{x}\right)}\right) - \left(\frac{\left(1\right)}{\left(\sqrt{\left(\frac{x}{\left(1\right)}\right)}\right)}\right)\]
\left(\frac{\left(1\right)}{\left(\sqrt{x}\right)}\right) - \left(\frac{\left(1\right)}{\left(\sqrt{\left(\frac{x}{\left(1\right)}\right)}\right)}\right)
\left(\frac{\left(1\right)}{\left(\sqrt{x}\right)}\right) - \left(\frac{\left(1\right)}{\left(\sqrt{\left(\frac{x}{\left(1\right)}\right)}\right)}\right)
double f(double x) {
        double r4446298 = 1.0;
        double r4446299 = /* ERROR: no posit support in C */;
        double r4446300 = x;
        double r4446301 = sqrt(r4446300);
        double r4446302 = r4446299 / r4446301;
        double r4446303 = r4446300 + r4446299;
        double r4446304 = sqrt(r4446303);
        double r4446305 = r4446299 / r4446304;
        double r4446306 = r4446302 - r4446305;
        return r4446306;
}

double f(double x) {
        double r4446307 = 1.0;
        double r4446308 = /* ERROR: no posit support in C */;
        double r4446309 = x;
        double r4446310 = sqrt(r4446309);
        double r4446311 = r4446308 / r4446310;
        double r4446312 = r4446309 + r4446308;
        double r4446313 = sqrt(r4446312);
        double r4446314 = r4446308 / r4446313;
        double r4446315 = r4446311 - r4446314;
        return r4446315;
}

Error

Bits error versus x

Derivation

  1. Initial program 0.6

    \[\left(\frac{\left(1\right)}{\left(\sqrt{x}\right)}\right) - \left(\frac{\left(1\right)}{\left(\sqrt{\left(\frac{x}{\left(1\right)}\right)}\right)}\right)\]
  2. Final simplification0.6

    \[\leadsto \left(\frac{\left(1\right)}{\left(\sqrt{x}\right)}\right) - \left(\frac{\left(1\right)}{\left(\sqrt{\left(\frac{x}{\left(1\right)}\right)}\right)}\right)\]

Reproduce

herbie shell --seed 2019168 
(FPCore (x)
  :name "2isqrt (example 3.6)"
  (-.p16 (/.p16 (real->posit16 1) (sqrt.p16 x)) (/.p16 (real->posit16 1) (sqrt.p16 (+.p16 x (real->posit16 1))))))