\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) + rand \cdot \frac{\sqrt{a - \frac{1.0}{3.0}}}{3}double f(double a, double rand) {
double r2200848 = a;
double r2200849 = 1.0;
double r2200850 = 3.0;
double r2200851 = r2200849 / r2200850;
double r2200852 = r2200848 - r2200851;
double r2200853 = 1.0;
double r2200854 = 9.0;
double r2200855 = r2200854 * r2200852;
double r2200856 = sqrt(r2200855);
double r2200857 = r2200853 / r2200856;
double r2200858 = rand;
double r2200859 = r2200857 * r2200858;
double r2200860 = r2200853 + r2200859;
double r2200861 = r2200852 * r2200860;
return r2200861;
}
double f(double a, double rand) {
double r2200862 = a;
double r2200863 = 1.0;
double r2200864 = 3.0;
double r2200865 = r2200863 / r2200864;
double r2200866 = r2200862 - r2200865;
double r2200867 = rand;
double r2200868 = sqrt(r2200866);
double r2200869 = 3.0;
double r2200870 = r2200868 / r2200869;
double r2200871 = r2200867 * r2200870;
double r2200872 = r2200866 + r2200871;
return r2200872;
}



Bits error versus a



Bits error versus rand
Results
Initial program 0.1
Simplified0.1
rmApplied sqrt-prod0.1
Applied add-sqr-sqrt0.1
Applied times-frac0.1
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019151
(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))))