\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}e^{\frac{t \cdot t}{2}} \cdot \left(\sqrt{2} \cdot \left(\sqrt{z} \cdot \left(x \cdot 0.5 - y\right)\right)\right)double f(double x, double y, double z, double t) {
double r37594210 = x;
double r37594211 = 0.5;
double r37594212 = r37594210 * r37594211;
double r37594213 = y;
double r37594214 = r37594212 - r37594213;
double r37594215 = z;
double r37594216 = 2.0;
double r37594217 = r37594215 * r37594216;
double r37594218 = sqrt(r37594217);
double r37594219 = r37594214 * r37594218;
double r37594220 = t;
double r37594221 = r37594220 * r37594220;
double r37594222 = r37594221 / r37594216;
double r37594223 = exp(r37594222);
double r37594224 = r37594219 * r37594223;
return r37594224;
}
double f(double x, double y, double z, double t) {
double r37594225 = t;
double r37594226 = r37594225 * r37594225;
double r37594227 = 2.0;
double r37594228 = r37594226 / r37594227;
double r37594229 = exp(r37594228);
double r37594230 = sqrt(r37594227);
double r37594231 = z;
double r37594232 = sqrt(r37594231);
double r37594233 = x;
double r37594234 = 0.5;
double r37594235 = r37594233 * r37594234;
double r37594236 = y;
double r37594237 = r37594235 - r37594236;
double r37594238 = r37594232 * r37594237;
double r37594239 = r37594230 * r37594238;
double r37594240 = r37594229 * r37594239;
return r37594240;
}




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.5 |
Initial program 0.3
rmApplied sqrt-prod0.5
Applied associate-*r*0.5
Final simplification0.5
herbie shell --seed 2019179
(FPCore (x y z t)
:name "Data.Number.Erf:$cinvnormcdf from erf-2.0.0.0, A"
:herbie-target
(* (* (- (* x 0.5) y) (sqrt (* z 2.0))) (pow (exp 1.0) (/ (* t t) 2.0)))
(* (* (- (* x 0.5) y) (sqrt (* z 2.0))) (exp (/ (* t t) 2.0))))