00001 // Copyright (C) 2002, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 00004 #ifndef CoinPresolveZeros_H 00005 #define CoinPresolveZeros_H 00006 00012 #define DROP_ZERO 8 00013 00020 struct dropped_zero { 00021 int row; 00022 int col; 00023 }; 00024 00030 class drop_zero_coefficients_action : public CoinPresolveAction { 00031 00032 const int nzeros_; 00033 const dropped_zero *const zeros_; 00034 00035 drop_zero_coefficients_action(int nzeros, 00036 const dropped_zero *zeros, 00037 const CoinPresolveAction *next) : 00038 CoinPresolveAction(next), 00039 nzeros_(nzeros), zeros_(zeros) 00040 {} 00041 00042 public: 00043 const char *name() const { return ("drop_zero_coefficients_action"); } 00044 00045 static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob, 00046 int *checkcols, 00047 int ncheckcols, 00048 const CoinPresolveAction *next); 00049 00050 void postsolve(CoinPostsolveMatrix *prob) const; 00051 00052 ~drop_zero_coefficients_action() { deleteAction(zeros_,dropped_zero*); } 00053 }; 00054 00055 const CoinPresolveAction *drop_zero_coefficients(CoinPresolveMatrix *prob, 00056 const CoinPresolveAction *next); 00057 00058 #endif