\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 r644054 = x;
double r644055 = 0.5;
double r644056 = r644054 * r644055;
double r644057 = y;
double r644058 = r644056 - r644057;
double r644059 = z;
double r644060 = 2.0;
double r644061 = r644059 * r644060;
double r644062 = sqrt(r644061);
double r644063 = r644058 * r644062;
double r644064 = t;
double r644065 = r644064 * r644064;
double r644066 = r644065 / r644060;
double r644067 = exp(r644066);
double r644068 = r644063 * r644067;
return r644068;
}
double f(double x, double y, double z, double t) {
double r644069 = x;
double r644070 = 0.5;
double r644071 = r644069 * r644070;
double r644072 = y;
double r644073 = r644071 - r644072;
double r644074 = z;
double r644075 = 2.0;
double r644076 = r644074 * r644075;
double r644077 = sqrt(r644076);
double r644078 = r644073 * r644077;
double r644079 = t;
double r644080 = r644079 * r644079;
double r644081 = r644080 / r644075;
double r644082 = exp(r644081);
double r644083 = r644078 * r644082;
return r644083;
}




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