[Frederik Eaton] Change cout to cerr in warnings and error messages
authorJoris Mooij <joris.mooij@tuebingen.mpg.de>
Tue, 3 Mar 2009 08:52:11 +0000 (09:52 +0100)
committerJoris Mooij <joris.mooij@tuebingen.mpg.de>
Tue, 3 Mar 2009 08:52:11 +0000 (09:52 +0100)
13 files changed:
ChangeLog
src/bp.cpp
src/exactinf.cpp
src/factorgraph.cpp
src/gibbs.cpp
src/hak.cpp
src/jtree.cpp
src/lc.cpp
src/matlab/matlab.cpp
src/mf.cpp
src/mr.cpp
src/regiongraph.cpp
src/treeep.cpp

index ad1152b..2101f2d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4 @@
+* [Frederik Eaton] Change cout to cerr in warnings and error messages
 * [Giuseppe Passino] Optimised maximum-residual BP by using a reversed ordered
   set instead of the linear search (which can yield enormous speedups - a factor
   500 has been measured on a binary Ising grid with 128x128 variables!)
index fb30e9a..e83c65b 100644 (file)
@@ -246,9 +246,9 @@ void BP::calcNewMessage( size_t i, size_t _I ) {
 // Somehow NaNs do not often occur in BP...
 double BP::run() {
     if( props.verbose >= 1 )
-        cout << "Starting " << identify() << "...";
+        cerr << "Starting " << identify() << "...";
     if( props.verbose >= 3)
-        cout << endl;
+        cerr << endl;
 
     double tic = toc();
     Diffs diffs(nrVars(), 1.0);
@@ -327,7 +327,7 @@ double BP::run() {
         }
 
         if( props.verbose >= 3 )
-            cout << Name << "::run:  maxdiff " << diffs.maxDiff() << " after " << _iters+1 << " passes" << endl;
+            cerr << Name << "::run:  maxdiff " << diffs.maxDiff() << " after " << _iters+1 << " passes" << endl;
     }
 
     if( diffs.maxDiff() > _maxdiff )
@@ -336,12 +336,12 @@ double BP::run() {
     if( props.verbose >= 1 ) {
         if( diffs.maxDiff() > props.tol ) {
             if( props.verbose == 1 )
-                cout << endl;
-                cout << Name << "::run:  WARNING: not converged within " << props.maxiter << " passes (" << toc() - tic << " seconds)...final maxdiff:" << diffs.maxDiff() << endl;
+                cerr << endl;
+                cerr << Name << "::run:  WARNING: not converged within " << props.maxiter << " passes (" << toc() - tic << " seconds)...final maxdiff:" << diffs.maxDiff() << endl;
         } else {
             if( props.verbose >= 3 )
-                cout << Name << "::run:  ";
-                cout << "converged in " << _iters << " passes (" << toc() - tic << " seconds)." << endl;
+                cerr << Name << "::run:  ";
+                cerr << "converged in " << _iters << " passes (" << toc() - tic << " seconds)." << endl;
         }
     }
 
index bb56a45..1b31aba 100644 (file)
@@ -80,7 +80,7 @@ void ExactInf::init() {
 
 double ExactInf::run() {
     if( props.verbose >= 1 )
-        cout << "Starting " << identify() << "...";
+        cerr << "Starting " << identify() << "...";
 
     Factor P;
     for( size_t I = 0; I < nrFactors(); I++ )
@@ -94,7 +94,7 @@ double ExactInf::run() {
         _beliefsF[I] = P.marginal(factor(I).vars());
 
     if( props.verbose >= 1 )
-        cout << "finished" << endl;
+        cerr << "finished" << endl;
 
     return 0.0;
 }
index 4f585eb..57614c2 100644 (file)
@@ -125,7 +125,7 @@ istream& operator >> (istream& is, FactorGraph& fg) {
     if( is.fail() )
         DAI_THROW(INVALID_FACTORGRAPH_FILE);
     if( verbose >= 2 )
-        cout << "Reading " << nr_Factors << " factors..." << endl;
+        cerr << "Reading " << nr_Factors << " factors..." << endl;
 
     getline (is,line);
     if( is.fail() )
@@ -134,13 +134,13 @@ istream& operator >> (istream& is, FactorGraph& fg) {
     map<long,size_t> vardims;
     for( size_t I = 0; I < nr_Factors; I++ ) {
         if( verbose >= 3 )
-            cout << "Reading factor " << I << "..." << endl;
+            cerr << "Reading factor " << I << "..." << endl;
         size_t nr_members;
         while( (is.peek()) == '#' )
             getline(is,line);
         is >> nr_members;
         if( verbose >= 3 )
-            cout << "  nr_members: " << nr_members << endl;
+            cerr << "  nr_members: " << nr_members << endl;
 
         vector<long> labels;
         for( size_t mi = 0; mi < nr_members; mi++ ) {
@@ -151,7 +151,7 @@ istream& operator >> (istream& is, FactorGraph& fg) {
             labels.push_back(mi_label);
         }
         if( verbose >= 3 )
-            cout << "  labels: " << labels << endl;
+            cerr << "  labels: " << labels << endl;
 
         vector<size_t> dims;
         for( size_t mi = 0; mi < nr_members; mi++ ) {
@@ -162,7 +162,7 @@ istream& operator >> (istream& is, FactorGraph& fg) {
             dims.push_back(mi_dim);
         }
         if( verbose >= 3 )
-            cout << "  dimensions: " << dims << endl;
+            cerr << "  dimensions: " << dims << endl;
 
         // add the Factor
         VarSet I_vars;
@@ -187,7 +187,7 @@ istream& operator >> (istream& is, FactorGraph& fg) {
             sigma[mi] = j_loc - labels.begin();
         }
         if( verbose >= 3 )
-            cout << "  sigma: " << sigma << endl;
+            cerr << "  sigma: " << sigma << endl;
 
         // calculate multindices
         Permute permindex( dims, sigma );
@@ -198,7 +198,7 @@ istream& operator >> (istream& is, FactorGraph& fg) {
             getline(is,line);
         is >> nr_nonzeros;
         if( verbose >= 3 ) 
-            cout << "  nonzeroes: " << nr_nonzeros << endl;
+            cerr << "  nonzeroes: " << nr_nonzeros << endl;
         for( size_t k = 0; k < nr_nonzeros; k++ ) {
             size_t li;
             double val;
@@ -216,7 +216,7 @@ istream& operator >> (istream& is, FactorGraph& fg) {
     }
 
     if( verbose >= 3 )
-        cout << "factors:" << facs << endl;
+        cerr << "factors:" << facs << endl;
 
     fg = FactorGraph(facs);
 
index 940b73b..bbe3f0e 100644 (file)
@@ -164,9 +164,9 @@ void Gibbs::init() {
 
 double Gibbs::run() {
     if( props.verbose >= 1 )
-        cout << "Starting " << identify() << "...";
+        cerr << "Starting " << identify() << "...";
     if( props.verbose >= 3 )
-        cout << endl;
+        cerr << endl;
 
     double tic = toc();
     
@@ -186,7 +186,7 @@ double Gibbs::run() {
     }
     
     if( props.verbose >= 3 )
-        cout << Name << "::run:  ran " << props.iters << " passes (" << toc() - tic << " clocks)." << endl;
+        cerr << Name << "::run:  ran " << props.iters << " passes (" << toc() - tic << " clocks)." << endl;
 
     return 0.0;
 }
index c54701b..40e34ee 100644 (file)
@@ -156,9 +156,9 @@ HAK::HAK(const FactorGraph & fg, const PropertySet &opts) : DAIAlgRG(), _Qa(), _
         for( set<VarSet>::const_iterator c = scl.begin(); c != scl.end(); c++ )
             cl.push_back(*c);
         if( props.verbose >= 3 ) {
-            cout << Name << " uses the following clusters: " << endl;
+            cerr << Name << " uses the following clusters: " << endl;
             for( vector<VarSet>::const_iterator cli = cl.begin(); cli != cl.end(); cli++ )
-                cout << *cli << endl;
+                cerr << *cli << endl;
         }
     } else
         DAI_THROW(INTERNAL_ERROR);
@@ -168,7 +168,7 @@ HAK::HAK(const FactorGraph & fg, const PropertySet &opts) : DAIAlgRG(), _Qa(), _
     constructMessages();
 
     if( props.verbose >= 3 )
-        cout << Name << " regiongraph: " << *this << endl;
+        cerr << Name << " regiongraph: " << *this << endl;
 }
 
 
@@ -212,9 +212,9 @@ void HAK::init() {
 
 double HAK::doGBP() {
     if( props.verbose >= 1 )
-        cout << "Starting " << identify() << "...";
+        cerr << "Starting " << identify() << "...";
     if( props.verbose >= 3)
-        cout << endl;
+        cerr << endl;
 
     double tic = toc();
 
@@ -260,7 +260,7 @@ double HAK::doGBP() {
             Qb_new.normalize();
             if( Qb_new.hasNaNs() ) {
                 // TODO: WHAT TO DO IN THIS CASE?
-                cout << Name << "::doGBP:  Qb_new has NaNs!" << endl;
+                cerr << Name << "::doGBP:  Qb_new has NaNs!" << endl;
                 return 1.0;
             }
             /* TODO: WHAT IS THE PURPOSE OF THE FOLLOWING CODE?
@@ -289,7 +289,7 @@ double HAK::doGBP() {
                 Qa_new ^= (1.0 / OR(alpha).c());
                 Qa_new.normalize();
                 if( Qa_new.hasNaNs() ) {
-                    cout << Name << "::doGBP:  Qa_new has NaNs!" << endl;
+                    cerr << Name << "::doGBP:  Qa_new has NaNs!" << endl;
                     return 1.0;
                 }
                 /* TODO: WHAT IS THE PURPOSE OF THE FOLLOWING CODE?
@@ -313,7 +313,7 @@ double HAK::doGBP() {
         }
 
         if( props.verbose >= 3 )
-            cout << Name << "::doGBP:  maxdiff " << diffs.maxDiff() << " after " << _iters+1 << " passes" << endl;
+            cerr << Name << "::doGBP:  maxdiff " << diffs.maxDiff() << " after " << _iters+1 << " passes" << endl;
     }
 
     if( diffs.maxDiff() > _maxdiff )
@@ -322,12 +322,12 @@ double HAK::doGBP() {
     if( props.verbose >= 1 ) {
         if( diffs.maxDiff() > props.tol ) {
             if( props.verbose == 1 )
-                cout << endl;
-            cout << Name << "::doGBP:  WARNING: not converged within " << props.maxiter << " passes (" << toc() - tic << " seconds)...final maxdiff:" << diffs.maxDiff() << endl;
+                cerr << endl;
+            cerr << Name << "::doGBP:  WARNING: not converged within " << props.maxiter << " passes (" << toc() - tic << " seconds)...final maxdiff:" << diffs.maxDiff() << endl;
         } else {
             if( props.verbose >= 2 )
-                cout << Name << "::doGBP:  ";
-            cout << "converged in " << _iters << " passes (" << toc() - tic << " seconds)." << endl;
+                cerr << Name << "::doGBP:  ";
+            cerr << "converged in " << _iters << " passes (" << toc() - tic << " seconds)." << endl;
         }
     }
 
@@ -337,9 +337,9 @@ double HAK::doGBP() {
 
 double HAK::doDoubleLoop() {
     if( props.verbose >= 1 )
-        cout << "Starting " << identify() << "...";
+        cerr << "Starting " << identify() << "...";
     if( props.verbose >= 3)
-        cout << endl;
+        cerr << endl;
 
     double tic = toc();
 
@@ -396,7 +396,7 @@ double HAK::doDoubleLoop() {
         total_iter += Iterations();
 
         if( props.verbose >= 3 )
-            cout << Name << "::doDoubleLoop:  maxdiff " << diffs.maxDiff() << " after " << total_iter << " passes" << endl;
+            cerr << Name << "::doDoubleLoop:  maxdiff " << diffs.maxDiff() << " after " << total_iter << " passes" << endl;
     }
 
     // restore _maxiter, _verbose and _maxdiff
@@ -418,12 +418,12 @@ double HAK::doDoubleLoop() {
     if( props.verbose >= 1 ) {
         if( diffs.maxDiff() > props.tol ) {
             if( props.verbose == 1 )
-                cout << endl;
-                cout << Name << "::doDoubleLoop:  WARNING: not converged within " << outer_maxiter << " passes (" << toc() - tic << " seconds)...final maxdiff:" << diffs.maxDiff() << endl;
+                cerr << endl;
+                cerr << Name << "::doDoubleLoop:  WARNING: not converged within " << outer_maxiter << " passes (" << toc() - tic << " seconds)...final maxdiff:" << diffs.maxDiff() << endl;
             } else {
                 if( props.verbose >= 3 )
-                    cout << Name << "::doDoubleLoop:  ";
-                cout << "converged in " << total_iter << " passes (" << toc() - tic << " seconds)." << endl;
+                    cerr << Name << "::doDoubleLoop:  ";
+                cerr << "converged in " << total_iter << " passes (" << toc() - tic << " seconds)." << endl;
             }
         }
 
index b190666..177b405 100644 (file)
@@ -74,16 +74,16 @@ JTree::JTree( const FactorGraph &fg, const PropertySet &opts, bool automatic ) :
         ClusterGraph _cg( cl );
 
         if( props.verbose >= 3 )
-            cout << "Initial clusters: " << _cg << endl;
+            cerr << "Initial clusters: " << _cg << endl;
 
         // Retain only maximal clusters
         _cg.eraseNonMaximal();
         if( props.verbose >= 3 )
-            cout << "Maximal clusters: " << _cg << endl;
+            cerr << "Maximal clusters: " << _cg << endl;
 
         vector<VarSet> ElimVec = _cg.VarElim_MinFill().eraseNonMaximal().toVector();
         if( props.verbose >= 3 )
-            cout << "VarElim_MinFill result: " << ElimVec << endl;
+            cerr << "VarElim_MinFill result: " << ElimVec << endl;
 
         GenerateJT( ElimVec );
     }
@@ -163,7 +163,7 @@ void JTree::GenerateJT( const std::vector<VarSet> &Cliques ) {
     Check_Counting_Numbers();
 
     if( props.verbose >= 3 ) {
-        cout << "Resulting regiongraph: " << *this << endl;
+        cerr << "Resulting regiongraph: " << *this << endl;
     }
 }
 
index e40964a..067705c 100644 (file)
@@ -135,7 +135,7 @@ double LC::CalcCavityDist (size_t i, const std::string &name, const PropertySet
     double maxdiff = 0;
 
     if( props.verbose >= 2 )
-        cout << "Initing cavity " << var(i) << "(" << delta(i).size() << " vars, " << delta(i).nrStates() << " states)" << endl;
+        cerr << "Initing cavity " << var(i) << "(" << delta(i).size() << " vars, " << delta(i).nrStates() << " states)" << endl;
 
     if( props.cavity == Properties::CavityType::UNIFORM )
         Bi = Factor(delta(i));
@@ -166,15 +166,15 @@ double LC::InitCavityDists( const std::string &name, const PropertySet &opts ) {
     double tic = toc();
 
     if( props.verbose >= 1 ) {
-        cout << Name << "::InitCavityDists:  ";
+        cerr << Name << "::InitCavityDists:  ";
         if( props.cavity == Properties::CavityType::UNIFORM )
-            cout << "Using uniform initial cavity distributions" << endl;
+            cerr << "Using uniform initial cavity distributions" << endl;
         else if( props.cavity == Properties::CavityType::FULL )
-            cout << "Using full " << name << opts << "...";
+            cerr << "Using full " << name << opts << "...";
         else if( props.cavity == Properties::CavityType::PAIR )
-            cout << "Using pairwise " << name << opts << "...";
+            cerr << "Using pairwise " << name << opts << "...";
         else if( props.cavity == Properties::CavityType::PAIR2 )
-            cout << "Using pairwise(new) " << name << opts << "...";
+            cerr << "Using pairwise(new) " << name << opts << "...";
     }
 
     double maxdiff = 0.0;
@@ -185,7 +185,7 @@ double LC::InitCavityDists( const std::string &name, const PropertySet &opts ) {
     }
 
     if( props.verbose >= 1 ) {
-        cout << Name << "::InitCavityDists used " << toc() - tic << " seconds." << endl;
+        cerr << Name << "::InitCavityDists used " << toc() - tic << " seconds." << endl;
     }
 
     return maxdiff;
@@ -194,7 +194,7 @@ double LC::InitCavityDists( const std::string &name, const PropertySet &opts ) {
 
 long LC::SetCavityDists( std::vector<Factor> &Q ) {
     if( props.verbose >= 1 ) 
-        cout << Name << "::SetCavityDists:  Setting initial cavity distributions" << endl;
+        cerr << Name << "::SetCavityDists:  Setting initial cavity distributions" << endl;
     if( Q.size() != nrVars() )
         return -1;
     for( size_t i = 0; i < nrVars(); i++ ) {
@@ -240,7 +240,7 @@ Factor LC::NewPancake (size_t i, size_t _I, bool & hasNaNs) {
     piet.normalize();
 
     if( piet.hasNaNs() ) {
-        cout << Name << "::NewPancake(" << i << ", " << _I << "):  has NaNs!" << endl;
+        cerr << Name << "::NewPancake(" << i << ", " << _I << "):  has NaNs!" << endl;
         hasNaNs = true;
     }
 
@@ -250,9 +250,9 @@ Factor LC::NewPancake (size_t i, size_t _I, bool & hasNaNs) {
 
 double LC::run() {
     if( props.verbose >= 1 )
-        cout << "Starting " << identify() << "...";
+        cerr << "Starting " << identify() << "...";
     if( props.verbose >= 2 )
-        cout << endl;
+        cerr << endl;
 
     double tic = toc();
     Diffs diffs(nrVars(), 1.0);
@@ -286,7 +286,7 @@ double LC::run() {
             break;
         }
     if( hasNaNs ) {
-        cout << Name << "::run:  initial _pancakes has NaNs!" << endl;
+        cerr << Name << "::run:  initial _pancakes has NaNs!" << endl;
         return 1.0;
     }
 
@@ -320,7 +320,7 @@ double LC::run() {
         }
 
         if( props.verbose >= 3 )
-            cout << Name << "::run:  maxdiff " << diffs.maxDiff() << " after " << _iters+1 << " passes" << endl;
+            cerr << Name << "::run:  maxdiff " << diffs.maxDiff() << " after " << _iters+1 << " passes" << endl;
     }
 
     if( diffs.maxDiff() > _maxdiff )
@@ -329,12 +329,12 @@ double LC::run() {
     if( props.verbose >= 1 ) {
         if( diffs.maxDiff() > props.tol ) {
             if( props.verbose == 1 )
-                cout << endl;
-                cout << Name << "::run:  WARNING: not converged within " << props.maxiter << " passes (" << toc() - tic << " seconds)...final maxdiff:" << diffs.maxDiff() << endl;
+                cerr << endl;
+                cerr << Name << "::run:  WARNING: not converged within " << props.maxiter << " passes (" << toc() - tic << " seconds)...final maxdiff:" << diffs.maxDiff() << endl;
         } else {
             if( props.verbose >= 2 )
-                cout << Name << "::run:  ";
-                cout << "converged in " << _iters << " passes (" << toc() - tic << " seconds)." << endl;
+                cerr << Name << "::run:  ";
+                cerr << "converged in " << _iters << " passes (" << toc() - tic << " seconds)." << endl;
         }
     }
 
index a2b053e..e3ba1a9 100644 (file)
@@ -83,7 +83,7 @@ vector<Factor> mx2Factors(const mxArray *psi, long verbose) {
     // interpret psi, linear cell array of cptabs
     for( size_t cellind = 0; cellind < nr_f; cellind++ ) {
         if( verbose >= 3 )
-            cout << "reading factor " << cellind << ": " << endl;
+            cerr << "reading factor " << cellind << ": " << endl;
         mxArray *cell = mxGetCell(psi, cellind);
         mxArray *mx_member = mxGetField(cell, 0, "Member"); 
         size_t nr_mem = mxGetN(mx_member);
@@ -95,11 +95,11 @@ vector<Factor> mx2Factors(const mxArray *psi, long verbose) {
         VarSet factorvars;
         vector<long> labels(nr_mem,0);
         if( verbose >= 3 )
-            cout << "  vars: ";
+            cerr << "  vars: ";
         for( size_t mi = 0; mi < nr_mem; mi++ ) {
             labels[mi] = (long)members[mi];
             if( verbose >= 3 )
-                cout << labels[mi] << "(" << dims[mi] << ") ";
+                cerr << labels[mi] << "(" << dims[mi] << ") ";
             vars.insert( Var(labels[mi], dims[mi]) );
             factorvars |= Var(labels[mi], dims[mi]);
         }
@@ -115,10 +115,10 @@ vector<Factor> mx2Factors(const mxArray *psi, long verbose) {
         }
 
         if( verbose >= 3 ) {
-            cout << endl << "  perm: ";
+            cerr << endl << "  perm: ";
             for( vector<size_t>::iterator r=perm.begin(); r!=perm.end(); r++ )
-                cout << *r << " ";
-            cout << endl;
+                cerr << *r << " ";
+            cerr << endl;
         }
 
         // read Factor
@@ -135,7 +135,7 @@ vector<Factor> mx2Factors(const mxArray *psi, long verbose) {
 
     if( verbose >= 3 ) {
         for(vector<Factor>::const_iterator I=factors.begin(); I!=factors.end(); I++ )
-            cout << *I << endl;
+            cerr << *I << endl;
     }
 
     return( factors );
index ae92182..baf7835 100644 (file)
@@ -99,7 +99,7 @@ double MF::run() {
     double tic = toc();
 
     if( props.verbose >= 1 )
-        cout << "Starting " << identify() << "...";
+        cerr << "Starting " << identify() << "...";
 
     size_t pass_size = _beliefs.size();
     Diffs diffs(pass_size * 3, 1.0);
@@ -126,7 +126,7 @@ double MF::run() {
         jan.normalize();
 
         if( jan.hasNaNs() ) {
-            cout << Name << "::run():  ERROR: jan has NaNs!" << endl;
+            cerr << Name << "::run():  ERROR: jan has NaNs!" << endl;
             return 1.0;
         }
 
@@ -144,12 +144,12 @@ double MF::run() {
     if( props.verbose >= 1 ) {
         if( diffs.maxDiff() > props.tol ) {
             if( props.verbose == 1 )
-                cout << endl;
-            cout << Name << "::run:  WARNING: not converged within " << props.maxiter << " passes (" << toc() - tic << " seconds)...final maxdiff:" << diffs.maxDiff() << endl;
+                cerr << endl;
+            cerr << Name << "::run:  WARNING: not converged within " << props.maxiter << " passes (" << toc() - tic << " seconds)...final maxdiff:" << diffs.maxDiff() << endl;
         } else {
             if( props.verbose >= 2 )
-                cout << Name << "::run:  ";
-            cout << "converged in " << t / pass_size << " passes (" << toc() - tic << " seconds)." << endl;
+                cerr << Name << "::run:  ";
+            cerr << "converged in " << t / pass_size << " passes (" << toc() - tic << " seconds)." << endl;
         }
     }
 
index f4054f0..1888b48 100644 (file)
@@ -220,7 +220,7 @@ double MR::init_cor_resp() {
             } while((md > props.tol)&&(runx<runs)); // Precision condition reached -> BP and RP finished
             if(runx==runs)
                 if( props.verbose >= 2 )
-                    cout << "init_cor_resp: Convergence not reached (md=" << md << ")..." << endl;
+                    cerr << "init_cor_resp: Convergence not reached (md=" << md << ")..." << endl;
             if(md > maxdev)
                 maxdev = md;
 
@@ -463,7 +463,7 @@ void MR::solvemcav() {
 
     if(run==maxruns){
         if( props.verbose >= 1 )
-            cout << "solve_mcav: Convergence not reached (maxdev=" << maxdev << ")..." << endl;
+            cerr << "solve_mcav: Convergence not reached (maxdev=" << maxdev << ")..." << endl;
     }
 }
 
@@ -531,7 +531,7 @@ string MR::identify() const {
 double MR::run() {
     if( supported ) {
         if( props.verbose >= 1 )
-            cout << "Starting " << identify() << "...";
+            cerr << "Starting " << identify() << "...";
 
         double tic = toc();
 //        Diffs diffs(nrVars(), 1.0);
@@ -566,7 +566,7 @@ double MR::run() {
         solveM();
 
         if( props.verbose >= 1 )
-            cout << Name << " needed " << toc() - tic << " seconds." << endl;
+            cerr << Name << " needed " << toc() - tic << " seconds." << endl;
 
         return 0.0;
     } else
index bcd6a98..4f359e8 100644 (file)
@@ -189,7 +189,7 @@ bool RegionGraph::Check_Counting_Numbers() {
                 c_n += IR(beta).c();
         if( fabs(c_n - 1.0) > 1e-15 ) {
             all_valid = false;
-            cout << "WARNING: counting numbers do not satisfy relation for " << *n << "(c_n = " << c_n << ")." << endl;
+            cerr << "WARNING: counting numbers do not satisfy relation for " << *n << "(c_n = " << c_n << ")." << endl;
         }
     }
 
index a7d6bea..c9e45e3 100644 (file)
@@ -336,7 +336,7 @@ void TreeEP::ConstructRG( const DEdgeVec &tree ) {
             /*size_t subTreeSize =*/ findEfficientTree( factor(I).vars(), subTree, PreviousRoot );
             PreviousRoot = subTree[0].n1;
             //subTree.resize( subTreeSize );  // FIXME
-//          cout << "subtree " << I << " has size " << subTreeSize << endl;
+//          cerr << "subtree " << I << " has size " << subTreeSize << endl;
 
             TreeEPSubTree QI( subTree, RTree, Qa, Qb, &factor(I) );
             _Q[I] = QI;
@@ -348,7 +348,7 @@ void TreeEP::ConstructRG( const DEdgeVec &tree ) {
             /*size_t subTreeSize =*/ findEfficientTree( factor(I).vars(), subTree, PreviousRoot );
             PreviousRoot = subTree[0].n1;
             //subTree.resize( subTreeSize ); // FIXME
-//          cout << "subtree " << I << " has size " << subTreeSize << endl;
+//          cerr << "subtree " << I << " has size " << subTreeSize << endl;
 
             TreeEPSubTree QI( subTree, RTree, Qa, Qb, &factor(I) );
             _Q[I] = QI;
@@ -356,7 +356,7 @@ void TreeEP::ConstructRG( const DEdgeVec &tree ) {
         }
 
     if( props.verbose >= 3 ) {
-        cout << "Resulting regiongraph: " << *this << endl;
+        cerr << "Resulting regiongraph: " << *this << endl;
     }
 }
 
@@ -378,9 +378,9 @@ void TreeEP::init() {
 
 double TreeEP::run() {
     if( props.verbose >= 1 )
-        cout << "Starting " << identify() << "...";
+        cerr << "Starting " << identify() << "...";
     if( props.verbose >= 3)
-        cout << endl;
+        cerr << endl;
 
     double tic = toc();
     Diffs diffs(nrVars(), 1.0);
@@ -408,7 +408,7 @@ double TreeEP::run() {
         }
 
         if( props.verbose >= 3 )
-            cout << Name << "::run:  maxdiff " << diffs.maxDiff() << " after " << _iters+1 << " passes" << endl;
+            cerr << Name << "::run:  maxdiff " << diffs.maxDiff() << " after " << _iters+1 << " passes" << endl;
     }
 
     if( diffs.maxDiff() > _maxdiff )
@@ -417,12 +417,12 @@ double TreeEP::run() {
     if( props.verbose >= 1 ) {
         if( diffs.maxDiff() > props.tol ) {
             if( props.verbose == 1 )
-                cout << endl;
-            cout << Name << "::run:  WARNING: not converged within " << props.maxiter << " passes (" << toc() - tic << " seconds)...final maxdiff:" << diffs.maxDiff() << endl;
+                cerr << endl;
+            cerr << Name << "::run:  WARNING: not converged within " << props.maxiter << " passes (" << toc() - tic << " seconds)...final maxdiff:" << diffs.maxDiff() << endl;
         } else {
             if( props.verbose >= 3 )
-                cout << Name << "::run:  ";
-            cout << "converged in " << _iters << " passes (" << toc() - tic << " seconds)." << endl;
+                cerr << Name << "::run:  ";
+            cerr << "converged in " << _iters << " passes (" << toc() - tic << " seconds)." << endl;
         }
     }