\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 e^{\frac{t \cdot t}{2}}double f(double x, double y, double z, double t) {
double r763570 = x;
double r763571 = 0.5;
double r763572 = r763570 * r763571;
double r763573 = y;
double r763574 = r763572 - r763573;
double r763575 = z;
double r763576 = 2.0;
double r763577 = r763575 * r763576;
double r763578 = sqrt(r763577);
double r763579 = r763574 * r763578;
double r763580 = t;
double r763581 = r763580 * r763580;
double r763582 = r763581 / r763576;
double r763583 = exp(r763582);
double r763584 = r763579 * r763583;
return r763584;
}
double f(double x, double y, double z, double t) {
double r763585 = x;
double r763586 = 0.5;
double r763587 = r763585 * r763586;
double r763588 = y;
double r763589 = r763587 - r763588;
double r763590 = z;
double r763591 = 2.0;
double r763592 = r763590 * r763591;
double r763593 = sqrt(r763592);
double r763594 = r763589 * r763593;
double r763595 = t;
double r763596 = r763595 * r763595;
double r763597 = r763596 / r763591;
double r763598 = exp(r763597);
double r763599 = r763594 * r763598;
return r763599;
}




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
Final simplification0.3
herbie shell --seed 2020060
(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))))