\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -4.62236662418381568 \cdot 10^{27}:\\
\;\;\;\;\left(x + y\right) - \frac{z - t}{\frac{a - t}{y}}\\
\mathbf{elif}\;a \le -1.30764370089987406 \cdot 10^{-192}:\\
\;\;\;\;x + \left(y - \frac{\left(z - t\right) \cdot y}{a - t}\right)\\
\mathbf{elif}\;a \le 3.13833703943278678 \cdot 10^{-175}:\\
\;\;\;\;\frac{z \cdot y}{t} + x\\
\mathbf{elif}\;a \le 2.0626164423737537 \cdot 10^{-64}:\\
\;\;\;\;\left(x + y\right) - \frac{z - t}{\frac{a - t}{y}}\\
\mathbf{elif}\;a \le 4.2051587456830085 \cdot 10^{57}:\\
\;\;\;\;\frac{z \cdot y}{t} + x\\
\mathbf{else}:\\
\;\;\;\;\left(x + y\right) - \frac{z - t}{\sqrt{a - t}} \cdot \frac{y}{\sqrt{a - t}}\\
\end{array}double code(double x, double y, double z, double t, double a) {
return ((double) (((double) (x + y)) - ((double) (((double) (((double) (z - t)) * y)) / ((double) (a - t))))));
}
double code(double x, double y, double z, double t, double a) {
double VAR;
if ((a <= -4.6223666241838157e+27)) {
VAR = ((double) (((double) (x + y)) - ((double) (((double) (z - t)) / ((double) (((double) (a - t)) / y))))));
} else {
double VAR_1;
if ((a <= -1.307643700899874e-192)) {
VAR_1 = ((double) (x + ((double) (y - ((double) (((double) (((double) (z - t)) * y)) / ((double) (a - t))))))));
} else {
double VAR_2;
if ((a <= 3.138337039432787e-175)) {
VAR_2 = ((double) (((double) (((double) (z * y)) / t)) + x));
} else {
double VAR_3;
if ((a <= 2.0626164423737537e-64)) {
VAR_3 = ((double) (((double) (x + y)) - ((double) (((double) (z - t)) / ((double) (((double) (a - t)) / y))))));
} else {
double VAR_4;
if ((a <= 4.2051587456830085e+57)) {
VAR_4 = ((double) (((double) (((double) (z * y)) / t)) + x));
} else {
VAR_4 = ((double) (((double) (x + y)) - ((double) (((double) (((double) (z - t)) / ((double) sqrt(((double) (a - t)))))) * ((double) (y / ((double) sqrt(((double) (a - t))))))))));
}
VAR_3 = VAR_4;
}
VAR_2 = VAR_3;
}
VAR_1 = VAR_2;
}
VAR = VAR_1;
}
return VAR;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 16.3 |
|---|---|
| Target | 8.0 |
| Herbie | 11.3 |
if a < -4.62236662418381568e27 or 3.13833703943278678e-175 < a < 2.0626164423737537e-64Initial program 14.8
rmApplied associate-/l*8.8
if -4.62236662418381568e27 < a < -1.30764370089987406e-192Initial program 17.0
rmApplied associate--l+13.8
if -1.30764370089987406e-192 < a < 3.13833703943278678e-175 or 2.0626164423737537e-64 < a < 4.2051587456830085e57Initial program 19.3
Taylor expanded around inf 14.8
if 4.2051587456830085e57 < a Initial program 14.1
rmApplied add-sqr-sqrt17.0
Applied times-frac8.5
Final simplification11.3
herbie shell --seed 2020175
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(if (< (- (+ x y) (/ (* (- z t) y) (- a t))) -1.3664970889390727e-07) (- (+ y x) (* (* (- z t) (/ 1.0 (- a t))) y)) (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) 1.4754293444577233e-239) (/ (- (* y (- a z)) (* x t)) (- a t)) (- (+ y x) (* (* (- z t) (/ 1.0 (- a t))) y))))
(- (+ x y) (/ (* (- z t) y) (- a t))))