x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -3.452239314087017250091497734735345175539 \cdot 10^{-77} \lor \neg \left(a \le 2.35264995122292980564493356798464128914 \cdot 10^{-79}\right):\\
\;\;\;\;x + \frac{z - t}{a - t} \cdot \left(y - x\right)\\
\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 r449082 = x;
double r449083 = y;
double r449084 = r449083 - r449082;
double r449085 = z;
double r449086 = t;
double r449087 = r449085 - r449086;
double r449088 = r449084 * r449087;
double r449089 = a;
double r449090 = r449089 - r449086;
double r449091 = r449088 / r449090;
double r449092 = r449082 + r449091;
return r449092;
}
double f(double x, double y, double z, double t, double a) {
double r449093 = a;
double r449094 = -3.4522393140870173e-77;
bool r449095 = r449093 <= r449094;
double r449096 = 2.3526499512229298e-79;
bool r449097 = r449093 <= r449096;
double r449098 = !r449097;
bool r449099 = r449095 || r449098;
double r449100 = x;
double r449101 = z;
double r449102 = t;
double r449103 = r449101 - r449102;
double r449104 = r449093 - r449102;
double r449105 = r449103 / r449104;
double r449106 = y;
double r449107 = r449106 - r449100;
double r449108 = r449105 * r449107;
double r449109 = r449100 + r449108;
double r449110 = r449100 * r449101;
double r449111 = r449110 / r449102;
double r449112 = r449106 + r449111;
double r449113 = r449101 * r449106;
double r449114 = r449113 / r449102;
double r449115 = r449112 - r449114;
double r449116 = r449099 ? r449109 : r449115;
return r449116;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 25.4 |
|---|---|
| Target | 9.8 |
| Herbie | 11.5 |
if a < -3.4522393140870173e-77 or 2.3526499512229298e-79 < a Initial program 23.1
rmApplied *-un-lft-identity23.1
Applied times-frac8.5
Simplified8.5
rmApplied div-inv8.6
rmApplied *-un-lft-identity8.6
Applied associate-*l*8.6
Simplified8.5
if -3.4522393140870173e-77 < a < 2.3526499512229298e-79Initial program 29.9
Taylor expanded around inf 17.3
Final simplification11.5
herbie shell --seed 2019235
(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.7744031700831742e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))