\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 r443543 = x;
double r443544 = y;
double r443545 = r443543 * r443544;
double r443546 = z;
double r443547 = r443545 / r443546;
return r443547;
}
double f(double x, double y, double z) {
double r443548 = x;
double r443549 = y;
double r443550 = r443548 * r443549;
double r443551 = z;
double r443552 = r443550 / r443551;
double r443553 = -7.76860356189378e+305;
bool r443554 = r443552 <= r443553;
double r443555 = r443549 / r443551;
double r443556 = r443548 * r443555;
double r443557 = -5.989061428235972e-77;
bool r443558 = r443552 <= r443557;
double r443559 = -0.0;
bool r443560 = r443552 <= r443559;
double r443561 = cbrt(r443551);
double r443562 = r443561 * r443561;
double r443563 = r443548 / r443562;
double r443564 = r443561 / r443549;
double r443565 = r443563 / r443564;
double r443566 = 3.534109248982644e+298;
bool r443567 = r443552 <= r443566;
double r443568 = r443551 / r443549;
double r443569 = r443548 / r443568;
double r443570 = r443567 ? r443552 : r443569;
double r443571 = r443560 ? r443565 : r443570;
double r443572 = r443558 ? r443552 : r443571;
double r443573 = r443554 ? r443556 : r443572;
return r443573;
}




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
(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))