\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(e^{\frac{{t}^{2}}{2}} \cdot \sqrt{z \cdot 2}\right)double f(double x, double y, double z, double t) {
double r519189 = x;
double r519190 = 0.5;
double r519191 = r519189 * r519190;
double r519192 = y;
double r519193 = r519191 - r519192;
double r519194 = z;
double r519195 = 2.0;
double r519196 = r519194 * r519195;
double r519197 = sqrt(r519196);
double r519198 = r519193 * r519197;
double r519199 = t;
double r519200 = r519199 * r519199;
double r519201 = r519200 / r519195;
double r519202 = exp(r519201);
double r519203 = r519198 * r519202;
return r519203;
}
double f(double x, double y, double z, double t) {
double r519204 = x;
double r519205 = 0.5;
double r519206 = r519204 * r519205;
double r519207 = y;
double r519208 = r519206 - r519207;
double r519209 = t;
double r519210 = 2.0;
double r519211 = pow(r519209, r519210);
double r519212 = 2.0;
double r519213 = r519211 / r519212;
double r519214 = exp(r519213);
double r519215 = z;
double r519216 = r519215 * r519212;
double r519217 = sqrt(r519216);
double r519218 = r519214 * r519217;
double r519219 = r519208 * r519218;
return r519219;
}




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
Simplified0.3
Final simplification0.3
herbie shell --seed 2019325 +o rules:numerics
(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))))