Average Error: 0.6 → 0.6
Time: 19.5s
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 r5938441 = 1.0;
        double r5938442 = /* ERROR: no posit support in C */;
        double r5938443 = x;
        double r5938444 = sqrt(r5938443);
        double r5938445 = r5938442 / r5938444;
        double r5938446 = r5938443 + r5938442;
        double r5938447 = sqrt(r5938446);
        double r5938448 = r5938442 / r5938447;
        double r5938449 = r5938445 - r5938448;
        return r5938449;
}

double f(double x) {
        double r5938450 = 1.0;
        double r5938451 = /* ERROR: no posit support in C */;
        double r5938452 = x;
        double r5938453 = sqrt(r5938452);
        double r5938454 = r5938451 / r5938453;
        double r5938455 = r5938452 + r5938451;
        double r5938456 = sqrt(r5938455);
        double r5938457 = r5938451 / r5938456;
        double r5938458 = r5938454 - r5938457;
        return r5938458;
}

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 +o rules:numerics
(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))))))