\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 -1.16964350915532777 \cdot 10^{116}:\\
\;\;\;\;\left(x - \frac{\frac{\frac{y}{z}}{\sqrt[3]{3} \cdot \sqrt[3]{3}}}{\sqrt[3]{3}}\right) + \frac{\frac{t}{z \cdot 3}}{y}\\
\mathbf{elif}\;z \cdot 3 \le 1.52241256667558003 \cdot 10^{-52}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{1}{z \cdot 3} \cdot \frac{t}{y}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{z \cdot \left(3 \cdot y\right)}\\
\end{array}double f(double x, double y, double z, double t) {
double r699140 = x;
double r699141 = y;
double r699142 = z;
double r699143 = 3.0;
double r699144 = r699142 * r699143;
double r699145 = r699141 / r699144;
double r699146 = r699140 - r699145;
double r699147 = t;
double r699148 = r699144 * r699141;
double r699149 = r699147 / r699148;
double r699150 = r699146 + r699149;
return r699150;
}
double f(double x, double y, double z, double t) {
double r699151 = z;
double r699152 = 3.0;
double r699153 = r699151 * r699152;
double r699154 = -1.1696435091553278e+116;
bool r699155 = r699153 <= r699154;
double r699156 = x;
double r699157 = y;
double r699158 = r699157 / r699151;
double r699159 = cbrt(r699152);
double r699160 = r699159 * r699159;
double r699161 = r699158 / r699160;
double r699162 = r699161 / r699159;
double r699163 = r699156 - r699162;
double r699164 = t;
double r699165 = r699164 / r699153;
double r699166 = r699165 / r699157;
double r699167 = r699163 + r699166;
double r699168 = 1.52241256667558e-52;
bool r699169 = r699153 <= r699168;
double r699170 = r699157 / r699153;
double r699171 = r699156 - r699170;
double r699172 = 1.0;
double r699173 = r699172 / r699153;
double r699174 = r699164 / r699157;
double r699175 = r699173 * r699174;
double r699176 = r699171 + r699175;
double r699177 = r699152 * r699157;
double r699178 = r699151 * r699177;
double r699179 = r699164 / r699178;
double r699180 = r699171 + r699179;
double r699181 = r699169 ? r699176 : r699180;
double r699182 = r699155 ? r699167 : r699181;
return r699182;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.7 |
|---|---|
| Target | 1.8 |
| Herbie | 0.9 |
if (* z 3.0) < -1.1696435091553278e+116Initial program 0.7
rmApplied associate-/r*1.1
rmApplied associate-/r*1.1
rmApplied add-cube-cbrt1.1
Applied associate-/r*1.2
if -1.1696435091553278e+116 < (* z 3.0) < 1.52241256667558e-52Initial program 8.3
rmApplied *-un-lft-identity8.3
Applied times-frac1.1
if 1.52241256667558e-52 < (* z 3.0) Initial program 0.6
rmApplied associate-*l*0.5
Final simplification0.9
herbie shell --seed 2020021 +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))))