\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 \left(1 + 1 \cdot \frac{\frac{rand}{\sqrt{9}}}{\sqrt{a - \frac{1}{3}}}\right)double f(double a, double rand) {
double r72769 = a;
double r72770 = 1.0;
double r72771 = 3.0;
double r72772 = r72770 / r72771;
double r72773 = r72769 - r72772;
double r72774 = 9.0;
double r72775 = r72774 * r72773;
double r72776 = sqrt(r72775);
double r72777 = r72770 / r72776;
double r72778 = rand;
double r72779 = r72777 * r72778;
double r72780 = r72770 + r72779;
double r72781 = r72773 * r72780;
return r72781;
}
double f(double a, double rand) {
double r72782 = a;
double r72783 = 1.0;
double r72784 = 3.0;
double r72785 = r72783 / r72784;
double r72786 = r72782 - r72785;
double r72787 = rand;
double r72788 = 9.0;
double r72789 = sqrt(r72788);
double r72790 = r72787 / r72789;
double r72791 = sqrt(r72786);
double r72792 = r72790 / r72791;
double r72793 = r72783 * r72792;
double r72794 = r72783 + r72793;
double r72795 = r72786 * r72794;
return r72795;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
rmApplied div-inv0.1
Applied associate-*l*0.1
Simplified0.1
rmApplied sqrt-prod0.1
Applied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2019304 +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))))