\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;z \cdot 3 \le 7.710678676523238637135715158350394310792 \cdot 10^{-280}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{0.3333333333333333148296162562473909929395}{\frac{y}{\frac{t}{z}}}\\
\mathbf{else}:\\
\;\;\;\;\left(x - 0.3333333333333333148296162562473909929395 \cdot \frac{y}{z}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\\
\end{array}double f(double x, double y, double z, double t) {
double r593978 = x;
double r593979 = y;
double r593980 = z;
double r593981 = 3.0;
double r593982 = r593980 * r593981;
double r593983 = r593979 / r593982;
double r593984 = r593978 - r593983;
double r593985 = t;
double r593986 = r593982 * r593979;
double r593987 = r593985 / r593986;
double r593988 = r593984 + r593987;
return r593988;
}
double f(double x, double y, double z, double t) {
double r593989 = z;
double r593990 = 3.0;
double r593991 = r593989 * r593990;
double r593992 = 7.710678676523239e-280;
bool r593993 = r593991 <= r593992;
double r593994 = x;
double r593995 = y;
double r593996 = r593995 / r593991;
double r593997 = r593994 - r593996;
double r593998 = 0.3333333333333333;
double r593999 = t;
double r594000 = r593999 / r593989;
double r594001 = r593995 / r594000;
double r594002 = r593998 / r594001;
double r594003 = r593997 + r594002;
double r594004 = r593995 / r593989;
double r594005 = r593998 * r594004;
double r594006 = r593994 - r594005;
double r594007 = r593991 * r593995;
double r594008 = r593999 / r594007;
double r594009 = r594006 + r594008;
double r594010 = r593993 ? r594003 : r594009;
return r594010;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.3 |
|---|---|
| Target | 1.8 |
| Herbie | 2.5 |
if (* z 3.0) < 7.710678676523239e-280Initial program 3.7
rmApplied associate-/r*1.9
Taylor expanded around 0 1.9
rmApplied associate-/l*1.9
if 7.710678676523239e-280 < (* z 3.0) Initial program 3.0
Taylor expanded around 0 3.1
Final simplification2.5
herbie shell --seed 2019294
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, H"
:precision binary64
:herbie-target
(+ (- x (/ y (* z 3))) (/ (/ t (* z 3)) y))
(+ (- x (/ y (* z 3))) (/ t (* (* z 3) y))))