\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 + \frac{1 \cdot rand}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}\right)double f(double a, double rand) {
double r86858 = a;
double r86859 = 1.0;
double r86860 = 3.0;
double r86861 = r86859 / r86860;
double r86862 = r86858 - r86861;
double r86863 = 9.0;
double r86864 = r86863 * r86862;
double r86865 = sqrt(r86864);
double r86866 = r86859 / r86865;
double r86867 = rand;
double r86868 = r86866 * r86867;
double r86869 = r86859 + r86868;
double r86870 = r86862 * r86869;
return r86870;
}
double f(double a, double rand) {
double r86871 = a;
double r86872 = 1.0;
double r86873 = 3.0;
double r86874 = r86872 / r86873;
double r86875 = r86871 - r86874;
double r86876 = rand;
double r86877 = r86872 * r86876;
double r86878 = 9.0;
double r86879 = r86878 * r86875;
double r86880 = sqrt(r86879);
double r86881 = r86877 / r86880;
double r86882 = r86872 + r86881;
double r86883 = r86875 * r86882;
return r86883;
}



Bits error versus a



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