\left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\right)\left(a - \frac{1}{3}\right) \cdot 1 + \left(\left(a - \frac{1}{3}\right) \cdot \frac{\frac{1}{\sqrt{9}}}{\sqrt{a - \frac{1}{3}}}\right) \cdot randdouble f(double a, double rand) {
double r310 = a;
double r311 = 1.0;
double r312 = 3.0;
double r313 = r311 / r312;
double r314 = r310 - r313;
double r315 = 9.0;
double r316 = r315 * r314;
double r317 = sqrt(r316);
double r318 = r311 / r317;
double r319 = rand;
double r320 = r318 * r319;
double r321 = r311 + r320;
double r322 = r314 * r321;
return r322;
}
double f(double a, double rand) {
double r323 = a;
double r324 = 1.0;
double r325 = 3.0;
double r326 = r324 / r325;
double r327 = r323 - r326;
double r328 = r327 * r324;
double r329 = 9.0;
double r330 = sqrt(r329);
double r331 = r324 / r330;
double r332 = sqrt(r327);
double r333 = r331 / r332;
double r334 = r327 * r333;
double r335 = rand;
double r336 = r334 * r335;
double r337 = r328 + r336;
return r337;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
rmApplied distribute-lft-in0.1
rmApplied associate-*r*0.1
rmApplied sqrt-prod0.1
Applied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2020025 +o rules:numerics
(FPCore (a rand)
:name "Octave 3.8, oct_fill_randg"
:precision binary64
(* (- a (/ 1 3)) (+ 1 (* (/ 1 (sqrt (* 9 (- a (/ 1 3))))) rand))))