\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;y \le -3.637695460150344223366200288683848705459 \cdot 10^{-139}:\\
\;\;\;\;\frac{t}{y \cdot \left(3 \cdot z\right)} + \left(x - \frac{\frac{y}{z}}{3}\right)\\
\mathbf{elif}\;y \le 5.030262730305992219295073547083025688912 \cdot 10^{-97}:\\
\;\;\;\;\left(x - \frac{y}{3} \cdot \frac{1}{z}\right) + \frac{\frac{t}{3 \cdot z}}{y}\\
\mathbf{else}:\\
\;\;\;\;\frac{t}{z \cdot y} \cdot 0.3333333333333333148296162562473909929395 + \left(x - \frac{y}{3 \cdot z}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r22903493 = x;
double r22903494 = y;
double r22903495 = z;
double r22903496 = 3.0;
double r22903497 = r22903495 * r22903496;
double r22903498 = r22903494 / r22903497;
double r22903499 = r22903493 - r22903498;
double r22903500 = t;
double r22903501 = r22903497 * r22903494;
double r22903502 = r22903500 / r22903501;
double r22903503 = r22903499 + r22903502;
return r22903503;
}
double f(double x, double y, double z, double t) {
double r22903504 = y;
double r22903505 = -3.637695460150344e-139;
bool r22903506 = r22903504 <= r22903505;
double r22903507 = t;
double r22903508 = 3.0;
double r22903509 = z;
double r22903510 = r22903508 * r22903509;
double r22903511 = r22903504 * r22903510;
double r22903512 = r22903507 / r22903511;
double r22903513 = x;
double r22903514 = r22903504 / r22903509;
double r22903515 = r22903514 / r22903508;
double r22903516 = r22903513 - r22903515;
double r22903517 = r22903512 + r22903516;
double r22903518 = 5.030262730305992e-97;
bool r22903519 = r22903504 <= r22903518;
double r22903520 = r22903504 / r22903508;
double r22903521 = 1.0;
double r22903522 = r22903521 / r22903509;
double r22903523 = r22903520 * r22903522;
double r22903524 = r22903513 - r22903523;
double r22903525 = r22903507 / r22903510;
double r22903526 = r22903525 / r22903504;
double r22903527 = r22903524 + r22903526;
double r22903528 = r22903509 * r22903504;
double r22903529 = r22903507 / r22903528;
double r22903530 = 0.3333333333333333;
double r22903531 = r22903529 * r22903530;
double r22903532 = r22903504 / r22903510;
double r22903533 = r22903513 - r22903532;
double r22903534 = r22903531 + r22903533;
double r22903535 = r22903519 ? r22903527 : r22903534;
double r22903536 = r22903506 ? r22903517 : r22903535;
return r22903536;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.8 |
|---|---|
| Target | 1.8 |
| Herbie | 1.6 |
if y < -3.637695460150344e-139Initial program 1.8
rmApplied associate-/r*1.9
if -3.637695460150344e-139 < y < 5.030262730305992e-97Initial program 10.3
rmApplied associate-/r*2.2
rmApplied *-un-lft-identity2.2
Applied times-frac2.2
if 5.030262730305992e-97 < y Initial program 0.9
Taylor expanded around 0 0.9
Final simplification1.6
herbie shell --seed 2019179
(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))))