Average Error: 0.2 → 0.2
Time: 25.1s
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)\]
\[1 \cdot \left(a - \frac{1.0}{3.0}\right) + \frac{\left(\left(a + \frac{1.0}{3.0}\right) \cdot \left(a - \frac{1.0}{3.0}\right)\right) \cdot \frac{1 \cdot rand}{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}}}{a + \frac{1.0}{3.0}}\]
\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)
1 \cdot \left(a - \frac{1.0}{3.0}\right) + \frac{\left(\left(a + \frac{1.0}{3.0}\right) \cdot \left(a - \frac{1.0}{3.0}\right)\right) \cdot \frac{1 \cdot rand}{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}}}{a + \frac{1.0}{3.0}}
double f(double a, double rand) {
        double r1428464 = a;
        double r1428465 = 1.0;
        double r1428466 = /* ERROR: no posit support in C */;
        double r1428467 = 3.0;
        double r1428468 = /* ERROR: no posit support in C */;
        double r1428469 = r1428466 / r1428468;
        double r1428470 = r1428464 - r1428469;
        double r1428471 = 1.0;
        double r1428472 = /* ERROR: no posit support in C */;
        double r1428473 = 9.0;
        double r1428474 = /* ERROR: no posit support in C */;
        double r1428475 = r1428474 * r1428470;
        double r1428476 = sqrt(r1428475);
        double r1428477 = r1428472 / r1428476;
        double r1428478 = rand;
        double r1428479 = r1428477 * r1428478;
        double r1428480 = r1428472 + r1428479;
        double r1428481 = r1428470 * r1428480;
        return r1428481;
}

double f(double a, double rand) {
        double r1428482 = 1.0;
        double r1428483 = a;
        double r1428484 = 1.0;
        double r1428485 = 3.0;
        double r1428486 = r1428484 / r1428485;
        double r1428487 = r1428483 - r1428486;
        double r1428488 = r1428482 * r1428487;
        double r1428489 = r1428483 + r1428486;
        double r1428490 = r1428489 * r1428487;
        double r1428491 = rand;
        double r1428492 = r1428482 * r1428491;
        double r1428493 = 9.0;
        double r1428494 = r1428487 * r1428493;
        double r1428495 = sqrt(r1428494);
        double r1428496 = r1428492 / r1428495;
        double r1428497 = r1428490 * r1428496;
        double r1428498 = r1428497 / r1428489;
        double r1428499 = r1428488 + r1428498;
        return r1428499;
}

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 distribute-rgt-in0.2

    \[\leadsto \color{blue}{\frac{\left(\left(1\right) \cdot \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}{\left(\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) \cdot \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}}\]
  4. Using strategy rm
  5. Applied sub-neg0.2

    \[\leadsto \frac{\left(\left(1\right) \cdot \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}{\left(\left(\left(\frac{\left(1\right)}{\left(\sqrt{\left(\left(9\right) \cdot \color{blue}{\left(\frac{a}{\left(-\left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)}\right)}\right)}\right)}\right) \cdot rand\right) \cdot \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}\]
  6. Applied distribute-lft-in0.2

    \[\leadsto \frac{\left(\left(1\right) \cdot \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}{\left(\left(\left(\frac{\left(1\right)}{\left(\sqrt{\color{blue}{\left(\frac{\left(\left(9\right) \cdot a\right)}{\left(\left(9\right) \cdot \left(-\left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}\right)}}\right)}\right) \cdot rand\right) \cdot \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}\]
  7. Using strategy rm
  8. Applied p16-flip--0.2

    \[\leadsto \frac{\left(\left(1\right) \cdot \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}{\left(\left(\left(\frac{\left(1\right)}{\left(\sqrt{\left(\frac{\left(\left(9\right) \cdot a\right)}{\left(\left(9\right) \cdot \left(-\left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}\right)}\right)}\right) \cdot rand\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)}\]
  9. Applied associate-*r/0.3

    \[\leadsto \frac{\left(\left(1\right) \cdot \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}{\color{blue}{\left(\frac{\left(\left(\left(\frac{\left(1\right)}{\left(\sqrt{\left(\frac{\left(\left(9\right) \cdot a\right)}{\left(\left(9\right) \cdot \left(-\left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}\right)}\right)}\right) \cdot rand\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)}}\]
  10. Simplified0.2

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

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

Reproduce

herbie shell --seed 2019156 
(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))))