\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 \sqrt{z \cdot 2}\right) \cdot {\left(e^{\sqrt[3]{\frac{t \cdot t}{2}} \cdot \sqrt[3]{\frac{t \cdot t}{2}}}\right)}^{\left(\sqrt[3]{\frac{t \cdot t}{2}}\right)}double f(double x, double y, double z, double t) {
double r746973 = x;
double r746974 = 0.5;
double r746975 = r746973 * r746974;
double r746976 = y;
double r746977 = r746975 - r746976;
double r746978 = z;
double r746979 = 2.0;
double r746980 = r746978 * r746979;
double r746981 = sqrt(r746980);
double r746982 = r746977 * r746981;
double r746983 = t;
double r746984 = r746983 * r746983;
double r746985 = r746984 / r746979;
double r746986 = exp(r746985);
double r746987 = r746982 * r746986;
return r746987;
}
double f(double x, double y, double z, double t) {
double r746988 = x;
double r746989 = 0.5;
double r746990 = r746988 * r746989;
double r746991 = y;
double r746992 = r746990 - r746991;
double r746993 = z;
double r746994 = 2.0;
double r746995 = r746993 * r746994;
double r746996 = sqrt(r746995);
double r746997 = r746992 * r746996;
double r746998 = t;
double r746999 = r746998 * r746998;
double r747000 = r746999 / r746994;
double r747001 = cbrt(r747000);
double r747002 = r747001 * r747001;
double r747003 = exp(r747002);
double r747004 = pow(r747003, r747001);
double r747005 = r746997 * r747004;
return r747005;
}




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-cube-cbrt0.3
Applied exp-prod0.3
Final simplification0.3
herbie shell --seed 2020021
(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))))