\left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\right)\left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{1 \cdot rand}{\sqrt{9} \cdot \sqrt{a - \frac{1}{3}}}\right)double f(double a, double rand) {
double r109438 = a;
double r109439 = 1.0;
double r109440 = 3.0;
double r109441 = r109439 / r109440;
double r109442 = r109438 - r109441;
double r109443 = 9.0;
double r109444 = r109443 * r109442;
double r109445 = sqrt(r109444);
double r109446 = r109439 / r109445;
double r109447 = rand;
double r109448 = r109446 * r109447;
double r109449 = r109439 + r109448;
double r109450 = r109442 * r109449;
return r109450;
}
double f(double a, double rand) {
double r109451 = a;
double r109452 = 1.0;
double r109453 = 3.0;
double r109454 = r109452 / r109453;
double r109455 = r109451 - r109454;
double r109456 = rand;
double r109457 = r109452 * r109456;
double r109458 = 9.0;
double r109459 = sqrt(r109458);
double r109460 = sqrt(r109455);
double r109461 = r109459 * r109460;
double r109462 = r109457 / r109461;
double r109463 = r109452 + r109462;
double r109464 = r109455 * r109463;
return r109464;
}



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 associate-*l/0.2
Applied frac-times0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020042
(FPCore (a rand)
:name "Octave 3.8, oct_fill_randg"
:precision binary64
(* (- a (/ 1 3)) (+ 1 (* (/ 1 (sqrt (* 9 (- a (/ 1 3))))) rand))))