x + y \cdot \frac{z - t}{a - t}\frac{y}{\frac{a - t}{z - t}} + xdouble f(double x, double y, double z, double t, double a) {
double r438380 = x;
double r438381 = y;
double r438382 = z;
double r438383 = t;
double r438384 = r438382 - r438383;
double r438385 = a;
double r438386 = r438385 - r438383;
double r438387 = r438384 / r438386;
double r438388 = r438381 * r438387;
double r438389 = r438380 + r438388;
return r438389;
}
double f(double x, double y, double z, double t, double a) {
double r438390 = y;
double r438391 = a;
double r438392 = t;
double r438393 = r438391 - r438392;
double r438394 = z;
double r438395 = r438394 - r438392;
double r438396 = r438393 / r438395;
double r438397 = r438390 / r438396;
double r438398 = x;
double r438399 = r438397 + r438398;
return r438399;
}




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.3 |
| Herbie | 1.2 |
if y < -1.4275099853550002e-37 or 9.032302851762362e-182 < y Initial program 0.6
rmApplied clear-num0.7
rmApplied pow10.7
Applied pow10.7
Applied pow-prod-down0.7
Simplified0.6
if -1.4275099853550002e-37 < y < 9.032302851762362e-182Initial program 2.6
rmApplied clear-num2.6
rmApplied pow12.6
Applied pow12.6
Applied pow-prod-down2.6
Simplified2.4
rmApplied div-inv2.4
Applied *-un-lft-identity2.4
Applied times-frac0.2
Simplified0.2
Final simplification1.2
herbie shell --seed 2019294
(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)))))