\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(\frac{\sqrt{1}}{\frac{\sqrt{\left(a - \frac{1}{3}\right) \cdot 9}}{\sqrt{1} \cdot rand}} + 1\right)double f(double a, double rand) {
double r84002 = a;
double r84003 = 1.0;
double r84004 = 3.0;
double r84005 = r84003 / r84004;
double r84006 = r84002 - r84005;
double r84007 = 9.0;
double r84008 = r84007 * r84006;
double r84009 = sqrt(r84008);
double r84010 = r84003 / r84009;
double r84011 = rand;
double r84012 = r84010 * r84011;
double r84013 = r84003 + r84012;
double r84014 = r84006 * r84013;
return r84014;
}
double f(double a, double rand) {
double r84015 = a;
double r84016 = 1.0;
double r84017 = 3.0;
double r84018 = r84016 / r84017;
double r84019 = r84015 - r84018;
double r84020 = sqrt(r84016);
double r84021 = 9.0;
double r84022 = r84019 * r84021;
double r84023 = sqrt(r84022);
double r84024 = rand;
double r84025 = r84020 * r84024;
double r84026 = r84023 / r84025;
double r84027 = r84020 / r84026;
double r84028 = r84027 + r84016;
double r84029 = r84019 * r84028;
return r84029;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
Simplified0.1
rmApplied add-sqr-sqrt0.1
Applied associate-/l*0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019194
(FPCore (a rand)
:name "Octave 3.8, oct_fill_randg"
(* (- a (/ 1.0 3.0)) (+ 1.0 (* (/ 1.0 (sqrt (* 9.0 (- a (/ 1.0 3.0))))) rand))))