\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(rand \cdot \frac{\frac{1}{3}}{\sqrt{a - \frac{1.0}{3.0}}} + 1\right) \cdot \left(a - \frac{1.0}{3.0}\right)double f(double a, double rand) {
double r2776743 = a;
double r2776744 = 1.0;
double r2776745 = 3.0;
double r2776746 = r2776744 / r2776745;
double r2776747 = r2776743 - r2776746;
double r2776748 = 1.0;
double r2776749 = 9.0;
double r2776750 = r2776749 * r2776747;
double r2776751 = sqrt(r2776750);
double r2776752 = r2776748 / r2776751;
double r2776753 = rand;
double r2776754 = r2776752 * r2776753;
double r2776755 = r2776748 + r2776754;
double r2776756 = r2776747 * r2776755;
return r2776756;
}
double f(double a, double rand) {
double r2776757 = rand;
double r2776758 = 0.3333333333333333;
double r2776759 = a;
double r2776760 = 1.0;
double r2776761 = 3.0;
double r2776762 = r2776760 / r2776761;
double r2776763 = r2776759 - r2776762;
double r2776764 = sqrt(r2776763);
double r2776765 = r2776758 / r2776764;
double r2776766 = r2776757 * r2776765;
double r2776767 = 1.0;
double r2776768 = r2776766 + r2776767;
double r2776769 = r2776768 * r2776763;
return r2776769;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
rmApplied sqrt-prod0.2
Applied add-cube-cbrt0.2
Applied times-frac0.2
Simplified0.2
Simplified0.2
rmApplied un-div-inv0.2
Final simplification0.2
herbie shell --seed 2019165
(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))))