\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)\mathsf{fma}\left(\left(\frac{\frac{rand}{3}}{\sqrt{a - \frac{1.0}{3.0}}}\right), \left(a - \frac{1.0}{3.0}\right), \left(a - \frac{1.0}{3.0}\right)\right)double f(double a, double rand) {
double r2499311 = a;
double r2499312 = 1.0;
double r2499313 = 3.0;
double r2499314 = r2499312 / r2499313;
double r2499315 = r2499311 - r2499314;
double r2499316 = 1.0;
double r2499317 = 9.0;
double r2499318 = r2499317 * r2499315;
double r2499319 = sqrt(r2499318);
double r2499320 = r2499316 / r2499319;
double r2499321 = rand;
double r2499322 = r2499320 * r2499321;
double r2499323 = r2499316 + r2499322;
double r2499324 = r2499315 * r2499323;
return r2499324;
}
double f(double a, double rand) {
double r2499325 = rand;
double r2499326 = 3.0;
double r2499327 = r2499325 / r2499326;
double r2499328 = a;
double r2499329 = 1.0;
double r2499330 = 3.0;
double r2499331 = r2499329 / r2499330;
double r2499332 = r2499328 - r2499331;
double r2499333 = sqrt(r2499332);
double r2499334 = r2499327 / r2499333;
double r2499335 = fma(r2499334, r2499332, r2499332);
return r2499335;
}



Bits error versus a



Bits error versus rand
Initial program 0.1
Simplified0.1
rmApplied sqrt-prod0.1
Applied associate-/r*0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019130 +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))))