\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}{\sqrt{9}} \cdot \frac{rand}{\sqrt{a - \frac{1}{3}}}\right)double f(double a, double rand) {
double r73848 = a;
double r73849 = 1.0;
double r73850 = 3.0;
double r73851 = r73849 / r73850;
double r73852 = r73848 - r73851;
double r73853 = 9.0;
double r73854 = r73853 * r73852;
double r73855 = sqrt(r73854);
double r73856 = r73849 / r73855;
double r73857 = rand;
double r73858 = r73856 * r73857;
double r73859 = r73849 + r73858;
double r73860 = r73852 * r73859;
return r73860;
}
double f(double a, double rand) {
double r73861 = a;
double r73862 = 1.0;
double r73863 = 3.0;
double r73864 = r73862 / r73863;
double r73865 = r73861 - r73864;
double r73866 = 9.0;
double r73867 = sqrt(r73866);
double r73868 = r73862 / r73867;
double r73869 = rand;
double r73870 = sqrt(r73865);
double r73871 = r73869 / r73870;
double r73872 = r73868 * r73871;
double r73873 = r73862 + r73872;
double r73874 = r73865 * r73873;
return r73874;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
rmApplied associate-*l/0.1
rmApplied sqrt-prod0.1
Applied times-frac0.2
Final simplification0.2
herbie shell --seed 2020064 +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))))