void operator*=(FValue & f1,FValue f2) { bool x = f1.isConstant() && f2.isConstant(); if(sameSign(f1,f2)) { if(nonZero(f1) && nonZero(f2)) { f1 = E_POSITIVE; if(x) f1.assertConst(); return; }; f1 = E_NONNEG; } else if(isSigned(f1) && isSigned(f2)) { if(nonZero(f1) && nonZero(f2)) { f1 = E_NEGATIVE; if(x) f1.assertConst(); return; }; f1 = E_NONPOS; } else { f1 = E_ALL; }; if(x) f1.assertConst(); };
/*-------------------------------------------------------------*/ void AzDvect::_dump(const AzOut &out, const AzStrArray *sp_row, int cut_num) const { AzPrint o(out); AzIFarr ifa_nz; nonZero(&ifa_nz); ifa_nz.sort_Float(false); ifa_nz.cut(cut_num); int num = ifa_nz.size(); int ix; for (ix = 0; ix < num; ++ix) { int row; double val = ifa_nz.get(ix, &row); /* [row] val (header) */ int indent = 3; o.printBegin("", " ", "=", indent); o.inBrackets(row, 4); o.print(val, 5, true); if (sp_row != NULL) { const char *row_header = sp_row->c_str(row); o.inParen(row_header); } o.printEnd(); } }