56 #include "Riostream.h" 147 Double_t gap =
fRQ*vars->
fX;
156 if (componentNorm > norm) norm = componentNorm;
162 gap -= prob->
fBa*vars->
fY;
165 if( componentNorm > norm ) norm = componentNorm;
171 if( componentNorm > norm ) norm = componentNorm;
186 if( componentNorm > norm ) norm = componentNorm;
200 if( componentNorm > norm ) norm = componentNorm;
204 if( componentNorm > norm ) norm = componentNorm;
215 if( componentNorm > norm ) norm = componentNorm;
227 if (componentNorm > norm) norm = componentNorm;
362 const Double_t *
const fep = ep+v.
GetNrows();
371 if (*ep < -rmax) *ep = -rmax;
382 if (
this != &source) {
383 TObject::operator=(source);
virtual void Qmult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x)
calculate y = beta*y + alpha*(fQ*x)
TVectorT< Element > & ResizeTo(Int_t lwb, Int_t upb)
Resize the vector to [lwb:upb] .
void CalcResids(TQpDataBase *problem, TQpVar *vars)
Calculate residuals, their norms, and duality complementarity gap, given a problem and variable set...
TMatrixT< Element > & Add(TMatrixT< Element > &target, Element scalar, const TMatrixT< Element > &source)
Modify addition: target += scalar * source.
Bool_t ValidNonZeroPattern()
Check if vector elements as selected through array indices are non-zero.
virtual TVectorD & GetXlowerBound()
void Project_r3(Double_t rmin, Double_t rmax)
Perform the projection operation required by Gondzio algorithm: replace each component r3_i of the co...
static void GondzioProjection(TVectorD &v, Double_t rmin, Double_t rmax)
Replace each component r3_i of the complementarity component of the residuals by r3p_i-r3_i, where r3p_i is the projection of r3_i onto the box [rmin, rmax].
Element NormInf() const
Compute the infinity-norm of the vector MAX{ |v[i]| }.
virtual void Cmult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x)
calculate y = beta*y + alpha*(fC*x)
TVectorT< Element > & Use(Int_t lwb, Int_t upb, Element *data)
Use the array data to fill the vector lwb..upb].
virtual void Amult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x)
calculate y = beta*y + alpha*(fA*x)
TQpResidual & operator=(const TQpResidual &source)
Assignment operator.
virtual void CTransmult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x)
calculate y = beta*y + alpha*(fC^T*x)
void Add_r3_xz_alpha(TQpVar *vars, Double_t alpha)
Modify the "complementarity" component of the residuals, by adding the pairwise products of the compl...
Element * GetMatrixArray()
void Clear_r3()
set the complementarity component of the residuals to 0.
TVectorT< Element > & Zero()
Set vector elements to zero.
virtual void ATransmult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x)
calculate y = beta*y + alpha*(fA^T*x)
Int_t NonZeros() const
Compute the number of elements != 0.0.
TVectorT< Element > & SelectNonZeros(const TVectorT< Element > &select)
Keep only element as selected through array select non-zero.
void Set_r3_xz_alpha(TQpVar *vars, Double_t alpha)
Set the "complementarity" component of the residuals to the pairwise products of the complementary va...
void Clear_r1r2()
set the noncomplementarity components of the residual (the terms arising from the linear equalities i...
TQpResidual()
Constructor.
virtual TVectorD & GetXupperBound()
TVectorT< Element > & AddElemMult(TVectorT< Element > &target, Element scalar, const TVectorT< Element > &source1, const TVectorT< Element > &source2)
Modify addition: target += scalar * ElementMult(source1,source2) .
Bool_t MatchesNonZeroPattern(const TVectorT< Element > &select)
Check if vector elements as selected through array select are non-zero.
void AddSomeConstant(Element val, const TVectorT< Element > &select)
Add to vector elements as selected through array select the value val.
virtual TVectorD & GetSlowerBound()
virtual TVectorD & GetSupperBound()