\left(a - \frac{1.0}{3.0}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1.0}{3.0}\right)}} \cdot rand\right)(\left(\frac{1}{\frac{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}}{rand}}\right) \cdot \left(a - \frac{1.0}{3.0}\right) + \left(a - \frac{1.0}{3.0}\right))_*double f(double a, double rand) {
double r12101622 = a;
double r12101623 = 1.0;
double r12101624 = 3.0;
double r12101625 = r12101623 / r12101624;
double r12101626 = r12101622 - r12101625;
double r12101627 = 1.0;
double r12101628 = 9.0;
double r12101629 = r12101628 * r12101626;
double r12101630 = sqrt(r12101629);
double r12101631 = r12101627 / r12101630;
double r12101632 = rand;
double r12101633 = r12101631 * r12101632;
double r12101634 = r12101627 + r12101633;
double r12101635 = r12101626 * r12101634;
return r12101635;
}
double f(double a, double rand) {
double r12101636 = 1.0;
double r12101637 = a;
double r12101638 = 1.0;
double r12101639 = 3.0;
double r12101640 = r12101638 / r12101639;
double r12101641 = r12101637 - r12101640;
double r12101642 = 9.0;
double r12101643 = r12101641 * r12101642;
double r12101644 = sqrt(r12101643);
double r12101645 = rand;
double r12101646 = r12101644 / r12101645;
double r12101647 = r12101636 / r12101646;
double r12101648 = fma(r12101647, r12101641, r12101641);
return r12101648;
}



Bits error versus a



Bits error versus rand
Initial program 0.1
Simplified0.1
rmApplied *-un-lft-identity0.1
Applied associate-/l*0.1
Final simplification0.1
herbie shell --seed 2019112 +o rules:numerics
(FPCore (a rand)
:name "Octave 3.8, oct_fill_randg"
(* (- a (/ 1.0 3.0)) (+ 1 (* (/ 1 (sqrt (* 9 (- a (/ 1.0 3.0))))) rand))))