\left(a - \frac{1.0}{3.0}\right) \cdot \left(1.0 + \frac{1.0}{\sqrt{9.0 \cdot \left(a - \frac{1.0}{3.0}\right)}} \cdot rand\right)\left(a - \frac{1.0}{3.0}\right) \cdot \left(\frac{\frac{1.0}{\sqrt{9.0}} \cdot rand}{\sqrt{a - \frac{1.0}{3.0}}} + 1.0\right)double f(double a, double rand) {
double r3234050 = a;
double r3234051 = 1.0;
double r3234052 = 3.0;
double r3234053 = r3234051 / r3234052;
double r3234054 = r3234050 - r3234053;
double r3234055 = 9.0;
double r3234056 = r3234055 * r3234054;
double r3234057 = sqrt(r3234056);
double r3234058 = r3234051 / r3234057;
double r3234059 = rand;
double r3234060 = r3234058 * r3234059;
double r3234061 = r3234051 + r3234060;
double r3234062 = r3234054 * r3234061;
return r3234062;
}
double f(double a, double rand) {
double r3234063 = a;
double r3234064 = 1.0;
double r3234065 = 3.0;
double r3234066 = r3234064 / r3234065;
double r3234067 = r3234063 - r3234066;
double r3234068 = 9.0;
double r3234069 = sqrt(r3234068);
double r3234070 = r3234064 / r3234069;
double r3234071 = rand;
double r3234072 = r3234070 * r3234071;
double r3234073 = sqrt(r3234067);
double r3234074 = r3234072 / r3234073;
double r3234075 = r3234074 + r3234064;
double r3234076 = r3234067 * r3234075;
return r3234076;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
rmApplied sqrt-prod0.2
Applied *-un-lft-identity0.2
Applied times-frac0.2
rmApplied *-un-lft-identity0.2
Applied associate-*l*0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019165
(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))))