\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -9.34367984237828866 \cdot 10^{-178} \lor \neg \left(a \le 4.5065014455694435 \cdot 10^{-66}\right):\\
\;\;\;\;\left(x + y\right) - \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \frac{z - t}{\frac{\sqrt[3]{a - t}}{\sqrt[3]{y}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{z \cdot y}{t} + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r643749 = x;
double r643750 = y;
double r643751 = r643749 + r643750;
double r643752 = z;
double r643753 = t;
double r643754 = r643752 - r643753;
double r643755 = r643754 * r643750;
double r643756 = a;
double r643757 = r643756 - r643753;
double r643758 = r643755 / r643757;
double r643759 = r643751 - r643758;
return r643759;
}
double f(double x, double y, double z, double t, double a) {
double r643760 = a;
double r643761 = -9.343679842378289e-178;
bool r643762 = r643760 <= r643761;
double r643763 = 4.5065014455694435e-66;
bool r643764 = r643760 <= r643763;
double r643765 = !r643764;
bool r643766 = r643762 || r643765;
double r643767 = x;
double r643768 = y;
double r643769 = r643767 + r643768;
double r643770 = cbrt(r643768);
double r643771 = r643770 * r643770;
double r643772 = t;
double r643773 = r643760 - r643772;
double r643774 = cbrt(r643773);
double r643775 = r643774 * r643774;
double r643776 = r643771 / r643775;
double r643777 = z;
double r643778 = r643777 - r643772;
double r643779 = r643774 / r643770;
double r643780 = r643778 / r643779;
double r643781 = r643776 * r643780;
double r643782 = r643769 - r643781;
double r643783 = r643777 * r643768;
double r643784 = r643783 / r643772;
double r643785 = r643784 + r643767;
double r643786 = r643766 ? r643782 : r643785;
return r643786;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 16.6 |
|---|---|
| Target | 8.5 |
| Herbie | 9.0 |
if a < -9.343679842378289e-178 or 4.5065014455694435e-66 < a Initial program 15.0
rmApplied associate-/l*9.1
rmApplied add-cube-cbrt9.2
Applied add-cube-cbrt9.2
Applied times-frac9.2
Applied *-un-lft-identity9.2
Applied times-frac8.3
Simplified8.3
if -9.343679842378289e-178 < a < 4.5065014455694435e-66Initial program 20.7
Taylor expanded around inf 10.7
Final simplification9.0
herbie shell --seed 2020027
(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 (- 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 (- a t))) y))))
(- (+ x y) (/ (* (- z t) y) (- a t))))