Changeset 1291


Ignore:
Timestamp:
Oct 20, 2008 5:43:03 AM (11 years ago)
Author:
forrest
Message:

allow for small elements coming in

File:
1 edited

Legend:

Unmodified
Added
Removed
  • stable/1.8/Clp/src/ClpPresolve.cpp

    r1197 r1291  
    10721072
    10731073  const CoinBigIndex * start = m->getVectorStarts();
    1074   const int * length = m->getVectorLengths();
    10751074  const int * row = m->getIndices();
    10761075  const double * element = m->getElements();
    10771076  int icol,nel=0;
    10781077  mcstrt_[0]=0;
     1078  ClpDisjointCopyN(m->getVectorLengths(),ncols_,  hincol_);
    10791079  for (icol=0;icol<ncols_;icol++) {
    1080     int j;
    1081     for (j=start[icol];j<start[icol]+length[icol];j++) {
     1080    CoinBigIndex j;
     1081    for (j=start[icol];j<start[icol]+hincol_[icol];j++) {
    10821082      hrow_[nel]=row[j];
    1083       colels_[nel++]=element[j];
     1083      if (fabs(element[j])>ZTOLDP)
     1084        colels_[nel++]=element[j];
    10841085    }
    10851086    mcstrt_[icol+1]=nel;
    1086   }
    1087   assert(mcstrt_[ncols_] == nelems_);
    1088   ClpDisjointCopyN(m->getVectorLengths(),ncols_,  hincol_);
     1087    hincol_[icol]=nel-mcstrt_[icol];
     1088  }
    10891089
    10901090  // same thing for row rep
     
    11171117  hinrow_ = new int[nrows_in+1];
    11181118  ClpDisjointCopyN(len, nrows_,  hinrow_);
     1119  if (nelems_>nel) {
     1120    nelems_ = nel;
     1121    // Clean any small elements
     1122    int irow;
     1123    nel=0;
     1124    CoinBigIndex start=0;
     1125    for (irow=0;irow<nrows_;irow++) {
     1126      CoinBigIndex j;
     1127      for (j=start;j<start+hinrow_[irow];j++) {
     1128        hcol_[nel]=hcol_[j];
     1129        if (fabs(rowels_[j])>ZTOLDP)
     1130          rowels_[nel++]=rowels_[j];
     1131      }
     1132      start=mrstrt_[irow+1];
     1133      mrstrt_[irow+1]=nel;
     1134      hinrow_[irow]=nel-mrstrt_[irow];
     1135    }
     1136  }
    11191137
    11201138  delete mRow;
Note: See TracChangeset for help on using the changeset viewer.