\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 r701045 = x;
double r701046 = 0.5;
double r701047 = r701045 * r701046;
double r701048 = y;
double r701049 = r701047 - r701048;
double r701050 = z;
double r701051 = 2.0;
double r701052 = r701050 * r701051;
double r701053 = sqrt(r701052);
double r701054 = r701049 * r701053;
double r701055 = t;
double r701056 = r701055 * r701055;
double r701057 = r701056 / r701051;
double r701058 = exp(r701057);
double r701059 = r701054 * r701058;
return r701059;
}
double f(double x, double y, double z, double t) {
double r701060 = x;
double r701061 = 0.5;
double r701062 = r701060 * r701061;
double r701063 = y;
double r701064 = r701062 - r701063;
double r701065 = z;
double r701066 = 2.0;
double r701067 = r701065 * r701066;
double r701068 = sqrt(r701067);
double r701069 = r701064 * r701068;
double r701070 = t;
double r701071 = r701070 * r701070;
double r701072 = r701071 / r701066;
double r701073 = exp(r701072);
double r701074 = r701069 * r701073;
return r701074;
}




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 2019303
(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))))