x + \frac{y \cdot \left(z - t\right)}{z - a}\begin{array}{l}
\mathbf{if}\;y \le -29005.3023392045252:\\
\;\;\;\;x + \frac{y}{\frac{z - a}{z - t}}\\
\mathbf{elif}\;y \le 1.6173790047814861 \cdot 10^{38}:\\
\;\;\;\;x + \frac{y \cdot \left(z - t\right)}{z - a}\\
\mathbf{else}:\\
\;\;\;\;x + y \cdot \frac{z - t}{z - a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r677258 = x;
double r677259 = y;
double r677260 = z;
double r677261 = t;
double r677262 = r677260 - r677261;
double r677263 = r677259 * r677262;
double r677264 = a;
double r677265 = r677260 - r677264;
double r677266 = r677263 / r677265;
double r677267 = r677258 + r677266;
return r677267;
}
double f(double x, double y, double z, double t, double a) {
double r677268 = y;
double r677269 = -29005.302339204525;
bool r677270 = r677268 <= r677269;
double r677271 = x;
double r677272 = z;
double r677273 = a;
double r677274 = r677272 - r677273;
double r677275 = t;
double r677276 = r677272 - r677275;
double r677277 = r677274 / r677276;
double r677278 = r677268 / r677277;
double r677279 = r677271 + r677278;
double r677280 = 1.617379004781486e+38;
bool r677281 = r677268 <= r677280;
double r677282 = r677268 * r677276;
double r677283 = r677282 / r677274;
double r677284 = r677271 + r677283;
double r677285 = r677276 / r677274;
double r677286 = r677268 * r677285;
double r677287 = r677271 + r677286;
double r677288 = r677281 ? r677284 : r677287;
double r677289 = r677270 ? r677279 : r677288;
return r677289;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.7 |
|---|---|
| Target | 1.2 |
| Herbie | 0.5 |
if y < -29005.302339204525Initial program 22.8
rmApplied associate-/l*0.7
if -29005.302339204525 < y < 1.617379004781486e+38Initial program 0.3
if 1.617379004781486e+38 < y Initial program 26.5
rmApplied *-un-lft-identity26.5
Applied times-frac0.6
Simplified0.6
Final simplification0.5
herbie shell --seed 2020027
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, A"
:precision binary64
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (/ (* y (- z t)) (- z a))))