\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot {\left(e^{\sqrt[3]{t} \cdot \sqrt[3]{t}}\right)}^{\left(\sqrt[3]{t} \cdot \frac{t}{2}\right)}double f(double x, double y, double z, double t) {
double r531309 = x;
double r531310 = 0.5;
double r531311 = r531309 * r531310;
double r531312 = y;
double r531313 = r531311 - r531312;
double r531314 = z;
double r531315 = 2.0;
double r531316 = r531314 * r531315;
double r531317 = sqrt(r531316);
double r531318 = r531313 * r531317;
double r531319 = t;
double r531320 = r531319 * r531319;
double r531321 = r531320 / r531315;
double r531322 = exp(r531321);
double r531323 = r531318 * r531322;
return r531323;
}
double f(double x, double y, double z, double t) {
double r531324 = x;
double r531325 = 0.5;
double r531326 = r531324 * r531325;
double r531327 = y;
double r531328 = r531326 - r531327;
double r531329 = z;
double r531330 = 2.0;
double r531331 = r531329 * r531330;
double r531332 = sqrt(r531331);
double r531333 = r531328 * r531332;
double r531334 = t;
double r531335 = cbrt(r531334);
double r531336 = r531335 * r531335;
double r531337 = exp(r531336);
double r531338 = r531334 / r531330;
double r531339 = r531335 * r531338;
double r531340 = pow(r531337, r531339);
double r531341 = r531333 * r531340;
return r531341;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 0.3 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
Initial program 0.3
rmApplied *-un-lft-identity0.3
Applied times-frac0.3
Applied exp-prod0.3
Simplified0.3
rmApplied add-cube-cbrt0.3
Applied exp-prod0.3
Applied pow-pow0.3
Final simplification0.3
herbie shell --seed 2019304
(FPCore (x y z t)
:name "Data.Number.Erf:$cinvnormcdf from erf-2.0.0.0, A"
:precision binary64
:herbie-target
(* (* (- (* x 0.5) y) (sqrt (* z 2))) (pow (exp 1) (/ (* t t) 2)))
(* (* (- (* x 0.5) y) (sqrt (* z 2))) (exp (/ (* t t) 2))))