\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({\left(\left(a - \frac{1.0}{3.0}\right) \cdot 9\right)}^{\left(-\frac{1}{2}\right)} \cdot rand\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 r3569820 = a;
double r3569821 = 1.0;
double r3569822 = 3.0;
double r3569823 = r3569821 / r3569822;
double r3569824 = r3569820 - r3569823;
double r3569825 = 1.0;
double r3569826 = 9.0;
double r3569827 = r3569826 * r3569824;
double r3569828 = sqrt(r3569827);
double r3569829 = r3569825 / r3569828;
double r3569830 = rand;
double r3569831 = r3569829 * r3569830;
double r3569832 = r3569825 + r3569831;
double r3569833 = r3569824 * r3569832;
return r3569833;
}
double f(double a, double rand) {
double r3569834 = a;
double r3569835 = 1.0;
double r3569836 = 3.0;
double r3569837 = r3569835 / r3569836;
double r3569838 = r3569834 - r3569837;
double r3569839 = 9.0;
double r3569840 = r3569838 * r3569839;
double r3569841 = 0.5;
double r3569842 = -r3569841;
double r3569843 = pow(r3569840, r3569842);
double r3569844 = rand;
double r3569845 = r3569843 * r3569844;
double r3569846 = r3569845 * r3569838;
double r3569847 = r3569846 + r3569838;
return r3569847;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
rmApplied pow1/20.1
Applied pow-flip0.1
rmApplied distribute-rgt-in0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019134 +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))))