\left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\right)1 \cdot \left(a - \frac{1}{3}\right) + \left(a - \frac{1}{3}\right) \cdot \left(1 \cdot \frac{rand}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}\right)double f(double a, double rand) {
double r71231 = a;
double r71232 = 1.0;
double r71233 = 3.0;
double r71234 = r71232 / r71233;
double r71235 = r71231 - r71234;
double r71236 = 9.0;
double r71237 = r71236 * r71235;
double r71238 = sqrt(r71237);
double r71239 = r71232 / r71238;
double r71240 = rand;
double r71241 = r71239 * r71240;
double r71242 = r71232 + r71241;
double r71243 = r71235 * r71242;
return r71243;
}
double f(double a, double rand) {
double r71244 = 1.0;
double r71245 = a;
double r71246 = 3.0;
double r71247 = r71244 / r71246;
double r71248 = r71245 - r71247;
double r71249 = r71244 * r71248;
double r71250 = rand;
double r71251 = 9.0;
double r71252 = r71251 * r71248;
double r71253 = sqrt(r71252);
double r71254 = r71250 / r71253;
double r71255 = r71244 * r71254;
double r71256 = r71248 * r71255;
double r71257 = r71249 + r71256;
return r71257;
}



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 distribute-lft-in0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019303
(FPCore (a rand)
:name "Octave 3.8, oct_fill_randg"
:precision binary64
(* (- a (/ 1 3)) (+ 1 (* (/ 1 (sqrt (* 9 (- a (/ 1 3))))) rand))))