\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.472080681334310435565607809050836361326 \cdot 10^{-277} \lor \neg \left(y \le 1.630497026224573899168920625461559533427 \cdot 10^{76}\right):\\
\;\;\;\;\left(x - y \cdot \frac{\frac{1}{z}}{3}\right) + \frac{\frac{1}{z}}{\frac{y}{\frac{t}{3}}}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{1}{\frac{z \cdot 3}{y}}\right) + \frac{\frac{t}{z \cdot 3}}{y}\\
\end{array}double f(double x, double y, double z, double t) {
double r542470 = x;
double r542471 = y;
double r542472 = z;
double r542473 = 3.0;
double r542474 = r542472 * r542473;
double r542475 = r542471 / r542474;
double r542476 = r542470 - r542475;
double r542477 = t;
double r542478 = r542474 * r542471;
double r542479 = r542477 / r542478;
double r542480 = r542476 + r542479;
return r542480;
}
double f(double x, double y, double z, double t) {
double r542481 = y;
double r542482 = 3.4720806813343104e-277;
bool r542483 = r542481 <= r542482;
double r542484 = 1.630497026224574e+76;
bool r542485 = r542481 <= r542484;
double r542486 = !r542485;
bool r542487 = r542483 || r542486;
double r542488 = x;
double r542489 = 1.0;
double r542490 = z;
double r542491 = r542489 / r542490;
double r542492 = 3.0;
double r542493 = r542491 / r542492;
double r542494 = r542481 * r542493;
double r542495 = r542488 - r542494;
double r542496 = t;
double r542497 = r542496 / r542492;
double r542498 = r542481 / r542497;
double r542499 = r542491 / r542498;
double r542500 = r542495 + r542499;
double r542501 = r542490 * r542492;
double r542502 = r542501 / r542481;
double r542503 = r542489 / r542502;
double r542504 = r542488 - r542503;
double r542505 = r542496 / r542501;
double r542506 = r542505 / r542481;
double r542507 = r542504 + r542506;
double r542508 = r542487 ? r542500 : r542507;
return r542508;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.6 |
|---|---|
| Target | 1.7 |
| Herbie | 2.5 |
if y < 3.4720806813343104e-277 or 1.630497026224574e+76 < y Initial program 3.3
rmApplied associate-/r*1.9
rmApplied *-un-lft-identity1.9
Applied times-frac1.9
Applied associate-/l*3.0
rmApplied div-inv3.0
Simplified3.0
if 3.4720806813343104e-277 < y < 1.630497026224574e+76Initial program 4.3
rmApplied associate-/r*1.3
rmApplied clear-num1.4
Final simplification2.5
herbie shell --seed 2019208
(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))))