\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;
}



Bits error versus a



Bits error versus rand
Initial program 0.2
rmApplied distribute-rgt-in0.2
rmApplied sub-neg0.2
Applied distribute-lft-in0.2
rmApplied p16-flip--0.2
Applied associate-*r/0.3
Simplified0.2
Final simplification0.2
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))))