\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(a - \frac{1.0}{3.0}\right) + \left(rand \cdot \left({\left(9 \cdot \left(a - \frac{1.0}{3.0}\right)\right)}^{\frac{-1}{2}} \cdot a\right) + \left(-\frac{1.0}{3.0}\right) \cdot \frac{rand}{\sqrt{9 \cdot \left(a - \frac{1.0}{3.0}\right)}}\right)double f(double a, double rand) {
double r1648802 = a;
double r1648803 = 1.0;
double r1648804 = 3.0;
double r1648805 = r1648803 / r1648804;
double r1648806 = r1648802 - r1648805;
double r1648807 = 1.0;
double r1648808 = 9.0;
double r1648809 = r1648808 * r1648806;
double r1648810 = sqrt(r1648809);
double r1648811 = r1648807 / r1648810;
double r1648812 = rand;
double r1648813 = r1648811 * r1648812;
double r1648814 = r1648807 + r1648813;
double r1648815 = r1648806 * r1648814;
return r1648815;
}
double f(double a, double rand) {
double r1648816 = a;
double r1648817 = 1.0;
double r1648818 = 3.0;
double r1648819 = r1648817 / r1648818;
double r1648820 = r1648816 - r1648819;
double r1648821 = rand;
double r1648822 = 9.0;
double r1648823 = r1648822 * r1648820;
double r1648824 = -0.5;
double r1648825 = pow(r1648823, r1648824);
double r1648826 = r1648825 * r1648816;
double r1648827 = r1648821 * r1648826;
double r1648828 = -r1648819;
double r1648829 = sqrt(r1648823);
double r1648830 = r1648821 / r1648829;
double r1648831 = r1648828 * r1648830;
double r1648832 = r1648827 + r1648831;
double r1648833 = r1648820 + r1648832;
return r1648833;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
rmApplied distribute-lft-in0.1
Simplified0.1
Simplified0.1
rmApplied sub-neg0.1
Applied distribute-lft-in0.1
rmApplied div-inv0.1
Applied associate-*l*0.1
rmApplied pow1/20.1
Applied pow-flip0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019155
(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))))