\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 \left(\sqrt{z} \cdot \sqrt{2}\right)\right) \cdot e^{\frac{t \cdot t}{2}}double f(double x, double y, double z, double t) {
double r833498 = x;
double r833499 = 0.5;
double r833500 = r833498 * r833499;
double r833501 = y;
double r833502 = r833500 - r833501;
double r833503 = z;
double r833504 = 2.0;
double r833505 = r833503 * r833504;
double r833506 = sqrt(r833505);
double r833507 = r833502 * r833506;
double r833508 = t;
double r833509 = r833508 * r833508;
double r833510 = r833509 / r833504;
double r833511 = exp(r833510);
double r833512 = r833507 * r833511;
return r833512;
}
double f(double x, double y, double z, double t) {
double r833513 = x;
double r833514 = 0.5;
double r833515 = r833513 * r833514;
double r833516 = y;
double r833517 = r833515 - r833516;
double r833518 = z;
double r833519 = sqrt(r833518);
double r833520 = 2.0;
double r833521 = sqrt(r833520);
double r833522 = r833519 * r833521;
double r833523 = r833517 * r833522;
double r833524 = t;
double r833525 = r833524 * r833524;
double r833526 = r833525 / r833520;
double r833527 = exp(r833526);
double r833528 = r833523 * r833527;
return r833528;
}




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
Final simplification0.5
herbie shell --seed 2020056 +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))))