\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{\frac{1}{\frac{\sqrt{9}}{rand}}}{\sqrt{a - \frac{1}{3}}} + 1\right) \cdot \left(a - \frac{1}{3}\right)double f(double a, double rand) {
double r73821 = a;
double r73822 = 1.0;
double r73823 = 3.0;
double r73824 = r73822 / r73823;
double r73825 = r73821 - r73824;
double r73826 = 9.0;
double r73827 = r73826 * r73825;
double r73828 = sqrt(r73827);
double r73829 = r73822 / r73828;
double r73830 = rand;
double r73831 = r73829 * r73830;
double r73832 = r73822 + r73831;
double r73833 = r73825 * r73832;
return r73833;
}
double f(double a, double rand) {
double r73834 = 1.0;
double r73835 = 9.0;
double r73836 = sqrt(r73835);
double r73837 = rand;
double r73838 = r73836 / r73837;
double r73839 = r73834 / r73838;
double r73840 = a;
double r73841 = 3.0;
double r73842 = r73834 / r73841;
double r73843 = r73840 - r73842;
double r73844 = sqrt(r73843);
double r73845 = r73839 / r73844;
double r73846 = r73845 + r73834;
double r73847 = r73846 * r73843;
return r73847;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
rmApplied sqrt-prod0.2
Applied add-sqr-sqrt0.2
Applied times-frac0.2
Applied associate-*l*0.2
rmApplied *-un-lft-identity0.2
Applied associate-*l*0.2
Simplified0.1
Final simplification0.1
herbie shell --seed 2020083
(FPCore (a rand)
:name "Octave 3.8, oct_fill_randg"
:precision binary64
(* (- a (/ 1 3)) (+ 1 (* (/ 1 (sqrt (* 9 (- a (/ 1 3))))) rand))))