x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -4.8101418718325989 \cdot 10^{-48} \lor \neg \left(a \le 1.72111488913343407 \cdot 10^{-177}\right):\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\
\mathbf{else}:\\
\;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{t}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r643933 = x;
double r643934 = y;
double r643935 = r643934 - r643933;
double r643936 = z;
double r643937 = t;
double r643938 = r643936 - r643937;
double r643939 = r643935 * r643938;
double r643940 = a;
double r643941 = r643940 - r643937;
double r643942 = r643939 / r643941;
double r643943 = r643933 + r643942;
return r643943;
}
double f(double x, double y, double z, double t, double a) {
double r643944 = a;
double r643945 = -4.810141871832599e-48;
bool r643946 = r643944 <= r643945;
double r643947 = 1.721114889133434e-177;
bool r643948 = r643944 <= r643947;
double r643949 = !r643948;
bool r643950 = r643946 || r643949;
double r643951 = x;
double r643952 = y;
double r643953 = r643952 - r643951;
double r643954 = z;
double r643955 = t;
double r643956 = r643954 - r643955;
double r643957 = r643944 - r643955;
double r643958 = r643956 / r643957;
double r643959 = r643953 * r643958;
double r643960 = r643951 + r643959;
double r643961 = r643951 * r643954;
double r643962 = r643961 / r643955;
double r643963 = r643952 + r643962;
double r643964 = r643954 * r643952;
double r643965 = r643964 / r643955;
double r643966 = r643963 - r643965;
double r643967 = r643950 ? r643960 : r643966;
return r643967;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.9 |
|---|---|
| Target | 9.3 |
| Herbie | 11.4 |
if a < -4.810141871832599e-48 or 1.721114889133434e-177 < a Initial program 23.0
rmApplied *-un-lft-identity23.0
Applied times-frac9.0
Simplified9.0
if -4.810141871832599e-48 < a < 1.721114889133434e-177Initial program 29.4
Taylor expanded around inf 17.1
Final simplification11.4
herbie shell --seed 2020036
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< a -1.6153062845442575e-142) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t)))) (if (< a 3.774403170083174e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))