\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)(\left(\frac{rand}{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}}\right) \cdot \left(a - \frac{1.0}{3.0}\right) + \left(a - \frac{1.0}{3.0}\right))_*double f(double a, double rand) {
double r5580902 = a;
double r5580903 = 1.0;
double r5580904 = 3.0;
double r5580905 = r5580903 / r5580904;
double r5580906 = r5580902 - r5580905;
double r5580907 = 1.0;
double r5580908 = 9.0;
double r5580909 = r5580908 * r5580906;
double r5580910 = sqrt(r5580909);
double r5580911 = r5580907 / r5580910;
double r5580912 = rand;
double r5580913 = r5580911 * r5580912;
double r5580914 = r5580907 + r5580913;
double r5580915 = r5580906 * r5580914;
return r5580915;
}
double f(double a, double rand) {
double r5580916 = rand;
double r5580917 = a;
double r5580918 = 1.0;
double r5580919 = 3.0;
double r5580920 = r5580918 / r5580919;
double r5580921 = r5580917 - r5580920;
double r5580922 = 9.0;
double r5580923 = r5580921 * r5580922;
double r5580924 = sqrt(r5580923);
double r5580925 = r5580916 / r5580924;
double r5580926 = fma(r5580925, r5580921, r5580921);
return r5580926;
}



Bits error versus a



Bits error versus rand
Initial program 0.1
Simplified0.1
rmApplied *-commutative0.1
Final simplification0.1
herbie shell --seed 2019119 +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))))