[Coin-discuss] debug printf left in CglKnapsackCover.cpp?

Kish Shen kish.shen at crosscoreop.com
Fri Nov 10 21:58:09 EST 2006


Hi,

I was running some code using Cbc, and some extra output was produced:

At one 1
88 21 1.48197
frac 2
23 2.0833 0.746648
94 0.6667 0.373324

These look like some sort of debugging output, and after some checking, I found that they 
came from CglKnapsackCover.cpp, in the function liftUpDownAndUncomplementAndAdd():

  if (unsatRhs<=0.0&&fabs(xstar[firstFrac])>epsilon2_) {
    printf("At one %d\n",atOne.getNumElements());
    for (i=0; i<atOne.getNumElements(); i++){
      int iColumn = atOne.getIndices()[i];
      printf("%d %g %g\n",atOne.getIndices()[i],atOne.getElements()[i],
	     xstar[iColumn]);
    }
    printf("frac %d\n",fracCover.getNumElements());
    for (i=0; i<fracCover.getNumElements(); i++){
      int iColumn = fracCover.getIndices()[i];
      printf("%d %g %g\n",fracCover.getIndices()[i],fracCover.getElements()[i],
	     xstar[iColumn]);
    }

I assume these should only be printed if debugging, so I have put a #ifdef PRINT_DEBUG
around this code.

However, should my code have reached here under normal circumstances, or are the printf's
here to show the user an error condition?

I am using the trunk branch, but I checked the stable branch, and the above code is also there.

Looking at CglKnapsackCover.cpp, I found another printf that is not enclosed by ifdefs, in 
deriveAKnapsack(), around line 928 in my copy of the file:

      printf("*** Doubleton Row is ");
      for(i=0; i<2; i++){
	int iColumn = indices[i];
	sum += elements[i]*xstar[iColumn];
	printf("%d (coeff = %g, value = %g} ",indices[i],
	       elements[i],xstar[iColumn]);
      }
      printf("<= %g - go for it\n",b);

Should there be an ifdef around this as well?

--Kish Shen


 





More information about the Coin-discuss mailing list