\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;y \le 1.5801305016597386 \cdot 10^{-18}:\\
\;\;\;\;\left(x - \frac{1}{\frac{z \cdot 3}{y}}\right) + \frac{\frac{t}{z \cdot 3}}{y}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{1}{z} \cdot \frac{\frac{t}{3}}{y}\\
\end{array}double f(double x, double y, double z, double t) {
double r552390 = x;
double r552391 = y;
double r552392 = z;
double r552393 = 3.0;
double r552394 = r552392 * r552393;
double r552395 = r552391 / r552394;
double r552396 = r552390 - r552395;
double r552397 = t;
double r552398 = r552394 * r552391;
double r552399 = r552397 / r552398;
double r552400 = r552396 + r552399;
return r552400;
}
double f(double x, double y, double z, double t) {
double r552401 = y;
double r552402 = 1.5801305016597386e-18;
bool r552403 = r552401 <= r552402;
double r552404 = x;
double r552405 = 1.0;
double r552406 = z;
double r552407 = 3.0;
double r552408 = r552406 * r552407;
double r552409 = r552408 / r552401;
double r552410 = r552405 / r552409;
double r552411 = r552404 - r552410;
double r552412 = t;
double r552413 = r552412 / r552408;
double r552414 = r552413 / r552401;
double r552415 = r552411 + r552414;
double r552416 = r552401 / r552408;
double r552417 = r552404 - r552416;
double r552418 = r552405 / r552406;
double r552419 = r552412 / r552407;
double r552420 = r552419 / r552401;
double r552421 = r552418 * r552420;
double r552422 = r552417 + r552421;
double r552423 = r552403 ? r552415 : r552422;
return r552423;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.9 |
|---|---|
| Target | 1.6 |
| Herbie | 1.2 |
if y < 1.5801305016597386e-18Initial program 5.1
rmApplied associate-/r*1.6
rmApplied clear-num1.6
if 1.5801305016597386e-18 < y Initial program 0.5
rmApplied associate-/r*1.6
rmApplied *-un-lft-identity1.6
Applied *-un-lft-identity1.6
Applied times-frac1.7
Applied times-frac0.2
Simplified0.2
Final simplification1.2
herbie shell --seed 2019198
(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))))