\left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\right)\left(\frac{rand}{\frac{\sqrt{\left(a - \frac{1}{3}\right) \cdot 9}}{1}} + 1\right) \cdot \frac{-1}{3} + \left(\frac{rand}{\frac{\sqrt{\left(a - \frac{1}{3}\right) \cdot 9}}{1}} + 1\right) \cdot adouble f(double a, double rand) {
double r60907 = a;
double r60908 = 1.0;
double r60909 = 3.0;
double r60910 = r60908 / r60909;
double r60911 = r60907 - r60910;
double r60912 = 9.0;
double r60913 = r60912 * r60911;
double r60914 = sqrt(r60913);
double r60915 = r60908 / r60914;
double r60916 = rand;
double r60917 = r60915 * r60916;
double r60918 = r60908 + r60917;
double r60919 = r60911 * r60918;
return r60919;
}
double f(double a, double rand) {
double r60920 = rand;
double r60921 = a;
double r60922 = 1.0;
double r60923 = 3.0;
double r60924 = r60922 / r60923;
double r60925 = r60921 - r60924;
double r60926 = 9.0;
double r60927 = r60925 * r60926;
double r60928 = sqrt(r60927);
double r60929 = r60928 / r60922;
double r60930 = r60920 / r60929;
double r60931 = r60930 + r60922;
double r60932 = -r60922;
double r60933 = r60932 / r60923;
double r60934 = r60931 * r60933;
double r60935 = r60931 * r60921;
double r60936 = r60934 + r60935;
return r60936;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
rmApplied pow10.1
Applied pow10.1
Applied pow-prod-down0.1
Simplified0.1
rmApplied sub-neg0.1
Applied distribute-lft-in0.1
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019196
(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))))