\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}\left(\sqrt{e^{\frac{t \cdot t}{2}}} \cdot \left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right)\right) \cdot \sqrt{e^{\frac{t \cdot t}{2}}}double f(double x, double y, double z, double t) {
double r37583645 = x;
double r37583646 = 0.5;
double r37583647 = r37583645 * r37583646;
double r37583648 = y;
double r37583649 = r37583647 - r37583648;
double r37583650 = z;
double r37583651 = 2.0;
double r37583652 = r37583650 * r37583651;
double r37583653 = sqrt(r37583652);
double r37583654 = r37583649 * r37583653;
double r37583655 = t;
double r37583656 = r37583655 * r37583655;
double r37583657 = r37583656 / r37583651;
double r37583658 = exp(r37583657);
double r37583659 = r37583654 * r37583658;
return r37583659;
}
double f(double x, double y, double z, double t) {
double r37583660 = t;
double r37583661 = r37583660 * r37583660;
double r37583662 = 2.0;
double r37583663 = r37583661 / r37583662;
double r37583664 = exp(r37583663);
double r37583665 = sqrt(r37583664);
double r37583666 = x;
double r37583667 = 0.5;
double r37583668 = r37583666 * r37583667;
double r37583669 = y;
double r37583670 = r37583668 - r37583669;
double r37583671 = z;
double r37583672 = r37583671 * r37583662;
double r37583673 = sqrt(r37583672);
double r37583674 = r37583670 * r37583673;
double r37583675 = r37583665 * r37583674;
double r37583676 = r37583675 * r37583665;
return r37583676;
}




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
rmApplied add-sqr-sqrt0.3
Applied associate-*r*0.3
Final simplification0.3
herbie shell --seed 2019172
(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))))