x + \frac{\left(y - z\right) \cdot t}{a - z}\begin{array}{l}
\mathbf{if}\;t \le -4.43291389633853575 \cdot 10^{32}:\\
\;\;\;\;1 \cdot \mathsf{fma}\left(\frac{y - z}{a - z}, t, x\right)\\
\mathbf{elif}\;t \le 8.70690080533521418 \cdot 10^{-48}:\\
\;\;\;\;x + \frac{\left(y - z\right) \cdot t}{a - z}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{\frac{1}{\frac{y - z}{a - z}}}, t, x\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r553646 = x;
double r553647 = y;
double r553648 = z;
double r553649 = r553647 - r553648;
double r553650 = t;
double r553651 = r553649 * r553650;
double r553652 = a;
double r553653 = r553652 - r553648;
double r553654 = r553651 / r553653;
double r553655 = r553646 + r553654;
return r553655;
}
double f(double x, double y, double z, double t, double a) {
double r553656 = t;
double r553657 = -4.432913896338536e+32;
bool r553658 = r553656 <= r553657;
double r553659 = 1.0;
double r553660 = y;
double r553661 = z;
double r553662 = r553660 - r553661;
double r553663 = a;
double r553664 = r553663 - r553661;
double r553665 = r553662 / r553664;
double r553666 = x;
double r553667 = fma(r553665, r553656, r553666);
double r553668 = r553659 * r553667;
double r553669 = 8.706900805335214e-48;
bool r553670 = r553656 <= r553669;
double r553671 = r553662 * r553656;
double r553672 = r553671 / r553664;
double r553673 = r553666 + r553672;
double r553674 = r553659 / r553665;
double r553675 = r553659 / r553674;
double r553676 = fma(r553675, r553656, r553666);
double r553677 = r553670 ? r553673 : r553676;
double r553678 = r553658 ? r553668 : r553677;
return r553678;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 10.6 |
|---|---|
| Target | 0.6 |
| Herbie | 0.6 |
if t < -4.432913896338536e+32Initial program 25.3
rmApplied *-un-lft-identity25.3
Applied *-un-lft-identity25.3
Applied distribute-lft-out25.3
Simplified0.6
if -4.432913896338536e+32 < t < 8.706900805335214e-48Initial program 0.5
if 8.706900805335214e-48 < t Initial program 19.2
Simplified0.7
rmApplied clear-num0.8
rmApplied clear-num0.8
Final simplification0.6
herbie shell --seed 2020036 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, A"
:precision binary64
: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))))