x + y \cdot \frac{z - t}{a - t}x + \left(y \cdot \frac{z}{a - t} + y \cdot \left(-\frac{t}{a - t}\right)\right)double f(double x, double y, double z, double t, double a) {
double r536575 = x;
double r536576 = y;
double r536577 = z;
double r536578 = t;
double r536579 = r536577 - r536578;
double r536580 = a;
double r536581 = r536580 - r536578;
double r536582 = r536579 / r536581;
double r536583 = r536576 * r536582;
double r536584 = r536575 + r536583;
return r536584;
}
double f(double x, double y, double z, double t, double a) {
double r536585 = x;
double r536586 = y;
double r536587 = z;
double r536588 = a;
double r536589 = t;
double r536590 = r536588 - r536589;
double r536591 = r536587 / r536590;
double r536592 = r536586 * r536591;
double r536593 = r536589 / r536590;
double r536594 = -r536593;
double r536595 = r536586 * r536594;
double r536596 = r536592 + r536595;
double r536597 = r536585 + r536596;
return r536597;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.4 |
|---|---|
| Target | 0.5 |
| Herbie | 1.4 |
Initial program 1.4
rmApplied div-sub1.4
rmApplied sub-neg1.4
Applied distribute-lft-in1.4
Final simplification1.4
herbie shell --seed 2020036 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(if (< y -8.508084860551241e-17) (+ x (* y (/ (- z t) (- a t)))) (if (< y 2.894426862792089e-49) (+ x (* (* y (- z t)) (/ 1 (- a t)))) (+ x (* y (/ (- z t) (- a t))))))
(+ x (* y (/ (- z t) (- a t)))))