x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;\frac{z}{t} \le -8.828418023450618 \cdot 10^{-208}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\mathbf{elif}\;\frac{z}{t} \le 5.1135271015432274 \cdot 10^{-55}:\\
\;\;\;\;\left(\frac{z}{\frac{t}{y}} - \frac{x}{\frac{t}{z}}\right) + x\\
\mathbf{else}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\end{array}double f(double x, double y, double z, double t) {
double r30521193 = x;
double r30521194 = y;
double r30521195 = r30521194 - r30521193;
double r30521196 = z;
double r30521197 = t;
double r30521198 = r30521196 / r30521197;
double r30521199 = r30521195 * r30521198;
double r30521200 = r30521193 + r30521199;
return r30521200;
}
double f(double x, double y, double z, double t) {
double r30521201 = z;
double r30521202 = t;
double r30521203 = r30521201 / r30521202;
double r30521204 = -8.828418023450618e-208;
bool r30521205 = r30521203 <= r30521204;
double r30521206 = x;
double r30521207 = y;
double r30521208 = r30521207 - r30521206;
double r30521209 = r30521208 * r30521203;
double r30521210 = r30521206 + r30521209;
double r30521211 = 5.1135271015432274e-55;
bool r30521212 = r30521203 <= r30521211;
double r30521213 = r30521202 / r30521207;
double r30521214 = r30521201 / r30521213;
double r30521215 = r30521202 / r30521201;
double r30521216 = r30521206 / r30521215;
double r30521217 = r30521214 - r30521216;
double r30521218 = r30521217 + r30521206;
double r30521219 = r30521212 ? r30521218 : r30521210;
double r30521220 = r30521205 ? r30521210 : r30521219;
return r30521220;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.8 |
|---|---|
| Target | 2.0 |
| Herbie | 1.7 |
if (/ z t) < -8.828418023450618e-208 or 5.1135271015432274e-55 < (/ z t) Initial program 2.0
if -8.828418023450618e-208 < (/ z t) < 5.1135271015432274e-55Initial program 1.4
Taylor expanded around 0 2.2
rmApplied associate-/l*1.3
rmApplied associate-/l*1.2
Final simplification1.7
herbie shell --seed 2019168 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"
:herbie-target
(if (< (* (- y x) (/ z t)) -1013646692435.8867) (+ x (/ (- y x) (/ t z))) (if (< (* (- y x) (/ z t)) -0.0) (+ x (/ (* (- y x) z) t)) (+ x (/ (- y x) (/ t z)))))
(+ x (* (- y x) (/ z t))))