Average Error: 0.2 → 0.2
Time: 26.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 r1087497 = a;
        double r1087498 = 1.0;
        double r1087499 = /* ERROR: no posit support in C */;
        double r1087500 = 3.0;
        double r1087501 = /* ERROR: no posit support in C */;
        double r1087502 = r1087499 / r1087501;
        double r1087503 = r1087497 - r1087502;
        double r1087504 = 1.0;
        double r1087505 = /* ERROR: no posit support in C */;
        double r1087506 = 9.0;
        double r1087507 = /* ERROR: no posit support in C */;
        double r1087508 = r1087507 * r1087503;
        double r1087509 = sqrt(r1087508);
        double r1087510 = r1087505 / r1087509;
        double r1087511 = rand;
        double r1087512 = r1087510 * r1087511;
        double r1087513 = r1087505 + r1087512;
        double r1087514 = r1087503 * r1087513;
        return r1087514;
}

double f(double a, double rand) {
        double r1087515 = 1.0;
        double r1087516 = a;
        double r1087517 = 1.0;
        double r1087518 = 3.0;
        double r1087519 = r1087517 / r1087518;
        double r1087520 = r1087516 - r1087519;
        double r1087521 = r1087515 * r1087520;
        double r1087522 = r1087516 + r1087519;
        double r1087523 = r1087522 * r1087520;
        double r1087524 = rand;
        double r1087525 = r1087515 * r1087524;
        double r1087526 = 9.0;
        double r1087527 = r1087520 * r1087526;
        double r1087528 = sqrt(r1087527);
        double r1087529 = r1087525 / r1087528;
        double r1087530 = r1087523 * r1087529;
        double r1087531 = r1087530 / r1087522;
        double r1087532 = r1087521 + r1087531;
        return r1087532;
}

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