\left(x - \frac{y}{z \cdot 3.0}\right) + \frac{t}{\left(z \cdot 3.0\right) \cdot y}\begin{array}{l}
\mathbf{if}\;y \le -3.4470093223023695 \cdot 10^{-06}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3.0}\right) + \frac{1}{\frac{z \cdot y}{\frac{t}{3.0}}}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3.0}\right) + \frac{\frac{\frac{t}{z}}{3.0}}{y}\\
\end{array}double f(double x, double y, double z, double t) {
double r31486232 = x;
double r31486233 = y;
double r31486234 = z;
double r31486235 = 3.0;
double r31486236 = r31486234 * r31486235;
double r31486237 = r31486233 / r31486236;
double r31486238 = r31486232 - r31486237;
double r31486239 = t;
double r31486240 = r31486236 * r31486233;
double r31486241 = r31486239 / r31486240;
double r31486242 = r31486238 + r31486241;
return r31486242;
}
double f(double x, double y, double z, double t) {
double r31486243 = y;
double r31486244 = -3.4470093223023695e-06;
bool r31486245 = r31486243 <= r31486244;
double r31486246 = x;
double r31486247 = z;
double r31486248 = 3.0;
double r31486249 = r31486247 * r31486248;
double r31486250 = r31486243 / r31486249;
double r31486251 = r31486246 - r31486250;
double r31486252 = 1.0;
double r31486253 = r31486247 * r31486243;
double r31486254 = t;
double r31486255 = r31486254 / r31486248;
double r31486256 = r31486253 / r31486255;
double r31486257 = r31486252 / r31486256;
double r31486258 = r31486251 + r31486257;
double r31486259 = r31486254 / r31486247;
double r31486260 = r31486259 / r31486248;
double r31486261 = r31486260 / r31486243;
double r31486262 = r31486251 + r31486261;
double r31486263 = r31486245 ? r31486258 : r31486262;
return r31486263;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.1 |
|---|---|
| Target | 1.6 |
| Herbie | 1.2 |
if y < -3.4470093223023695e-06Initial program 0.5
rmApplied associate-/r*1.9
rmApplied clear-num1.9
rmApplied *-un-lft-identity1.9
Applied times-frac1.9
Applied associate-/r*0.5
Simplified0.5
if -3.4470093223023695e-06 < y Initial program 4.1
rmApplied associate-/r*1.5
rmApplied associate-/r*1.5
Final simplification1.2
herbie shell --seed 2019165
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, H"
:herbie-target
(+ (- x (/ y (* z 3.0))) (/ (/ t (* z 3.0)) y))
(+ (- x (/ y (* z 3.0))) (/ t (* (* z 3.0) y))))