00001
00002
00003
00004 #ifndef CoinPresolveZeros_H
00005 #define CoinPresolveZeros_H
00006
00007 #define DROP_ZERO 8
00008
00009 class drop_zero_coefficients_action : public CoinPresolveAction {
00010
00011 const int nzeros_;
00012 const dropped_zero *const zeros_;
00013
00014 drop_zero_coefficients_action(int nzeros,
00015 const dropped_zero *zeros,
00016 const CoinPresolveAction *next) :
00017 CoinPresolveAction(next),
00018 nzeros_(nzeros), zeros_(zeros)
00019 {}
00020
00021 public:
00022 const char *name() const { return ("drop_zero_coefficients_action"); }
00023
00024 static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
00025 int *checkcols,
00026 int ncheckcols,
00027 const CoinPresolveAction *next);
00028
00029 void postsolve(CoinPostsolveMatrix *prob) const;
00030
00031 ~drop_zero_coefficients_action() { deleteAction(zeros_,dropped_zero*); }
00032 };
00033
00034 const CoinPresolveAction *drop_zero_coefficients(CoinPresolveMatrix *prob,
00035 const CoinPresolveAction *next);
00036
00037 #endif