\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{\frac{1 \cdot rand}{\sqrt{9}}}{\sqrt{a - \frac{1}{3}}}double f(double a, double rand) {
double r91702 = a;
double r91703 = 1.0;
double r91704 = 3.0;
double r91705 = r91703 / r91704;
double r91706 = r91702 - r91705;
double r91707 = 9.0;
double r91708 = r91707 * r91706;
double r91709 = sqrt(r91708);
double r91710 = r91703 / r91709;
double r91711 = rand;
double r91712 = r91710 * r91711;
double r91713 = r91703 + r91712;
double r91714 = r91706 * r91713;
return r91714;
}
double f(double a, double rand) {
double r91715 = a;
double r91716 = 1.0;
double r91717 = 3.0;
double r91718 = r91716 / r91717;
double r91719 = r91715 - r91718;
double r91720 = r91719 * r91716;
double r91721 = rand;
double r91722 = r91716 * r91721;
double r91723 = 9.0;
double r91724 = sqrt(r91723);
double r91725 = r91722 / r91724;
double r91726 = sqrt(r91719);
double r91727 = r91725 / r91726;
double r91728 = r91719 * r91727;
double r91729 = r91720 + r91728;
return r91729;
}



Bits error versus a



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