\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -3.7159402059423155 \cdot 10^{84} \lor \neg \left(z \le 9.3558992132836225 \cdot 10^{148}\right):\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \left(\sqrt[3]{\left(y \cdot z - x\right) \cdot \frac{1}{t \cdot z - x}} \cdot \sqrt[3]{\left(y \cdot z - x\right) \cdot \frac{1}{t \cdot z - x}}\right) \cdot \sqrt[3]{\left(y \cdot z - x\right) \cdot \frac{1}{t \cdot z - x}}}{x + 1}\\
\end{array}double f(double x, double y, double z, double t) {
double r942966 = x;
double r942967 = y;
double r942968 = z;
double r942969 = r942967 * r942968;
double r942970 = r942969 - r942966;
double r942971 = t;
double r942972 = r942971 * r942968;
double r942973 = r942972 - r942966;
double r942974 = r942970 / r942973;
double r942975 = r942966 + r942974;
double r942976 = 1.0;
double r942977 = r942966 + r942976;
double r942978 = r942975 / r942977;
return r942978;
}
double f(double x, double y, double z, double t) {
double r942979 = z;
double r942980 = -3.7159402059423155e+84;
bool r942981 = r942979 <= r942980;
double r942982 = 9.355899213283623e+148;
bool r942983 = r942979 <= r942982;
double r942984 = !r942983;
bool r942985 = r942981 || r942984;
double r942986 = x;
double r942987 = y;
double r942988 = t;
double r942989 = r942987 / r942988;
double r942990 = r942986 + r942989;
double r942991 = 1.0;
double r942992 = r942986 + r942991;
double r942993 = r942990 / r942992;
double r942994 = r942987 * r942979;
double r942995 = r942994 - r942986;
double r942996 = 1.0;
double r942997 = r942988 * r942979;
double r942998 = r942997 - r942986;
double r942999 = r942996 / r942998;
double r943000 = r942995 * r942999;
double r943001 = cbrt(r943000);
double r943002 = r943001 * r943001;
double r943003 = r943002 * r943001;
double r943004 = r942986 + r943003;
double r943005 = r943004 / r942992;
double r943006 = r942985 ? r942993 : r943005;
return r943006;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.8 |
|---|---|
| Target | 0.3 |
| Herbie | 3.6 |
if z < -3.7159402059423155e+84 or 9.355899213283623e+148 < z Initial program 19.2
Taylor expanded around inf 7.6
if -3.7159402059423155e+84 < z < 9.355899213283623e+148Initial program 1.5
rmApplied div-inv1.6
rmApplied add-cube-cbrt1.8
Final simplification3.6
herbie shell --seed 2020035
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:precision binary64
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1)))