\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({\left(\sqrt[3]{e^{t}} \cdot \sqrt[3]{e^{t}}\right)}^{\left(\frac{t}{2}\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 r774323 = x;
double r774324 = 0.5;
double r774325 = r774323 * r774324;
double r774326 = y;
double r774327 = r774325 - r774326;
double r774328 = z;
double r774329 = 2.0;
double r774330 = r774328 * r774329;
double r774331 = sqrt(r774330);
double r774332 = r774327 * r774331;
double r774333 = t;
double r774334 = r774333 * r774333;
double r774335 = r774334 / r774329;
double r774336 = exp(r774335);
double r774337 = r774332 * r774336;
return r774337;
}
double f(double x, double y, double z, double t) {
double r774338 = x;
double r774339 = 0.5;
double r774340 = r774338 * r774339;
double r774341 = y;
double r774342 = r774340 - r774341;
double r774343 = z;
double r774344 = 2.0;
double r774345 = r774343 * r774344;
double r774346 = sqrt(r774345);
double r774347 = r774342 * r774346;
double r774348 = t;
double r774349 = exp(r774348);
double r774350 = cbrt(r774349);
double r774351 = r774350 * r774350;
double r774352 = r774348 / r774344;
double r774353 = pow(r774351, r774352);
double r774354 = pow(r774350, r774352);
double r774355 = r774353 * r774354;
double r774356 = r774347 * r774355;
return r774356;
}




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-cube-cbrt0.3
Applied unpow-prod-down0.3
Final simplification0.3
herbie shell --seed 2020045 +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))))