\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;z \cdot 3 \le -4.1425510723146598 \cdot 10^{29}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{\frac{t}{z \cdot 3}}{y}\\
\mathbf{elif}\;z \cdot 3 \le 5.5644502692159849 \cdot 10^{100}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{1}{z} \cdot \frac{t}{3 \cdot y}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{1}{\frac{z \cdot \left(3 \cdot y\right)}{t}}\\
\end{array}double f(double x, double y, double z, double t) {
double r988489 = x;
double r988490 = y;
double r988491 = z;
double r988492 = 3.0;
double r988493 = r988491 * r988492;
double r988494 = r988490 / r988493;
double r988495 = r988489 - r988494;
double r988496 = t;
double r988497 = r988493 * r988490;
double r988498 = r988496 / r988497;
double r988499 = r988495 + r988498;
return r988499;
}
double f(double x, double y, double z, double t) {
double r988500 = z;
double r988501 = 3.0;
double r988502 = r988500 * r988501;
double r988503 = -4.14255107231466e+29;
bool r988504 = r988502 <= r988503;
double r988505 = x;
double r988506 = y;
double r988507 = r988506 / r988502;
double r988508 = r988505 - r988507;
double r988509 = t;
double r988510 = r988509 / r988502;
double r988511 = r988510 / r988506;
double r988512 = r988508 + r988511;
double r988513 = 5.564450269215985e+100;
bool r988514 = r988502 <= r988513;
double r988515 = 1.0;
double r988516 = r988515 / r988500;
double r988517 = r988501 * r988506;
double r988518 = r988509 / r988517;
double r988519 = r988516 * r988518;
double r988520 = r988508 + r988519;
double r988521 = r988500 * r988517;
double r988522 = r988521 / r988509;
double r988523 = r988515 / r988522;
double r988524 = r988508 + r988523;
double r988525 = r988514 ? r988520 : r988524;
double r988526 = r988504 ? r988512 : r988525;
return r988526;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.5 |
|---|---|
| Target | 1.9 |
| Herbie | 0.9 |
if (* z 3.0) < -4.14255107231466e+29Initial program 0.3
rmApplied associate-/r*1.0
if -4.14255107231466e+29 < (* z 3.0) < 5.564450269215985e+100Initial program 7.2
rmApplied associate-*l*7.2
rmApplied *-un-lft-identity7.2
Applied times-frac1.0
if 5.564450269215985e+100 < (* z 3.0) Initial program 0.6
rmApplied associate-*l*0.6
rmApplied clear-num0.6
Final simplification0.9
herbie shell --seed 2020025
(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))))