6 #ifndef CoinPackedVectorBase_H 7 #define CoinPackedVectorBase_H 67 testForDuplicateIndex_ =
false;
68 testedDuplicateIndex_ =
false;
99 const char *className = NULL)
const;
142 template <
class FloatEqual >
152 std::map< int, double > mv;
157 mv.insert(std::make_pair(inds[i], elems[i]));
160 std::map< int, double > mvRhs;
164 mvRhs.insert(std::make_pair(inds[i], elems[i]));
167 std::map< int, double >::const_iterator mvI = mv.begin();
168 std::map< int, double >::const_iterator mvIlast = mv.end();
169 std::map< int, double >::const_iterator mvIrhs = mvRhs.begin();
170 while (mvI != mvIlast) {
171 if (mvI->first != mvIrhs->first || !eq(mvI->second, mvIrhs->second))
238 std::set< int > *
indexSet(
const char *methodName = NULL,
239 const char *className = NULL)
const;
246 maxIndex_ = x.maxIndex_;
247 minIndex_ = x.minIndex_;
254 mutable int maxIndex_;
257 mutable int minIndex_;
261 mutable std::set< int > *indexSetPtr_;
264 mutable bool testForDuplicateIndex_;
267 mutable bool testedDuplicateIndex_;
double oneNorm() const
Return the 1-norm of the vector.
bool operator==(const CoinPackedVectorBase &rhs) const
Equal.
int getMinIndex() const
Get value of minimum index.
double normSquare() const
Return the square of the 2-norm of the vector.
void setTestForDuplicateIndexWhenTrue(bool test) const
Set to the argument value whether to test for duplicate indices in the vector whenever they can occur...
bool testForDuplicateIndex() const
Returns true if the vector should be tested for duplicate indices when they can occur.
bool operator!=(const CoinPackedVectorBase &rhs) const
Not equal.
int findIndex(int i) const
Return the position of the i'th element of the full storage vector.
virtual ~CoinPackedVectorBase()
Destructor.
Abstract base class for various sparse vectors.
virtual const double * getElements() const =0
Get element values.
CoinPackedVectorBase()
Default constructor.
double operator[](int i) const
Access the i'th element of the full storage vector.
double dotProduct(const double *dense) const
Create the dot product with a full vector.
std::set< int > * indexSet(const char *methodName=NULL, const char *className=NULL) const
Return indexSetPtr_ (create it if necessary).
double * denseVector(int denseSize) const
Get the vector as a dense vector.
bool isEquivalent(const CoinPackedVectorBase &rhs, const FloatEqual &eq) const
equivalent - If shallow packed vector A & B are equivalent, then they are still equivalent no matter ...
int getMaxIndex() const
Get value of maximum index.
virtual int getNumElements() const =0
Get length of indices and elements vectors.
bool isExistingIndex(int i) const
Return true if the i'th element of the full storage vector exists in the packed storage vector...
double twoNorm() const
Return the 2-norm of the vector.
void duplicateIndex(const char *methodName=NULL, const char *className=NULL) const
Throw an exception if there are duplicate indices.
double infNorm() const
Return the infinity-norm of the vector.
void findMaxMinIndices() const
Find Maximum and Minimum Indices.
void setTestsOff() const
Just sets test stuff false without a try etc.
virtual const int * getIndices() const =0
Get indices of elements.
double sum() const
Sum elements of vector.
int compare(const CoinPackedVectorBase &rhs) const
This method establishes an ordering on packed vectors.
void setTestForDuplicateIndex(bool test) const
Set to the argument value whether to test for duplicate indices in the vector whenever they can occur...
void copyMaxMinIndex(const CoinPackedVectorBase &x) const
void clearIndexSet() const
Delete the indexSet.