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; }
SharedMinimizeData* ProgramBuilder::getMinimizeConstraint(SumVec* bound) const { if (min_.get() && min_->hasRules()) { if (bound) getMinBound(*bound); minCon_ = min_->build(*ctx_); min_ = 0; } return minCon_.get(); }