\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(a - \frac{1}{3}\right) \cdot \frac{1 \cdot rand}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}double f(double a, double rand) {
double r140977 = a;
double r140978 = 1.0;
double r140979 = 3.0;
double r140980 = r140978 / r140979;
double r140981 = r140977 - r140980;
double r140982 = 9.0;
double r140983 = r140982 * r140981;
double r140984 = sqrt(r140983);
double r140985 = r140978 / r140984;
double r140986 = rand;
double r140987 = r140985 * r140986;
double r140988 = r140978 + r140987;
double r140989 = r140981 * r140988;
return r140989;
}
double f(double a, double rand) {
double r140990 = a;
double r140991 = 1.0;
double r140992 = 3.0;
double r140993 = r140991 / r140992;
double r140994 = r140990 - r140993;
double r140995 = r140994 * r140991;
double r140996 = rand;
double r140997 = r140991 * r140996;
double r140998 = 9.0;
double r140999 = r140998 * r140994;
double r141000 = sqrt(r140999);
double r141001 = r140997 / r141000;
double r141002 = r140994 * r141001;
double r141003 = r140995 + r141002;
return r141003;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
rmApplied distribute-lft-in0.1
rmApplied associate-*l/0.1
Final simplification0.1
herbie shell --seed 2020056 +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))))