\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{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}\right) \cdot randdouble f(double a, double rand) {
double r133740 = a;
double r133741 = 1.0;
double r133742 = 3.0;
double r133743 = r133741 / r133742;
double r133744 = r133740 - r133743;
double r133745 = 9.0;
double r133746 = r133745 * r133744;
double r133747 = sqrt(r133746);
double r133748 = r133741 / r133747;
double r133749 = rand;
double r133750 = r133748 * r133749;
double r133751 = r133741 + r133750;
double r133752 = r133744 * r133751;
return r133752;
}
double f(double a, double rand) {
double r133753 = a;
double r133754 = 1.0;
double r133755 = 3.0;
double r133756 = r133754 / r133755;
double r133757 = r133753 - r133756;
double r133758 = r133757 * r133754;
double r133759 = 9.0;
double r133760 = r133759 * r133757;
double r133761 = sqrt(r133760);
double r133762 = r133754 / r133761;
double r133763 = r133757 * r133762;
double r133764 = rand;
double r133765 = r133763 * r133764;
double r133766 = r133758 + r133765;
return r133766;
}



Bits error versus a



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