x + \frac{y \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;y \le -7.060274994323644065660680161698480954589 \cdot 10^{-76}:\\
\;\;\;\;x + \frac{y}{\frac{a - t}{z - t}}\\
\mathbf{elif}\;y \le 1.604883138641033711442777835307291618104 \cdot 10^{-75}:\\
\;\;\;\;x + \frac{y \cdot \left(z - t\right)}{a - t}\\
\mathbf{else}:\\
\;\;\;\;x + y \cdot \frac{z - t}{a - t}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r572250 = x;
double r572251 = y;
double r572252 = z;
double r572253 = t;
double r572254 = r572252 - r572253;
double r572255 = r572251 * r572254;
double r572256 = a;
double r572257 = r572256 - r572253;
double r572258 = r572255 / r572257;
double r572259 = r572250 + r572258;
return r572259;
}
double f(double x, double y, double z, double t, double a) {
double r572260 = y;
double r572261 = -7.060274994323644e-76;
bool r572262 = r572260 <= r572261;
double r572263 = x;
double r572264 = a;
double r572265 = t;
double r572266 = r572264 - r572265;
double r572267 = z;
double r572268 = r572267 - r572265;
double r572269 = r572266 / r572268;
double r572270 = r572260 / r572269;
double r572271 = r572263 + r572270;
double r572272 = 1.6048831386410337e-75;
bool r572273 = r572260 <= r572272;
double r572274 = r572260 * r572268;
double r572275 = r572274 / r572266;
double r572276 = r572263 + r572275;
double r572277 = r572268 / r572266;
double r572278 = r572260 * r572277;
double r572279 = r572263 + r572278;
double r572280 = r572273 ? r572276 : r572279;
double r572281 = r572262 ? r572271 : r572280;
return r572281;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.6 |
|---|---|
| Target | 1.2 |
| Herbie | 0.5 |
if y < -7.060274994323644e-76Initial program 17.6
rmApplied associate-/l*0.7
if -7.060274994323644e-76 < y < 1.6048831386410337e-75Initial program 0.4
rmApplied *-un-lft-identity0.4
Applied times-frac2.3
Simplified2.3
rmApplied associate-*r/0.4
if 1.6048831386410337e-75 < y Initial program 18.0
rmApplied *-un-lft-identity18.0
Applied times-frac0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019354
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(+ x (/ y (/ (- a t) (- z t))))
(+ x (/ (* y (- z t)) (- a t))))