Multiple changes: changes in build system, one workaround and one bug fix
[libdai.git] / src / fbp.cpp
index 1fd8f41..c1adbe2 100644 (file)
@@ -1,14 +1,15 @@
 /*  This file is part of libDAI - http://www.libdai.org/
  *
- *  libDAI is licensed under the terms of the GNU General Public License version
- *  2, or (at your option) any later version. libDAI is distributed without any
- *  warranty. See the file COPYING for more details.
+ *  Copyright (c) 2006-2011, The libDAI authors. All rights reserved.
  *
- *  Copyright (C) 2009  Frederik Eaton  [frederik at ofb dot net]
- *  Copyright (C) 2009-2010  Joris Mooij  [joris dot mooij at libdai dot org]
+ *  Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
  */
 
 
+#include <dai/dai_config.h>
+#ifdef DAI_WITH_FBP
+
+
 #include <dai/fbp.h>
 
 
@@ -30,7 +31,7 @@ Real FBP::logZ() const {
     }
     for( size_t i = 0; i < nrVars(); ++i ) {
         Real c_i = 0.0;
-        foreach( const Neighbor &I, nbV(i) )
+        bforeach( const Neighbor &I, nbV(i) )
             c_i += Weight(I);
         if( c_i != 1.0 )
             sum += (1.0 - c_i) * beliefV(i).entropy();  // FBP
@@ -53,12 +54,12 @@ Prob FBP::calcIncomingMessageProduct( size_t I, bool without_i, size_t i ) const
         prod ^= (1.0 / c_I); // FBP
 
     // Calculate product of incoming messages and factor I
-    foreach( const Neighbor &j, nbF(I) )
+    bforeach( const Neighbor &j, nbF(I) )
         if( !(without_i && (j == i)) ) {
             // prod_j will be the product of messages coming into j
             // FBP: corresponds to messages n_jI
             Prob prod_j( var(j).states(), props.logdomain ? 0.0 : 1.0 );
-            foreach( const Neighbor &J, nbV(j) )
+            bforeach( const Neighbor &J, nbV(j) )
                 if( J != I ) { // for all J in nb(j) \ I
                     if( props.logdomain )
                         prod_j += message( j, J.iter );
@@ -157,3 +158,6 @@ void FBP::construct() {
 
 
 } // end of namespace dai
+
+
+#endif