\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)\left(a - \frac{1.0}{3.0}\right) \cdot \left(1 + \frac{1}{\sqrt{\frac{9 \cdot \left(a \cdot a - \frac{1.0}{3.0} \cdot \frac{1.0}{3.0}\right)}{a + \frac{1.0}{3.0}}}} \cdot rand\right)double f(double a, double rand) {
double r2764844 = a;
double r2764845 = 1.0;
double r2764846 = /* ERROR: no posit support in C */;
double r2764847 = 3.0;
double r2764848 = /* ERROR: no posit support in C */;
double r2764849 = r2764846 / r2764848;
double r2764850 = r2764844 - r2764849;
double r2764851 = 1.0;
double r2764852 = /* ERROR: no posit support in C */;
double r2764853 = 9.0;
double r2764854 = /* ERROR: no posit support in C */;
double r2764855 = r2764854 * r2764850;
double r2764856 = sqrt(r2764855);
double r2764857 = r2764852 / r2764856;
double r2764858 = rand;
double r2764859 = r2764857 * r2764858;
double r2764860 = r2764852 + r2764859;
double r2764861 = r2764850 * r2764860;
return r2764861;
}
double f(double a, double rand) {
double r2764862 = a;
double r2764863 = 1.0;
double r2764864 = 3.0;
double r2764865 = r2764863 / r2764864;
double r2764866 = r2764862 - r2764865;
double r2764867 = 1.0;
double r2764868 = 9.0;
double r2764869 = r2764862 * r2764862;
double r2764870 = r2764865 * r2764865;
double r2764871 = r2764869 - r2764870;
double r2764872 = r2764868 * r2764871;
double r2764873 = r2764862 + r2764865;
double r2764874 = r2764872 / r2764873;
double r2764875 = sqrt(r2764874);
double r2764876 = r2764867 / r2764875;
double r2764877 = rand;
double r2764878 = r2764876 * r2764877;
double r2764879 = r2764867 + r2764878;
double r2764880 = r2764866 * r2764879;
return r2764880;
}



Bits error versus a



Bits error versus rand
Initial program 0.2
rmApplied p16-flip--0.2
Applied associate-*r/0.2
Final simplification0.2
herbie shell --seed 2019107 +o rules:numerics
(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))))