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.75564871917852029 \cdot 10^{-299}:\\
\;\;\;\;x + \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 \frac{t - x}{\sqrt[3]{a - z}}\right)} \cdot \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 \frac{t - x}{\sqrt[3]{a - z}}\right)}\right) \cdot \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 \frac{t - x}{\sqrt[3]{a - z}}\right)}\\
\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 + \frac{\frac{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}}{\sqrt[3]{a - z}}}{\sqrt[3]{\sqrt[3]{a - z}}} \cdot \left(\frac{\frac{\sqrt[3]{y - z}}{\sqrt[3]{a - z}}}{\sqrt[3]{\sqrt[3]{a - z}}} \cdot \frac{t - x}{\sqrt[3]{\sqrt[3]{a - z}}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r637412 = x;
double r637413 = y;
double r637414 = z;
double r637415 = r637413 - r637414;
double r637416 = t;
double r637417 = r637416 - r637412;
double r637418 = r637415 * r637417;
double r637419 = a;
double r637420 = r637419 - r637414;
double r637421 = r637418 / r637420;
double r637422 = r637412 + r637421;
return r637422;
}
double f(double x, double y, double z, double t, double a) {
double r637423 = x;
double r637424 = y;
double r637425 = z;
double r637426 = r637424 - r637425;
double r637427 = t;
double r637428 = r637427 - r637423;
double r637429 = r637426 * r637428;
double r637430 = a;
double r637431 = r637430 - r637425;
double r637432 = r637429 / r637431;
double r637433 = r637423 + r637432;
double r637434 = -3.7556487191785203e-299;
bool r637435 = r637433 <= r637434;
double r637436 = cbrt(r637426);
double r637437 = r637436 * r637436;
double r637438 = cbrt(r637431);
double r637439 = r637437 / r637438;
double r637440 = r637436 / r637438;
double r637441 = r637428 / r637438;
double r637442 = r637440 * r637441;
double r637443 = r637439 * r637442;
double r637444 = cbrt(r637443);
double r637445 = r637444 * r637444;
double r637446 = r637445 * r637444;
double r637447 = r637423 + r637446;
double r637448 = 0.0;
bool r637449 = r637433 <= r637448;
double r637450 = r637423 * r637424;
double r637451 = r637450 / r637425;
double r637452 = r637451 + r637427;
double r637453 = r637427 * r637424;
double r637454 = r637453 / r637425;
double r637455 = r637452 - r637454;
double r637456 = cbrt(r637438);
double r637457 = r637439 / r637456;
double r637458 = r637440 / r637456;
double r637459 = r637428 / r637456;
double r637460 = r637458 * r637459;
double r637461 = r637457 * r637460;
double r637462 = r637423 + r637461;
double r637463 = r637449 ? r637455 : r637462;
double r637464 = r637435 ? r637447 : r637463;
return r637464;
}




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.0 |
| Herbie | 9.1 |
if (+ x (/ (* (- y z) (- t x)) (- a z))) < -3.7556487191785203e-299Initial program 20.8
rmApplied add-cube-cbrt21.3
Applied times-frac8.6
rmApplied add-cube-cbrt8.5
Applied times-frac8.5
Applied associate-*l*8.1
rmApplied add-cube-cbrt8.4
if -3.7556487191785203e-299 < (+ x (/ (* (- y z) (- t x)) (- a z))) < 0.0Initial program 60.9
Taylor expanded around inf 18.2
if 0.0 < (+ x (/ (* (- y z) (- t x)) (- a z))) Initial program 21.2
rmApplied add-cube-cbrt21.7
Applied times-frac8.6
rmApplied add-cube-cbrt8.7
Applied cbrt-prod8.7
Applied *-un-lft-identity8.7
Applied times-frac8.7
Applied associate-*r*8.4
Simplified8.4
rmApplied cbrt-prod8.6
Applied add-cube-cbrt8.6
Applied times-frac8.6
Applied times-frac8.6
Applied associate-*l*8.2
Final simplification9.1
herbie shell --seed 2020036
(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))))