\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;t \le -3.1361300744902736 \cdot 10^{22}:\\
\;\;\;\;x + \left(t \cdot \frac{\frac{1}{z \cdot 3}}{y} - \frac{\frac{y}{z}}{3}\right)\\
\mathbf{elif}\;t \le 5.46097822804766331 \cdot 10^{49}:\\
\;\;\;\;x + \left(\frac{1}{z} \cdot \frac{\frac{t}{3}}{y} - \frac{\frac{y}{z}}{3}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{z \cdot \left(3 \cdot y\right)}\\
\end{array}double f(double x, double y, double z, double t) {
double r731588 = x;
double r731589 = y;
double r731590 = z;
double r731591 = 3.0;
double r731592 = r731590 * r731591;
double r731593 = r731589 / r731592;
double r731594 = r731588 - r731593;
double r731595 = t;
double r731596 = r731592 * r731589;
double r731597 = r731595 / r731596;
double r731598 = r731594 + r731597;
return r731598;
}
double f(double x, double y, double z, double t) {
double r731599 = t;
double r731600 = -3.1361300744902736e+22;
bool r731601 = r731599 <= r731600;
double r731602 = x;
double r731603 = 1.0;
double r731604 = z;
double r731605 = 3.0;
double r731606 = r731604 * r731605;
double r731607 = r731603 / r731606;
double r731608 = y;
double r731609 = r731607 / r731608;
double r731610 = r731599 * r731609;
double r731611 = r731608 / r731604;
double r731612 = r731611 / r731605;
double r731613 = r731610 - r731612;
double r731614 = r731602 + r731613;
double r731615 = 5.460978228047663e+49;
bool r731616 = r731599 <= r731615;
double r731617 = r731603 / r731604;
double r731618 = r731599 / r731605;
double r731619 = r731618 / r731608;
double r731620 = r731617 * r731619;
double r731621 = r731620 - r731612;
double r731622 = r731602 + r731621;
double r731623 = r731608 / r731606;
double r731624 = r731602 - r731623;
double r731625 = r731605 * r731608;
double r731626 = r731604 * r731625;
double r731627 = r731599 / r731626;
double r731628 = r731624 + r731627;
double r731629 = r731616 ? r731622 : r731628;
double r731630 = r731601 ? r731614 : r731629;
return r731630;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.9 |
|---|---|
| Target | 1.7 |
| Herbie | 0.4 |
if t < -3.1361300744902736e+22Initial program 0.5
rmApplied associate-/r*2.7
rmApplied associate-/r*2.7
rmApplied sub-neg2.7
Applied associate-+l+2.7
Simplified2.7
rmApplied *-un-lft-identity2.7
Applied div-inv2.8
Applied times-frac0.4
Simplified0.4
if -3.1361300744902736e+22 < t < 5.460978228047663e+49Initial program 5.8
rmApplied associate-/r*1.1
rmApplied associate-/r*1.1
rmApplied sub-neg1.1
Applied associate-+l+1.1
Simplified1.1
rmApplied *-un-lft-identity1.1
Applied *-un-lft-identity1.1
Applied times-frac1.1
Applied times-frac0.3
Simplified0.3
if 5.460978228047663e+49 < t Initial program 0.6
rmApplied associate-*l*0.6
Final simplification0.4
herbie shell --seed 2020047
(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))))