\left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\right)\mathsf{fma}\left(\frac{rand}{\sqrt{\left(a - \frac{1}{3}\right) \cdot 9}}, 1 \cdot \left(a - \frac{1}{3}\right), 1 \cdot \left(a - \frac{1}{3}\right)\right)double f(double a, double rand) {
double r2979768 = a;
double r2979769 = 1.0;
double r2979770 = 3.0;
double r2979771 = r2979769 / r2979770;
double r2979772 = r2979768 - r2979771;
double r2979773 = 9.0;
double r2979774 = r2979773 * r2979772;
double r2979775 = sqrt(r2979774);
double r2979776 = r2979769 / r2979775;
double r2979777 = rand;
double r2979778 = r2979776 * r2979777;
double r2979779 = r2979769 + r2979778;
double r2979780 = r2979772 * r2979779;
return r2979780;
}
double f(double a, double rand) {
double r2979781 = rand;
double r2979782 = a;
double r2979783 = 1.0;
double r2979784 = 3.0;
double r2979785 = r2979783 / r2979784;
double r2979786 = r2979782 - r2979785;
double r2979787 = 9.0;
double r2979788 = r2979786 * r2979787;
double r2979789 = sqrt(r2979788);
double r2979790 = r2979781 / r2979789;
double r2979791 = r2979783 * r2979786;
double r2979792 = fma(r2979790, r2979791, r2979791);
return r2979792;
}



Bits error versus a



Bits error versus rand
Initial program 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019172 +o rules:numerics
(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))))