\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}\left(x \cdot 0.5 - y\right) \cdot \left(\sqrt{z \cdot 2} \cdot e^{\frac{t \cdot t}{2}}\right)double f(double x, double y, double z, double t) {
double r520632 = x;
double r520633 = 0.5;
double r520634 = r520632 * r520633;
double r520635 = y;
double r520636 = r520634 - r520635;
double r520637 = z;
double r520638 = 2.0;
double r520639 = r520637 * r520638;
double r520640 = sqrt(r520639);
double r520641 = r520636 * r520640;
double r520642 = t;
double r520643 = r520642 * r520642;
double r520644 = r520643 / r520638;
double r520645 = exp(r520644);
double r520646 = r520641 * r520645;
return r520646;
}
double f(double x, double y, double z, double t) {
double r520647 = x;
double r520648 = 0.5;
double r520649 = r520647 * r520648;
double r520650 = y;
double r520651 = r520649 - r520650;
double r520652 = z;
double r520653 = 2.0;
double r520654 = r520652 * r520653;
double r520655 = sqrt(r520654);
double r520656 = t;
double r520657 = r520656 * r520656;
double r520658 = r520657 / r520653;
double r520659 = exp(r520658);
double r520660 = r520655 * r520659;
double r520661 = r520651 * r520660;
return r520661;
}




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 associate-*l*0.3
Final simplification0.3
herbie shell --seed 2019325
(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))))