x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -1.997200158359207055640366838639272862727 \cdot 10^{-203} \lor \neg \left(a \le 9.06991007608417839599632409407686821888 \cdot 10^{-181}\right):\\
\;\;\;\;\left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot \left(\sqrt[3]{t} \cdot \frac{y - z}{a - z}\right) + \mathsf{fma}\left(-x, \frac{y - z}{a - z}, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(y, \frac{x}{z} - \frac{t}{z}, t\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r769702 = x;
double r769703 = y;
double r769704 = z;
double r769705 = r769703 - r769704;
double r769706 = t;
double r769707 = r769706 - r769702;
double r769708 = r769705 * r769707;
double r769709 = a;
double r769710 = r769709 - r769704;
double r769711 = r769708 / r769710;
double r769712 = r769702 + r769711;
return r769712;
}
double f(double x, double y, double z, double t, double a) {
double r769713 = a;
double r769714 = -1.997200158359207e-203;
bool r769715 = r769713 <= r769714;
double r769716 = 9.069910076084178e-181;
bool r769717 = r769713 <= r769716;
double r769718 = !r769717;
bool r769719 = r769715 || r769718;
double r769720 = t;
double r769721 = cbrt(r769720);
double r769722 = r769721 * r769721;
double r769723 = y;
double r769724 = z;
double r769725 = r769723 - r769724;
double r769726 = r769713 - r769724;
double r769727 = r769725 / r769726;
double r769728 = r769721 * r769727;
double r769729 = r769722 * r769728;
double r769730 = x;
double r769731 = -r769730;
double r769732 = fma(r769731, r769727, r769730);
double r769733 = r769729 + r769732;
double r769734 = r769730 / r769724;
double r769735 = r769720 / r769724;
double r769736 = r769734 - r769735;
double r769737 = fma(r769723, r769736, r769720);
double r769738 = r769719 ? r769733 : r769737;
return r769738;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 24.4 |
|---|---|
| Target | 11.9 |
| Herbie | 7.6 |
if a < -1.997200158359207e-203 or 9.069910076084178e-181 < a Initial program 23.1
Simplified9.9
rmApplied fma-udef9.9
rmApplied sub-neg9.9
Applied distribute-rgt-in9.9
Applied associate-+l+6.5
Simplified6.5
rmApplied add-cube-cbrt7.1
Applied associate-*l*7.1
if -1.997200158359207e-203 < a < 9.069910076084178e-181Initial program 31.1
Simplified21.6
Taylor expanded around inf 11.9
Simplified10.2
Final simplification7.6
herbie shell --seed 2019362 +o rules:numerics
(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))))