\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 + \left(\left(a - \frac{1}{3}\right) \cdot \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}\right) \cdot randdouble f(double a, double rand) {
double r130632 = a;
double r130633 = 1.0;
double r130634 = 3.0;
double r130635 = r130633 / r130634;
double r130636 = r130632 - r130635;
double r130637 = 9.0;
double r130638 = r130637 * r130636;
double r130639 = sqrt(r130638);
double r130640 = r130633 / r130639;
double r130641 = rand;
double r130642 = r130640 * r130641;
double r130643 = r130633 + r130642;
double r130644 = r130636 * r130643;
return r130644;
}
double f(double a, double rand) {
double r130645 = a;
double r130646 = 1.0;
double r130647 = 3.0;
double r130648 = r130646 / r130647;
double r130649 = r130645 - r130648;
double r130650 = r130649 * r130646;
double r130651 = 9.0;
double r130652 = r130651 * r130649;
double r130653 = sqrt(r130652);
double r130654 = r130646 / r130653;
double r130655 = r130649 * r130654;
double r130656 = rand;
double r130657 = r130655 * r130656;
double r130658 = r130650 + r130657;
return r130658;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
rmApplied distribute-lft-in0.1
rmApplied associate-*r*0.1
Final simplification0.1
herbie shell --seed 2020060 +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))))