\left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\right)\mathsf{fma}\left(\frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}, rand, 1\right) \cdot \left(a - \frac{\frac{{\left(\sqrt[3]{1}\right)}^{3}}{\sqrt{3}}}{\sqrt{3}}\right) + \mathsf{fma}\left(\frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}, rand, 1\right) \cdot \left(\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt{3}} \cdot \left(\left(-\frac{\sqrt[3]{1}}{\sqrt{3}}\right) + \frac{\sqrt[3]{1}}{\sqrt{3}}\right)\right)double f(double a, double rand) {
double r179469 = a;
double r179470 = 1.0;
double r179471 = 3.0;
double r179472 = r179470 / r179471;
double r179473 = r179469 - r179472;
double r179474 = 9.0;
double r179475 = r179474 * r179473;
double r179476 = sqrt(r179475);
double r179477 = r179470 / r179476;
double r179478 = rand;
double r179479 = r179477 * r179478;
double r179480 = r179470 + r179479;
double r179481 = r179473 * r179480;
return r179481;
}
double f(double a, double rand) {
double r179482 = 1.0;
double r179483 = 9.0;
double r179484 = a;
double r179485 = 3.0;
double r179486 = r179482 / r179485;
double r179487 = r179484 - r179486;
double r179488 = r179483 * r179487;
double r179489 = sqrt(r179488);
double r179490 = r179482 / r179489;
double r179491 = rand;
double r179492 = fma(r179490, r179491, r179482);
double r179493 = cbrt(r179482);
double r179494 = 3.0;
double r179495 = pow(r179493, r179494);
double r179496 = sqrt(r179485);
double r179497 = r179495 / r179496;
double r179498 = r179497 / r179496;
double r179499 = r179484 - r179498;
double r179500 = r179492 * r179499;
double r179501 = r179493 * r179493;
double r179502 = r179501 / r179496;
double r179503 = r179493 / r179496;
double r179504 = -r179503;
double r179505 = r179504 + r179503;
double r179506 = r179502 * r179505;
double r179507 = r179492 * r179506;
double r179508 = r179500 + r179507;
return r179508;
}



Bits error versus a



Bits error versus rand
Initial program 0.1
Simplified0.1
rmApplied add-sqr-sqrt0.1
Applied add-cube-cbrt0.1
Applied times-frac0.1
Applied add-sqr-sqrt0.6
Applied prod-diff0.6
Applied distribute-lft-in0.6
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020047 +o rules:numerics
(FPCore (a rand)
:name "Octave 3.8, oct_fill_randg"
:precision binary64
(* (- a (/ 1 3)) (+ 1 (* (/ 1 (sqrt (* 9 (- a (/ 1 3))))) rand))))