x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le -4.858406369374267025748457708456205744959 \cdot 10^{284}:\\
\;\;\;\;x + \frac{y - z}{\frac{a - z}{t - x}}\\
\mathbf{elif}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le -5.434814985093705994808965158793288184537 \cdot 10^{-160}:\\
\;\;\;\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\\
\mathbf{elif}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le -1.979437839536192842976894711254714293048 \cdot 10^{-299}:\\
\;\;\;\;x + \frac{y - z}{\frac{a - z}{t - x}}\\
\mathbf{elif}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le 0.0:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}} \cdot \frac{t - x}{\sqrt[3]{\sqrt[3]{a - z}}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r638218 = x;
double r638219 = y;
double r638220 = z;
double r638221 = r638219 - r638220;
double r638222 = t;
double r638223 = r638222 - r638218;
double r638224 = r638221 * r638223;
double r638225 = a;
double r638226 = r638225 - r638220;
double r638227 = r638224 / r638226;
double r638228 = r638218 + r638227;
return r638228;
}
double f(double x, double y, double z, double t, double a) {
double r638229 = x;
double r638230 = y;
double r638231 = z;
double r638232 = r638230 - r638231;
double r638233 = t;
double r638234 = r638233 - r638229;
double r638235 = r638232 * r638234;
double r638236 = a;
double r638237 = r638236 - r638231;
double r638238 = r638235 / r638237;
double r638239 = r638229 + r638238;
double r638240 = -4.858406369374267e+284;
bool r638241 = r638239 <= r638240;
double r638242 = r638237 / r638234;
double r638243 = r638232 / r638242;
double r638244 = r638229 + r638243;
double r638245 = -5.434814985093706e-160;
bool r638246 = r638239 <= r638245;
double r638247 = -1.9794378395361928e-299;
bool r638248 = r638239 <= r638247;
double r638249 = 0.0;
bool r638250 = r638239 <= r638249;
double r638251 = r638229 * r638230;
double r638252 = r638251 / r638231;
double r638253 = r638252 + r638233;
double r638254 = r638233 * r638230;
double r638255 = r638254 / r638231;
double r638256 = r638253 - r638255;
double r638257 = cbrt(r638237);
double r638258 = r638257 * r638257;
double r638259 = r638232 / r638258;
double r638260 = cbrt(r638258);
double r638261 = r638259 / r638260;
double r638262 = cbrt(r638257);
double r638263 = r638234 / r638262;
double r638264 = r638261 * r638263;
double r638265 = r638229 + r638264;
double r638266 = r638250 ? r638256 : r638265;
double r638267 = r638248 ? r638244 : r638266;
double r638268 = r638246 ? r638239 : r638267;
double r638269 = r638241 ? r638244 : r638268;
return r638269;
}




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 | 11.8 |
| Herbie | 8.7 |
if (+ x (/ (* (- y z) (- t x)) (- a z))) < -4.858406369374267e+284 or -5.434814985093706e-160 < (+ x (/ (* (- y z) (- t x)) (- a z))) < -1.9794378395361928e-299Initial program 50.7
rmApplied associate-/l*16.0
if -4.858406369374267e+284 < (+ x (/ (* (- y z) (- t x)) (- a z))) < -5.434814985093706e-160Initial program 2.0
if -1.9794378395361928e-299 < (+ x (/ (* (- y z) (- t x)) (- a z))) < 0.0Initial program 60.7
Taylor expanded around inf 17.2
if 0.0 < (+ x (/ (* (- y z) (- t x)) (- a z))) Initial program 21.1
rmApplied add-cube-cbrt21.6
Applied times-frac8.6
rmApplied add-cube-cbrt8.6
Applied cbrt-prod8.7
Applied *-un-lft-identity8.7
Applied times-frac8.7
Applied associate-*r*8.6
Simplified8.6
Final simplification8.7
herbie shell --seed 2019356
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< z -1.2536131056095036e+188) (- t (* (/ y z) (- t x))) (if (< z 4.446702369113811e+64) (+ x (/ (- y z) (/ (- a z) (- t x)))) (- t (* (/ y z) (- t x)))))
(+ x (/ (* (- y z) (- t x)) (- a z))))