\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 -2.315641800986653731087017149548046290874:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + t \cdot \frac{1}{\left(z \cdot 3\right) \cdot y}\\
\mathbf{elif}\;z \cdot 3 \le 2.181965382420920083950531709255992849268 \cdot 10^{-43}:\\
\;\;\;\;\frac{\frac{t}{y}}{z \cdot 3} + \left(x - \frac{y}{z \cdot 3}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{1}{z} \cdot \frac{y}{3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\\
\end{array}double f(double x, double y, double z, double t) {
double r671359 = x;
double r671360 = y;
double r671361 = z;
double r671362 = 3.0;
double r671363 = r671361 * r671362;
double r671364 = r671360 / r671363;
double r671365 = r671359 - r671364;
double r671366 = t;
double r671367 = r671363 * r671360;
double r671368 = r671366 / r671367;
double r671369 = r671365 + r671368;
return r671369;
}
double f(double x, double y, double z, double t) {
double r671370 = z;
double r671371 = 3.0;
double r671372 = r671370 * r671371;
double r671373 = -2.3156418009866537;
bool r671374 = r671372 <= r671373;
double r671375 = x;
double r671376 = y;
double r671377 = r671376 / r671372;
double r671378 = r671375 - r671377;
double r671379 = t;
double r671380 = 1.0;
double r671381 = r671372 * r671376;
double r671382 = r671380 / r671381;
double r671383 = r671379 * r671382;
double r671384 = r671378 + r671383;
double r671385 = 2.18196538242092e-43;
bool r671386 = r671372 <= r671385;
double r671387 = r671379 / r671376;
double r671388 = r671387 / r671372;
double r671389 = r671388 + r671378;
double r671390 = r671380 / r671370;
double r671391 = r671376 / r671371;
double r671392 = r671390 * r671391;
double r671393 = r671375 - r671392;
double r671394 = r671379 / r671381;
double r671395 = r671393 + r671394;
double r671396 = r671386 ? r671389 : r671395;
double r671397 = r671374 ? r671384 : r671396;
return r671397;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.9 |
|---|---|
| Target | 1.9 |
| Herbie | 0.3 |
if (* z 3.0) < -2.3156418009866537Initial program 0.4
rmApplied div-inv0.4
if -2.3156418009866537 < (* z 3.0) < 2.18196538242092e-43Initial program 12.1
rmApplied add-cube-cbrt12.3
Applied times-frac1.1
rmApplied div-inv1.1
Applied associate-*r*3.8
Simplified3.4
rmApplied pow13.4
Applied pow13.4
Applied pow-prod-down3.4
Simplified0.3
if 2.18196538242092e-43 < (* z 3.0) Initial program 0.3
rmApplied *-un-lft-identity0.3
Applied times-frac0.4
Final simplification0.3
herbie shell --seed 2019323 +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))))