示例#1
0
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();
};
示例#2
0
/*-------------------------------------------------------------*/
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();
  }
}