Average Error: 0.2 → 0.2
Time: 32.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 r3101078 = a;
        double r3101079 = 1.0;
        double r3101080 = /* ERROR: no posit support in C */;
        double r3101081 = 3.0;
        double r3101082 = /* ERROR: no posit support in C */;
        double r3101083 = r3101080 / r3101082;
        double r3101084 = r3101078 - r3101083;
        double r3101085 = 1.0;
        double r3101086 = /* ERROR: no posit support in C */;
        double r3101087 = 9.0;
        double r3101088 = /* ERROR: no posit support in C */;
        double r3101089 = r3101088 * r3101084;
        double r3101090 = sqrt(r3101089);
        double r3101091 = r3101086 / r3101090;
        double r3101092 = rand;
        double r3101093 = r3101091 * r3101092;
        double r3101094 = r3101086 + r3101093;
        double r3101095 = r3101084 * r3101094;
        return r3101095;
}

double f(double a, double rand) {
        double r3101096 = a;
        double r3101097 = 1.0;
        double r3101098 = 3.0;
        double r3101099 = r3101097 / r3101098;
        double r3101100 = r3101096 - r3101099;
        double r3101101 = 1.0;
        double r3101102 = 9.0;
        double r3101103 = r3101096 * r3101096;
        double r3101104 = r3101099 * r3101099;
        double r3101105 = r3101103 - r3101104;
        double r3101106 = r3101102 * r3101105;
        double r3101107 = r3101096 + r3101099;
        double r3101108 = r3101106 / r3101107;
        double r3101109 = sqrt(r3101108);
        double r3101110 = r3101101 / r3101109;
        double r3101111 = rand;
        double r3101112 = r3101110 * r3101111;
        double r3101113 = r3101101 + r3101112;
        double r3101114 = r3101100 * r3101113;
        return r3101114;
}

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))))