\frac{x \cdot y}{z}\begin{array}{l}
\mathbf{if}\;x \cdot y \le -5.899145090483621243407591608868938844895 \cdot 10^{275}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\mathbf{elif}\;x \cdot y \le -4.740188247183417662311772579191743839341 \cdot 10^{-201}:\\
\;\;\;\;\frac{1}{z} \cdot \left(x \cdot y\right)\\
\mathbf{elif}\;x \cdot y \le 2.796489205112816623953257005668039638224 \cdot 10^{-171}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{elif}\;x \cdot y \le 2.345913877288735097014094340963252524817 \cdot 10^{180}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\end{array}double f(double x, double y, double z) {
double r36408407 = x;
double r36408408 = y;
double r36408409 = r36408407 * r36408408;
double r36408410 = z;
double r36408411 = r36408409 / r36408410;
return r36408411;
}
double f(double x, double y, double z) {
double r36408412 = x;
double r36408413 = y;
double r36408414 = r36408412 * r36408413;
double r36408415 = -5.899145090483621e+275;
bool r36408416 = r36408414 <= r36408415;
double r36408417 = z;
double r36408418 = r36408413 / r36408417;
double r36408419 = r36408412 * r36408418;
double r36408420 = -4.740188247183418e-201;
bool r36408421 = r36408414 <= r36408420;
double r36408422 = 1.0;
double r36408423 = r36408422 / r36408417;
double r36408424 = r36408423 * r36408414;
double r36408425 = 2.7964892051128166e-171;
bool r36408426 = r36408414 <= r36408425;
double r36408427 = r36408417 / r36408413;
double r36408428 = r36408412 / r36408427;
double r36408429 = 2.345913877288735e+180;
bool r36408430 = r36408414 <= r36408429;
double r36408431 = r36408414 / r36408417;
double r36408432 = r36408430 ? r36408431 : r36408428;
double r36408433 = r36408426 ? r36408428 : r36408432;
double r36408434 = r36408421 ? r36408424 : r36408433;
double r36408435 = r36408416 ? r36408419 : r36408434;
return r36408435;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.2 |
|---|---|
| Target | 6.3 |
| Herbie | 0.5 |
if (* x y) < -5.899145090483621e+275Initial program 49.2
rmApplied *-un-lft-identity49.2
Applied times-frac0.4
Simplified0.4
if -5.899145090483621e+275 < (* x y) < -4.740188247183418e-201Initial program 0.3
rmApplied div-inv0.3
if -4.740188247183418e-201 < (* x y) < 2.7964892051128166e-171 or 2.345913877288735e+180 < (* x y) Initial program 11.6
rmApplied associate-/l*0.8
if 2.7964892051128166e-171 < (* x y) < 2.345913877288735e+180Initial program 0.3
Final simplification0.5
herbie shell --seed 2019171
(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))