x + y \cdot \frac{z - t}{a - t}x + \frac{y \cdot \left(z - t\right)}{a - t}double f(double x, double y, double z, double t, double a) {
double r416366 = x;
double r416367 = y;
double r416368 = z;
double r416369 = t;
double r416370 = r416368 - r416369;
double r416371 = a;
double r416372 = r416371 - r416369;
double r416373 = r416370 / r416372;
double r416374 = r416367 * r416373;
double r416375 = r416366 + r416374;
return r416375;
}
double f(double x, double y, double z, double t, double a) {
double r416376 = x;
double r416377 = y;
double r416378 = z;
double r416379 = t;
double r416380 = r416378 - r416379;
double r416381 = r416377 * r416380;
double r416382 = a;
double r416383 = r416382 - r416379;
double r416384 = r416381 / r416383;
double r416385 = r416376 + r416384;
return r416385;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.3 |
|---|---|
| Target | 0.5 |
| Herbie | 10.9 |
if y < -0.4573574999993685 or 5.370782751158474e-09 < y Initial program 0.6
rmApplied div-sub0.6
if -0.4573574999993685 < y < 5.370782751158474e-09Initial program 2.0
rmApplied associate-*r/0.3
Final simplification10.9
herbie shell --seed 2019291
(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.50808486055124107e-17) (+ x (* y (/ (- z t) (- a t)))) (if (< y 2.8944268627920891e-49) (+ x (* (* y (- z t)) (/ 1 (- a t)))) (+ x (* y (/ (- z t) (- a t))))))
(+ x (* y (/ (- z t) (- a t)))))