\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -1.323154873685477 \cdot 10^{-128} \lor \neg \left(a \le 4.98795360344997505 \cdot 10^{-192}\right):\\
\;\;\;\;x + \left(y - \left(\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}\right) \cdot \frac{\frac{\sqrt[3]{z - t}}{\sqrt[3]{a - t}} \cdot \frac{y}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t}}\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{z \cdot y}{t}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r581617 = x;
double r581618 = y;
double r581619 = r581617 + r581618;
double r581620 = z;
double r581621 = t;
double r581622 = r581620 - r581621;
double r581623 = r581622 * r581618;
double r581624 = a;
double r581625 = r581624 - r581621;
double r581626 = r581623 / r581625;
double r581627 = r581619 - r581626;
return r581627;
}
double f(double x, double y, double z, double t, double a) {
double r581628 = a;
double r581629 = -1.323154873685477e-128;
bool r581630 = r581628 <= r581629;
double r581631 = 4.987953603449975e-192;
bool r581632 = r581628 <= r581631;
double r581633 = !r581632;
bool r581634 = r581630 || r581633;
double r581635 = x;
double r581636 = y;
double r581637 = z;
double r581638 = t;
double r581639 = r581637 - r581638;
double r581640 = cbrt(r581639);
double r581641 = r581640 * r581640;
double r581642 = r581628 - r581638;
double r581643 = cbrt(r581642);
double r581644 = r581640 / r581643;
double r581645 = r581636 / r581643;
double r581646 = r581644 * r581645;
double r581647 = r581646 / r581643;
double r581648 = r581641 * r581647;
double r581649 = r581636 - r581648;
double r581650 = r581635 + r581649;
double r581651 = r581637 * r581636;
double r581652 = r581651 / r581638;
double r581653 = r581635 + r581652;
double r581654 = r581634 ? r581650 : r581653;
return r581654;
}




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.2 |
| Herbie | 7.7 |
if a < -1.323154873685477e-128 or 4.987953603449975e-192 < a Initial program 15.3
rmApplied add-cube-cbrt15.5
Applied times-frac9.2
rmApplied add-cube-cbrt9.3
Applied times-frac9.3
Applied associate-*l*8.9
rmApplied associate--l+6.6
rmApplied div-inv7.0
Applied associate-*l*7.6
Simplified7.4
if -1.323154873685477e-128 < a < 4.987953603449975e-192Initial program 21.2
rmApplied add-cube-cbrt21.4
Applied times-frac20.6
rmApplied add-cube-cbrt20.6
Applied times-frac20.6
Applied associate-*l*18.9
rmApplied associate--l+11.9
Taylor expanded around inf 8.6
Final simplification7.7
herbie shell --seed 2020046
(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))))