Restored TProb<T>::makeZero, TProb<T>::makePositive, TFactor<T>::makeZero, TFactor...
[libdai.git] / include / dai / factor.h
index d44e6f5..7fe40e9 100644 (file)
@@ -1,30 +1,18 @@
-/*  Copyright (C) 2006-2008  Joris Mooij  [joris dot mooij at tuebingen dot mpg dot de]
-    Radboud University Nijmegen, The Netherlands /
-    Max Planck Institute for Biological Cybernetics, Germany
-
-    Copyright (C) 2002  Martijn Leisink  [martijn@mbfys.kun.nl]
-    Radboud University Nijmegen, The Netherlands
-
-    This file is part of libDAI.
-
-    libDAI is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    libDAI is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with libDAI; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-*/
+/*  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) 2002       Martijn Leisink  [martijn@mbfys.kun.nl]
+ *  Copyright (C) 2006-2009  Joris Mooij      [joris dot mooij at libdai dot org]
+ *  Copyright (C) 2002-2007  Radboud University Nijmegen, The Netherlands
+ */
 
 
 /// \file
 /// \brief Defines TFactor<T> and Factor classes
+/// \todo Improve documentation
 
 
 #ifndef __defined_libdai_factor_h
@@ -295,14 +283,19 @@ template <typename T> class TFactor {
             return pointwiseOp(*this,f,std::minus<T>());
         }
 
-
+        // OBSOLETE
         /// Sets all values that are smaller than epsilon to 0
+        /** \note Obsolete, to be removed soon
+         */
         TFactor<T>& makeZero( T epsilon ) {
             _p.makeZero( epsilon );
             return *this;
         }
 
+        // OBSOLETE
         /// Sets all values that are smaller than epsilon to epsilon
+        /** \note Obsolete, to be removed soon
+         */
         TFactor<T>& makePositive( T epsilon ) {
             _p.makePositive( epsilon );
             return *this;
@@ -368,7 +361,7 @@ template <typename T> class TFactor {
          *  defined by \f$g(\{x_l\}_{l\in L \setminus M}) = f(\{x_l\}_{l\in L \setminus M}, \{s(x_m)\}_{m\in M})\f$.
          */
         TFactor<T> slice( const VarSet& ns, size_t nsState ) const {
-            assert( ns << _vs );
+            DAI_ASSERT( ns << _vs );
             VarSet nsrem = _vs / ns;
             TFactor<T> result( nsrem, T(0) );
 
@@ -395,7 +388,7 @@ template <typename T> class TFactor {
          *  the embedded factor corresponds with \f$g : \prod_{m\in M} X_m \to [0,\infty) : x \mapsto f(x_L)\f$.
          */
         TFactor<T> embed(const VarSet & ns) const {
-            assert( ns >> _vs );
+            DAI_ASSERT( ns >> _vs );
             if( _vs == ns )
                 return *this;
             else
@@ -542,7 +535,7 @@ template<typename T> Real dist( const TFactor<T> &f, const TFactor<T> &g, Prob::
  *  \pre f.vars() == g.vars()
  */
 template<typename T> TFactor<T> max( const TFactor<T> &f, const TFactor<T> &g ) {
-    assert( f._vs == g._vs );
+    DAI_ASSERT( f._vs == g._vs );
     return TFactor<T>( f._vs, min( f.p(), g.p() ) );
 }
 
@@ -552,7 +545,7 @@ template<typename T> TFactor<T> max( const TFactor<T> &f, const TFactor<T> &g )
  *  \pre f.vars() == g.vars()
  */
 template<typename T> TFactor<T> min( const TFactor<T> &f, const TFactor<T> &g ) {
-    assert( f._vs == g._vs );
+    DAI_ASSERT( f._vs == g._vs );
     return TFactor<T>( f._vs, max( f.p(), g.p() ) );
 }
 
@@ -562,7 +555,7 @@ template<typename T> TFactor<T> min( const TFactor<T> &f, const TFactor<T> &g )
  *  \pre f.vars().size() == 2
  */
 template<typename T> Real MutualInfo(const TFactor<T> &f) {
-    assert( f.vars().size() == 2 );
+    DAI_ASSERT( f.vars().size() == 2 );
     VarSet::const_iterator it = f.vars().begin();
     Var i = *it; it++; Var j = *it;
     TFactor<T> projection = f.marginal(i) * f.marginal(j);