\frac{x \cdot y}{z}\begin{array}{l}
\mathbf{if}\;\frac{x \cdot y}{z} \le -7.768603561893780181171682032240737260521 \cdot 10^{305}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\mathbf{elif}\;\frac{x \cdot y}{z} \le -5.989061428235972049640443908724325403146 \cdot 10^{-77}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;\frac{x \cdot y}{z} \le -0.0:\\
\;\;\;\;\frac{\frac{x}{\sqrt[3]{z} \cdot \sqrt[3]{z}}}{\frac{\sqrt[3]{z}}{y}}\\
\mathbf{elif}\;\frac{x \cdot y}{z} \le 3.534109248982643983253870825363988567111 \cdot 10^{298}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\end{array}double f(double x, double y, double z) {
double r521905 = x;
double r521906 = y;
double r521907 = r521905 * r521906;
double r521908 = z;
double r521909 = r521907 / r521908;
return r521909;
}
double f(double x, double y, double z) {
double r521910 = x;
double r521911 = y;
double r521912 = r521910 * r521911;
double r521913 = z;
double r521914 = r521912 / r521913;
double r521915 = -7.76860356189378e+305;
bool r521916 = r521914 <= r521915;
double r521917 = r521911 / r521913;
double r521918 = r521910 * r521917;
double r521919 = -5.989061428235972e-77;
bool r521920 = r521914 <= r521919;
double r521921 = -0.0;
bool r521922 = r521914 <= r521921;
double r521923 = cbrt(r521913);
double r521924 = r521923 * r521923;
double r521925 = r521910 / r521924;
double r521926 = r521923 / r521911;
double r521927 = r521925 / r521926;
double r521928 = 3.534109248982644e+298;
bool r521929 = r521914 <= r521928;
double r521930 = r521913 / r521911;
double r521931 = r521910 / r521930;
double r521932 = r521929 ? r521914 : r521931;
double r521933 = r521922 ? r521927 : r521932;
double r521934 = r521920 ? r521914 : r521933;
double r521935 = r521916 ? r521918 : r521934;
return r521935;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.4 |
|---|---|
| Target | 6.5 |
| Herbie | 1.7 |
if (/ (* x y) z) < -7.76860356189378e+305Initial program 62.6
rmApplied *-un-lft-identity62.6
Applied times-frac0.3
Simplified0.3
if -7.76860356189378e+305 < (/ (* x y) z) < -5.989061428235972e-77 or -0.0 < (/ (* x y) z) < 3.534109248982644e+298Initial program 2.2
if -5.989061428235972e-77 < (/ (* x y) z) < -0.0Initial program 5.7
rmApplied associate-/l*6.4
rmApplied *-un-lft-identity6.4
Applied add-cube-cbrt7.0
Applied times-frac7.0
Applied associate-/r*5.3
Simplified5.3
if 3.534109248982644e+298 < (/ (* x y) z) Initial program 57.5
rmApplied associate-/l*1.5
Final simplification1.7
herbie shell --seed 2019303 +o rules:numerics
(FPCore (x y z)
:name "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< z -4.262230790519429e-138) (/ (* x y) z) (if (< z 1.70421306606504721e-164) (/ x (/ z y)) (* (/ x z) y)))
(/ (* x y) z))