\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;z \le -2.171528493507656670283271706692623069358 \cdot 10^{-57} \lor \neg \left(z \le 1.594003072049920579576627778635528875032 \cdot 10^{76}\right):\\
\;\;\;\;\left(x - \frac{\frac{y}{z}}{3}\right) + \frac{\frac{t}{z \cdot 3}}{y}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{1} \cdot \frac{\frac{y}{3}}{z}\right) + \frac{1}{z} \cdot \frac{\frac{t}{3}}{y}\\
\end{array}double f(double x, double y, double z, double t) {
double r798293 = x;
double r798294 = y;
double r798295 = z;
double r798296 = 3.0;
double r798297 = r798295 * r798296;
double r798298 = r798294 / r798297;
double r798299 = r798293 - r798298;
double r798300 = t;
double r798301 = r798297 * r798294;
double r798302 = r798300 / r798301;
double r798303 = r798299 + r798302;
return r798303;
}
double f(double x, double y, double z, double t) {
double r798304 = z;
double r798305 = -2.1715284935076567e-57;
bool r798306 = r798304 <= r798305;
double r798307 = 1.5940030720499206e+76;
bool r798308 = r798304 <= r798307;
double r798309 = !r798308;
bool r798310 = r798306 || r798309;
double r798311 = x;
double r798312 = y;
double r798313 = r798312 / r798304;
double r798314 = 3.0;
double r798315 = r798313 / r798314;
double r798316 = r798311 - r798315;
double r798317 = t;
double r798318 = r798304 * r798314;
double r798319 = r798317 / r798318;
double r798320 = r798319 / r798312;
double r798321 = r798316 + r798320;
double r798322 = 1.0;
double r798323 = cbrt(r798322);
double r798324 = r798323 * r798323;
double r798325 = r798324 / r798322;
double r798326 = r798312 / r798314;
double r798327 = r798326 / r798304;
double r798328 = r798325 * r798327;
double r798329 = r798311 - r798328;
double r798330 = r798322 / r798304;
double r798331 = r798317 / r798314;
double r798332 = r798331 / r798312;
double r798333 = r798330 * r798332;
double r798334 = r798329 + r798333;
double r798335 = r798310 ? r798321 : r798334;
return r798335;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.7 |
|---|---|
| Target | 1.6 |
| Herbie | 0.9 |
if z < -2.1715284935076567e-57 or 1.5940030720499206e+76 < z Initial program 0.6
rmApplied associate-/r*1.0
rmApplied *-un-lft-identity1.0
Applied times-frac1.0
rmApplied associate-*r/1.0
Simplified1.0
if -2.1715284935076567e-57 < z < 1.5940030720499206e+76Initial program 9.1
rmApplied associate-/r*2.7
rmApplied *-un-lft-identity2.7
Applied times-frac2.7
rmApplied *-un-lft-identity2.7
Applied add-cube-cbrt2.7
Applied times-frac2.7
Applied associate-*l*2.7
Simplified2.7
rmApplied *-un-lft-identity2.7
Applied *-un-lft-identity2.7
Applied times-frac2.7
Applied times-frac0.7
Simplified0.7
Final simplification0.9
herbie shell --seed 2020001
(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))))