x + y \cdot \frac{z - t}{z - a}x + \left(z - t\right) \cdot \frac{y}{z - a}double f(double x, double y, double z, double t, double a) {
double r350590 = x;
double r350591 = y;
double r350592 = z;
double r350593 = t;
double r350594 = r350592 - r350593;
double r350595 = a;
double r350596 = r350592 - r350595;
double r350597 = r350594 / r350596;
double r350598 = r350591 * r350597;
double r350599 = r350590 + r350598;
return r350599;
}
double f(double x, double y, double z, double t, double a) {
double r350600 = x;
double r350601 = z;
double r350602 = t;
double r350603 = r350601 - r350602;
double r350604 = y;
double r350605 = a;
double r350606 = r350601 - r350605;
double r350607 = r350604 / r350606;
double r350608 = r350603 * r350607;
double r350609 = r350600 + r350608;
return r350609;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.5 |
|---|---|
| Target | 1.3 |
| Herbie | 2.8 |
if y < -158224265619362.66Initial program 0.5
rmApplied div-inv0.5
if -158224265619362.66 < y < 1.9196722393854428e-44Initial program 2.4
rmApplied div-inv2.4
rmApplied un-div-inv2.4
Applied associate-*r/0.4
Simplified0.4
if 1.9196722393854428e-44 < y Initial program 0.5
rmApplied div-inv0.6
rmApplied un-div-inv0.5
Applied associate-*r/19.1
Simplified19.1
rmApplied *-un-lft-identity19.1
Applied times-frac1.9
Simplified1.9
Final simplification2.8
herbie shell --seed 2019304
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, A"
:precision binary64
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (* y (/ (- z t) (- z a)))))