x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -3.21810197697967915 \cdot 10^{-298} \lor \neg \left(a \le 1.7888988399164032 \cdot 10^{-210}\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 r764169 = x;
double r764170 = y;
double r764171 = r764170 - r764169;
double r764172 = z;
double r764173 = t;
double r764174 = r764172 - r764173;
double r764175 = r764171 * r764174;
double r764176 = a;
double r764177 = r764176 - r764173;
double r764178 = r764175 / r764177;
double r764179 = r764169 + r764178;
return r764179;
}
double f(double x, double y, double z, double t, double a) {
double r764180 = a;
double r764181 = -3.218101976979679e-298;
bool r764182 = r764180 <= r764181;
double r764183 = 1.7888988399164032e-210;
bool r764184 = r764180 <= r764183;
double r764185 = !r764184;
bool r764186 = r764182 || r764185;
double r764187 = x;
double r764188 = y;
double r764189 = r764188 - r764187;
double r764190 = t;
double r764191 = r764180 - r764190;
double r764192 = z;
double r764193 = r764192 - r764190;
double r764194 = r764191 / r764193;
double r764195 = r764189 / r764194;
double r764196 = r764187 + r764195;
double r764197 = r764187 * r764192;
double r764198 = r764197 / r764190;
double r764199 = r764188 + r764198;
double r764200 = r764192 * r764188;
double r764201 = r764200 / r764190;
double r764202 = r764199 - r764201;
double r764203 = r764186 ? r764196 : r764202;
return r764203;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.1 |
|---|---|
| Target | 9.0 |
| Herbie | 10.5 |
if a < -3.218101976979679e-298 or 1.7888988399164032e-210 < a Initial program 23.7
rmApplied associate-/l*10.7
if -3.218101976979679e-298 < a < 1.7888988399164032e-210Initial program 29.3
Taylor expanded around inf 7.9
Final simplification10.5
herbie shell --seed 2020062
(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))))