\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;t \le -3097409.71754964394:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{z \cdot \left(3 \cdot y\right)}\\
\mathbf{elif}\;t \le 2.78038066636221327 \cdot 10^{-9}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{1}{z \cdot 3} \cdot \frac{t}{y}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(0.333333333333333315, \frac{t}{z \cdot y}, x - 0.333333333333333315 \cdot \frac{y}{z}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r682971 = x;
double r682972 = y;
double r682973 = z;
double r682974 = 3.0;
double r682975 = r682973 * r682974;
double r682976 = r682972 / r682975;
double r682977 = r682971 - r682976;
double r682978 = t;
double r682979 = r682975 * r682972;
double r682980 = r682978 / r682979;
double r682981 = r682977 + r682980;
return r682981;
}
double f(double x, double y, double z, double t) {
double r682982 = t;
double r682983 = -3097409.717549644;
bool r682984 = r682982 <= r682983;
double r682985 = x;
double r682986 = y;
double r682987 = z;
double r682988 = 3.0;
double r682989 = r682987 * r682988;
double r682990 = r682986 / r682989;
double r682991 = r682985 - r682990;
double r682992 = r682988 * r682986;
double r682993 = r682987 * r682992;
double r682994 = r682982 / r682993;
double r682995 = r682991 + r682994;
double r682996 = 2.7803806663622133e-09;
bool r682997 = r682982 <= r682996;
double r682998 = 1.0;
double r682999 = r682998 / r682989;
double r683000 = r682982 / r682986;
double r683001 = r682999 * r683000;
double r683002 = r682991 + r683001;
double r683003 = 0.3333333333333333;
double r683004 = r682987 * r682986;
double r683005 = r682982 / r683004;
double r683006 = r682986 / r682987;
double r683007 = r683003 * r683006;
double r683008 = r682985 - r683007;
double r683009 = fma(r683003, r683005, r683008);
double r683010 = r682997 ? r683002 : r683009;
double r683011 = r682984 ? r682995 : r683010;
return r683011;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 3.6 |
|---|---|
| Target | 1.9 |
| Herbie | 0.3 |
if t < -3097409.717549644Initial program 0.4
rmApplied associate-*l*0.3
if -3097409.717549644 < t < 2.7803806663622133e-09Initial program 6.0
rmApplied *-un-lft-identity6.0
Applied times-frac0.2
if 2.7803806663622133e-09 < t Initial program 0.5
Taylor expanded around 0 0.5
Simplified0.5
Final simplification0.3
herbie shell --seed 2020039 +o rules:numerics
(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))))