\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 {\left(\sqrt{e^{t}}\right)}^{\left(2 \cdot \frac{t}{2}\right)}\right)double f(double x, double y, double z, double t) {
double r525591 = x;
double r525592 = 0.5;
double r525593 = r525591 * r525592;
double r525594 = y;
double r525595 = r525593 - r525594;
double r525596 = z;
double r525597 = 2.0;
double r525598 = r525596 * r525597;
double r525599 = sqrt(r525598);
double r525600 = r525595 * r525599;
double r525601 = t;
double r525602 = r525601 * r525601;
double r525603 = r525602 / r525597;
double r525604 = exp(r525603);
double r525605 = r525600 * r525604;
return r525605;
}
double f(double x, double y, double z, double t) {
double r525606 = x;
double r525607 = 0.5;
double r525608 = r525606 * r525607;
double r525609 = y;
double r525610 = r525608 - r525609;
double r525611 = z;
double r525612 = 2.0;
double r525613 = r525611 * r525612;
double r525614 = sqrt(r525613);
double r525615 = t;
double r525616 = exp(r525615);
double r525617 = sqrt(r525616);
double r525618 = 2.0;
double r525619 = r525615 / r525612;
double r525620 = r525618 * r525619;
double r525621 = pow(r525617, r525620);
double r525622 = r525614 * r525621;
double r525623 = r525610 * r525622;
return r525623;
}




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 *-un-lft-identity0.3
Applied times-frac0.3
Applied exp-prod0.3
Simplified0.3
rmApplied add-sqr-sqrt0.3
Applied unpow-prod-down0.3
Final simplification0.3
herbie shell --seed 2019291
(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))))