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



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