\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}:\\
\;\;\;\;\left(x - \frac{\frac{y}{z}}{3}\right) + t \cdot \frac{\frac{1}{z \cdot 3}}{y}\\
\mathbf{elif}\;t \le 5.46097822804766331 \cdot 10^{49}:\\
\;\;\;\;\left(x - \frac{\frac{y}{z}}{3}\right) + \frac{1}{z} \cdot \frac{\frac{t}{3}}{y}\\
\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 r787445 = x;
double r787446 = y;
double r787447 = z;
double r787448 = 3.0;
double r787449 = r787447 * r787448;
double r787450 = r787446 / r787449;
double r787451 = r787445 - r787450;
double r787452 = t;
double r787453 = r787449 * r787446;
double r787454 = r787452 / r787453;
double r787455 = r787451 + r787454;
return r787455;
}
double f(double x, double y, double z, double t) {
double r787456 = t;
double r787457 = -3.1361300744902736e+22;
bool r787458 = r787456 <= r787457;
double r787459 = x;
double r787460 = y;
double r787461 = z;
double r787462 = r787460 / r787461;
double r787463 = 3.0;
double r787464 = r787462 / r787463;
double r787465 = r787459 - r787464;
double r787466 = 1.0;
double r787467 = r787461 * r787463;
double r787468 = r787466 / r787467;
double r787469 = r787468 / r787460;
double r787470 = r787456 * r787469;
double r787471 = r787465 + r787470;
double r787472 = 5.460978228047663e+49;
bool r787473 = r787456 <= r787472;
double r787474 = r787466 / r787461;
double r787475 = r787456 / r787463;
double r787476 = r787475 / r787460;
double r787477 = r787474 * r787476;
double r787478 = r787465 + r787477;
double r787479 = r787460 / r787467;
double r787480 = r787459 - r787479;
double r787481 = r787463 * r787460;
double r787482 = r787461 * r787481;
double r787483 = r787456 / r787482;
double r787484 = r787480 + r787483;
double r787485 = r787473 ? r787478 : r787484;
double r787486 = r787458 ? r787471 : r787485;
return r787486;
}




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 *-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 *-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 +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))))