\left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right) \cdot \left(\frac{\left(1\right)}{\left(\left(\frac{\left(1\right)}{\left(\sqrt{\left(\left(9\right) \cdot \left(a - \left(\frac{\left(1.0\right)}{\left(3.0\right)}\right)\right)\right)}\right)}\right) \cdot rand\right)}\right)1 \cdot \left(a - \frac{1.0}{3.0}\right) + \frac{rand}{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}} \cdot \left(1 \cdot \left(a - \frac{1.0}{3.0}\right)\right)double f(double a, double rand) {
double r2778894 = a;
double r2778895 = 1.0;
double r2778896 = /* ERROR: no posit support in C */;
double r2778897 = 3.0;
double r2778898 = /* ERROR: no posit support in C */;
double r2778899 = r2778896 / r2778898;
double r2778900 = r2778894 - r2778899;
double r2778901 = 1.0;
double r2778902 = /* ERROR: no posit support in C */;
double r2778903 = 9.0;
double r2778904 = /* ERROR: no posit support in C */;
double r2778905 = r2778904 * r2778900;
double r2778906 = sqrt(r2778905);
double r2778907 = r2778902 / r2778906;
double r2778908 = rand;
double r2778909 = r2778907 * r2778908;
double r2778910 = r2778902 + r2778909;
double r2778911 = r2778900 * r2778910;
return r2778911;
}
double f(double a, double rand) {
double r2778912 = 1.0;
double r2778913 = a;
double r2778914 = 1.0;
double r2778915 = 3.0;
double r2778916 = r2778914 / r2778915;
double r2778917 = r2778913 - r2778916;
double r2778918 = r2778912 * r2778917;
double r2778919 = rand;
double r2778920 = 9.0;
double r2778921 = r2778917 * r2778920;
double r2778922 = sqrt(r2778921);
double r2778923 = r2778919 / r2778922;
double r2778924 = r2778923 * r2778918;
double r2778925 = r2778918 + r2778924;
return r2778925;
}



Bits error versus a



Bits error versus rand
Initial program 0.2
rmApplied *p16-rgt-identity-expand0.2
Applied associate-*l*0.2
Simplified0.2
rmApplied +p16-lft-identity-expand0.2
Applied associate-+r+0.2
Applied distribute-lft-in0.2
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019158
(FPCore (a rand)
:name "Octave 3.8, oct_fill_randg"
(*.p16 (-.p16 a (/.p16 (real->posit16 1.0) (real->posit16 3.0))) (+.p16 (real->posit16 1) (*.p16 (/.p16 (real->posit16 1) (sqrt.p16 (*.p16 (real->posit16 9) (-.p16 a (/.p16 (real->posit16 1.0) (real->posit16 3.0)))))) rand))))