\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;z \le -2.225043477922090241184253274805260914534 \cdot 10^{-45}:\\
\;\;\;\;\frac{t}{z \cdot \left(y \cdot 3\right)} + \left(x - \frac{y}{3 \cdot z}\right)\\
\mathbf{elif}\;z \le 4.972548460705735309806705638542917117847 \cdot 10^{-55}:\\
\;\;\;\;\frac{1}{z} \cdot \frac{\frac{t}{3}}{y} + \left(x - \frac{y}{3 \cdot z}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{t}{z \cdot \left(y \cdot 3\right)} + \left(x - \frac{y}{3 \cdot z}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r35399565 = x;
double r35399566 = y;
double r35399567 = z;
double r35399568 = 3.0;
double r35399569 = r35399567 * r35399568;
double r35399570 = r35399566 / r35399569;
double r35399571 = r35399565 - r35399570;
double r35399572 = t;
double r35399573 = r35399569 * r35399566;
double r35399574 = r35399572 / r35399573;
double r35399575 = r35399571 + r35399574;
return r35399575;
}
double f(double x, double y, double z, double t) {
double r35399576 = z;
double r35399577 = -2.2250434779220902e-45;
bool r35399578 = r35399576 <= r35399577;
double r35399579 = t;
double r35399580 = y;
double r35399581 = 3.0;
double r35399582 = r35399580 * r35399581;
double r35399583 = r35399576 * r35399582;
double r35399584 = r35399579 / r35399583;
double r35399585 = x;
double r35399586 = r35399581 * r35399576;
double r35399587 = r35399580 / r35399586;
double r35399588 = r35399585 - r35399587;
double r35399589 = r35399584 + r35399588;
double r35399590 = 4.972548460705735e-55;
bool r35399591 = r35399576 <= r35399590;
double r35399592 = 1.0;
double r35399593 = r35399592 / r35399576;
double r35399594 = r35399579 / r35399581;
double r35399595 = r35399594 / r35399580;
double r35399596 = r35399593 * r35399595;
double r35399597 = r35399596 + r35399588;
double r35399598 = r35399591 ? r35399597 : r35399589;
double r35399599 = r35399578 ? r35399589 : r35399598;
return r35399599;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.7 |
|---|---|
| Target | 1.6 |
| Herbie | 0.5 |
if z < -2.2250434779220902e-45 or 4.972548460705735e-55 < z Initial program 0.5
rmApplied associate-*l*0.5
if -2.2250434779220902e-45 < z < 4.972548460705735e-55Initial program 13.5
rmApplied associate-/r*3.6
rmApplied *-un-lft-identity3.6
Applied *-un-lft-identity3.6
Applied times-frac3.6
Applied times-frac0.3
Simplified0.3
Final simplification0.5
herbie shell --seed 2019170 +o rules:numerics
(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))))