\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 1 + \frac{a - \frac{1}{3}}{\frac{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}{1 \cdot rand}}double f(double a, double rand) {
double r66473 = a;
double r66474 = 1.0;
double r66475 = 3.0;
double r66476 = r66474 / r66475;
double r66477 = r66473 - r66476;
double r66478 = 9.0;
double r66479 = r66478 * r66477;
double r66480 = sqrt(r66479);
double r66481 = r66474 / r66480;
double r66482 = rand;
double r66483 = r66481 * r66482;
double r66484 = r66474 + r66483;
double r66485 = r66477 * r66484;
return r66485;
}
double f(double a, double rand) {
double r66486 = a;
double r66487 = 1.0;
double r66488 = 3.0;
double r66489 = r66487 / r66488;
double r66490 = r66486 - r66489;
double r66491 = r66490 * r66487;
double r66492 = 9.0;
double r66493 = r66492 * r66490;
double r66494 = sqrt(r66493);
double r66495 = rand;
double r66496 = r66487 * r66495;
double r66497 = r66494 / r66496;
double r66498 = r66490 / r66497;
double r66499 = r66491 + r66498;
return r66499;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
rmApplied associate-*l/0.1
rmApplied distribute-lft-in0.1
rmApplied clear-num0.1
rmApplied *-un-lft-identity0.1
Applied associate-*l*0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019304
(FPCore (a rand)
:name "Octave 3.8, oct_fill_randg"
:precision binary64
(* (- a (/ 1 3)) (+ 1 (* (/ 1 (sqrt (* 9 (- a (/ 1 3))))) rand))))