Average Error: 0.2 → 0.2
Time: 30.0s
Precision: 64
\[\left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right) \cdot \left(\frac{\left(1\right)}{\left(\left(\frac{\left(1\right)}{\left(\sqrt{\left(\left(9\right) \cdot \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}\right)}\right) \cdot rand\right)}\right)\]
\[\left(a - \frac{1.0}{3.0}\right) \cdot \left(1 + \frac{1}{\sqrt{\frac{9 \cdot \left(a \cdot a - \frac{1.0}{3.0} \cdot \frac{1.0}{3.0}\right)}{a + \frac{1.0}{3.0}}}} \cdot rand\right)\]
\left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right) \cdot \left(\frac{\left(1\right)}{\left(\left(\frac{\left(1\right)}{\left(\sqrt{\left(\left(9\right) \cdot \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}\right)}\right) \cdot rand\right)}\right)
\left(a - \frac{1.0}{3.0}\right) \cdot \left(1 + \frac{1}{\sqrt{\frac{9 \cdot \left(a \cdot a - \frac{1.0}{3.0} \cdot \frac{1.0}{3.0}\right)}{a + \frac{1.0}{3.0}}}} \cdot rand\right)
double f(double a, double rand) {
        double r2764844 = a;
        double r2764845 = 1.0;
        double r2764846 = /* ERROR: no posit support in C */;
        double r2764847 = 3.0;
        double r2764848 = /* ERROR: no posit support in C */;
        double r2764849 = r2764846 / r2764848;
        double r2764850 = r2764844 - r2764849;
        double r2764851 = 1.0;
        double r2764852 = /* ERROR: no posit support in C */;
        double r2764853 = 9.0;
        double r2764854 = /* ERROR: no posit support in C */;
        double r2764855 = r2764854 * r2764850;
        double r2764856 = sqrt(r2764855);
        double r2764857 = r2764852 / r2764856;
        double r2764858 = rand;
        double r2764859 = r2764857 * r2764858;
        double r2764860 = r2764852 + r2764859;
        double r2764861 = r2764850 * r2764860;
        return r2764861;
}

double f(double a, double rand) {
        double r2764862 = a;
        double r2764863 = 1.0;
        double r2764864 = 3.0;
        double r2764865 = r2764863 / r2764864;
        double r2764866 = r2764862 - r2764865;
        double r2764867 = 1.0;
        double r2764868 = 9.0;
        double r2764869 = r2764862 * r2764862;
        double r2764870 = r2764865 * r2764865;
        double r2764871 = r2764869 - r2764870;
        double r2764872 = r2764868 * r2764871;
        double r2764873 = r2764862 + r2764865;
        double r2764874 = r2764872 / r2764873;
        double r2764875 = sqrt(r2764874);
        double r2764876 = r2764867 / r2764875;
        double r2764877 = rand;
        double r2764878 = r2764876 * r2764877;
        double r2764879 = r2764867 + r2764878;
        double r2764880 = r2764866 * r2764879;
        return r2764880;
}

Error

Bits error versus a

Bits error versus rand

Derivation

  1. Initial program 0.2

    \[\left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right) \cdot \left(\frac{\left(1\right)}{\left(\left(\frac{\left(1\right)}{\left(\sqrt{\left(\left(9\right) \cdot \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}\right)}\right) \cdot rand\right)}\right)\]
  2. Using strategy rm
  3. Applied p16-flip--0.2

    \[\leadsto \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right) \cdot \left(\frac{\left(1\right)}{\left(\left(\frac{\left(1\right)}{\left(\sqrt{\left(\left(9\right) \cdot \color{blue}{\left(\frac{\left(\left(a \cdot a\right) - \left(\left(\frac{\left(1.0\right)}{\left(3.0\right)}\right) \cdot \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}{\left(\frac{a}{\left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)}\right)}\right)}\right)}\right)}\right) \cdot rand\right)}\right)\]
  4. Applied associate-*r/0.2

    \[\leadsto \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right) \cdot \left(\frac{\left(1\right)}{\left(\left(\frac{\left(1\right)}{\left(\sqrt{\color{blue}{\left(\frac{\left(\left(9\right) \cdot \left(\left(a \cdot a\right) - \left(\left(\frac{\left(1.0\right)}{\left(3.0\right)}\right) \cdot \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)\right)}{\left(\frac{a}{\left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)}\right)}\right)}}\right)}\right) \cdot rand\right)}\right)\]
  5. Final simplification0.2

    \[\leadsto \left(a - \frac{1.0}{3.0}\right) \cdot \left(1 + \frac{1}{\sqrt{\frac{9 \cdot \left(a \cdot a - \frac{1.0}{3.0} \cdot \frac{1.0}{3.0}\right)}{a + \frac{1.0}{3.0}}}} \cdot rand\right)\]

Reproduce

herbie shell --seed 2019107 +o rules:numerics
(FPCore (a rand)
  :name "Octave 3.8, oct_fill_randg"
  (*.p16 (-.p16 a (/.p16 (real->posit16 1.0) (real->posit16 3.0))) (+.p16 (real->posit16 1) (*.p16 (/.p16 (real->posit16 1) (sqrt.p16 (*.p16 (real->posit16 9) (-.p16 a (/.p16 (real->posit16 1.0) (real->posit16 3.0)))))) rand))))