\left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\right)\mathsf{fma}\left(\frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}, rand, 1\right) \cdot a + \mathsf{fma}\left(\frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}, rand, 1\right) \cdot \left(-\frac{1}{3}\right)double f(double a, double rand) {
double r6292104 = a;
double r6292105 = 1.0;
double r6292106 = 3.0;
double r6292107 = r6292105 / r6292106;
double r6292108 = r6292104 - r6292107;
double r6292109 = 9.0;
double r6292110 = r6292109 * r6292108;
double r6292111 = sqrt(r6292110);
double r6292112 = r6292105 / r6292111;
double r6292113 = rand;
double r6292114 = r6292112 * r6292113;
double r6292115 = r6292105 + r6292114;
double r6292116 = r6292108 * r6292115;
return r6292116;
}
double f(double a, double rand) {
double r6292117 = 1.0;
double r6292118 = 9.0;
double r6292119 = a;
double r6292120 = 3.0;
double r6292121 = r6292117 / r6292120;
double r6292122 = r6292119 - r6292121;
double r6292123 = r6292118 * r6292122;
double r6292124 = sqrt(r6292123);
double r6292125 = r6292117 / r6292124;
double r6292126 = rand;
double r6292127 = fma(r6292125, r6292126, r6292117);
double r6292128 = r6292127 * r6292119;
double r6292129 = -r6292121;
double r6292130 = r6292127 * r6292129;
double r6292131 = r6292128 + r6292130;
return r6292131;
}



Bits error versus a



Bits error versus rand
Initial program 0.1
Simplified0.1
rmApplied sub-neg0.1
Applied distribute-lft-in0.1
Final simplification0.1
herbie shell --seed 2019174 +o rules:numerics
(FPCore (a rand)
:name "Octave 3.8, oct_fill_randg"
(* (- a (/ 1.0 3.0)) (+ 1.0 (* (/ 1.0 (sqrt (* 9.0 (- a (/ 1.0 3.0))))) rand))))