double f(double a, double rand) {
double r12731353 = a;
double r12731354 = 1.0;
double r12731355 = 3.0;
double r12731356 = r12731354 / r12731355;
double r12731357 = r12731353 - r12731356;
double r12731358 = 1.0;
double r12731359 = 9.0;
double r12731360 = r12731359 * r12731357;
double r12731361 = sqrt(r12731360);
double r12731362 = r12731358 / r12731361;
double r12731363 = rand;
double r12731364 = r12731362 * r12731363;
double r12731365 = r12731358 + r12731364;
double r12731366 = r12731357 * r12731365;
return r12731366;
}
double f(double a, double rand) {
double r12731367 = a;
double r12731368 = 1.0;
double r12731369 = 3.0;
double r12731370 = r12731368 / r12731369;
double r12731371 = r12731367 - r12731370;
double r12731372 = 1.0;
double r12731373 = 9.0;
double r12731374 = r12731371 * r12731373;
double r12731375 = sqrt(r12731374);
double r12731376 = r12731372 / r12731375;
double r12731377 = r12731371 * r12731376;
double r12731378 = rand;
double r12731379 = r12731377 * r12731378;
double r12731380 = r12731371 + r12731379;
return r12731380;
}
\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(\left(a - \frac{1.0}{3.0}\right) \cdot \frac{1}{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}}\right) \cdot rand


Bits error versus a



Bits error versus rand
Initial program 0.1
Simplified0.1
rmApplied fma-udef0.1
rmApplied div-inv0.1
Applied associate-*l*0.1
Final simplification0.1
herbie shell --seed 2019102 +o rules:numerics
(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))))