x + \frac{\left(y - z\right) \cdot t}{a - z}\begin{array}{l}
\mathbf{if}\;t \le -1.988139439039141 \cdot 10^{-20}:\\
\;\;\;\;\mathsf{fma}\left(t, \frac{y - z}{a - z}, x\right)\\
\mathbf{elif}\;t \le 3.0072207939681947 \cdot 10^{+72}:\\
\;\;\;\;x + \frac{\left(y - z\right) \cdot t}{a - z}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t, \frac{y - z}{a - z}, x\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r22925341 = x;
double r22925342 = y;
double r22925343 = z;
double r22925344 = r22925342 - r22925343;
double r22925345 = t;
double r22925346 = r22925344 * r22925345;
double r22925347 = a;
double r22925348 = r22925347 - r22925343;
double r22925349 = r22925346 / r22925348;
double r22925350 = r22925341 + r22925349;
return r22925350;
}
double f(double x, double y, double z, double t, double a) {
double r22925351 = t;
double r22925352 = -1.988139439039141e-20;
bool r22925353 = r22925351 <= r22925352;
double r22925354 = y;
double r22925355 = z;
double r22925356 = r22925354 - r22925355;
double r22925357 = a;
double r22925358 = r22925357 - r22925355;
double r22925359 = r22925356 / r22925358;
double r22925360 = x;
double r22925361 = fma(r22925351, r22925359, r22925360);
double r22925362 = 3.0072207939681947e+72;
bool r22925363 = r22925351 <= r22925362;
double r22925364 = r22925356 * r22925351;
double r22925365 = r22925364 / r22925358;
double r22925366 = r22925360 + r22925365;
double r22925367 = r22925363 ? r22925366 : r22925361;
double r22925368 = r22925353 ? r22925361 : r22925367;
return r22925368;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 10.1 |
|---|---|
| Target | 0.6 |
| Herbie | 0.8 |
if t < -1.988139439039141e-20 or 3.0072207939681947e+72 < t Initial program 22.5
Simplified2.5
rmApplied fma-udef2.5
rmApplied div-inv2.6
rmApplied associate-*r/2.5
Applied associate-*r/22.5
Simplified22.5
rmApplied *-un-lft-identity22.5
Applied times-frac0.7
Applied fma-def0.7
if -1.988139439039141e-20 < t < 3.0072207939681947e+72Initial program 0.9
Simplified3.3
rmApplied fma-udef3.3
rmApplied div-inv3.3
rmApplied associate-*r/3.3
Applied associate-*r/0.9
Simplified0.9
Final simplification0.8
herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, A"
:herbie-target
(if (< t -1.0682974490174067e-39) (+ x (* (/ (- y z) (- a z)) t)) (if (< t 3.9110949887586375e-141) (+ x (/ (* (- y z) t) (- a z))) (+ x (* (/ (- y z) (- a z)) t))))
(+ x (/ (* (- y z) t) (- a z))))