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 -1.728574168981643158068947885483381777474 \cdot 10^{-279} \lor \neg \left(x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le 0.0\right):\\
\;\;\;\;x + \left(\left(\sqrt[3]{\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 \left(\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}\right)\right)} \cdot \sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \left(\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}\right)}\right) \cdot \sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \left(\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}\right)}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r441580 = x;
double r441581 = y;
double r441582 = z;
double r441583 = r441581 - r441582;
double r441584 = t;
double r441585 = r441584 - r441580;
double r441586 = r441583 * r441585;
double r441587 = a;
double r441588 = r441587 - r441582;
double r441589 = r441586 / r441588;
double r441590 = r441580 + r441589;
return r441590;
}
double f(double x, double y, double z, double t, double a) {
double r441591 = x;
double r441592 = y;
double r441593 = z;
double r441594 = r441592 - r441593;
double r441595 = t;
double r441596 = r441595 - r441591;
double r441597 = r441594 * r441596;
double r441598 = a;
double r441599 = r441598 - r441593;
double r441600 = r441597 / r441599;
double r441601 = r441591 + r441600;
double r441602 = -1.7285741689816432e-279;
bool r441603 = r441601 <= r441602;
double r441604 = 0.0;
bool r441605 = r441601 <= r441604;
double r441606 = !r441605;
bool r441607 = r441603 || r441606;
double r441608 = cbrt(r441594);
double r441609 = r441608 * r441608;
double r441610 = cbrt(r441599);
double r441611 = r441609 / r441610;
double r441612 = r441608 / r441610;
double r441613 = cbrt(r441596);
double r441614 = r441613 * r441613;
double r441615 = r441612 * r441614;
double r441616 = r441611 * r441615;
double r441617 = cbrt(r441616);
double r441618 = r441610 * r441610;
double r441619 = r441594 / r441618;
double r441620 = r441619 * r441614;
double r441621 = cbrt(r441620);
double r441622 = r441617 * r441621;
double r441623 = r441622 * r441621;
double r441624 = r441613 / r441610;
double r441625 = r441623 * r441624;
double r441626 = r441591 + r441625;
double r441627 = r441591 * r441592;
double r441628 = r441627 / r441593;
double r441629 = r441628 + r441595;
double r441630 = r441595 * r441592;
double r441631 = r441630 / r441593;
double r441632 = r441629 - r441631;
double r441633 = r441607 ? r441626 : r441632;
return r441633;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.8 |
|---|---|
| Target | 11.9 |
| Herbie | 8.7 |
if (+ x (/ (* (- y z) (- t x)) (- a z))) < -1.7285741689816432e-279 or 0.0 < (+ x (/ (* (- y z) (- t x)) (- a z))) Initial program 21.6
rmApplied add-cube-cbrt22.1
Applied times-frac8.2
rmApplied *-un-lft-identity8.2
Applied cbrt-prod8.2
Applied add-cube-cbrt8.4
Applied times-frac8.4
Applied associate-*r*7.7
Simplified7.7
rmApplied add-cube-cbrt7.9
rmApplied add-cube-cbrt7.8
Applied times-frac7.8
Applied associate-*l*7.8
if -1.7285741689816432e-279 < (+ x (/ (* (- y z) (- t x)) (- a z))) < 0.0Initial program 59.7
Taylor expanded around inf 18.8
Final simplification8.7
herbie shell --seed 2019209
(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.25361310560950359e188) (- t (* (/ y z) (- t x))) (if (< z 4.44670236911381103e64) (+ x (/ (- y z) (/ (- a z) (- t x)))) (- t (* (/ y z) (- t x)))))
(+ x (/ (* (- y z) (- t x)) (- a z))))