diff --git a/packages/CLPBN/clpbn/bp/LiftedUtils.h b/packages/CLPBN/clpbn/bp/LiftedUtils.h index d4ec22c55..181e98789 100644 --- a/packages/CLPBN/clpbn/bp/LiftedUtils.h +++ b/packages/CLPBN/clpbn/bp/LiftedUtils.h @@ -37,7 +37,7 @@ class Symbol class LogVar { public: - LogVar (void) : id_(numeric_limits::max()) { } + LogVar (void) : id_(Util::maxUnsigned()) { } LogVar (unsigned id) : id_(id) { } @@ -52,7 +52,7 @@ class LogVar bool valid (void) const { - return id_ != numeric_limits::max(); + return id_ != Util::maxUnsigned(); } friend ostream& operator<< (ostream &os, const LogVar& X); diff --git a/packages/CLPBN/clpbn/bp/Parfactor.cpp b/packages/CLPBN/clpbn/bp/Parfactor.cpp index 9e86cc23f..bfa9743ea 100644 --- a/packages/CLPBN/clpbn/bp/Parfactor.cpp +++ b/packages/CLPBN/clpbn/bp/Parfactor.cpp @@ -285,6 +285,12 @@ Parfactor::expand (LogVar X, LogVar X_new1, LogVar X_new2) args_.insert (args_.begin() + fIdx + 1, args_[fIdx]); args_[fIdx].rename (X, X_new1); args_[fIdx + 1].rename (X, X_new2); + if (H1 == 2) { + args_[fIdx].clearCountedLogVar(); + } + if (H2 == 2) { + args_[fIdx + 1].clearCountedLogVar(); + } ranges_.insert (ranges_.begin() + fIdx + 1, H2); ranges_[fIdx] = H1; } diff --git a/packages/CLPBN/clpbn/bp/ProbFormula.cpp b/packages/CLPBN/clpbn/bp/ProbFormula.cpp index f27221acf..785163202 100644 --- a/packages/CLPBN/clpbn/bp/ProbFormula.cpp +++ b/packages/CLPBN/clpbn/bp/ProbFormula.cpp @@ -76,6 +76,14 @@ ProbFormula::setCountedLogVar (LogVar lv) +void +ProbFormula::clearCountedLogVar (void) +{ + countedLogVar_ = LogVar(); +} + + + void ProbFormula::rename (LogVar oldName, LogVar newName) { diff --git a/packages/CLPBN/clpbn/bp/ProbFormula.h b/packages/CLPBN/clpbn/bp/ProbFormula.h index aa6c70bf9..9982c4865 100644 --- a/packages/CLPBN/clpbn/bp/ProbFormula.h +++ b/packages/CLPBN/clpbn/bp/ProbFormula.h @@ -50,6 +50,8 @@ class ProbFormula LogVar countedLogVar (void) const; void setCountedLogVar (LogVar); + + void clearCountedLogVar (void); void rename (LogVar, LogVar);