\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(\frac{\frac{1}{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}}}{\frac{1}{rand}}, a - \frac{1.0}{3.0}, a - \frac{1.0}{3.0}\right)double f(double a, double rand) {
double r3665488 = a;
double r3665489 = 1.0;
double r3665490 = 3.0;
double r3665491 = r3665489 / r3665490;
double r3665492 = r3665488 - r3665491;
double r3665493 = 1.0;
double r3665494 = 9.0;
double r3665495 = r3665494 * r3665492;
double r3665496 = sqrt(r3665495);
double r3665497 = r3665493 / r3665496;
double r3665498 = rand;
double r3665499 = r3665497 * r3665498;
double r3665500 = r3665493 + r3665499;
double r3665501 = r3665492 * r3665500;
return r3665501;
}
double f(double a, double rand) {
double r3665502 = 1.0;
double r3665503 = a;
double r3665504 = 1.0;
double r3665505 = 3.0;
double r3665506 = r3665504 / r3665505;
double r3665507 = r3665503 - r3665506;
double r3665508 = 9.0;
double r3665509 = r3665507 * r3665508;
double r3665510 = sqrt(r3665509);
double r3665511 = r3665502 / r3665510;
double r3665512 = rand;
double r3665513 = r3665502 / r3665512;
double r3665514 = r3665511 / r3665513;
double r3665515 = fma(r3665514, r3665507, r3665507);
return r3665515;
}



Bits error versus a



Bits error versus rand
Initial program 0.1
Simplified0.1
rmApplied *-un-lft-identity0.1
Applied associate-/l*0.1
rmApplied div-inv0.2
Applied associate-/r*0.2
Final simplification0.2
herbie shell --seed 2019138 +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))))