24 OsiHintStrength strength;
26 bool gotHint = (lhs.getHintParam(OsiDoReducePrint, takeHint, strength));
28 bool printStuff =
true;
32 int numberRows = lhs.getNumRows();
33 int numberColumns = lhs.getNumCols();
34 int numberIntegers = lhs.getNumIntegers();
35 if (numberRows != rhs.getNumRows() || numberColumns != rhs.getNumCols()) {
38 "** Mismatch on size, this has %d rows, %d columns - rhs has %d "
40 numberRows, numberColumns, rhs.getNumRows(), rhs.getNumCols());
43 if (numberIntegers != rhs.getNumIntegers()) {
45 printf(
"** Mismatch on number of integers, this has %d - rhs has %d\n",
46 numberIntegers, rhs.getNumIntegers());
49 int numberErrors1 = 0;
50 int numberErrors2 = 0;
51 for (
int i = 0; i < numberColumns; i++) {
52 if (lhs.isInteger(i)) {
53 if (!rhs.isInteger(i)) numberErrors1++;
55 if (rhs.isInteger(i)) numberErrors2++;
58 if (numberErrors1 || numberErrors2) {
61 "** Mismatch on integers, %d (this int, rhs not), %d (this not rhs "
63 numberErrors1, numberErrors2);
67 const double* rowLower = lhs.getRowLower();
68 const double* rowUpper = lhs.getRowUpper();
69 const double* columnLower = lhs.getColLower();
70 const double* columnUpper = lhs.getColUpper();
71 const double* objective = lhs.getObjCoefficients();
72 const double* rowLower2 = rhs.getRowLower();
73 const double* rowUpper2 = rhs.getRowUpper();
74 const double* columnLower2 = rhs.getColLower();
75 const double* columnUpper2 = rhs.getColUpper();
76 const double* objective2 = rhs.getObjCoefficients();
77 const CoinPackedMatrix* matrix = lhs.getMatrixByCol();
78 const CoinPackedMatrix* matrix2 = rhs.getMatrixByCol();
79 CoinRelFltEq tolerance;
80 int numberDifferentL = 0;
81 int numberDifferentU = 0;
82 for (
int i = 0; i < numberRows; i++) {
83 if (!tolerance(rowLower[i], rowLower2[i])) numberDifferentL++;
84 if (!tolerance(rowUpper[i], rowUpper2[i])) numberDifferentU++;
86 int n = numberDifferentL + numberDifferentU;
89 printf(
"Row differences , %d lower, %d upper\n", numberDifferentL,
93 int numberDifferentO = 0;
94 for (
int i = 0; i < numberColumns; i++) {
95 if (!tolerance(columnLower[i], columnLower2[i])) numberDifferentL++;
96 if (!tolerance(columnUpper[i], columnUpper2[i])) numberDifferentU++;
97 if (!tolerance(objective[i], objective2[i])) numberDifferentO++;
99 n = numberDifferentL + numberDifferentU + numberDifferentO;
102 printf(
"Column differences , %d lower, %d upper, %d objective\n",
103 numberDifferentL, numberDifferentU, numberDifferentO);
104 if (matrix->getNumElements() == rhs.getNumElements()) {
105 if (!matrix->isEquivalent(*matrix2, tolerance)) {
107 if (printStuff) printf(
"Two matrices are not same\n");
112 printf(
"Two matrices are not same - %d elements and %d elements\n",
113 matrix->getNumElements(), matrix2->getNumElements());