\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^{t}\right)}^{\left(\frac{t}{2}\right)}double f(double x, double y, double z, double t) {
double r854507 = x;
double r854508 = 0.5;
double r854509 = r854507 * r854508;
double r854510 = y;
double r854511 = r854509 - r854510;
double r854512 = z;
double r854513 = 2.0;
double r854514 = r854512 * r854513;
double r854515 = sqrt(r854514);
double r854516 = r854511 * r854515;
double r854517 = t;
double r854518 = r854517 * r854517;
double r854519 = r854518 / r854513;
double r854520 = exp(r854519);
double r854521 = r854516 * r854520;
return r854521;
}
double f(double x, double y, double z, double t) {
double r854522 = x;
double r854523 = 0.5;
double r854524 = r854522 * r854523;
double r854525 = y;
double r854526 = r854524 - r854525;
double r854527 = z;
double r854528 = 2.0;
double r854529 = r854527 * r854528;
double r854530 = sqrt(r854529);
double r854531 = r854526 * r854530;
double r854532 = t;
double r854533 = exp(r854532);
double r854534 = r854532 / r854528;
double r854535 = pow(r854533, r854534);
double r854536 = r854531 * r854535;
return r854536;
}




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
Final simplification0.3
herbie shell --seed 2019209 +o rules:numerics
(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))))