Example #1
0
int PSLQ::getZeroComponent(const BigRealVector &y) const {
  if(m_verbose&VERBOSE_Y) {
    tcout << _T("y:") << dparam(8) << y << endl;
  }
  BigReal minimum, maximum;
  maximum = minimum = fabs(y[0]);
  int result = 0;
  for(UINT i = 1; i < y.getDimension(); i++) {
    const BigReal tmp = fabs(y[i]);
    if(tmp < minimum) {
      minimum = tmp;
      result = i;
    } else if(tmp > maximum) {
      maximum = tmp;
    }
  }
  const BigReal q = rQuot(minimum,maximum,10);

  if(m_verbose&VERBOSE_DATA) {
    tcout << _T("min:")         << dparam(8) << minimum 
          << _T("  |min/max|:") << dparam(8) << q
          << _T("  Min Bound:") << dparam(8) << getMinBound()
          << endl;
  }

  if(q < 1e-7) {
    return result;
  }
  return -1;
}
Example #2
0
SharedMinimizeData* ProgramBuilder::getMinimizeConstraint(SumVec* bound) const {
	if (min_.get() && min_->hasRules()) {
		if (bound) getMinBound(*bound);
		minCon_ = min_->build(*ctx_);
		min_    = 0;
	}
	return minCon_.get(); 
}