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 -3.956280165893758193874340988906388103674 \cdot 10^{-277}:\\
\;\;\;\;x + \frac{\frac{\left(\sqrt[3]{y - z} \cdot \left(\sqrt[3]{\sqrt[3]{y - z}} \cdot \sqrt[3]{\sqrt[3]{y - z}}\right)\right) \cdot \sqrt[3]{\sqrt[3]{y - z}}}{\sqrt[3]{a - z}}}{\sqrt[3]{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}} \cdot \left(\frac{\frac{\sqrt[3]{y - z}}{\sqrt[3]{a - z}}}{\sqrt[3]{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}} \cdot \frac{t - x}{\sqrt[3]{\sqrt[3]{a - z}}}\right)\\
\mathbf{elif}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le 0.0:\\
\;\;\;\;\left(t + \frac{x \cdot y}{z}\right) - \frac{t \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}} \cdot \sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right) \cdot \left(\frac{\sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}} \cdot \frac{t - x}{\sqrt[3]{\sqrt[3]{a - z}}}\right) + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r44558535 = x;
double r44558536 = y;
double r44558537 = z;
double r44558538 = r44558536 - r44558537;
double r44558539 = t;
double r44558540 = r44558539 - r44558535;
double r44558541 = r44558538 * r44558540;
double r44558542 = a;
double r44558543 = r44558542 - r44558537;
double r44558544 = r44558541 / r44558543;
double r44558545 = r44558535 + r44558544;
return r44558545;
}
double f(double x, double y, double z, double t, double a) {
double r44558546 = x;
double r44558547 = y;
double r44558548 = z;
double r44558549 = r44558547 - r44558548;
double r44558550 = t;
double r44558551 = r44558550 - r44558546;
double r44558552 = r44558549 * r44558551;
double r44558553 = a;
double r44558554 = r44558553 - r44558548;
double r44558555 = r44558552 / r44558554;
double r44558556 = r44558546 + r44558555;
double r44558557 = -3.956280165893758e-277;
bool r44558558 = r44558556 <= r44558557;
double r44558559 = cbrt(r44558549);
double r44558560 = cbrt(r44558559);
double r44558561 = r44558560 * r44558560;
double r44558562 = r44558559 * r44558561;
double r44558563 = r44558562 * r44558560;
double r44558564 = cbrt(r44558554);
double r44558565 = r44558563 / r44558564;
double r44558566 = r44558564 * r44558564;
double r44558567 = cbrt(r44558566);
double r44558568 = cbrt(r44558567);
double r44558569 = r44558568 * r44558568;
double r44558570 = r44558565 / r44558569;
double r44558571 = r44558559 / r44558564;
double r44558572 = r44558571 / r44558568;
double r44558573 = cbrt(r44558564);
double r44558574 = r44558551 / r44558573;
double r44558575 = r44558572 * r44558574;
double r44558576 = r44558570 * r44558575;
double r44558577 = r44558546 + r44558576;
double r44558578 = 0.0;
bool r44558579 = r44558556 <= r44558578;
double r44558580 = r44558546 * r44558547;
double r44558581 = r44558580 / r44558548;
double r44558582 = r44558550 + r44558581;
double r44558583 = r44558550 * r44558547;
double r44558584 = r44558583 / r44558548;
double r44558585 = r44558582 - r44558584;
double r44558586 = r44558549 / r44558566;
double r44558587 = cbrt(r44558586);
double r44558588 = r44558587 * r44558587;
double r44558589 = r44558587 / r44558567;
double r44558590 = r44558589 * r44558574;
double r44558591 = r44558588 * r44558590;
double r44558592 = r44558591 + r44558546;
double r44558593 = r44558579 ? r44558585 : r44558592;
double r44558594 = r44558558 ? r44558577 : r44558593;
return r44558594;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.9 |
|---|---|
| Target | 11.8 |
| Herbie | 9.3 |
if (+ x (/ (* (- y z) (- t x)) (- a z))) < -3.956280165893758e-277Initial program 23.1
rmApplied add-cube-cbrt23.6
Applied times-frac8.6
rmApplied add-cube-cbrt8.7
Applied cbrt-prod8.8
Applied *-un-lft-identity8.8
Applied times-frac8.8
Applied associate-*r*8.5
Simplified8.5
rmApplied add-cube-cbrt8.7
Applied add-cube-cbrt8.6
Applied times-frac8.6
Applied times-frac8.6
Applied associate-*l*8.1
rmApplied add-cube-cbrt8.2
Applied associate-*r*8.2
if -3.956280165893758e-277 < (+ x (/ (* (- y z) (- t x)) (- a z))) < 0.0Initial program 58.8
Taylor expanded around inf 20.7
if 0.0 < (+ x (/ (* (- y z) (- t x)) (- a z))) Initial program 20.9
rmApplied add-cube-cbrt21.4
Applied times-frac8.5
rmApplied add-cube-cbrt8.5
Applied cbrt-prod8.6
Applied *-un-lft-identity8.6
Applied times-frac8.6
Applied associate-*r*8.3
Simplified8.3
rmApplied *-un-lft-identity8.3
Applied add-cube-cbrt8.4
Applied times-frac8.4
Applied associate-*l*8.4
Final simplification9.3
herbie shell --seed 2019174
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
: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))))