Program: 131723
Project: 131723
Buggy source:
public static void setBoundsFromInitSol(DmvRelaxation dw,DmvSolution initSol,double offsetProb,double probOfSkipCm){
  boolean forward=true;
  double offsetLogProb=Utilities.log(offsetProb);
  double[][] logProbs=initSol.getLogProbs();
  for (int c=0; c < dw.getIdm().getNumConds(); c++) {
    for (int m=0; m < dw.getIdm().getNumParams(c); m++) {
      double newL, newU;
      DmvBounds origBounds=dw.getBounds();
      double lb=origBounds.getLb(c,m);
      double ub=origBounds.getUb(c,m);
      if (Prng.nextDouble() < probOfSkipCm) {
        newL=DmvBounds.DEFAULT_LOWER_BOUND;
        newU=DmvBounds.DEFAULT_UPPER_BOUND;
      }
 else {
        newU=Utilities.logAdd(logProbs[c][m],offsetLogProb);
        if (newU > DmvBounds.DEFAULT_UPPER_BOUND) {
          newU=DmvBounds.DEFAULT_UPPER_BOUND;
        }
        if (logProbs[c][m] > offsetLogProb) {
          newL=Utilities.logSubtract(logProbs[c][m],offsetLogProb);
        }
 else {
          newL=DmvBounds.DEFAULT_LOWER_BOUND;
        }
      }
      double deltU=newU - ub;
      double deltL=newL - lb;
      DmvBoundsDelta deltas1=new DmvBoundsDelta(c,m,Lu.UPPER,deltU);
      DmvBoundsDelta deltas2=new DmvBoundsDelta(c,m,Lu.LOWER,deltL);
      if (forward) {
        dw.forwardApply(deltas1);
        dw.forwardApply(deltas2);
      }
 else {
        dw.reverseApply(deltas1);
        dw.reverseApply(deltas2);
      }
      System.out.println("String_Node_Str" + dw.getBounds().getLb(c,m) + "String_Node_Str"+ dw.getBounds().getUb(c,m));
    }
  }
}

Fixed version (ground truth):
public static void setBoundsFromInitSol(DmvRelaxation dw,DmvSolution initSol,double offsetProb,double probOfSkipCm){
  boolean forward=true;
  double offsetLogProb=Utilities.log(offsetProb);
  double[][] logProbs=initSol.getLogProbs();
  for (int c=0; c < dw.getIdm().getNumConds(); c++) {
    for (int m=0; m < dw.getIdm().getNumParams(c); m++) {
      double newL, newU;
      DmvBounds origBounds=dw.getBounds();
      double lb=origBounds.getLb(c,m);
      double ub=origBounds.getUb(c,m);
      if (Prng.nextDouble() < probOfSkipCm) {
        newL=DmvBounds.DEFAULT_LOWER_BOUND;
        newU=DmvBounds.DEFAULT_UPPER_BOUND;
      }
 else {
        newU=Utilities.logAdd(logProbs[c][m],offsetLogProb);
        if (newU > DmvBounds.DEFAULT_UPPER_BOUND) {
          newU=DmvBounds.DEFAULT_UPPER_BOUND;
        }
        if (logProbs[c][m] > offsetLogProb) {
          newL=Utilities.logSubtract(logProbs[c][m],offsetLogProb);
        }
 else {
          newL=DmvBounds.DEFAULT_LOWER_BOUND;
        }
      }
      double deltU=newU - ub;
      double deltL=newL - lb;
      DmvBoundsDelta deltas1=new DmvBoundsDelta(c,m,Lu.UPPER,deltU);
      DmvBoundsDelta deltas2=new DmvBoundsDelta(c,m,Lu.LOWER,deltL);
      if (forward) {
        if (lb <= newU) {
          dw.forwardApply(deltas1);
          dw.forwardApply(deltas2);
        }
 else {
          dw.forwardApply(deltas2);
          dw.forwardApply(deltas1);
        }
      }
 else {
        dw.reverseApply(deltas1);
        dw.reverseApply(deltas2);
      }
      System.out.println("String_Node_Str" + dw.getBounds().getLb(c,m) + "String_Node_Str"+ dw.getBounds().getUb(c,m));
    }
  }
}