\left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\right)a \cdot \mathsf{fma}\left(\frac{\frac{1}{\sqrt{9}}}{\sqrt{a - \frac{1}{3}}}, rand, 1\right) + \left(-\frac{1}{3} \cdot \mathsf{fma}\left(\frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}, rand, 1\right)\right)double f(double a, double rand) {
double r92144 = a;
double r92145 = 1.0;
double r92146 = 3.0;
double r92147 = r92145 / r92146;
double r92148 = r92144 - r92147;
double r92149 = 9.0;
double r92150 = r92149 * r92148;
double r92151 = sqrt(r92150);
double r92152 = r92145 / r92151;
double r92153 = rand;
double r92154 = r92152 * r92153;
double r92155 = r92145 + r92154;
double r92156 = r92148 * r92155;
return r92156;
}
double f(double a, double rand) {
double r92157 = a;
double r92158 = 1.0;
double r92159 = 9.0;
double r92160 = sqrt(r92159);
double r92161 = r92158 / r92160;
double r92162 = 3.0;
double r92163 = r92158 / r92162;
double r92164 = r92157 - r92163;
double r92165 = sqrt(r92164);
double r92166 = r92161 / r92165;
double r92167 = rand;
double r92168 = fma(r92166, r92167, r92158);
double r92169 = r92157 * r92168;
double r92170 = r92159 * r92164;
double r92171 = sqrt(r92170);
double r92172 = r92158 / r92171;
double r92173 = fma(r92172, r92167, r92158);
double r92174 = r92163 * r92173;
double r92175 = -r92174;
double r92176 = r92169 + r92175;
return r92176;
}



Bits error versus a



Bits error versus rand
Initial program 0.2
Simplified0.2
rmApplied sub-neg0.2
Applied distribute-lft-in0.2
Simplified0.2
Simplified0.2
rmApplied sqrt-prod0.2
Applied associate-/r*0.2
Final simplification0.2
herbie shell --seed 2019306 +o rules:numerics
(FPCore (a rand)
:name "Octave 3.8, oct_fill_randg"
:precision binary64
(* (- a (/ 1 3)) (+ 1 (* (/ 1 (sqrt (* 9 (- a (/ 1 3))))) rand))))