4 #ifndef ClpMatrixBase_H
5 #define ClpMatrixBase_H
7 #include "CoinPragma.hpp"
8 #include "CoinFinite.hpp"
10 #include "CoinPackedMatrix.hpp"
11 class CoinIndexedVector;
62 virtual void deleteCols(
const int numDel,
const int * indDel) = 0;
64 virtual void deleteRows(
const int numDel,
const int * indDel) = 0;
66 virtual void appendCols(
int number,
const CoinPackedVectorBase *
const * columns);
69 virtual void appendRows(
int number,
const CoinPackedVectorBase *
const * rows);
75 bool keepZero =
false);
81 const CoinBigIndex * starts,
const int * index,
82 const double * element,
int numberOther = -1);
91 virtual CoinBigIndex
countBasis(
const int * whichColumn,
92 int & numberColumnBasic) = 0;
95 const int * whichColumn,
96 int & numberColumnBasic,
97 int * row,
int * start,
98 int * rowCount,
int * columnCount,
99 CoinFactorizationDouble * element) = 0;
117 return this->
clone();
144 virtual void rangeOfElements(
double & smallestNegative,
double & largestNegative,
145 double & smallestPositive,
double & largestPositive);
150 int column)
const = 0;
156 CoinIndexedVector * rowArray,
157 int column)
const = 0;
167 virtual void reallyScale(
const double * rowScale,
const double * columnScale);
176 virtual void add(
const ClpSimplex * model, CoinIndexedVector * rowArray,
177 int column,
double multiplier)
const = 0;
180 int column,
double multiplier)
const = 0;
189 int & bestSequence,
int & numberWanted);
217 double * other,
int mode);
263 virtual void times(
double scalar,
264 const double * x,
double * y)
const = 0;
268 virtual void times(
double scalar,
269 const double * x,
double * y,
270 const double * rowScale,
271 const double * columnScale)
const;
276 const double * x,
double * y)
const = 0;
281 const double * x,
double * y,
282 const double * rowScale,
283 const double * columnScale,
284 double * spare = NULL)
const;
287 virtual void times(CoinWorkDouble scalar,
288 const CoinWorkDouble * x, CoinWorkDouble * y)
const ;
290 const CoinWorkDouble * x, CoinWorkDouble * y)
const ;
297 const CoinIndexedVector * x,
298 CoinIndexedVector * y,
299 CoinIndexedVector * z)
const = 0;
305 const CoinIndexedVector * x,
306 const CoinIndexedVector * y,
307 CoinIndexedVector * z)
const = 0;
311 const CoinIndexedVector * )
const {
316 const CoinIndexedVector * pi1, CoinIndexedVector * dj1,
317 const CoinIndexedVector * pi2,
318 CoinIndexedVector * spare,
319 double referenceIn,
double devex,
321 unsigned int * reference,
322 double * weights,
double scaleFactor);
325 CoinIndexedVector * dj1,
326 const CoinIndexedVector * pi2, CoinIndexedVector * dj2,
327 double referenceIn,
double devex,
329 unsigned int * reference,
330 double * weights,
double scaleFactor);
350 int numberRows,
const int * whichRows,
351 int numberColumns,
const int * whichColumns)
const;
510 #define FREE_BIAS 1.0e1
512 #define FREE_ACCEPT 1.0e2