\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;t \le -9.83393402370477073 \cdot 10^{176} \lor \neg \left(t \le 1.659061563989157 \cdot 10^{220}\right):\\
\;\;\;\;\frac{z \cdot y}{t} + x\\
\mathbf{else}:\\
\;\;\;\;\left(x + y\right) - \left(\sqrt[3]{\frac{z - t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}} \cdot \sqrt[3]{\frac{z - t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}}\right) \cdot \left(\left(\sqrt[3]{z - t} \cdot \sqrt[3]{\frac{1}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}}\right) \cdot \frac{y}{\sqrt[3]{a - t}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r604164 = x;
double r604165 = y;
double r604166 = r604164 + r604165;
double r604167 = z;
double r604168 = t;
double r604169 = r604167 - r604168;
double r604170 = r604169 * r604165;
double r604171 = a;
double r604172 = r604171 - r604168;
double r604173 = r604170 / r604172;
double r604174 = r604166 - r604173;
return r604174;
}
double f(double x, double y, double z, double t, double a) {
double r604175 = t;
double r604176 = -9.833934023704771e+176;
bool r604177 = r604175 <= r604176;
double r604178 = 1.659061563989157e+220;
bool r604179 = r604175 <= r604178;
double r604180 = !r604179;
bool r604181 = r604177 || r604180;
double r604182 = z;
double r604183 = y;
double r604184 = r604182 * r604183;
double r604185 = r604184 / r604175;
double r604186 = x;
double r604187 = r604185 + r604186;
double r604188 = r604186 + r604183;
double r604189 = r604182 - r604175;
double r604190 = a;
double r604191 = r604190 - r604175;
double r604192 = cbrt(r604191);
double r604193 = r604192 * r604192;
double r604194 = r604189 / r604193;
double r604195 = cbrt(r604194);
double r604196 = r604195 * r604195;
double r604197 = cbrt(r604189);
double r604198 = 1.0;
double r604199 = r604198 / r604193;
double r604200 = cbrt(r604199);
double r604201 = r604197 * r604200;
double r604202 = r604183 / r604192;
double r604203 = r604201 * r604202;
double r604204 = r604196 * r604203;
double r604205 = r604188 - r604204;
double r604206 = r604181 ? r604187 : r604205;
return r604206;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 16.5 |
|---|---|
| Target | 8.4 |
| Herbie | 10.0 |
if t < -9.833934023704771e+176 or 1.659061563989157e+220 < t Initial program 34.0
Taylor expanded around inf 15.2
if -9.833934023704771e+176 < t < 1.659061563989157e+220Initial program 12.3
rmApplied add-cube-cbrt12.5
Applied times-frac8.7
rmApplied add-cube-cbrt8.7
Applied associate-*l*8.7
rmApplied div-inv8.7
Applied cbrt-prod8.7
Final simplification10.0
herbie shell --seed 2020018
(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))))