\frac{x \cdot y}{z}\begin{array}{l}
\mathbf{if}\;x \cdot y \le -2.166521247594354925726439343625696917212 \cdot 10^{205}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{elif}\;x \cdot y \le -1.343713460892298755823259752013121029537 \cdot 10^{-191}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;x \cdot y \le 4.152478566064296352109998791440075706057 \cdot 10^{-204}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\mathbf{elif}\;x \cdot y \le 9.404611212472955651642851083785275703569 \cdot 10^{253}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\end{array}double f(double x, double y, double z) {
double r29340131 = x;
double r29340132 = y;
double r29340133 = r29340131 * r29340132;
double r29340134 = z;
double r29340135 = r29340133 / r29340134;
return r29340135;
}
double f(double x, double y, double z) {
double r29340136 = x;
double r29340137 = y;
double r29340138 = r29340136 * r29340137;
double r29340139 = -2.166521247594355e+205;
bool r29340140 = r29340138 <= r29340139;
double r29340141 = z;
double r29340142 = r29340141 / r29340137;
double r29340143 = r29340136 / r29340142;
double r29340144 = -1.3437134608922988e-191;
bool r29340145 = r29340138 <= r29340144;
double r29340146 = r29340138 / r29340141;
double r29340147 = 4.152478566064296e-204;
bool r29340148 = r29340138 <= r29340147;
double r29340149 = r29340137 / r29340141;
double r29340150 = r29340149 * r29340136;
double r29340151 = 9.404611212472956e+253;
bool r29340152 = r29340138 <= r29340151;
double r29340153 = r29340152 ? r29340146 : r29340150;
double r29340154 = r29340148 ? r29340150 : r29340153;
double r29340155 = r29340145 ? r29340146 : r29340154;
double r29340156 = r29340140 ? r29340143 : r29340155;
return r29340156;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.0 |
|---|---|
| Target | 6.2 |
| Herbie | 0.4 |
if (* x y) < -2.166521247594355e+205Initial program 27.2
rmApplied associate-/l*1.5
if -2.166521247594355e+205 < (* x y) < -1.3437134608922988e-191 or 4.152478566064296e-204 < (* x y) < 9.404611212472956e+253Initial program 0.2
if -1.3437134608922988e-191 < (* x y) < 4.152478566064296e-204 or 9.404611212472956e+253 < (* x y) Initial program 13.8
rmApplied *-un-lft-identity13.8
Applied times-frac0.5
Simplified0.5
Final simplification0.4
herbie shell --seed 2019179 +o rules:numerics
(FPCore (x y z)
:name "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, A"
:herbie-target
(if (< z -4.262230790519429e-138) (/ (* x y) z) (if (< z 1.7042130660650472e-164) (/ x (/ z y)) (* (/ x z) y)))
(/ (* x y) z))