\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(\left(\sqrt{z \cdot 2} \cdot {\left(\sqrt[3]{e^{t}} \cdot \sqrt[3]{e^{t}}\right)}^{\left(\frac{t}{2}\right)}\right) \cdot {\left(\sqrt[3]{e^{t}}\right)}^{\left(\frac{t}{2}\right)}\right)double f(double x, double y, double z, double t) {
double r538904 = x;
double r538905 = 0.5;
double r538906 = r538904 * r538905;
double r538907 = y;
double r538908 = r538906 - r538907;
double r538909 = z;
double r538910 = 2.0;
double r538911 = r538909 * r538910;
double r538912 = sqrt(r538911);
double r538913 = r538908 * r538912;
double r538914 = t;
double r538915 = r538914 * r538914;
double r538916 = r538915 / r538910;
double r538917 = exp(r538916);
double r538918 = r538913 * r538917;
return r538918;
}
double f(double x, double y, double z, double t) {
double r538919 = x;
double r538920 = 0.5;
double r538921 = r538919 * r538920;
double r538922 = y;
double r538923 = r538921 - r538922;
double r538924 = z;
double r538925 = 2.0;
double r538926 = r538924 * r538925;
double r538927 = sqrt(r538926);
double r538928 = t;
double r538929 = exp(r538928);
double r538930 = cbrt(r538929);
double r538931 = r538930 * r538930;
double r538932 = r538928 / r538925;
double r538933 = pow(r538931, r538932);
double r538934 = r538927 * r538933;
double r538935 = pow(r538930, r538932);
double r538936 = r538934 * r538935;
double r538937 = r538923 * r538936;
return r538937;
}




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 associate-*l*0.3
rmApplied add-cube-cbrt0.3
Applied unpow-prod-down0.3
Applied associate-*r*0.3
Final simplification0.3
herbie shell --seed 2019323
(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))))