4 #ifndef CoinPackedVector_H
5 #define CoinPackedVector_H
9 # pragma warning(disable:4786)
16 #ifndef COIN_NOTEST_DUPLICATE
17 #define COIN_DEFAULT_VALUE_FOR_DUPLICATE true
19 #define COIN_DEFAULT_VALUE_FOR_DUPLICATE false
172 void setVector(
int size,
const int * inds,
const double * elems,
176 void setConstant(
int size,
const int * inds,
double elems,
180 void setFull(
int size,
const double * elems,
194 void insert(
int index,
double element);
199 void swap(
int i,
int j);
227 template <
class CoinCompare3>
228 void sort(
const CoinCompare3 & tc)
305 const int * inds,
const double * elems,
307 const char * method);
310 const int * inds,
double value,
312 const char * method);
348 template <
class BinaryFunction>
void
359 for (
int i=0; i<s; ++i ) {
360 retVal.
insert(inds[i], bf(value, elems[i]));
365 template <
class BinaryFunction>
inline void
373 template <
class BinaryFunction>
void
387 if (s1 == 0 && s2 == 0)
399 for ( i=0; i<s1; ++i ) {
400 const int index = inds1[i];
402 const double val = bf(elems1[i], pos2 == -1 ? 0.0 : elems2[pos2]);
404 retVal.
insert(index, val);
407 for ( i=0; i<s2; ++i ) {
408 const int index = inds2[i];
413 const double val = bf(0.0, elems2[i]);
415 retVal.
insert(index, val);
458 binaryOp(retVal, op1, op2, std::plus<double>());
468 binaryOp(retVal, op1, op2, std::minus<double>());
478 binaryOp(retVal, op1, op2, std::multiplies<double>());
488 binaryOp(retVal, op1, op2, std::divides<double>());
505 for(i = 0; i < len; i++){
516 int i, j, len1, len2;
530 while(i < len1 && j < len2){
531 if(v1ind[i] == v2ind[j]){
532 acc += v1val[i] * v2val[j];
536 else if(v2ind[j] < v1ind[i]){
608 for (
int i = 0; i < size; ++i) {
609 elems[i] = value - elems[i];
630 for (
int i = 0; i < size; ++i) {
631 elems[i] = value / elems[i];