ConicBundle
Public Member Functions | Private Attributes | List of all members
ConicBundle::CMsingleton Class Reference

implements a Coeffmat having just one nonzero element (or two by symmetry) for use with MatrixSDPfunction, see implemention of a PSCOracle (PSCAffineFunction). More...

#include <CMsingleton.hxx>

Inheritance diagram for ConicBundle::CMsingleton:
ConicBundle::Coeffmat CH_Matrix_Classes::Memarrayuser

Public Member Functions

 CMsingleton (CH_Matrix_Classes::Integer innr, CH_Matrix_Classes::Integer ini, CH_Matrix_Classes::Integer inj, CH_Matrix_Classes::Real inval, CoeffmatInfo *cip=0)
 the order is innr and the nonzero element (ini,inj) has values inval
 
virtual Coeffmatclone () const
 makes an explicit copy of itself and returns a pointer to it
 
virtual CH_Matrix_Classes::Integer dim () const
 returns the order of the represented symmetric matrix
 
virtual CH_Matrix_Classes::Real operator() (CH_Matrix_Classes::Integer i, CH_Matrix_Classes::Integer j) const
 returns the value of the matrix element (i,j)
 
virtual void make_symmatrix (CH_Matrix_Classes::Symmatrix &S) const
 returns a dense symmetric constraint matrix (useful for testing)
 
virtual CH_Matrix_Classes::Real norm (void) const
 returns the Frobenius norm of the matrix
 
virtual Coeffmatsubspace (const CH_Matrix_Classes::Matrix &P) const
 delivers a new object on the heap corresponding to the matrix P^T(*this)P, the caller is responsible for deleting the object
 
virtual void multiply (CH_Matrix_Classes::Real d)
 multiply constraint permanentely by d; this is to allow scaling or sign changes in the constraints
 
virtual CH_Matrix_Classes::Real ip (const CH_Matrix_Classes::Symmatrix &S) const
 returns ip(*this,S)=trace(*this*S), the trace inner product
 
virtual CH_Matrix_Classes::Real gramip (const CH_Matrix_Classes::Matrix &P) const
 returns ip(*this,PP^T)=trace P^T(*this)P
 
virtual CH_Matrix_Classes::Real gramip (const CH_Matrix_Classes::Matrix &P, CH_Matrix_Classes::Integer start_row, const CH_Matrix_Classes::Matrix *Lam=0) const
 returns ip(*this,QQ^T)=trace Q^T(*this)Q for Q=P.rows(start_row,start_row+dim-1)
 
virtual void addmeto (CH_Matrix_Classes::Symmatrix &S, CH_Matrix_Classes::Real d=1.) const
 computes S+=d*(*this);
 
virtual void addprodto (CH_Matrix_Classes::Matrix &B, const CH_Matrix_Classes::Matrix &C, CH_Matrix_Classes::Real d=1.) const
 comutes B+=d*(*this)*C
 
virtual void addprodto (CH_Matrix_Classes::Matrix &B, const CH_Matrix_Classes::Sparsemat &C, CH_Matrix_Classes::Real d=1.) const
 computes B+=d*(*this)*C
 
virtual void left_right_prod (const CH_Matrix_Classes::Matrix &P, const CH_Matrix_Classes::Matrix &Q, CH_Matrix_Classes::Matrix &R) const
 computes R=P^T*(*this)*Q
 
virtual CH_Matrix_Classes::Integer prodvec_flops () const
 returns an estimate of number of flops to compute addprodto for a vector
 
virtual int dense () const
 returns 1 if its structure is as bad as its dense symmetric representation, otherwise 0
 
virtual int sparse () const
 returns 0 if not sparse, otherwise 1
 
virtual int sparse (CH_Matrix_Classes::Indexmatrix &I, CH_Matrix_Classes::Indexmatrix &J, CH_Matrix_Classes::Matrix &v, CH_Matrix_Classes::Real d=1.) const
 returns 0 if not sparse. If it is sparse it returns 1 and the nonzero structure in I,J and v, where v is multiplied by d. Only the upper triangle (including diagonal) is delivered
 
virtual int support_in (const CH_Matrix_Classes::Sparsesym &S) const
 returns 0 if the support of the costraint matrix is not contained in the support of the sparse symmetric matrix S, 1 if it is contained.
 
virtual CH_Matrix_Classes::Real ip (const CH_Matrix_Classes::Sparsesym &S) const
 returns the inner product of the constraint matrix with S
 
virtual void project (CH_Matrix_Classes::Symmatrix &S, const CH_Matrix_Classes::Matrix &P) const
 computes S=P^T*(*this)*P
 
virtual void add_projection (CH_Matrix_Classes::Symmatrix &S, const CH_Matrix_Classes::Matrix &P, CH_Matrix_Classes::Real alpha=1., CH_Matrix_Classes::Integer start_row=0) const
 computes S+=Q^T(*this)Q for Q=P.rows(start_row,start_row+dim-1)
 
virtual const CH_Matrix_Classes::Matrixpostgenmult (const CH_Matrix_Classes::Matrix &B, CH_Matrix_Classes::Matrix &C, CH_Matrix_Classes::Real alpha=1., CH_Matrix_Classes::Real beta=0., int btrans=0) const
 computes C= alpha*(*this)*B^(T if btrans) + beta*C, C is also returned
 
virtual const CH_Matrix_Classes::Matrixpregenmult (const CH_Matrix_Classes::Matrix &B, CH_Matrix_Classes::Matrix &C, CH_Matrix_Classes::Real alpha=1., CH_Matrix_Classes::Real beta=0., int btrans=0) const
 computes C= alpha*B^(T if btrans)*(*this) + beta*C, C is also returned
 
virtual int equal (const Coeffmat *p, double tol=1e-6) const
 returns 1, if p is the same derived class and entries differ by less than tol, otherwise zero
 
virtual std::ostream & display (std::ostream &o) const
 display constraint information
 
virtual std::ostream & out (std::ostream &o) const
 put entire contents onto outstream with the class type in the beginning so that the derived class can be recognized by in().
 
virtual std::istream & in (std::istream &is)
 counterpart to out(), does not read the class type, though. This is assumed to have been read in order to generate the correct class
 
 CMsingleton (std::istream &is, CoeffmatInfo *cip=0)
 constructor with instream and possibly additional user information
 
int get_ijval (CH_Matrix_Classes::Integer &i, CH_Matrix_Classes::Integer &j, CH_Matrix_Classes::Real &v) const
 return the nonzero entry information
 
- Public Member Functions inherited from ConicBundle::Coeffmat
 Coeffmat (bool del_by_CoeffmatPointer=true)
 default constructor; set del_by_CoeffmatPointer==true if a CoeffmatPointer reducing the use_cnt to zero should delete this
 
void set_deletion_by_CoeffmatPointer (bool dbMP)
 if set to true any CoeffmatPointer that reduces use_cnt to zero will delete this object
 
virtual Coeffmattype get_type () const
 returns its Coeffmattype
 
virtual CoeffmatInfoget_info ()
 returns the user information
 
virtual const CoeffmatInfoget_info () const
 returns the user information in const form
 
virtual void set_info (CoeffmatInfo *cip)
 deletes the old and sets new user information
 

Private Attributes

CH_Matrix_Classes::Integer nr
 order/size of the matrix
 
CH_Matrix_Classes::Integer ii
 row index i of the nonzero element
 
CH_Matrix_Classes::Integer jj
 column index j of the nonzero element
 
CH_Matrix_Classes::Real val
 value of the element
 

Additional Inherited Members

- Protected Member Functions inherited from CH_Matrix_Classes::Memarrayuser
 Memarrayuser ()
 if memarray is NULL, then a new Memarray is generated. In any case the number of users of the Memarray is incremented
 
virtual ~Memarrayuser ()
 the number of users is decremented and the Memarray memory manager is destructed, if the number is zero.
 
- Protected Attributes inherited from ConicBundle::Coeffmat
Coeffmattype CM_type
 in order to enable type identification
 
CoeffmatInfoinfop
 allows the user to specify and output additional information
 
- Static Protected Attributes inherited from CH_Matrix_Classes::Memarrayuser
static Memarraymemarray
 pointer to common memory manager for all Memarrayusers, instantiated in memarray.cxx
 

Detailed Description

implements a Coeffmat having just one nonzero element (or two by symmetry) for use with MatrixSDPfunction, see implemention of a PSCOracle (PSCAffineFunction).


The documentation for this class was generated from the following file: