x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le -2.869692918617161890978375910455662995568 \cdot 10^{-291}:\\
\;\;\;\;x + \left(\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{\sqrt[3]{t - x} \cdot \left(\left(\sqrt[3]{\sqrt[3]{t - x}} \cdot \sqrt[3]{\sqrt[3]{t - x}}\right) \cdot \sqrt[3]{\sqrt[3]{t - x}}\right)}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z}}}\\
\mathbf{elif}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le 0.0:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \left(\frac{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}}{\sqrt[3]{a - z}} \cdot \left(\frac{\sqrt[3]{y - z}}{\sqrt[3]{a - z}} \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right)\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z}}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r384603 = x;
double r384604 = y;
double r384605 = z;
double r384606 = r384604 - r384605;
double r384607 = t;
double r384608 = r384607 - r384603;
double r384609 = r384606 * r384608;
double r384610 = a;
double r384611 = r384610 - r384605;
double r384612 = r384609 / r384611;
double r384613 = r384603 + r384612;
return r384613;
}
double f(double x, double y, double z, double t, double a) {
double r384614 = x;
double r384615 = y;
double r384616 = z;
double r384617 = r384615 - r384616;
double r384618 = t;
double r384619 = r384618 - r384614;
double r384620 = r384617 * r384619;
double r384621 = a;
double r384622 = r384621 - r384616;
double r384623 = r384620 / r384622;
double r384624 = r384614 + r384623;
double r384625 = -2.869692918617162e-291;
bool r384626 = r384624 <= r384625;
double r384627 = cbrt(r384622);
double r384628 = r384627 * r384627;
double r384629 = r384617 / r384628;
double r384630 = cbrt(r384619);
double r384631 = cbrt(r384630);
double r384632 = r384631 * r384631;
double r384633 = r384632 * r384631;
double r384634 = r384630 * r384633;
double r384635 = cbrt(r384628);
double r384636 = r384634 / r384635;
double r384637 = r384629 * r384636;
double r384638 = cbrt(r384627);
double r384639 = r384630 / r384638;
double r384640 = r384637 * r384639;
double r384641 = r384614 + r384640;
double r384642 = 0.0;
bool r384643 = r384624 <= r384642;
double r384644 = r384614 * r384615;
double r384645 = r384644 / r384616;
double r384646 = r384645 + r384618;
double r384647 = r384618 * r384615;
double r384648 = r384647 / r384616;
double r384649 = r384646 - r384648;
double r384650 = cbrt(r384617);
double r384651 = r384650 * r384650;
double r384652 = r384651 / r384627;
double r384653 = r384650 / r384627;
double r384654 = r384630 * r384630;
double r384655 = r384654 / r384635;
double r384656 = r384653 * r384655;
double r384657 = r384652 * r384656;
double r384658 = r384657 * r384639;
double r384659 = r384614 + r384658;
double r384660 = r384643 ? r384649 : r384659;
double r384661 = r384626 ? r384641 : r384660;
return r384661;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.2 |
|---|---|
| Target | 12.2 |
| Herbie | 8.4 |
if (+ x (/ (* (- y z) (- t x)) (- a z))) < -2.869692918617162e-291Initial program 21.7
rmApplied add-cube-cbrt22.2
Applied times-frac8.5
rmApplied add-cube-cbrt8.6
Applied cbrt-prod8.6
Applied add-cube-cbrt8.8
Applied times-frac8.8
Applied associate-*r*8.0
rmApplied add-cube-cbrt8.1
if -2.869692918617162e-291 < (+ x (/ (* (- y z) (- t x)) (- a z))) < 0.0Initial program 60.0
Taylor expanded around inf 18.6
if 0.0 < (+ x (/ (* (- y z) (- t x)) (- a z))) Initial program 20.2
rmApplied add-cube-cbrt20.7
Applied times-frac7.6
rmApplied add-cube-cbrt7.6
Applied cbrt-prod7.7
Applied add-cube-cbrt7.8
Applied times-frac7.8
Applied associate-*r*7.0
rmApplied add-cube-cbrt7.0
Applied times-frac7.0
Applied associate-*l*6.8
rmApplied *-un-lft-identity6.8
Applied cbrt-prod6.8
Simplified6.8
Final simplification8.4
herbie shell --seed 2019323
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< z -1.2536131056095036e+188) (- t (* (/ y z) (- t x))) (if (< z 4.446702369113811e+64) (+ x (/ (- y z) (/ (- a z) (- t x)))) (- t (* (/ y z) (- t x)))))
(+ x (/ (* (- y z) (- t x)) (- a z))))