x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;t \le -1.211070029229014479879246350183570546634 \cdot 10^{94} \lor \neg \left(t \le 1.341691777691101249586801592888631911931 \cdot 10^{125}\right):\\
\;\;\;\;y + \left(\frac{x}{\frac{t}{z}} - z \cdot \frac{y}{t}\right)\\
\mathbf{else}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r603050 = x;
double r603051 = y;
double r603052 = r603051 - r603050;
double r603053 = z;
double r603054 = t;
double r603055 = r603053 - r603054;
double r603056 = r603052 * r603055;
double r603057 = a;
double r603058 = r603057 - r603054;
double r603059 = r603056 / r603058;
double r603060 = r603050 + r603059;
return r603060;
}
double f(double x, double y, double z, double t, double a) {
double r603061 = t;
double r603062 = -1.2110700292290145e+94;
bool r603063 = r603061 <= r603062;
double r603064 = 1.3416917776911012e+125;
bool r603065 = r603061 <= r603064;
double r603066 = !r603065;
bool r603067 = r603063 || r603066;
double r603068 = y;
double r603069 = x;
double r603070 = z;
double r603071 = r603061 / r603070;
double r603072 = r603069 / r603071;
double r603073 = r603068 / r603061;
double r603074 = r603070 * r603073;
double r603075 = r603072 - r603074;
double r603076 = r603068 + r603075;
double r603077 = r603068 - r603069;
double r603078 = r603070 - r603061;
double r603079 = a;
double r603080 = r603079 - r603061;
double r603081 = r603078 / r603080;
double r603082 = r603077 * r603081;
double r603083 = r603069 + r603082;
double r603084 = r603067 ? r603076 : r603083;
return r603084;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.2 |
|---|---|
| Target | 8.9 |
| Herbie | 10.5 |
if t < -1.2110700292290145e+94 or 1.3416917776911012e+125 < t Initial program 44.7
Simplified24.8
rmApplied div-inv24.9
Applied associate-*l*20.7
Simplified20.6
rmApplied add-cube-cbrt20.9
Taylor expanded around inf 26.4
Simplified18.2
if -1.2110700292290145e+94 < t < 1.3416917776911012e+125Initial program 12.7
Simplified8.4
rmApplied div-inv8.4
Applied associate-*l*6.2
Simplified6.2
Final simplification10.5
herbie shell --seed 2019179
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
:herbie-target
(if (< a -1.6153062845442575e-142) (+ x (* (/ (- y x) 1.0) (/ (- z t) (- a t)))) (if (< a 3.774403170083174e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1.0) (/ (- z t) (- a t))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))