double f(double a, double rand) {
double r1769263 = a;
double r1769264 = 1.0;
double r1769265 = 3.0;
double r1769266 = r1769264 / r1769265;
double r1769267 = r1769263 - r1769266;
double r1769268 = 1.0;
double r1769269 = 9.0;
double r1769270 = r1769269 * r1769267;
double r1769271 = sqrt(r1769270);
double r1769272 = r1769268 / r1769271;
double r1769273 = rand;
double r1769274 = r1769272 * r1769273;
double r1769275 = r1769268 + r1769274;
double r1769276 = r1769267 * r1769275;
return r1769276;
}
double f(double a, double rand) {
double r1769277 = a;
double r1769278 = 1.0;
double r1769279 = 3.0;
double r1769280 = r1769278 / r1769279;
double r1769281 = r1769277 - r1769280;
double r1769282 = 1.0;
double r1769283 = 9.0;
double r1769284 = r1769277 * r1769277;
double r1769285 = r1769280 * r1769280;
double r1769286 = r1769284 - r1769285;
double r1769287 = r1769283 * r1769286;
double r1769288 = r1769277 + r1769280;
double r1769289 = r1769287 / r1769288;
double r1769290 = sqrt(r1769289);
double r1769291 = r1769282 / r1769290;
double r1769292 = rand;
double r1769293 = r1769291 * r1769292;
double r1769294 = r1769282 + r1769293;
double r1769295 = r1769281 * r1769294;
return r1769295;
}
\left(a - \frac{1.0}{3.0}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1.0}{3.0}\right)}} \cdot rand\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)


Bits error versus a



Bits error versus rand
Initial program 0.2
rmApplied p16-flip--0.2
Applied associate-*r/0.2
Final simplification0.2
herbie shell --seed 2019102 +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))))