\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)rand \cdot \frac{a - \frac{1.0}{3.0}}{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}} + \left(a - \frac{1.0}{3.0}\right)double f(double a, double rand) {
double r1948130 = a;
double r1948131 = 1.0;
double r1948132 = 3.0;
double r1948133 = r1948131 / r1948132;
double r1948134 = r1948130 - r1948133;
double r1948135 = 1.0;
double r1948136 = 9.0;
double r1948137 = r1948136 * r1948134;
double r1948138 = sqrt(r1948137);
double r1948139 = r1948135 / r1948138;
double r1948140 = rand;
double r1948141 = r1948139 * r1948140;
double r1948142 = r1948135 + r1948141;
double r1948143 = r1948134 * r1948142;
return r1948143;
}
double f(double a, double rand) {
double r1948144 = rand;
double r1948145 = a;
double r1948146 = 1.0;
double r1948147 = 3.0;
double r1948148 = r1948146 / r1948147;
double r1948149 = r1948145 - r1948148;
double r1948150 = 9.0;
double r1948151 = r1948149 * r1948150;
double r1948152 = sqrt(r1948151);
double r1948153 = r1948149 / r1948152;
double r1948154 = r1948144 * r1948153;
double r1948155 = r1948154 + r1948149;
return r1948155;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
Simplified0.1
rmApplied clear-num0.1
rmApplied fma-udef0.1
Simplified0.1
rmApplied associate-/r/0.1
Final simplification0.1
herbie shell --seed 2019142 +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))))