\frac{x \cdot y}{z}\begin{array}{l}
\mathbf{if}\;x \cdot y \le -6.939593118092855 \cdot 10^{+188}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\mathbf{elif}\;x \cdot y \le -1.454055052210347 \cdot 10^{-302}:\\
\;\;\;\;\frac{1}{\frac{z}{x \cdot y}}\\
\mathbf{elif}\;x \cdot y \le 1.8266963535821708 \cdot 10^{-240}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\mathbf{elif}\;x \cdot y \le 1.1730839583412028 \cdot 10^{+147}:\\
\;\;\;\;\frac{1}{\frac{z}{x \cdot y}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\end{array}double f(double x, double y, double z) {
double r32048194 = x;
double r32048195 = y;
double r32048196 = r32048194 * r32048195;
double r32048197 = z;
double r32048198 = r32048196 / r32048197;
return r32048198;
}
double f(double x, double y, double z) {
double r32048199 = x;
double r32048200 = y;
double r32048201 = r32048199 * r32048200;
double r32048202 = -6.939593118092855e+188;
bool r32048203 = r32048201 <= r32048202;
double r32048204 = z;
double r32048205 = r32048200 / r32048204;
double r32048206 = r32048199 * r32048205;
double r32048207 = -1.454055052210347e-302;
bool r32048208 = r32048201 <= r32048207;
double r32048209 = 1.0;
double r32048210 = r32048204 / r32048201;
double r32048211 = r32048209 / r32048210;
double r32048212 = 1.8266963535821708e-240;
bool r32048213 = r32048201 <= r32048212;
double r32048214 = 1.1730839583412028e+147;
bool r32048215 = r32048201 <= r32048214;
double r32048216 = r32048215 ? r32048211 : r32048206;
double r32048217 = r32048213 ? r32048206 : r32048216;
double r32048218 = r32048208 ? r32048211 : r32048217;
double r32048219 = r32048203 ? r32048206 : r32048218;
return r32048219;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.1 |
|---|---|
| Target | 5.4 |
| Herbie | 0.7 |
if (* x y) < -6.939593118092855e+188 or -1.454055052210347e-302 < (* x y) < 1.8266963535821708e-240 or 1.1730839583412028e+147 < (* x y) Initial program 17.1
rmApplied *-un-lft-identity17.1
Applied times-frac0.9
Simplified0.9
if -6.939593118092855e+188 < (* x y) < -1.454055052210347e-302 or 1.8266963535821708e-240 < (* x y) < 1.1730839583412028e+147Initial program 0.2
rmApplied clear-num0.6
Final simplification0.7
herbie shell --seed 2019162
(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))