x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -4.50268869983393748 \cdot 10^{-105} \lor \neg \left(a \le 1.2502224442482174 \cdot 10^{-160}\right):\\
\;\;\;\;x + \frac{y - x}{\frac{a - t}{z - 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 r553140 = x;
double r553141 = y;
double r553142 = r553141 - r553140;
double r553143 = z;
double r553144 = t;
double r553145 = r553143 - r553144;
double r553146 = r553142 * r553145;
double r553147 = a;
double r553148 = r553147 - r553144;
double r553149 = r553146 / r553148;
double r553150 = r553140 + r553149;
return r553150;
}
double f(double x, double y, double z, double t, double a) {
double r553151 = a;
double r553152 = -4.5026886998339375e-105;
bool r553153 = r553151 <= r553152;
double r553154 = 1.2502224442482174e-160;
bool r553155 = r553151 <= r553154;
double r553156 = !r553155;
bool r553157 = r553153 || r553156;
double r553158 = x;
double r553159 = y;
double r553160 = r553159 - r553158;
double r553161 = t;
double r553162 = r553151 - r553161;
double r553163 = z;
double r553164 = r553163 - r553161;
double r553165 = r553162 / r553164;
double r553166 = r553160 / r553165;
double r553167 = r553158 + r553166;
double r553168 = r553158 * r553163;
double r553169 = r553168 / r553161;
double r553170 = r553159 + r553169;
double r553171 = r553163 * r553159;
double r553172 = r553171 / r553161;
double r553173 = r553170 - r553172;
double r553174 = r553157 ? r553167 : r553173;
return r553174;
}




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.5 |
| Herbie | 10.6 |
if a < -4.5026886998339375e-105 or 1.2502224442482174e-160 < a Initial program 23.2
rmApplied associate-/l*9.0
if -4.5026886998339375e-105 < a < 1.2502224442482174e-160Initial program 30.0
Taylor expanded around inf 15.2
Final simplification10.6
herbie shell --seed 2020003
(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))))