\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 -7.959906075858907547200374344342532215009 \cdot 10^{-64}:\\
\;\;\;\;\left(\frac{1}{\frac{y}{\frac{t}{z \cdot 3}}} - \frac{\frac{y}{3}}{z}\right) + x\\
\mathbf{elif}\;z \cdot 3 \le 4741144259583525519360:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{1}{z \cdot 3} \cdot \frac{t}{y}\\
\mathbf{else}:\\
\;\;\;\;x + 0.3333333333333333148296162562473909929395 \cdot \left(\frac{t}{y \cdot z} - \frac{y}{z}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r32856529 = x;
double r32856530 = y;
double r32856531 = z;
double r32856532 = 3.0;
double r32856533 = r32856531 * r32856532;
double r32856534 = r32856530 / r32856533;
double r32856535 = r32856529 - r32856534;
double r32856536 = t;
double r32856537 = r32856533 * r32856530;
double r32856538 = r32856536 / r32856537;
double r32856539 = r32856535 + r32856538;
return r32856539;
}
double f(double x, double y, double z, double t) {
double r32856540 = z;
double r32856541 = 3.0;
double r32856542 = r32856540 * r32856541;
double r32856543 = -7.959906075858908e-64;
bool r32856544 = r32856542 <= r32856543;
double r32856545 = 1.0;
double r32856546 = y;
double r32856547 = t;
double r32856548 = r32856547 / r32856542;
double r32856549 = r32856546 / r32856548;
double r32856550 = r32856545 / r32856549;
double r32856551 = r32856546 / r32856541;
double r32856552 = r32856551 / r32856540;
double r32856553 = r32856550 - r32856552;
double r32856554 = x;
double r32856555 = r32856553 + r32856554;
double r32856556 = 4.741144259583526e+21;
bool r32856557 = r32856542 <= r32856556;
double r32856558 = r32856546 / r32856542;
double r32856559 = r32856554 - r32856558;
double r32856560 = r32856545 / r32856542;
double r32856561 = r32856547 / r32856546;
double r32856562 = r32856560 * r32856561;
double r32856563 = r32856559 + r32856562;
double r32856564 = 0.3333333333333333;
double r32856565 = r32856546 * r32856540;
double r32856566 = r32856547 / r32856565;
double r32856567 = r32856546 / r32856540;
double r32856568 = r32856566 - r32856567;
double r32856569 = r32856564 * r32856568;
double r32856570 = r32856554 + r32856569;
double r32856571 = r32856557 ? r32856563 : r32856570;
double r32856572 = r32856544 ? r32856555 : r32856571;
return r32856572;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.6 |
|---|---|
| Target | 1.8 |
| Herbie | 0.6 |
if (* z 3.0) < -7.959906075858908e-64Initial program 0.4
rmApplied sub-neg0.4
Applied associate-+l+0.4
Simplified1.1
rmApplied associate-/r*1.1
rmApplied clear-num1.1
if -7.959906075858908e-64 < (* z 3.0) < 4.741144259583526e+21Initial program 11.2
rmApplied *-un-lft-identity11.2
Applied times-frac0.3
if 4.741144259583526e+21 < (* z 3.0) Initial program 0.4
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.6
herbie shell --seed 2019168
(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))))