\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}\left(\left(\left(\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z}\right) \cdot \sqrt{\sqrt{2}}\right) \cdot \sqrt{\sqrt{\sqrt{2}}}\right) \cdot \sqrt{\sqrt{\sqrt{2}}}\right) \cdot e^{\frac{t \cdot t}{2}}double f(double x, double y, double z, double t) {
double r789581 = x;
double r789582 = 0.5;
double r789583 = r789581 * r789582;
double r789584 = y;
double r789585 = r789583 - r789584;
double r789586 = z;
double r789587 = 2.0;
double r789588 = r789586 * r789587;
double r789589 = sqrt(r789588);
double r789590 = r789585 * r789589;
double r789591 = t;
double r789592 = r789591 * r789591;
double r789593 = r789592 / r789587;
double r789594 = exp(r789593);
double r789595 = r789590 * r789594;
return r789595;
}
double f(double x, double y, double z, double t) {
double r789596 = x;
double r789597 = 0.5;
double r789598 = r789596 * r789597;
double r789599 = y;
double r789600 = r789598 - r789599;
double r789601 = z;
double r789602 = sqrt(r789601);
double r789603 = r789600 * r789602;
double r789604 = 2.0;
double r789605 = sqrt(r789604);
double r789606 = sqrt(r789605);
double r789607 = r789603 * r789606;
double r789608 = sqrt(r789606);
double r789609 = r789607 * r789608;
double r789610 = r789609 * r789608;
double r789611 = t;
double r789612 = r789611 * r789611;
double r789613 = r789612 / r789604;
double r789614 = exp(r789613);
double r789615 = r789610 * r789614;
return r789615;
}




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.5 |
Initial program 0.3
rmApplied sqrt-prod0.5
Applied associate-*r*0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.6
Applied associate-*r*0.6
rmApplied add-sqr-sqrt0.6
Applied sqrt-prod0.6
Applied sqrt-prod0.6
Applied associate-*r*0.5
Final simplification0.5
herbie shell --seed 2020002
(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))))