Improved documentation...
authorJoris Mooij <jorism@marvin.jorismooij.nl>
Thu, 9 Oct 2008 14:01:30 +0000 (16:01 +0200)
committerJoris Mooij <jorism@marvin.jorismooij.nl>
Thu, 9 Oct 2008 14:01:30 +0000 (16:01 +0200)
... of examples/example.cpp, examples/example_bipgraph.cpp,
include/dai/prob.h, include/dai/smallset.h, include/dai/var.h,
include/dai/varset.h

Some small additional changes:
- Replaced TProb<T>::log0() by TProb<T>::log(true)
  and TProb<T>::takeLog0() by TProb<T>::takeLog(true)
- Replaced TFactor<T>::log0() by TFactor<T>::log(true)
- Removed TProb<T>::hasNonPositives()
- Added examples/example_varset.cpp
- Renamed smallSet<T> to SmallSet<T>
- Changed operator<< for Var and VarSet

19 files changed:
Makefile
Makefile.shared
Makefile.win
examples/example.cpp
examples/example_bipgraph.cpp
examples/example_varset.cpp [new file with mode: 0644]
examples/example_varset.out [new file with mode: 0644]
include/dai/alldai.h
include/dai/bipgraph.h
include/dai/factor.h
include/dai/prob.h
include/dai/smallset.h
include/dai/var.h
include/dai/varset.h
src/hak.cpp
src/jtree.cpp
src/mf.cpp
src/treeep.cpp
tests/testfast.out

index e3292ce..54ff177 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -122,7 +122,7 @@ endif
 all : $(TARGETS)
        echo -e "\a"
 
-examples : examples/example$(EE) examples/example_bipgraph$(EE)
+examples : examples/example$(EE) examples/example_bipgraph$(EE) examples/example_varset$(EE)
 
 matlabs : matlab/dai$(ME) matlab/dai_readfg$(ME) matlab/dai_writefg$(ME) matlab/dai_potstrength$(ME)
 
@@ -146,7 +146,7 @@ doc : $(INC)/*.h $(SRC)/*.cpp examples/*.cpp doxygen.conf
 clean :
        -rm *$(OE)
        -rm matlab/*$(ME)
-       -rm examples/example$(EE) examples/example_bipgraph$(EE)
+       -rm examples/example$(EE) examples/example_bipgraph$(EE) examples/example_varset$(EE)
        -rm tests/testdai$(EE)
        -rm utils/fg2dot$(EE) utils/createfg$(EE) utils/fginfo$(EE)
        -rm -R doc
index 7dabbd6..2a35307 100644 (file)
@@ -83,6 +83,9 @@ examples/example$(EE) : examples/example.cpp $(HEADERS) $(LIB)/libdai$(LE)
 examples/example_bipgraph$(EE) : examples/example_bipgraph.cpp $(HEADERS) $(LIB)/libdai$(LE)
        $(CC) $(CCFLAGS) $(CCO)examples/example_bipgraph$(EE) examples/example_bipgraph.cpp $(LIBS)
 
+examples/example_varset$(EE) : examples/example_varset.cpp $(HEADERS) $(LIB)/libdai$(LE)
+       $(CC) $(CCFLAGS) $(CCO)examples/example_varset$(EE) examples/example_varset.cpp $(LIBS)
+
 
 # TESTS
 ########
index af2879d..ab088e4 100755 (executable)
@@ -123,7 +123,7 @@ TARGETS = $(TARGETS) matlabs
 !ENDIF\r
 all : $(TARGETS)\r
 \r
-examples : examples/example$(EE) examples/example_bipgraph$(EE)\r
+examples : examples/example$(EE) examples/example_bipgraph$(EE) examples/example_varset$(EE)\r
 \r
 matlabs : matlab/dai$(ME) matlab/dai_readfg$(ME) matlab/dai_writefg$(ME) matlab/dai_potstrength$(ME)\r
 \r
index 47c83f3..eba3630 100644 (file)
@@ -21,7 +21,7 @@
 
 
 #include <iostream>
-#include <dai/alldai.h>
+#include <dai/alldai.h>  // Include main libDAI header file
 
 
 using namespace dai;
@@ -35,43 +35,64 @@ int main( int argc, char *argv[] ) {
         cout << "Belief Propagation and JunctionTree on it." << endl << endl;
         return 1;
     } else {
+        // Read FactorGraph from the file specified by the first command line argument
         FactorGraph fg;
         fg.ReadFromFile(argv[1]);
 
+        // Set some constants
         size_t  maxiter = 10000;
         double  tol = 1e-9;
         size_t  verb = 1;
 
+        // Store the constants in a PropertySet object
         PropertySet opts;
-        opts.Set("maxiter",maxiter);
-        opts.Set("tol",tol);
-        opts.Set("verbose",verb);
+        opts.Set("maxiter",maxiter);  // Maximum number of iterations
+        opts.Set("tol",tol);          // Tolerance for convergence
+        opts.Set("verbose",verb);     // Verbosity (amount of output generated)
 
+        // Construct a JTree (junction tree) object from the FactorGraph fg
+        // using the parameters specified by opts and an additional property
+        // that specifies the type of updates the JTree algorithm should perform
         JTree jt( fg, opts("updates",string("HUGIN")) );
+        // Initialize junction tree algoritm
         jt.init();
+        // Run junction tree algorithm
         jt.run();
 
+        // Construct a BP (belief propagation) object from the FactorGraph fg
+        // using the parameters specified by opts and two additional properties,
+        // specifying the type of updates the BP algorithm should perform and
+        // whether they should be done in the real or in the logdomain
         BP bp(fg, opts("updates",string("SEQFIX"))("logdomain",false));
+        // Initialize belief propagation algorithm
         bp.init();
+        // Run belief propagation algorithm
         bp.run();
 
-        cout << "Exact single node marginals:" << endl;
-        for( size_t i = 0; i < fg.nrVars(); i++ )
-            cout << jt.belief(fg.var(i)) << endl;
+        // Report single-variable marginals for fg, calculated by the junction tree algorithm
+        cout << "Exact single-variable marginals:" << endl;
+        for( size_t i = 0; i < fg.nrVars(); i++ ) // iterate over all variables in fg
+            cout << jt.belief(fg.var(i)) << endl; // display the "belief" of jt for that variable
 
-        cout << "Approximate (loopy belief propagation) single node marginals:" << endl;
-        for( size_t i = 0; i < fg.nrVars(); i++ )
-            cout << bp.belief(fg.var(i)) << endl;
+        // Report single-variable marginals for fg, calculated by the belief propagation algorithm
+        cout << "Approximate (loopy belief propagation) single-variable marginals:" << endl;
+        for( size_t i = 0; i < fg.nrVars(); i++ ) // iterate over all variables in fg
+            cout << bp.belief(fg.var(i)) << endl; // display the belief of bp for that variable
 
+        // Report factor marginals for fg, calculated by the junction tree algorithm
         cout << "Exact factor marginals:" << endl;
-        for( size_t I = 0; I < fg.nrFactors(); I++ )
-            cout << jt.belief(fg.factor(I).vars()) << endl;
+        for( size_t I = 0; I < fg.nrFactors(); I++ ) // iterate over all factors in fg
+            cout << jt.belief(fg.factor(I).vars()) << endl;  // display the "belief" of jt for the variables in that factor
 
+        // Report factor marginals for fg, calculated by the belief propagation algorithm
         cout << "Approximate (loopy belief propagation) factor marginals:" << endl;
-        for( size_t I = 0; I < fg.nrFactors(); I++ )
-            cout << bp.belief(fg.factor(I).vars()) << "=" << bp.beliefF(I) << endl;
+        for( size_t I = 0; I < fg.nrFactors(); I++ ) // iterate over all factors in fg
+            cout << bp.belief(fg.factor(I).vars()) << endl; // display the belief of bp for the variables in that factor
 
+        // Report log partition sum (normalizing constant) of fg, calculated by the junction tree algorithm
         cout << "Exact log partition sum: " << jt.logZ() << endl;
+
+        // Report log partition sum of fg, approximated by the belief propagation algorithm
         cout << "Approximate (loopy belief propagation) log partition sum: " << bp.logZ() << endl;
     }
 
index beca451..c12b733 100644 (file)
@@ -4,6 +4,7 @@ using namespace std;
 using namespace dai;
 
 int main() {
+    // Create a list of edges
     vector<BipartiteGraph::Edge> edges;
     edges.reserve( 5 );
     edges.push_back( BipartiteGraph::Edge(0, 0) );
@@ -11,23 +12,29 @@ int main() {
     edges.push_back( BipartiteGraph::Edge(2, 0) );
     edges.push_back( BipartiteGraph::Edge(1, 1) );
     edges.push_back( BipartiteGraph::Edge(2, 1) );
+
+    // Create a bipartite graph with 3 nodes of type 1,
+    // 2 nodes of type 2 and edge list edges.
     BipartiteGraph G( 3, 2, edges.begin(), edges.end() );
 
+    // Display some information about G
     cout << "G has " << G.nr1() << " nodes of type 1, " << G.nr2() << " nodes of type 2 and " << G.nrEdges() << " edges." << endl << endl;
 
+    // Iterate over all nodes n1 of type 1
     for( size_t n1 = 0; n1 < G.nr1(); n1++ ) {
         cout << "Node " << n1 << " of type 1 has " << G.nb1(n1).size() << " neighbors:" << endl;
+        // Iterate over all neighbors n2 of n1
         foreach( const BipartiteGraph::Neighbor &n2, G.nb1(n1) ) {
-            size_t _n2 = n2.iter;
-            size_t _n1 = n2.dual;
-            cout << "  the " << n2.iter << "'th neighbor is node " << n2 << " of type 2" << endl;
+            // The n2.iter'th neighbor of n1 is n2:
+            assert( G.nb1(n1)[n2.iter] == n2 );
+
+            // The n2.dual'th neighbor of n2 is n1:
+            assert( G.nb2(n2)[n2.dual] == n1 );
 
-            // The _n2'th neighbor of n1 is n2:
-            assert( G.nb1(n1)[_n2] == n2 );
-            // The _n1'th neighbor of n2 is n1:
-            assert( G.nb2(n2)[_n1] == n1 );
             // n2 can be used as an abbreviation of n2.node:
             assert( static_cast<size_t>(n2) == n2.node );
+
+            cout << "  the " << n2.iter << "'th neighbor is node " << n2 << " of type 2" << endl;
         }
         cout << endl;
     }
diff --git a/examples/example_varset.cpp b/examples/example_varset.cpp
new file mode 100644 (file)
index 0000000..fc2145f
--- /dev/null
@@ -0,0 +1,52 @@
+#include <dai/varset.h>
+#include <iostream>
+
+using namespace std;
+using namespace dai;
+
+int main() {
+    Var x0(0, 2);   // Define binary variable x0 (with label 0)
+    Var x1(1, 3);   // Define ternary variable x1 (with label 1)
+    // Define set X = {x0, x1}
+    VarSet X; // empty
+    X |= x1;  // X = {x1}
+    X |= x0;  // X = {x1, x0}
+    cout << "X = " << X << endl << endl; // Note that the elements of X are ordered according to their labels
+
+    // Output some information about x0, x1 and X
+    cout << "Var " << x0 << " has " << x0.states() << " states (possible values)." << endl;
+    cout << "Var " << x1 << " has " << x1.states() << " states." << endl << endl;
+    cout << "VarSet " << X << " has " << X.nrStates() << " states (joint assignments of its variables)." << endl << endl;
+
+    cout << "States of VarSets correspond to states of their constituent Vars:" << endl;
+    cout << "  state of x0:   state of x1:   state of X:" << endl;
+    for( size_t s1 = 0; s1 < x1.states(); s1++ ) // for all states s1 of x1
+        for( size_t s0 = 0; s0 < x0.states(); s0++ ) { // for all states s0 of x0
+            // store s0 and s1 in a map "states"
+            map<Var,size_t> states;
+            states[x0] = s0;
+            states[x1] = s1;
+
+            // output states of x0, x1 and corresponding state of X
+            cout << "    " << s0 << "              " << s1 << "              " << X.calcState(states) << endl;
+
+            // VarSet::calcStates is the inverse of VarSet::calcState
+            assert( X.calcStates(X.calcState(states)) == states );
+        }
+
+    cout << endl << "And vice versa:" << endl;
+    cout << "  state of x0:   state of x1:   state of X:" << endl;
+    for( size_t S = 0; S < X.nrStates(); S++ ) { // for all (joint) states of X
+        // calculate states of x0 and x1 corresponding to state S of X
+        map<Var,size_t> states = X.calcStates(S);
+
+        // output state of X and corresponding states of x0, x1
+        cout << "    " << states[x0] << "              " << states[x1] << "              " << S << endl;
+
+        // VarSet::calcState is the inverse of VarSet::calcStates
+        assert( X.calcState(X.calcStates(S)) == S );
+    }
+
+       return 0;
+}
diff --git a/examples/example_varset.out b/examples/example_varset.out
new file mode 100644 (file)
index 0000000..f618046
--- /dev/null
@@ -0,0 +1,24 @@
+X = {x0,x1}
+
+Var x0 has 2 states (possible values).
+Var x1 has 3 states.
+
+VarSet {x0,x1} has 6 states (joint assignments of its variables).
+
+States of VarSets correspond to states of their constituent Vars:
+  state of x0:   state of x1:   state of X:
+    0              0              0
+    1              0              1
+    0              1              2
+    1              1              3
+    0              2              4
+    1              2              5
+
+And vice versa:
+  state of x0:   state of x1:   state of X:
+    0              0              0
+    1              0              1
+    0              1              2
+    1              1              3
+    0              2              4
+    1              2              5
index ed22aa6..ed86774 100644 (file)
@@ -23,7 +23,6 @@
 /// \file
 /// \brief Main libDAI header file
 /// \todo Improve documentation
-/// \todo Improve documentation of examples/example
 
 
 #ifndef __defined_libdai_alldai_h
index 998c639..4812e16 100644 (file)
@@ -22,7 +22,6 @@
 
 /// \file
 /// \brief Defines BipartiteGraph class
-/// \todo Improve documentation of examples_bipgraph
 
 
 #ifndef __defined_libdai_bipgraph_h
index e7a9f9f..d618a3f 100644 (file)
@@ -246,11 +246,13 @@ template <typename T> class TFactor {
             return *this;
         }
             
-        /// Returns inverse of *this
-        TFactor<T> inverse() const { 
+        /// Returns inverse of *this.
+        /** If zero == true, uses 1 / 0 == 0; otherwise 1 / 0 == Inf.
+         */
+        TFactor<T> inverse(bool zero=true) const { 
             TFactor<T> inv; 
             inv._vs = _vs; 
-            inv._p = _p.inverse(true);  // FIXME
+            inv._p = _p.inverse(zero);
             return inv; 
         }
 
@@ -290,21 +292,15 @@ template <typename T> class TFactor {
         }
 
         /// Returns logarithm of *this
-        TFactor<T> log() const {
+        /** If zero==true, uses log(0)==0; otherwise, log(0)=-Inf.
+         */
+        TFactor<T> log(bool zero=false) const {
             TFactor<T> l; 
             l._vs = _vs; 
-            l._p = _p.log(); 
+            l._p = _p.log(zero); 
             return l; 
         }
 
-        /// Returns logarithm of *this (defining log(0)=0)
-        TFactor<T> log0() const {
-            TFactor<T> l0; 
-            l0._vs = _vs; 
-            l0._p = _p.log0(); 
-            return l0; 
-        }
-
         /// Normalizes *this Factor
         T normalize( typename Prob::NormType norm = Prob::NORMPROB ) { return _p.normalize( norm ); }
 
index 96e5763..82af64f 100644 (file)
@@ -22,7 +22,7 @@
 
 /// \file
 /// \brief Defines TProb<T> and Prob classes
-/// \todo Improve documentation
+/// \todo Rename to Vector<T>
 
 
 #ifndef __defined_libdai_prob_h
 namespace dai {
 
 
-/// Real number (alias for double, could be changed to long double if necessary)
-typedef double                  Real;
+/// Real number (alias for double, which could be changed to long double if necessary)
+typedef double             Real;
 
-template<typename T> class      TProb;
+// Predefine class
+template<typename T> class TProb;
 
 /// Represents a probability measure, with entries of type Real.
-typedef TProb<Real>             Prob;
+typedef TProb<Real>        Prob;
 
 
-/// Represents a probability measure on a finite outcome space (i.e., corresponding to a discrete random variable).
-/** It is implemented as a std::vector<T> but adds a convenient interface.
- *  It is not necessarily normalized at all times.
- *  \tparam T Should be castable from and to double.
+/// Represents a vector with entries of type \a T.
+/** A TProb<T> is a std::vector<T> with an interface designed for dealing with probability mass functions.
+ *  It is mainly used for representing measures on a finite outcome space, e.g., the probability 
+ *  distribution of a discrete random variable.
+ *  \tparam T Should be a scalar that is castable from and to double and should support elementary arithmetic operations.
  */
 template <typename T> class TProb {
     private:
-        /// The probability measure
+        /// The vector
         std::vector<T> _p;
 
     public:
@@ -80,22 +82,22 @@ template <typename T> class TProb {
         /// Default constructor
         TProb() : _p() {}
         
-        /// Construct uniform distribution of given length
+        /// Construct uniform distribution over n outcomes, i.e., a vector of length n with each entry set to 1/n
         explicit TProb( size_t n ) : _p(std::vector<T>(n, 1.0 / n)) {}
         
-        /// Construct from given length and initial value
-        TProb( size_t n, Real p ) : _p(n, (T)p) {}
+        /// Construct vector of length n with each entry set to p
+        explicit TProb( size_t n, Real p ) : _p(n, (T)p) {}
         
-        /// Construct from given length and initial array
+        /// Construct vector of length n by copying the elements between p and p+n
         TProb( size_t n, const Real* p ) : _p(p, p + n ) {}
         
-        /// Returns a const reference to the probability vector
+        /// Returns a const reference to the vector
         const std::vector<T> & p() const { return _p; }
 
-        /// Returns a reference to the probability vector
+        /// Returns a reference to the vector
         std::vector<T> & p() { return _p; }
         
-        /// Returns a copy of the i'th probability entry
+        /// Returns a copy of the i'th entry
         T operator[]( size_t i ) const { 
 #ifdef DAI_DEBUG
             return _p.at(i);
@@ -104,27 +106,27 @@ template <typename T> class TProb {
 #endif
         }
         
-        /// Returns a reference to the i'th probability entry
+        /// Returns reference to the i'th entry
         T& operator[]( size_t i ) { return _p[i]; }
 
-        /// Sets all elements to x
+        /// Sets all entries to x
         TProb<T> & fill(T x) { 
             std::fill( _p.begin(), _p.end(), x );
             return *this;
         }
 
-        /// Sets all elements to i.i.d. random numbers from a uniform[0,1) distribution
+        /// Sets all entries to i.i.d. random numbers from a uniform[0,1) distribution
         TProb<T> & randomize() { 
             std::generate(_p.begin(), _p.end(), rnd_uniform);
             return *this;
         }
 
-        /// Returns number of elements
+        /// Returns length of the vector, i.e., the number of entries
         size_t size() const {
             return _p.size();
         }
 
-        /// Sets entries that are smaller than epsilon to zero
+        /// Sets entries that are smaller than epsilon to 0
         TProb<T>& makeZero( Real epsilon ) {
             for( size_t i = 0; i < size(); i++ )
                 if( fabs(_p[i]) < epsilon )
@@ -133,27 +135,27 @@ template <typename T> class TProb {
         }
 
         /// Sets entries that are smaller than epsilon to epsilon
-        TProb<T>& makePositive (Real epsilon) {
+        TProb<T>& makePositive( Real epsilon ) {
             for( size_t i = 0; i < size(); i++ )
                 if( (0 < (Real)_p[i]) && ((Real)_p[i] < epsilon) )
                     _p[i] = epsilon;
             return *this;
         }
 
-        /// Multiplies each entry with x
+        /// Multiplies each entry with scalar x
         TProb<T>& operator*= (T x) {
             std::transform( _p.begin(), _p.end(), _p.begin(), std::bind2nd( std::multiplies<T>(), x) );
             return *this;
         }
 
-        /// Returns product of *this with x
+        /// Returns product of *this with scalar x
         TProb<T> operator* (T x) const {
             TProb<T> prod( *this );
             prod *= x;
             return prod;
         }
 
-        /// Divides each entry by x
+        /// Divides each entry by scalar x
         TProb<T>& operator/= (T x) {
 #ifdef DAI_DEBUG
             assert( x != 0.0 );
@@ -162,40 +164,40 @@ template <typename T> class TProb {
             return *this;
         }
 
-        /// Returns quotient of *this and x
+        /// Returns quotient of *this and scalar x
         TProb<T> operator/ (T x) const {
             TProb<T> quot( *this );
             quot /= x;
             return quot;
         }
 
-        /// Adds x to each entry
+        /// Adds scalar x to each entry
         TProb<T>& operator+= (T x) {
             std::transform( _p.begin(), _p.end(), _p.begin(), std::bind2nd( std::plus<T>(), x ) );
             return *this;
         }
 
-        /// Returns sum of *this and x
+        /// Returns sum of *this and scalar x
         TProb<T> operator+ (T x) const {
             TProb<T> sum( *this );
             sum += x;
             return sum;
         }
 
-        /// Subtracts x from each entry
+        /// Subtracts scalar x from each entry
         TProb<T>& operator-= (T x) {
             std::transform( _p.begin(), _p.end(), _p.begin(), std::bind2nd( std::minus<T>(), x ) );
             return *this;
         }
 
-        /// Returns difference of *this and x
+        /// Returns difference of *this and scalar x
         TProb<T> operator- (T x) const {
             TProb<T> diff( *this );
             diff -= x;
             return diff;
         }
 
-        /// Pointwise comparison
+        /// Lexicographical comparison (sizes should be identical)
         bool operator<= (const TProb<T> & q) const {
 #ifdef DAI_DEBUG
             assert( size() == q.size() );
@@ -206,7 +208,7 @@ template <typename T> class TProb {
             return true;
         }
 
-        /// Pointwise multiplication with q
+        /// Pointwise multiplication with q (sizes should be identical)
         TProb<T>& operator*= (const TProb<T> & q) {
 #ifdef DAI_DEBUG
             assert( size() == q.size() );
@@ -215,7 +217,7 @@ template <typename T> class TProb {
             return *this;
         }
         
-        /// Return product of *this with q
+        /// Return product of *this with q (sizes should be identical)
         TProb<T> operator* (const TProb<T> & q) const {
 #ifdef DAI_DEBUG
             assert( size() == q.size() );
@@ -225,7 +227,7 @@ template <typename T> class TProb {
             return prod;
         }
 
-        /// Pointwise addition with q
+        /// Pointwise addition with q (sizes should be identical)
         TProb<T>& operator+= (const TProb<T> & q) {
 #ifdef DAI_DEBUG
             assert( size() == q.size() );
@@ -234,7 +236,7 @@ template <typename T> class TProb {
             return *this;
         }
         
-        /// Return sum of *this and q
+        /// Returns sum of *this and q (sizes should be identical)
         TProb<T> operator+ (const TProb<T> & q) const {
 #ifdef DAI_DEBUG
             assert( size() == q.size() );
@@ -244,7 +246,7 @@ template <typename T> class TProb {
             return sum;
         }
         
-        /// Pointwise subtraction of q
+        /// Pointwise subtraction of q (sizes should be identical)
         TProb<T>& operator-= (const TProb<T> & q) {
 #ifdef DAI_DEBUG
             assert( size() == q.size() );
@@ -253,7 +255,7 @@ template <typename T> class TProb {
             return *this;
         }
         
-        /// Return *this minus q
+        /// Return *this minus q (sizes should be identical)
         TProb<T> operator- (const TProb<T> & q) const {
 #ifdef DAI_DEBUG
             assert( size() == q.size() );
@@ -263,7 +265,7 @@ template <typename T> class TProb {
             return diff;
         }
 
-        /// Pointwise division by q, where division by zero yields zero
+        /// Pointwise division by q, where division by 0 yields 0 (sizes should be identical)
         TProb<T>& operator/= (const TProb<T> & q) {
 #ifdef DAI_DEBUG
             assert( size() == q.size() );
@@ -277,7 +279,7 @@ template <typename T> class TProb {
             return *this;
         }
         
-        /// Pointwise division by q, where division by zero yields infinity
+        /// Pointwise division by q, where division by 0 yields +Inf (sizes should be identical)
         TProb<T>& divide (const TProb<T> & q) {
 #ifdef DAI_DEBUG
             assert( size() == q.size() );
@@ -286,7 +288,7 @@ template <typename T> class TProb {
             return *this;
         }
         
-        /// Returns quotient of *this with q
+        /// Returns quotient of *this with q (sizes should be identical)
         TProb<T> operator/ (const TProb<T> & q) const {
 #ifdef DAI_DEBUG
             assert( size() == q.size() );
@@ -297,23 +299,21 @@ template <typename T> class TProb {
         }
 
         /// Returns pointwise inverse
-        TProb<T> inverse(bool zero = false) const {
+        /** If zero==true; uses 1/0==0, otherwise 1/0==Inf.
+         */
+        TProb<T> inverse(bool zero=true) const {
             TProb<T> inv;
             inv._p.reserve( size() );
             if( zero )
                 for( size_t i = 0; i < size(); i++ )
                     inv._p.push_back( _p[i] == 0.0 ? 0.0 : 1.0 / _p[i] );
             else
-                for( size_t i = 0; i < size(); i++ ) {
-#ifdef DAI_DEBUG
-                    assert( _p[i] != 0.0 );
-#endif
+                for( size_t i = 0; i < size(); i++ )
                     inv._p.push_back( 1.0 / _p[i] );
-                }
             return inv;
         }
 
-        /// Raises elements to the power a
+        /// Raises entries to the power a
         TProb<T>& operator^= (Real a) {
             if( a != 1.0 )
                 std::transform( _p.begin(), _p.end(), _p.begin(), std::bind2nd( std::ptr_fun<T, Real, T>(std::pow), a) );
@@ -358,15 +358,14 @@ template <typename T> class TProb {
         }
 
         /// Applies log pointwise
-        const TProb<T>& takeLog() {
-            std::transform( _p.begin(), _p.end(), _p.begin(),  std::ptr_fun<T, T>(std::log) );
-            return *this;
-        }
-
-        /// Applies log pointwise (defining log(0)=0)
-        const TProb<T>& takeLog0()  {
-            for( size_t i = 0; i < size(); i++ )
-               _p[i] = ( (_p[i] == 0.0) ? 0.0 : std::log( _p[i] ) );
+        /** If zero==true, uses log(0)==0; otherwise, log(0)==-Inf.
+         */
+        const TProb<T>& takeLog(bool zero=false) {
+            if( zero ) {
+                for( size_t i = 0; i < size(); i++ )
+                   _p[i] = ( (_p[i] == 0.0) ? 0.0 : std::log( _p[i] ) );
+            } else
+                std::transform( _p.begin(), _p.end(), _p.begin(),  std::ptr_fun<T, T>(std::log) );
             return *this;
         }
 
@@ -378,61 +377,21 @@ template <typename T> class TProb {
         }
 
         /// Returns pointwise log
-        TProb<T> log() const {
+        /** If zero==true, uses log(0)==0; otherwise, log(0)==-Inf.
+         */
+        TProb<T> log(bool zero=false) const {
             TProb<T> l(*this);
-            l.takeLog();
+            l.takeLog(zero);
             return l;
         }
 
-        /// Returns pointwise log (defining log(0)=0)
-        TProb<T> log0() const {
-            TProb<T> l0(*this);
-            l0.takeLog0();
-            return l0;
-        }
-
-        /// Returns distance of p and q, measured using dt
-        friend Real dist( const TProb<T> &p, const TProb<T> &q, DistType dt ) {
-#ifdef DAI_DEBUG
-            assert( p.size() == q.size() );
-#endif
-            Real result = 0.0;
-            switch( dt ) {
-                case DISTL1:
-                    for( size_t i = 0; i < p.size(); i++ )
-                        result += fabs((Real)p[i] - (Real)q[i]);
-                    break;
-                    
-                case DISTLINF:
-                    for( size_t i = 0; i < p.size(); i++ ) {
-                        Real z = fabs((Real)p[i] - (Real)q[i]);
-                        if( z > result )
-                            result = z;
-                    }
-                    break;
-
-                case DISTTV:
-                    for( size_t i = 0; i < p.size(); i++ )
-                        result += fabs((Real)p[i] - (Real)q[i]);
-                    result *= 0.5;
-                    break;
-
-                case DISTKL:
-                    for( size_t i = 0; i < p.size(); i++ ) {
-                        if( p[i] != 0.0 )
-                            result += p[i] * (std::log(p[i]) - std::log(q[i]));
-                    }
-            }
-            return result;
-        }
-
         /// Returns sum of all entries
         T totalSum() const {
             T Z = std::accumulate( _p.begin(),  _p.end(), (T)0 );
             return Z;
         }
 
-        /// Returns maximum absolute value of entries
+        /// Returns maximum absolute value of all entries
         T maxAbs() const {
             T Z = 0;
             for( size_t i = 0; i < size(); i++ ) {
@@ -443,20 +402,20 @@ template <typename T> class TProb {
             return Z;
         }
 
-        /// Returns maximum value of entries
+        /// Returns maximum value of all entries
         T maxVal() const {
             T Z = *std::max_element( _p.begin(), _p.end() );
             return Z;
         }
 
-        /// Returns minimum value of entries
+        /// Returns minimum value of all entries
         T minVal() const {
             T Z = *std::min_element( _p.begin(), _p.end() );
             return Z;
         }
 
-        /// Normalizes using the specified norm
-        T normalize( NormType norm = NORMPROB ) {
+        /// Normalizes vector using the specified norm
+        T normalize( NormType norm=NORMPROB ) {
             T Z = 0.0;
             if( norm == NORMPROB )
                 Z = totalSum();
@@ -486,34 +445,68 @@ template <typename T> class TProb {
             return (std::find_if( _p.begin(), _p.end(), std::bind2nd( std::less<Real>(), 0.0 ) ) != _p.end());
         }
         
-        /// Returns true if one or more entries are non-positive (causes problems with logscale)
-        bool hasNonPositives() const {
-            return (std::find_if( _p.begin(), _p.end(), std::bind2nd( std::less_equal<Real>(), 0.0 ) ) != _p.end());
-        }
-
-        /// Returns entropy
+        /// Returns entropy of *this
         Real entropy() const {
             Real S = 0.0;
             for( size_t i = 0; i < size(); i++ )
-                S -= xlogx(_p[i]);
+                S -= (_p[i] == 0 ? 0 : _p[i] * std::log(_p[i]));
             return S;
         }
+};
 
-        /// Writes a TProb<T> to an output stream
-        friend std::ostream& operator<< (std::ostream& os, const TProb<T>& P) {
-            os << "[";
-            std::copy( P._p.begin(), P._p.end(), std::ostream_iterator<T>(os, " ") );
-            os << "]";
-            return os;
-        }
 
-    private:
-        /// Returns x*log(x), or 0 if x == 0
-        Real xlogx( Real x ) const { return( x == 0.0 ? 0.0 : x * std::log(x)); }
-};
+/// Returns distance of p and q (sizes should be identical), measured using distance measure dt
+/** \relates TProb
+ */
+template<typename T> Real dist( const TProb<T> &p, const TProb<T> &q, typename TProb<T>::DistType dt ) {
+#ifdef DAI_DEBUG
+    assert( p.size() == q.size() );
+#endif
+    Real result = 0.0;
+    switch( dt ) {
+        case TProb<T>::DISTL1:
+            for( size_t i = 0; i < p.size(); i++ )
+                result += fabs((Real)p[i] - (Real)q[i]);
+            break;
+            
+        case TProb<T>::DISTLINF:
+            for( size_t i = 0; i < p.size(); i++ ) {
+                Real z = fabs((Real)p[i] - (Real)q[i]);
+                if( z > result )
+                    result = z;
+            }
+            break;
+
+        case TProb<T>::DISTTV:
+            for( size_t i = 0; i < p.size(); i++ )
+                result += fabs((Real)p[i] - (Real)q[i]);
+            result *= 0.5;
+            break;
+
+        case TProb<T>::DISTKL:
+            for( size_t i = 0; i < p.size(); i++ ) {
+                if( p[i] != 0.0 )
+                    result += p[i] * (std::log(p[i]) - std::log(q[i]));
+            }
+    }
+    return result;
+}
 
 
-/// Returns TProb<T> containing the pointwise minimum of a and b (which should have equal size)
+/// Writes a TProb<T> to an output stream
+/** \relates TProb
+ */
+template<typename T> std::ostream& operator<< (std::ostream& os, const TProb<T>& P) {
+    os << "[";
+    std::copy( P.p().begin(), P.p().end(), std::ostream_iterator<T>(os, " ") );
+    os << "]";
+    return os;
+}
+
+
+/// Returns the TProb<T> containing the pointwise minimum of a and b (which should have equal size)
+/** \relates TProb
+ */
 template<typename T> TProb<T> min( const TProb<T> &a, const TProb<T> &b ) {
     assert( a.size() == b.size() );
     TProb<T> result( a.size() );
@@ -526,7 +519,9 @@ template<typename T> TProb<T> min( const TProb<T> &a, const TProb<T> &b ) {
 }
 
 
-/// Returns TProb<T> containing the pointwise maximum of a and b (which should have equal size)
+/// Returns the TProb<T> containing the pointwise maximum of a and b (which should have equal size)
+/** \relates TProb
+ */
 template<typename T> TProb<T> max( const TProb<T> &a, const TProb<T> &b ) {
     assert( a.size() == b.size() );
     TProb<T> result( a.size() );
index e1c4c35..227b1aa 100644 (file)
@@ -24,8 +24,7 @@
 
 
 /// \file
-/// \brief Defines smallSet<T> class
-/// \todo Improve documentation
+/// \brief Defines SmallSet<T> class
 
 
 #ifndef __defined_libdai_smallset_h
 namespace dai {
 
 
-/// Represents a set (optimized for a small number of elements).
-/** For sets consisting of a small number of elements, an implementation using
- *  an ordered std::vector<T> is faster than an implementation using std::set<T>.
- *  The elements should be less-than-comparable.
+/// Represents a set; the implementation is optimized for a small number of elements.
+/** SmallSet uses an ordered std::vector<T> to represent a set; this is faster than
+ *  using a std::set<T> if the number of elements is small.
+ *  \tparam T Should be less-than-comparable.
  */
 template <typename T>
-class smallSet {
+class SmallSet {
     private:
         /// The elements in this set
         std::vector<T> _elements;
 
     public:
-        /// Default constructor
-        smallSet() : _elements() {}
-
-        /// Construct a smallSet with one element
-        smallSet( const T &n ) : _elements() { 
-            _elements.push_back( n );
-        }
-
-        /// Construct a smallSet with two elements
-        smallSet( const T &n1, const T &n2 ) { 
-            if( n1 < n2 ) {
-                _elements.push_back( n1 );
-                _elements.push_back( n2 );
-            } else if( n2 < n1 ) {
-                _elements.push_back( n2 );
-                _elements.push_back( n1 );
+        /// Default constructor (construct an empty set)
+        SmallSet() : _elements() {}
+
+        /// Construct a set with one element
+        SmallSet( const T &t ) : _elements() { 
+            _elements.push_back( t );
+        }
+
+        /// Construct a set with two elements
+        SmallSet( const T &t1, const T &t2 ) { 
+            if( t1 < t2 ) {
+                _elements.push_back( t1 );
+                _elements.push_back( t2 );
+            } else if( t2 < t1 ) {
+                _elements.push_back( t2 );
+                _elements.push_back( t1 );
             } else
-                _elements.push_back( n1 );
+                _elements.push_back( t1 );
         }
 
-        /// Construct a smallSet from a range of iterators.
-        /** \tparam Iterator Iterator with value_type T.
+        /// Construct a SmallSet from a range of elements.
+        /** \tparam TIterator Iterates over instances of type T.
          *  \param begin Points to first element to be added.
          *  \param end Points just beyond last element to be added.
          *  \param sizeHint For efficiency, the number of elements can be speficied by sizeHint.
          */
-        template <typename Iterator>
-        smallSet( Iterator begin, Iterator end, size_t sizeHint=0 ) {
+        template <typename TIterator>
+        SmallSet( TIterator begin, TIterator end, size_t sizeHint=0 ) {
             _elements.reserve( sizeHint );
             _elements.insert( _elements.begin(), begin, end );
             std::sort( _elements.begin(), _elements.end() );
@@ -87,87 +86,87 @@ class smallSet {
         }
 
         /// Copy constructor
-        smallSet( const smallSet &x ) : _elements( x._elements ) {}
+        SmallSet( const SmallSet &x ) : _elements( x._elements ) {}
 
         /// Assignment operator
-        smallSet & operator=( const smallSet &x ) {
+        SmallSet & operator=( const SmallSet &x ) {
             if( this != &x ) {
                 _elements = x._elements;
             }
             return *this;
         }
         
-        /// Setminus operator: returns all elements in *this, except those in ns
-        smallSet operator/ ( const smallSet& ns ) const {
-            smallSet res;
-            std::set_difference( _elements.begin(), _elements.end(), ns._elements.begin(), ns._elements.end(), inserter( res._elements, res._elements.begin() ) );
+        /// Set-minus operator: returns all elements in *this, except those in x
+        SmallSet operator/ ( const SmallSet& x ) const {
+            SmallSet res;
+            std::set_difference( _elements.begin(), _elements.end(), x._elements.begin(), x._elements.end(), inserter( res._elements, res._elements.begin() ) );
             return res;
         }
 
-        /// Set-union operator: returns all elements in *this, plus those in ns
-        smallSet operator| ( const smallSet& ns ) const {
-            smallSet res;
-            std::set_union( _elements.begin(), _elements.end(), ns._elements.begin(), ns._elements.end(), inserter( res._elements, res._elements.begin() ) );
+        /// Set-union operator: returns all elements in *this, plus those in x
+        SmallSet operator| ( const SmallSet& x ) const {
+            SmallSet res;
+            std::set_union( _elements.begin(), _elements.end(), x._elements.begin(), x._elements.end(), inserter( res._elements, res._elements.begin() ) );
             return res;
         }
 
-        /// Set-intersection operator: returns all elements in *this that are also contained in ns
-        smallSet operator& ( const smallSet& ns ) const {
-            smallSet res;
-            std::set_intersection( _elements.begin(), _elements.end(), ns._elements.begin(), ns._elements.end(), inserter( res._elements, res._elements.begin() ) );
+        /// Set-intersection operator: returns all elements in *this that are also contained in 
+        SmallSet operator& ( const SmallSet& x ) const {
+            SmallSet res;
+            std::set_intersection( _elements.begin(), _elements.end(), x._elements.begin(), x._elements.end(), inserter( res._elements, res._elements.begin() ) );
             return res;
         }
         
-        /// Erases from *this all elements in ns
-        smallSet& operator/= ( const smallSet& ns ) {
-            return (*this = (*this / ns));
+        /// Erases from *this all elements in x
+        SmallSet& operator/= ( const SmallSet& x ) {
+            return (*this = (*this / x));
         }
 
         /// Erases one element
-        smallSet& operator/= ( const T& n ) { 
-            typename std::vector<T>::iterator pos = lower_bound( _elements.begin(), _elements.end(), n );
+        SmallSet& operator/= ( const T &t ) { 
+            typename std::vector<T>::iterator pos = lower_bound( _elements.begin(), _elements.end(), t );
             if( pos != _elements.end() )
-                if( *pos == n ) // found element, delete it
+                if( *pos == t ) // found element, delete it
                     _elements.erase( pos ); 
             return *this; 
         }
 
-        /// Adds to *this all elements in ns
-        smallSet& operator|= ( const smallSet& ns ) {
-            return( *this = (*this | ns) );
+        /// Adds to *this all elements in x
+        SmallSet& operator|= ( const SmallSet& x ) {
+            return( *this = (*this | x) );
         }
 
         /// Adds one element
-        smallSet& operator|= ( const T& n ) {
-            typename std::vector<T>::iterator pos = lower_bound( _elements.begin(), _elements.end(), n );
-            if( pos == _elements.end() || *pos != n ) // insert it
-                _elements.insert( pos, n );
+        SmallSet& operator|= ( const T& t ) {
+            typename std::vector<T>::iterator pos = lower_bound( _elements.begin(), _elements.end(), t );
+            if( pos == _elements.end() || *pos != t ) // insert it
+                _elements.insert( pos, t );
             return *this;
         }
 
-        /// Erases from *this all elements not in ns
-        smallSet& operator&= ( const smallSet& ns ) { 
-            return (*this = (*this & ns));
+        /// Erases from *this all elements not in x
+        SmallSet& operator&= ( const SmallSet& x ) { 
+            return (*this = (*this & x));
         }
 
-        /// Returns true if *this is a subset of ns
-        bool operator<< ( const smallSet& ns ) const { 
-            return std::includes( ns._elements.begin(), ns._elements.end(), _elements.begin(), _elements.end() );
+        /// Returns true if *this is a subset of x
+        bool operator<< ( const SmallSet& x ) const { 
+            return std::includes( x._elements.begin(), x._elements.end(), _elements.begin(), _elements.end() );
         }
 
-        /// Returns true if ns is a subset of *this
-        bool operator>> ( const smallSet& ns ) const { 
-            return std::includes( _elements.begin(), _elements.end(), ns._elements.begin(), ns._elements.end() );
+        /// Returns true if x is a subset of *this
+        bool operator>> ( const SmallSet& x ) const { 
+            return std::includes( _elements.begin(), _elements.end(), x._elements.begin(), x._elements.end() );
         }
 
-        /// Returns true if *this and ns contain common elements
-        bool intersects( const smallSet& ns ) const { 
-            return( (*this & ns).size() > 0 ); 
+        /// Returns true if *this and x have elements in common
+        bool intersects( const SmallSet& x ) const { 
+            return( (*this & x).size() > 0 ); 
         }
 
-        /// Returns true if *this contains the element n
-        bool contains( const T& n ) const { 
-            return std::binary_search( _elements.begin(), _elements.end(), n );
+        /// Returns true if *this contains the element t
+        bool contains( const T &t ) const { 
+            return std::binary_search( _elements.begin(), _elements.end(), t );
         }
 
         /// Constant iterator over the elements
@@ -202,21 +201,21 @@ class smallSet {
         /// Returns number of elements
         typename std::vector<T>::size_type size() const { return _elements.size(); }
 
-        /// Returns whether the smallSet is empty
+        /// Returns whether the SmallSet is empty
         bool empty() const { return _elements.size() == 0; }
 
-        /// Returns true if the two sets are identical
-        friend bool operator==( const smallSet &a, const smallSet &b ) {
+        /// Returns true if a and b are identical
+        friend bool operator==( const SmallSet &a, const SmallSet &b ) {
             return (a._elements == b._elements);
         }
 
-        /// Returns true if the two sets are not identical
-        friend bool operator!=( const smallSet &a, const smallSet &b ) {
+        /// Returns true if a and b are not identical
+        friend bool operator!=( const SmallSet &a, const SmallSet &b ) {
             return !(a._elements == b._elements);
         }
 
         /// Lexicographical comparison of elements
-        friend bool operator<( const smallSet &a, const smallSet &b ) {
+        friend bool operator<( const SmallSet &a, const SmallSet &b ) {
             return a._elements < b._elements;
         }
 };
index 4134de5..042a246 100644 (file)
@@ -25,7 +25,6 @@
 
 /// \file
 /// \brief Defines class Var
-/// \todo Improve documentation
 
 
 #ifndef __defined_libdai_var_h
@@ -39,8 +38,15 @@ namespace dai {
 
 
 /// Represents a discrete random variable.
-/** It contains the \a label of the variable (an integer-valued unique ID) 
- *  and the number of possible values (\a states) of the variable.
+/** A Var stores the \a label of the variable (an integer-valued unique ID) 
+ *  and the number of possible values (\a states) of that variable. Two
+ *  Var objects with the same label are assumed to be identical (i.e., it 
+ *  is assumed that their states are also the same).
+ *
+ *  In this manual, we use the following notational conventions. The discrete
+ *  random variable with label \f$l\f$ is denoted as \f$x_l\f$, and the number 
+ *  of possible values of this variable as \f$S_l\f$; this is represented in
+ *  code by the object Var(\f$l\f$,\f$S_l\f$).
  */
 class Var {
     private:
@@ -66,22 +72,22 @@ class Var {
         /// Returns reference to number of states
         size_t& states () { return _states; }
 
-        /// Smaller-than operator (only compares labels)
+        /// Smaller-than operator (compares only labels)
         bool operator < ( const Var& n ) const { return( _label <  n._label ); }
-        /// Larger-than operator (only compares labels)
+        /// Larger-than operator (compares only labels)
         bool operator > ( const Var& n ) const { return( _label >  n._label ); }
-        /// Smaller-than-or-equal-to operator (only compares labels)
+        /// Smaller-than-or-equal-to operator (compares only labels)
         bool operator <= ( const Var& n ) const { return( _label <= n._label ); }
-        /// Larger-than-or-equal-to operator (only compares labels)
+        /// Larger-than-or-equal-to operator (compares only labels)
         bool operator >= ( const Var& n ) const { return( _label >= n._label ); }
-        /// Not-equal-to operator (only compares labels)
+        /// Not-equal-to operator (compares only labels)
         bool operator != ( const Var& n ) const { return( _label != n._label ); }
-        /// Equal-to operator (only compares labels)
+        /// Equal-to operator (compares only labels)
         bool operator == ( const Var& n ) const { return( _label == n._label ); }
 
         /// Writes a Var to an output stream
         friend std::ostream& operator << ( std::ostream& os, const Var& n ) {
-            return( os << "[" << n.label() << "]" );
+            return( os << "x" << n.label() );
         }
 };
 
index a981a04..9a25775 100644 (file)
@@ -25,7 +25,6 @@
 
 /// \file
 /// \brief Defines VarSet class
-/// \todo Improve documentation
 
 
 #ifndef __defined_libdai_varset_h
@@ -34,6 +33,7 @@
 
 #include <vector>
 #include <map>
+#include <cassert>
 #include <ostream>
 #include <dai/var.h>
 #include <dai/util.h>
@@ -44,29 +44,35 @@ namespace dai {
 
 
 /// Represents a set of variables.
-/** \note A VarSet is implemented using a std::vector<Var> instead
+/** \note A VarSet is implemented using a SmallSet<Var> instead
  *  of the more natural std::set<Var> because of efficiency reasons.
  */
-class VarSet : public smallSet<Var> {
+class VarSet : public SmallSet<Var> {
     public:
         /// Default constructor
-        VarSet() : smallSet<Var>() {}
+        VarSet() : SmallSet<Var>() {}
 
         /// Copy constructor
-        VarSet( const VarSet &x ) : smallSet<Var>(x) {}
+        VarSet( const VarSet &x ) : SmallSet<Var>(x) {}
 
         /// Assignment operator
         VarSet& operator=( const VarSet &x ) {
             if( this != &x ) {
-                smallSet<Var>::operator=( x );
+                SmallSet<Var>::operator=( x );
             }
             return *this;
         }
         
-        /// Construct from smallSet<Var>
-        VarSet( const smallSet<Var> &x ) : smallSet<Var>(x) {}
+        /// Construct from SmallSet<Var>
+        VarSet( const SmallSet<Var> &x ) : SmallSet<Var>(x) {}
 
         /// Calculates the product of the number of states of all variables in this VarSet.
+        /** This is equal to the number of joint configurations of the variables.
+         *  If *this corresponds with the set \f$\{x_{l(0)},x_{l(1)},\dots,x_{l(n-1)}\}\f$,
+         *  where variable \f$x_l\f$ has label \f$l\f$, and denoting by \f$S_l\f$ the number of possible values
+         *  ("states") of variable \f$x_l\f$, the number of joint configurations
+         *  of the variables in this set is given by \f[N := \prod_{i=0}^{n-1} S_{l(i)}.\f]
+         */
         size_t nrStates() {
             size_t states = 1;
             for( VarSet::const_iterator n = begin(); n != end(); n++ )
@@ -75,25 +81,40 @@ class VarSet : public smallSet<Var> {
         }
 
         /// Construct a VarSet with one element
-        VarSet( const Var &n ) : smallSet<Var>(n) {}
+        VarSet( const Var &n ) : SmallSet<Var>(n) {}
 
         /// Construct a VarSet with two elements
-        VarSet( const Var &n1, const Var &n2 ) : smallSet<Var>(n1,n2) {} 
+        VarSet( const Var &n1, const Var &n2 ) : SmallSet<Var>(n1,n2) {} 
 
-        /// Construct a VarSet from a range of iterators.
-        /** \tparam VarIterator Iterator with value_type Var.
+        /// Construct a VarSet from a range.
+        /** \tparam VarIterator Iterates over instances of type Var.
          *  \param begin Points to first Var to be added.
          *  \param end Points just beyond last Var to be added.
          *  \param sizeHint For efficiency, the number of elements can be speficied by sizeHint.
          */
         template <typename VarIterator>
-        VarSet( VarIterator begin, VarIterator end, size_t sizeHint=0 ) : smallSet<Var>(begin,end,sizeHint) {}
+        VarSet( VarIterator begin, VarIterator end, size_t sizeHint=0 ) : SmallSet<Var>(begin,end,sizeHint) {}
 
-        /// Calculates the linear index in the cartesian product of the variables in *this, which corresponds to a particular joint assignment of the variables.
+        /// Calculates the linear index in the cartesian product of the variables in *this, which corresponds to a particular joint assignment of the variables specified by \a states.
         /** \param states Specifies the states of some variables.
          *  \return The linear index in the cartesian product of the variables in *this
-         *  corresponding with the joint assignment specified by \c states (where it is
-         *  assumed that states[m] == 0 for all m in vars which are not in states).
+         *  corresponding with the joint assignment specified by \a states, where it is
+         *  assumed that \a states[\a m]==0 for all \a m in *this which are not in \a states.
+         *  
+         *  The linear index is calculated as follows. The variables in *this are
+         *  ordered according to their label (in ascending order); say *this corresponds with
+         *  the set \f$\{x_{l(0)},x_{l(1)},\dots,x_{l(n-1)}\}\f$ with \f$l(0) < l(1) < \dots < l(n-1)\f$,
+         *  where variable \f$x_l\f$ has label \a l. Denote by \f$S_l\f$ the number of possible values
+         *  ("states") of variable \f$x_l\f$. The argument \a states corresponds
+         *  with a mapping \a s that assigns to each variable \f$x_l\f$ a state \f$s(x_l) \in \{0,1,\dots,S_l-1\}\f$,
+         *  where \f$s(x_l)=0\f$ if \f$x_l\f$ is not specified in \a states. The linear index \a S corresponding
+         *  with \a states is now calculated as:
+         *  \f{eqnarray*}
+         *    S &:=& \sum_{i=0}^{n-1} s(x_{l(i)}) \prod_{j=0}^{i-1} S_{l(j)} \\
+         *      &= & s(x_{l(0)}) + s(x_{l(1)}) S_{l(0)} + s(x_{l(2)}) S_{l(0)} S_{l(1)} + \dots + s(x_{l(n-1)}) S_{l(0)} \cdots S_{l(n-2)}.
+         *  \f}
+         *
+         *  \note This function is the inverse of calcStates( size_t ).
          */
         size_t calcState( const std::map<Var, size_t> &states ) {
             size_t prod = 1;
@@ -107,10 +128,37 @@ class VarSet : public smallSet<Var> {
             return state;
         }
 
+        /// Calculates the joint assignment of the variables in *this corresponding to the linear index \a linearState.
+        /** \param linearState should be smaller than nrStates().
+         *  \return A mapping \f$s\f$ that maps each Var \f$x_l\f$ in *this to its state \f$s(x_l)\f$, as specified by \a linearState.
+         *
+         *  The variables in *this are ordered according to their label (in ascending order); say *this corresponds with
+         *  the set \f$\{x_{l(0)},x_{l(1)},\dots,x_{l(n-1)}\}\f$ with \f$l(0) < l(1) < \dots < l(n-1)\f$,
+         *  where variable \f$x_l\f$ has label \a l. Denote by \f$S_l\f$ the number of possible values
+         *  ("states") of variable \f$x_l\f$ with label \a l. 
+         *  The mapping \a s returned by this function is defined as:
+         *  \f{eqnarray*}
+         *    s(x_{l(i)}) = \left[\frac{S \mbox { mod } \prod_{j=0}^{i} S_{l(j)}}{\prod_{j=0}^{i-1} S_{l(j)}}\right] \qquad \mbox{for all $i=0,\dots,n-1$}.
+         *  \f}
+         *  where \f$S\f$ denotes the value of \a linearState.
+         *  \note This function is the inverse of calcState( const std::map<Var,size_t> &).
+         */
+        std::map<Var, size_t> calcStates( size_t linearState ) {
+            std::map<Var, size_t> states;
+            for( VarSet::const_iterator n = begin(); n != end(); n++ ) {
+                states[*n] = linearState % n->states();
+                linearState /= n->states();
+            }
+            assert( linearState == 0 );
+            return states;
+        }
+
         /// Writes a VarSet to an output stream
         friend std::ostream& operator<< (std::ostream &os, const VarSet& ns)  {
+            os << "{";
             for( VarSet::const_iterator n = ns.begin(); n != ns.end(); n++ )
-                os << *n;
+                os << (n != ns.begin() ? "," : "") << *n;
+            os << "}";
             return( os );
         }
 };
@@ -119,4 +167,14 @@ class VarSet : public smallSet<Var> {
 } // end of namespace dai
 
 
+/** \example example_varset.cpp
+ *  This example shows how to use the Var and VarSet classes. It also explains the concept of "states" for VarSets.
+ *
+ *  \section Output
+ *  \verbinclude examples/example_varset.out
+ *
+ *  \section Source
+ */
+
+
 #endif
index e1a33d3..d323e8e 100644 (file)
@@ -478,7 +478,7 @@ Real HAK::logZ() const {
         sum += IR(beta).c() * Qb(beta).entropy();
     for( size_t alpha = 0; alpha < nrORs(); alpha++ ) {
         sum += OR(alpha).c() * Qa(alpha).entropy();
-        sum += (OR(alpha).log0() * Qa(alpha)).totalSum();
+        sum += (OR(alpha).log(true) * Qa(alpha)).totalSum();
     }
     return sum;
 }
index 16ae300..f112c48 100644 (file)
@@ -313,7 +313,7 @@ Real JTree::logZ() const {
         sum += IR(beta).c() * Qb[beta].entropy();
     for( size_t alpha = 0; alpha < nrORs(); alpha++ ) {
         sum += OR(alpha).c() * Qa[alpha].entropy();
-        sum += (OR(alpha).log0() * Qa[alpha]).totalSum();
+        sum += (OR(alpha).log(true) * Qa[alpha]).totalSum();
     }
     return sum;
 }
index 766acc7..17ee2d6 100644 (file)
@@ -116,7 +116,7 @@ double MF::run() {
             foreach( const Neighbor &j, nbF(I) ) // for all j in I \ i
                 if( j != i )
                     henk *= _beliefs[j];
-            piet = factor(I).log0();
+            piet = factor(I).log(true);
             piet *= henk;
             piet = piet.partSum(var(i));
             piet = piet.exp();
@@ -199,7 +199,7 @@ Real MF::logZ() const {
             henk *= _beliefs[j];
         henk.normalize();
         Factor piet;
-        piet = factor(I).log0();
+        piet = factor(I).log(true);
         piet *= henk;
         sum -= piet.totalSum();
     }
index a473e9e..f5938d0 100644 (file)
@@ -190,9 +190,9 @@ void TreeEP::TreeEPSubTree::HUGIN_with_I( std::vector<Factor> &Qa, std::vector<F
 double TreeEP::TreeEPSubTree::logZ( const std::vector<Factor> &Qa, const std::vector<Factor> &Qb ) const {
     double sum = 0.0;
     for( size_t alpha = 0; alpha < _Qa.size(); alpha++ )
-        sum += (Qa[_a[alpha]] * _Qa[alpha].log0()).totalSum();
+        sum += (Qa[_a[alpha]] * _Qa[alpha].log(true)).totalSum();
     for( size_t beta = 0; beta < _Qb.size(); beta++ )
-        sum -= (Qb[_b[beta]] * _Qb[beta].log0()).totalSum();
+        sum -= (Qb[_b[beta]] * _Qb[beta].log(true)).totalSum();
     return sum + _logZ;
 }
 
@@ -441,7 +441,7 @@ Real TreeEP::logZ() const {
 
     // energy of the on-tree factors
     for( size_t alpha = 0; alpha < nrORs(); alpha++ )
-        sum += (OR(alpha).log0() * Qa[alpha]).totalSum();
+        sum += (OR(alpha).log(true) * Qa[alpha]).totalSum();
 
     // energy of the off-tree factors
     for( size_t I = 0; I < nrFactors(); I++ )
index e800289..9628bcb 100644 (file)
 # testfast.fg
 # METHOD                                  MAX ERROR   AVG ERROR   LOGZ ERROR  MAXDIFF     
 EXACT[verbose=0]                          
-# ([0] <3.888e-01 6.112e-01 >)
-# ([1] <5.556e-01 4.444e-01 >)
-# ([2] <4.587e-01 5.413e-01 >)
-# ([3] <5.480e-01 4.520e-01 >)
-# ([4] <6.660e-01 3.340e-01 >)
-# ([5] <2.107e-01 7.893e-01 >)
-# ([6] <8.178e-01 1.822e-01 >)
-# ([7] <2.327e-01 7.673e-01 >)
-# ([8] <2.171e-01 7.829e-01 >)
-# ([9] <2.052e-01 7.948e-01 >)
-# ([10] <7.665e-01 2.335e-01 >)
-# ([11] <1.217e-01 8.783e-01 >)
-# ([12] <4.214e-01 5.786e-01 >)
-# ([13] <5.348e-01 4.652e-01 >)
-# ([14] <6.291e-01 3.709e-01 >)
-# ([15] <1.357e-01 8.643e-01 >)
+# ({x0} <3.888e-01 6.112e-01 >)
+# ({x1} <5.556e-01 4.444e-01 >)
+# ({x2} <4.587e-01 5.413e-01 >)
+# ({x3} <5.480e-01 4.520e-01 >)
+# ({x4} <6.660e-01 3.340e-01 >)
+# ({x5} <2.107e-01 7.893e-01 >)
+# ({x6} <8.178e-01 1.822e-01 >)
+# ({x7} <2.327e-01 7.673e-01 >)
+# ({x8} <2.171e-01 7.829e-01 >)
+# ({x9} <2.052e-01 7.948e-01 >)
+# ({x10} <7.665e-01 2.335e-01 >)
+# ({x11} <1.217e-01 8.783e-01 >)
+# ({x12} <4.214e-01 5.786e-01 >)
+# ({x13} <5.348e-01 4.652e-01 >)
+# ({x14} <6.291e-01 3.709e-01 >)
+# ({x15} <1.357e-01 8.643e-01 >)
 JTREE_HUGIN                               1.000e-09   1.000e-09   1.000e-09   1.000e-09   
-# ([0] <3.888e-01 6.112e-01 >)
-# ([1] <5.556e-01 4.444e-01 >)
-# ([2] <4.587e-01 5.413e-01 >)
-# ([3] <5.480e-01 4.520e-01 >)
-# ([4] <6.660e-01 3.340e-01 >)
-# ([5] <2.107e-01 7.893e-01 >)
-# ([6] <8.178e-01 1.822e-01 >)
-# ([7] <2.327e-01 7.673e-01 >)
-# ([8] <2.171e-01 7.829e-01 >)
-# ([9] <2.052e-01 7.948e-01 >)
-# ([10] <7.665e-01 2.335e-01 >)
-# ([11] <1.217e-01 8.783e-01 >)
-# ([12] <4.214e-01 5.786e-01 >)
-# ([13] <5.348e-01 4.652e-01 >)
-# ([14] <6.291e-01 3.709e-01 >)
-# ([15] <1.357e-01 8.643e-01 >)
+# ({x0} <3.888e-01 6.112e-01 >)
+# ({x1} <5.556e-01 4.444e-01 >)
+# ({x2} <4.587e-01 5.413e-01 >)
+# ({x3} <5.480e-01 4.520e-01 >)
+# ({x4} <6.660e-01 3.340e-01 >)
+# ({x5} <2.107e-01 7.893e-01 >)
+# ({x6} <8.178e-01 1.822e-01 >)
+# ({x7} <2.327e-01 7.673e-01 >)
+# ({x8} <2.171e-01 7.829e-01 >)
+# ({x9} <2.052e-01 7.948e-01 >)
+# ({x10} <7.665e-01 2.335e-01 >)
+# ({x11} <1.217e-01 8.783e-01 >)
+# ({x12} <4.214e-01 5.786e-01 >)
+# ({x13} <5.348e-01 4.652e-01 >)
+# ({x14} <6.291e-01 3.709e-01 >)
+# ({x15} <1.357e-01 8.643e-01 >)
 JTREE_SHSH                                1.000e-09   1.000e-09   1.000e-09   1.000e-09   
-# ([0] <3.888e-01 6.112e-01 >)
-# ([1] <5.556e-01 4.444e-01 >)
-# ([2] <4.587e-01 5.413e-01 >)
-# ([3] <5.480e-01 4.520e-01 >)
-# ([4] <6.660e-01 3.340e-01 >)
-# ([5] <2.107e-01 7.893e-01 >)
-# ([6] <8.178e-01 1.822e-01 >)
-# ([7] <2.327e-01 7.673e-01 >)
-# ([8] <2.171e-01 7.829e-01 >)
-# ([9] <2.052e-01 7.948e-01 >)
-# ([10] <7.665e-01 2.335e-01 >)
-# ([11] <1.217e-01 8.783e-01 >)
-# ([12] <4.214e-01 5.786e-01 >)
-# ([13] <5.348e-01 4.652e-01 >)
-# ([14] <6.291e-01 3.709e-01 >)
-# ([15] <1.357e-01 8.643e-01 >)
+# ({x0} <3.888e-01 6.112e-01 >)
+# ({x1} <5.556e-01 4.444e-01 >)
+# ({x2} <4.587e-01 5.413e-01 >)
+# ({x3} <5.480e-01 4.520e-01 >)
+# ({x4} <6.660e-01 3.340e-01 >)
+# ({x5} <2.107e-01 7.893e-01 >)
+# ({x6} <8.178e-01 1.822e-01 >)
+# ({x7} <2.327e-01 7.673e-01 >)
+# ({x8} <2.171e-01 7.829e-01 >)
+# ({x9} <2.052e-01 7.948e-01 >)
+# ({x10} <7.665e-01 2.335e-01 >)
+# ({x11} <1.217e-01 8.783e-01 >)
+# ({x12} <4.214e-01 5.786e-01 >)
+# ({x13} <5.348e-01 4.652e-01 >)
+# ({x14} <6.291e-01 3.709e-01 >)
+# ({x15} <1.357e-01 8.643e-01 >)
 BP_SEQFIX                                 9.483e-02   3.078e-02   1.737e-02   1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)
 BP_SEQRND                                 9.483e-02   3.078e-02   1.737e-02   1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)
 BP_SEQMAX                                 9.483e-02   3.078e-02   1.737e-02   1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)
 BP_PARALL                                 9.483e-02   3.078e-02   1.737e-02   1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)
 BP_SEQFIX_LOG                             9.483e-02   3.078e-02   1.737e-02   1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)
 BP_SEQRND_LOG                             9.483e-02   3.078e-02   1.737e-02   1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)
 BP_SEQMAX_LOG                             9.483e-02   3.078e-02   1.737e-02   1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)
 BP_PARALL_LOG                             9.483e-02   3.078e-02   1.737e-02   1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)
 MF_SEQRND                                 3.607e-01   1.904e-01   -9.409e-02  1.000e-09   
-# ([0] <2.053e-01 7.947e-01 >)
-# ([1] <9.163e-01 8.373e-02 >)
-# ([2] <1.579e-01 8.421e-01 >)
-# ([3] <6.986e-01 3.014e-01 >)
-# ([4] <8.982e-01 1.018e-01 >)
-# ([5] <1.830e-01 8.170e-01 >)
-# ([6] <9.597e-01 4.033e-02 >)
-# ([7] <1.841e-01 8.159e-01 >)
-# ([8] <4.385e-03 9.956e-01 >)
-# ([9] <5.075e-02 9.492e-01 >)
-# ([10] <9.685e-01 3.149e-02 >)
-# ([11] <2.957e-02 9.704e-01 >)
-# ([12] <9.632e-02 9.037e-01 >)
-# ([13] <8.148e-01 1.852e-01 >)
-# ([14] <8.338e-01 1.662e-01 >)
-# ([15] <5.661e-03 9.943e-01 >)
+# ({x0} <2.053e-01 7.947e-01 >)
+# ({x1} <9.163e-01 8.373e-02 >)
+# ({x2} <1.579e-01 8.421e-01 >)
+# ({x3} <6.986e-01 3.014e-01 >)
+# ({x4} <8.982e-01 1.018e-01 >)
+# ({x5} <1.830e-01 8.170e-01 >)
+# ({x6} <9.597e-01 4.033e-02 >)
+# ({x7} <1.841e-01 8.159e-01 >)
+# ({x8} <4.385e-03 9.956e-01 >)
+# ({x9} <5.075e-02 9.492e-01 >)
+# ({x10} <9.685e-01 3.149e-02 >)
+# ({x11} <2.957e-02 9.704e-01 >)
+# ({x12} <9.632e-02 9.037e-01 >)
+# ({x13} <8.148e-01 1.852e-01 >)
+# ({x14} <8.338e-01 1.662e-01 >)
+# ({x15} <5.661e-03 9.943e-01 >)
 TREEEP                                    3.268e-02   8.023e-03   6.340e-04   1.000e-09   
-# ([0] <3.980e-01 6.020e-01 >)
-# ([1] <5.520e-01 4.480e-01 >)
-# ([2] <4.620e-01 5.380e-01 >)
-# ([3] <5.472e-01 4.528e-01 >)
-# ([4] <6.643e-01 3.357e-01 >)
-# ([5] <1.781e-01 8.219e-01 >)
-# ([6] <8.442e-01 1.558e-01 >)
-# ([7] <2.224e-01 7.776e-01 >)
-# ([8] <2.154e-01 7.846e-01 >)
-# ([9] <2.067e-01 7.933e-01 >)
-# ([10] <7.742e-01 2.258e-01 >)
-# ([11] <1.207e-01 8.793e-01 >)
-# ([12] <4.318e-01 5.682e-01 >)
-# ([13] <5.293e-01 4.707e-01 >)
-# ([14] <6.409e-01 3.591e-01 >)
-# ([15] <1.364e-01 8.636e-01 >)
+# ({x0} <3.980e-01 6.020e-01 >)
+# ({x1} <5.520e-01 4.480e-01 >)
+# ({x2} <4.620e-01 5.380e-01 >)
+# ({x3} <5.472e-01 4.528e-01 >)
+# ({x4} <6.643e-01 3.357e-01 >)
+# ({x5} <1.781e-01 8.219e-01 >)
+# ({x6} <8.442e-01 1.558e-01 >)
+# ({x7} <2.224e-01 7.776e-01 >)
+# ({x8} <2.154e-01 7.846e-01 >)
+# ({x9} <2.067e-01 7.933e-01 >)
+# ({x10} <7.742e-01 2.258e-01 >)
+# ({x11} <1.207e-01 8.793e-01 >)
+# ({x12} <4.318e-01 5.682e-01 >)
+# ({x13} <5.293e-01 4.707e-01 >)
+# ({x14} <6.409e-01 3.591e-01 >)
+# ({x15} <1.364e-01 8.636e-01 >)
 TREEEPWC                                  2.356e-02   1.026e-02   4.876e-03   1.000e-09   
-# ([0] <4.091e-01 5.909e-01 >)
-# ([1] <5.429e-01 4.571e-01 >)
-# ([2] <4.697e-01 5.303e-01 >)
-# ([3] <5.451e-01 4.549e-01 >)
-# ([4] <6.509e-01 3.491e-01 >)
-# ([5] <1.890e-01 8.110e-01 >)
-# ([6] <8.298e-01 1.702e-01 >)
-# ([7] <2.273e-01 7.727e-01 >)
-# ([8] <2.407e-01 7.593e-01 >)
-# ([9] <2.153e-01 7.847e-01 >)
-# ([10] <7.660e-01 2.340e-01 >)
-# ([11] <1.252e-01 8.748e-01 >)
-# ([12] <4.383e-01 5.617e-01 >)
-# ([13] <5.298e-01 4.702e-01 >)
-# ([14] <6.299e-01 3.701e-01 >)
-# ([15] <1.384e-01 8.616e-01 >)
+# ({x0} <4.091e-01 5.909e-01 >)
+# ({x1} <5.429e-01 4.571e-01 >)
+# ({x2} <4.697e-01 5.303e-01 >)
+# ({x3} <5.451e-01 4.549e-01 >)
+# ({x4} <6.509e-01 3.491e-01 >)
+# ({x5} <1.890e-01 8.110e-01 >)
+# ({x6} <8.298e-01 1.702e-01 >)
+# ({x7} <2.273e-01 7.727e-01 >)
+# ({x8} <2.407e-01 7.593e-01 >)
+# ({x9} <2.153e-01 7.847e-01 >)
+# ({x10} <7.660e-01 2.340e-01 >)
+# ({x11} <1.252e-01 8.748e-01 >)
+# ({x12} <4.383e-01 5.617e-01 >)
+# ({x13} <5.298e-01 4.702e-01 >)
+# ({x14} <6.299e-01 3.701e-01 >)
+# ({x15} <1.384e-01 8.616e-01 >)
 GBP_MIN                                   9.483e-02   3.078e-02   1.737e-02   1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)
 GBP_DELTA                                 6.291e-01   3.350e-01   -3.303e-01  1.000e-09   
-# ([0] <0.000e+00 1.000e+00 >)
-# ([1] <1.000e+00 0.000e+00 >)
-# ([2] <0.000e+00 1.000e+00 >)
-# ([3] <1.000e+00 0.000e+00 >)
-# ([4] <1.000e+00 0.000e+00 >)
-# ([5] <0.000e+00 1.000e+00 >)
-# ([6] <1.000e+00 0.000e+00 >)
-# ([7] <0.000e+00 1.000e+00 >)
-# ([8] <0.000e+00 1.000e+00 >)
-# ([9] <0.000e+00 1.000e+00 >)
-# ([10] <1.000e+00 0.000e+00 >)
-# ([11] <0.000e+00 1.000e+00 >)
-# ([12] <1.000e+00 0.000e+00 >)
-# ([13] <0.000e+00 1.000e+00 >)
-# ([14] <0.000e+00 1.000e+00 >)
-# ([15] <0.000e+00 1.000e+00 >)
+# ({x0} <0.000e+00 1.000e+00 >)
+# ({x1} <1.000e+00 0.000e+00 >)
+# ({x2} <0.000e+00 1.000e+00 >)
+# ({x3} <1.000e+00 0.000e+00 >)
+# ({x4} <1.000e+00 0.000e+00 >)
+# ({x5} <0.000e+00 1.000e+00 >)
+# ({x6} <1.000e+00 0.000e+00 >)
+# ({x7} <0.000e+00 1.000e+00 >)
+# ({x8} <0.000e+00 1.000e+00 >)
+# ({x9} <0.000e+00 1.000e+00 >)
+# ({x10} <1.000e+00 0.000e+00 >)
+# ({x11} <0.000e+00 1.000e+00 >)
+# ({x12} <1.000e+00 0.000e+00 >)
+# ({x13} <0.000e+00 1.000e+00 >)
+# ({x14} <0.000e+00 1.000e+00 >)
+# ({x15} <0.000e+00 1.000e+00 >)
 GBP_LOOP3                                 9.483e-02   3.078e-02   1.737e-02   1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)
 GBP_LOOP4                                 7.893e-01   3.408e-01   -2.745e-01  1.000e-09   
-# ([0] <0.000e+00 1.000e+00 >)
-# ([1] <1.000e+00 0.000e+00 >)
-# ([2] <0.000e+00 1.000e+00 >)
-# ([3] <1.000e+00 4.777e-212 >)
-# ([4] <1.000e+00 0.000e+00 >)
-# ([5] <1.000e+00 7.579e-78 >)
-# ([6] <1.000e+00 0.000e+00 >)
-# ([7] <0.000e+00 1.000e+00 >)
-# ([8] <0.000e+00 1.000e+00 >)
-# ([9] <0.000e+00 1.000e+00 >)
-# ([10] <1.000e+00 0.000e+00 >)
-# ([11] <0.000e+00 1.000e+00 >)
-# ([12] <1.338e-115 1.000e+00 >)
-# ([13] <1.000e+00 3.513e-118 >)
-# ([14] <1.000e+00 0.000e+00 >)
-# ([15] <0.000e+00 1.000e+00 >)
+# ({x0} <0.000e+00 1.000e+00 >)
+# ({x1} <1.000e+00 0.000e+00 >)
+# ({x2} <0.000e+00 1.000e+00 >)
+# ({x3} <1.000e+00 4.777e-212 >)
+# ({x4} <1.000e+00 0.000e+00 >)
+# ({x5} <1.000e+00 7.579e-78 >)
+# ({x6} <1.000e+00 0.000e+00 >)
+# ({x7} <0.000e+00 1.000e+00 >)
+# ({x8} <0.000e+00 1.000e+00 >)
+# ({x9} <0.000e+00 1.000e+00 >)
+# ({x10} <1.000e+00 0.000e+00 >)
+# ({x11} <0.000e+00 1.000e+00 >)
+# ({x12} <1.338e-115 1.000e+00 >)
+# ({x13} <1.000e+00 3.513e-118 >)
+# ({x14} <1.000e+00 0.000e+00 >)
+# ({x15} <0.000e+00 1.000e+00 >)
 GBP_LOOP5                                 7.893e-01   3.408e-01   -2.745e-01  1.000e-09   
-# ([0] <0.000e+00 1.000e+00 >)
-# ([1] <1.000e+00 0.000e+00 >)
-# ([2] <0.000e+00 1.000e+00 >)
-# ([3] <1.000e+00 4.777e-212 >)
-# ([4] <1.000e+00 0.000e+00 >)
-# ([5] <1.000e+00 7.579e-78 >)
-# ([6] <1.000e+00 0.000e+00 >)
-# ([7] <0.000e+00 1.000e+00 >)
-# ([8] <0.000e+00 1.000e+00 >)
-# ([9] <0.000e+00 1.000e+00 >)
-# ([10] <1.000e+00 0.000e+00 >)
-# ([11] <0.000e+00 1.000e+00 >)
-# ([12] <1.338e-115 1.000e+00 >)
-# ([13] <1.000e+00 3.513e-118 >)
-# ([14] <1.000e+00 0.000e+00 >)
-# ([15] <0.000e+00 1.000e+00 >)
+# ({x0} <0.000e+00 1.000e+00 >)
+# ({x1} <1.000e+00 0.000e+00 >)
+# ({x2} <0.000e+00 1.000e+00 >)
+# ({x3} <1.000e+00 4.777e-212 >)
+# ({x4} <1.000e+00 0.000e+00 >)
+# ({x5} <1.000e+00 7.579e-78 >)
+# ({x6} <1.000e+00 0.000e+00 >)
+# ({x7} <0.000e+00 1.000e+00 >)
+# ({x8} <0.000e+00 1.000e+00 >)
+# ({x9} <0.000e+00 1.000e+00 >)
+# ({x10} <1.000e+00 0.000e+00 >)
+# ({x11} <0.000e+00 1.000e+00 >)
+# ({x12} <1.338e-115 1.000e+00 >)
+# ({x13} <1.000e+00 3.513e-118 >)
+# ({x14} <1.000e+00 0.000e+00 >)
+# ({x15} <0.000e+00 1.000e+00 >)
 GBP_LOOP6                                 7.948e-01   4.458e-01   -4.096e-01  1.000e-09   
-# ([0] <1.000e+00 0.000e+00 >)
-# ([1] <0.000e+00 1.000e+00 >)
-# ([2] <1.000e+00 0.000e+00 >)
-# ([3] <0.000e+00 1.000e+00 >)
-# ([4] <0.000e+00 1.000e+00 >)
-# ([5] <0.000e+00 1.000e+00 >)
-# ([6] <1.000e+00 0.000e+00 >)
-# ([7] <0.000e+00 1.000e+00 >)
-# ([8] <1.000e+00 0.000e+00 >)
-# ([9] <1.000e+00 0.000e+00 >)
-# ([10] <1.000e+00 0.000e+00 >)
-# ([11] <0.000e+00 1.000e+00 >)
-# ([12] <0.000e+00 1.000e+00 >)
-# ([13] <1.000e+00 0.000e+00 >)
-# ([14] <0.000e+00 1.000e+00 >)
-# ([15] <0.000e+00 1.000e+00 >)
+# ({x0} <1.000e+00 0.000e+00 >)
+# ({x1} <0.000e+00 1.000e+00 >)
+# ({x2} <1.000e+00 0.000e+00 >)
+# ({x3} <0.000e+00 1.000e+00 >)
+# ({x4} <0.000e+00 1.000e+00 >)
+# ({x5} <0.000e+00 1.000e+00 >)
+# ({x6} <1.000e+00 0.000e+00 >)
+# ({x7} <0.000e+00 1.000e+00 >)
+# ({x8} <1.000e+00 0.000e+00 >)
+# ({x9} <1.000e+00 0.000e+00 >)
+# ({x10} <1.000e+00 0.000e+00 >)
+# ({x11} <0.000e+00 1.000e+00 >)
+# ({x12} <0.000e+00 1.000e+00 >)
+# ({x13} <1.000e+00 0.000e+00 >)
+# ({x14} <0.000e+00 1.000e+00 >)
+# ({x15} <0.000e+00 1.000e+00 >)
 GBP_LOOP7                                 7.948e-01   4.458e-01   -4.096e-01  1.000e-09   
-# ([0] <1.000e+00 0.000e+00 >)
-# ([1] <0.000e+00 1.000e+00 >)
-# ([2] <1.000e+00 0.000e+00 >)
-# ([3] <0.000e+00 1.000e+00 >)
-# ([4] <0.000e+00 1.000e+00 >)
-# ([5] <0.000e+00 1.000e+00 >)
-# ([6] <1.000e+00 0.000e+00 >)
-# ([7] <0.000e+00 1.000e+00 >)
-# ([8] <1.000e+00 0.000e+00 >)
-# ([9] <1.000e+00 0.000e+00 >)
-# ([10] <1.000e+00 0.000e+00 >)
-# ([11] <0.000e+00 1.000e+00 >)
-# ([12] <0.000e+00 1.000e+00 >)
-# ([13] <1.000e+00 0.000e+00 >)
-# ([14] <0.000e+00 1.000e+00 >)
-# ([15] <0.000e+00 1.000e+00 >)
+# ({x0} <1.000e+00 0.000e+00 >)
+# ({x1} <0.000e+00 1.000e+00 >)
+# ({x2} <1.000e+00 0.000e+00 >)
+# ({x3} <0.000e+00 1.000e+00 >)
+# ({x4} <0.000e+00 1.000e+00 >)
+# ({x5} <0.000e+00 1.000e+00 >)
+# ({x6} <1.000e+00 0.000e+00 >)
+# ({x7} <0.000e+00 1.000e+00 >)
+# ({x8} <1.000e+00 0.000e+00 >)
+# ({x9} <1.000e+00 0.000e+00 >)
+# ({x10} <1.000e+00 0.000e+00 >)
+# ({x11} <0.000e+00 1.000e+00 >)
+# ({x12} <0.000e+00 1.000e+00 >)
+# ({x13} <1.000e+00 0.000e+00 >)
+# ({x14} <0.000e+00 1.000e+00 >)
+# ({x15} <0.000e+00 1.000e+00 >)
 HAK_MIN                                   9.483e-02   3.078e-02   1.737e-02   1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)
 HAK_DELTA                                 3.684e-01   1.892e-01   9.675e-01   1.000e-09   
-# ([0] <4.902e-01 5.098e-01 >)
-# ([1] <5.098e-01 4.902e-01 >)
-# ([2] <4.902e-01 5.098e-01 >)
-# ([3] <5.098e-01 4.902e-01 >)
-# ([4] <5.098e-01 4.902e-01 >)
-# ([5] <5.098e-01 4.902e-01 >)
-# ([6] <4.902e-01 5.098e-01 >)
-# ([7] <5.098e-01 4.902e-01 >)
-# ([8] <4.902e-01 5.098e-01 >)
-# ([9] <4.902e-01 5.098e-01 >)
-# ([10] <5.098e-01 4.902e-01 >)
-# ([11] <4.902e-01 5.098e-01 >)
-# ([12] <4.902e-01 5.098e-01 >)
-# ([13] <5.098e-01 4.902e-01 >)
-# ([14] <5.098e-01 4.902e-01 >)
-# ([15] <4.902e-01 5.098e-01 >)
+# ({x0} <4.902e-01 5.098e-01 >)
+# ({x1} <5.098e-01 4.902e-01 >)
+# ({x2} <4.902e-01 5.098e-01 >)
+# ({x3} <5.098e-01 4.902e-01 >)
+# ({x4} <5.098e-01 4.902e-01 >)
+# ({x5} <5.098e-01 4.902e-01 >)
+# ({x6} <4.902e-01 5.098e-01 >)
+# ({x7} <5.098e-01 4.902e-01 >)
+# ({x8} <4.902e-01 5.098e-01 >)
+# ({x9} <4.902e-01 5.098e-01 >)
+# ({x10} <5.098e-01 4.902e-01 >)
+# ({x11} <4.902e-01 5.098e-01 >)
+# ({x12} <4.902e-01 5.098e-01 >)
+# ({x13} <5.098e-01 4.902e-01 >)
+# ({x14} <5.098e-01 4.902e-01 >)
+# ({x15} <4.902e-01 5.098e-01 >)
 HAK_LOOP3                                 9.483e-02   3.078e-02   1.737e-02   1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)
 HAK_LOOP4                                 4.970e-03   1.486e-03   -2.503e-04  1.000e-09   
-# ([0] <3.909e-01 6.091e-01 >)
-# ([1] <5.556e-01 4.444e-01 >)
-# ([2] <4.585e-01 5.415e-01 >)
-# ([3] <5.490e-01 4.510e-01 >)
-# ([4] <6.663e-01 3.337e-01 >)
-# ([5] <2.089e-01 7.911e-01 >)
-# ([6] <8.197e-01 1.803e-01 >)
-# ([7] <2.321e-01 7.679e-01 >)
-# ([8] <2.160e-01 7.840e-01 >)
-# ([9] <2.054e-01 7.946e-01 >)
-# ([10] <7.685e-01 2.315e-01 >)
-# ([11] <1.182e-01 8.818e-01 >)
-# ([12] <4.206e-01 5.794e-01 >)
-# ([13] <5.351e-01 4.649e-01 >)
-# ([14] <6.319e-01 3.681e-01 >)
-# ([15] <1.307e-01 8.693e-01 >)
+# ({x0} <3.909e-01 6.091e-01 >)
+# ({x1} <5.556e-01 4.444e-01 >)
+# ({x2} <4.585e-01 5.415e-01 >)
+# ({x3} <5.490e-01 4.510e-01 >)
+# ({x4} <6.663e-01 3.337e-01 >)
+# ({x5} <2.089e-01 7.911e-01 >)
+# ({x6} <8.197e-01 1.803e-01 >)
+# ({x7} <2.321e-01 7.679e-01 >)
+# ({x8} <2.160e-01 7.840e-01 >)
+# ({x9} <2.054e-01 7.946e-01 >)
+# ({x10} <7.685e-01 2.315e-01 >)
+# ({x11} <1.182e-01 8.818e-01 >)
+# ({x12} <4.206e-01 5.794e-01 >)
+# ({x13} <5.351e-01 4.649e-01 >)
+# ({x14} <6.319e-01 3.681e-01 >)
+# ({x15} <1.307e-01 8.693e-01 >)
 HAK_LOOP5                                 4.970e-03   1.486e-03   -2.503e-04  1.000e-09   
-# ([0] <3.909e-01 6.091e-01 >)
-# ([1] <5.556e-01 4.444e-01 >)
-# ([2] <4.585e-01 5.415e-01 >)
-# ([3] <5.490e-01 4.510e-01 >)
-# ([4] <6.663e-01 3.337e-01 >)
-# ([5] <2.089e-01 7.911e-01 >)
-# ([6] <8.197e-01 1.803e-01 >)
-# ([7] <2.321e-01 7.679e-01 >)
-# ([8] <2.160e-01 7.840e-01 >)
-# ([9] <2.054e-01 7.946e-01 >)
-# ([10] <7.685e-01 2.315e-01 >)
-# ([11] <1.182e-01 8.818e-01 >)
-# ([12] <4.206e-01 5.794e-01 >)
-# ([13] <5.351e-01 4.649e-01 >)
-# ([14] <6.319e-01 3.681e-01 >)
-# ([15] <1.307e-01 8.693e-01 >)
+# ({x0} <3.909e-01 6.091e-01 >)
+# ({x1} <5.556e-01 4.444e-01 >)
+# ({x2} <4.585e-01 5.415e-01 >)
+# ({x3} <5.490e-01 4.510e-01 >)
+# ({x4} <6.663e-01 3.337e-01 >)
+# ({x5} <2.089e-01 7.911e-01 >)
+# ({x6} <8.197e-01 1.803e-01 >)
+# ({x7} <2.321e-01 7.679e-01 >)
+# ({x8} <2.160e-01 7.840e-01 >)
+# ({x9} <2.054e-01 7.946e-01 >)
+# ({x10} <7.685e-01 2.315e-01 >)
+# ({x11} <1.182e-01 8.818e-01 >)
+# ({x12} <4.206e-01 5.794e-01 >)
+# ({x13} <5.351e-01 4.649e-01 >)
+# ({x14} <6.319e-01 3.681e-01 >)
+# ({x15} <1.307e-01 8.693e-01 >)
 MR_RESPPROP_FULL                          1.676e-02   4.933e-03   N/A         1.000e-09   
-# ([0] <3.941e-01 6.059e-01 >)
-# ([1] <5.534e-01 4.466e-01 >)
-# ([2] <4.602e-01 5.398e-01 >)
-# ([3] <5.477e-01 4.523e-01 >)
-# ([4] <6.557e-01 3.443e-01 >)
-# ([5] <2.084e-01 7.916e-01 >)
-# ([6] <8.163e-01 1.837e-01 >)
-# ([7] <2.332e-01 7.668e-01 >)
-# ([8] <2.334e-01 7.666e-01 >)
-# ([9] <2.220e-01 7.780e-01 >)
-# ([10] <7.583e-01 2.417e-01 >)
-# ([11] <1.221e-01 8.779e-01 >)
-# ([12] <4.190e-01 5.810e-01 >)
-# ([13] <5.407e-01 4.593e-01 >)
-# ([14] <6.252e-01 3.748e-01 >)
-# ([15] <1.346e-01 8.654e-01 >)
+# ({x0} <3.941e-01 6.059e-01 >)
+# ({x1} <5.534e-01 4.466e-01 >)
+# ({x2} <4.602e-01 5.398e-01 >)
+# ({x3} <5.477e-01 4.523e-01 >)
+# ({x4} <6.557e-01 3.443e-01 >)
+# ({x5} <2.084e-01 7.916e-01 >)
+# ({x6} <8.163e-01 1.837e-01 >)
+# ({x7} <2.332e-01 7.668e-01 >)
+# ({x8} <2.334e-01 7.666e-01 >)
+# ({x9} <2.220e-01 7.780e-01 >)
+# ({x10} <7.583e-01 2.417e-01 >)
+# ({x11} <1.221e-01 8.779e-01 >)
+# ({x12} <4.190e-01 5.810e-01 >)
+# ({x13} <5.407e-01 4.593e-01 >)
+# ({x14} <6.252e-01 3.748e-01 >)
+# ({x15} <1.346e-01 8.654e-01 >)
 MR_CLAMPING_FULL                          8.359e-03   2.508e-03   N/A         1.000e-09   
-# ([0] <3.900e-01 6.100e-01 >)
-# ([1] <5.560e-01 4.440e-01 >)
-# ([2] <4.589e-01 5.411e-01 >)
-# ([3] <5.480e-01 4.520e-01 >)
-# ([4] <6.626e-01 3.374e-01 >)
-# ([5] <2.105e-01 7.895e-01 >)
-# ([6] <8.168e-01 1.832e-01 >)
-# ([7] <2.332e-01 7.668e-01 >)
-# ([8] <2.242e-01 7.758e-01 >)
-# ([9] <2.136e-01 7.864e-01 >)
-# ([10] <7.621e-01 2.379e-01 >)
-# ([11] <1.206e-01 8.794e-01 >)
-# ([12] <4.180e-01 5.820e-01 >)
-# ([13] <5.404e-01 4.596e-01 >)
-# ([14] <6.273e-01 3.727e-01 >)
-# ([15] <1.344e-01 8.656e-01 >)
+# ({x0} <3.900e-01 6.100e-01 >)
+# ({x1} <5.560e-01 4.440e-01 >)
+# ({x2} <4.589e-01 5.411e-01 >)
+# ({x3} <5.480e-01 4.520e-01 >)
+# ({x4} <6.626e-01 3.374e-01 >)
+# ({x5} <2.105e-01 7.895e-01 >)
+# ({x6} <8.168e-01 1.832e-01 >)
+# ({x7} <2.332e-01 7.668e-01 >)
+# ({x8} <2.242e-01 7.758e-01 >)
+# ({x9} <2.136e-01 7.864e-01 >)
+# ({x10} <7.621e-01 2.379e-01 >)
+# ({x11} <1.206e-01 8.794e-01 >)
+# ({x12} <4.180e-01 5.820e-01 >)
+# ({x13} <5.404e-01 4.596e-01 >)
+# ({x14} <6.273e-01 3.727e-01 >)
+# ({x15} <1.344e-01 8.656e-01 >)
 MR_EXACT_FULL                             3.527e-03   1.038e-03   N/A         1.000e-09   
-# ([0] <3.867e-01 6.133e-01 >)
-# ([1] <5.572e-01 4.428e-01 >)
-# ([2] <4.585e-01 5.415e-01 >)
-# ([3] <5.478e-01 4.522e-01 >)
-# ([4] <6.681e-01 3.319e-01 >)
-# ([5] <2.101e-01 7.899e-01 >)
-# ([6] <8.179e-01 1.821e-01 >)
-# ([7] <2.329e-01 7.671e-01 >)
-# ([8] <2.166e-01 7.834e-01 >)
-# ([9] <2.053e-01 7.947e-01 >)
-# ([10] <7.666e-01 2.334e-01 >)
-# ([11] <1.201e-01 8.799e-01 >)
-# ([12] <4.194e-01 5.806e-01 >)
-# ([13] <5.384e-01 4.616e-01 >)
-# ([14] <6.296e-01 3.704e-01 >)
-# ([15] <1.344e-01 8.656e-01 >)
+# ({x0} <3.867e-01 6.133e-01 >)
+# ({x1} <5.572e-01 4.428e-01 >)
+# ({x2} <4.585e-01 5.415e-01 >)
+# ({x3} <5.478e-01 4.522e-01 >)
+# ({x4} <6.681e-01 3.319e-01 >)
+# ({x5} <2.101e-01 7.899e-01 >)
+# ({x6} <8.179e-01 1.821e-01 >)
+# ({x7} <2.329e-01 7.671e-01 >)
+# ({x8} <2.166e-01 7.834e-01 >)
+# ({x9} <2.053e-01 7.947e-01 >)
+# ({x10} <7.666e-01 2.334e-01 >)
+# ({x11} <1.201e-01 8.799e-01 >)
+# ({x12} <4.194e-01 5.806e-01 >)
+# ({x13} <5.384e-01 4.616e-01 >)
+# ({x14} <6.296e-01 3.704e-01 >)
+# ({x15} <1.344e-01 8.656e-01 >)
 MR_RESPPROP_LINEAR                        1.932e-02   5.506e-03   N/A         1.000e-09   
-# ([0] <3.923e-01 6.077e-01 >)
-# ([1] <5.529e-01 4.471e-01 >)
-# ([2] <4.608e-01 5.392e-01 >)
-# ([3] <5.467e-01 4.533e-01 >)
-# ([4] <6.546e-01 3.454e-01 >)
-# ([5] <2.071e-01 7.929e-01 >)
-# ([6] <8.175e-01 1.825e-01 >)
-# ([7] <2.325e-01 7.675e-01 >)
-# ([8] <2.364e-01 7.636e-01 >)
-# ([9] <2.228e-01 7.772e-01 >)
-# ([10] <7.577e-01 2.423e-01 >)
-# ([11] <1.240e-01 8.760e-01 >)
-# ([12] <4.258e-01 5.742e-01 >)
-# ([13] <5.388e-01 4.612e-01 >)
-# ([14] <6.239e-01 3.761e-01 >)
-# ([15] <1.369e-01 8.631e-01 >)
+# ({x0} <3.923e-01 6.077e-01 >)
+# ({x1} <5.529e-01 4.471e-01 >)
+# ({x2} <4.608e-01 5.392e-01 >)
+# ({x3} <5.467e-01 4.533e-01 >)
+# ({x4} <6.546e-01 3.454e-01 >)
+# ({x5} <2.071e-01 7.929e-01 >)
+# ({x6} <8.175e-01 1.825e-01 >)
+# ({x7} <2.325e-01 7.675e-01 >)
+# ({x8} <2.364e-01 7.636e-01 >)
+# ({x9} <2.228e-01 7.772e-01 >)
+# ({x10} <7.577e-01 2.423e-01 >)
+# ({x11} <1.240e-01 8.760e-01 >)
+# ({x12} <4.258e-01 5.742e-01 >)
+# ({x13} <5.388e-01 4.612e-01 >)
+# ({x14} <6.239e-01 3.761e-01 >)
+# ({x15} <1.369e-01 8.631e-01 >)
 MR_CLAMPING_LINEAR                        1.089e-02   3.076e-03   N/A         1.000e-09   
-# ([0] <3.884e-01 6.116e-01 >)
-# ([1] <5.551e-01 4.449e-01 >)
-# ([2] <4.598e-01 5.402e-01 >)
-# ([3] <5.469e-01 4.531e-01 >)
-# ([4] <6.610e-01 3.390e-01 >)
-# ([5] <2.089e-01 7.911e-01 >)
-# ([6] <8.182e-01 1.818e-01 >)
-# ([7] <2.325e-01 7.675e-01 >)
-# ([8] <2.280e-01 7.720e-01 >)
-# ([9] <2.148e-01 7.852e-01 >)
-# ([10] <7.613e-01 2.387e-01 >)
-# ([11] <1.228e-01 8.772e-01 >)
-# ([12] <4.254e-01 5.746e-01 >)
-# ([13] <5.383e-01 4.617e-01 >)
-# ([14] <6.257e-01 3.743e-01 >)
-# ([15] <1.370e-01 8.630e-01 >)
+# ({x0} <3.884e-01 6.116e-01 >)
+# ({x1} <5.551e-01 4.449e-01 >)
+# ({x2} <4.598e-01 5.402e-01 >)
+# ({x3} <5.469e-01 4.531e-01 >)
+# ({x4} <6.610e-01 3.390e-01 >)
+# ({x5} <2.089e-01 7.911e-01 >)
+# ({x6} <8.182e-01 1.818e-01 >)
+# ({x7} <2.325e-01 7.675e-01 >)
+# ({x8} <2.280e-01 7.720e-01 >)
+# ({x9} <2.148e-01 7.852e-01 >)
+# ({x10} <7.613e-01 2.387e-01 >)
+# ({x11} <1.228e-01 8.772e-01 >)
+# ({x12} <4.254e-01 5.746e-01 >)
+# ({x13} <5.383e-01 4.617e-01 >)
+# ({x14} <6.257e-01 3.743e-01 >)
+# ({x15} <1.370e-01 8.630e-01 >)
 MR_EXACT_LINEAR                           5.617e-03   1.742e-03   N/A         1.000e-09   
-# ([0] <3.853e-01 6.147e-01 >)
-# ([1] <5.560e-01 4.440e-01 >)
-# ([2] <4.596e-01 5.404e-01 >)
-# ([3] <5.466e-01 4.534e-01 >)
-# ([4] <6.661e-01 3.339e-01 >)
-# ([5] <2.083e-01 7.917e-01 >)
-# ([6] <8.194e-01 1.806e-01 >)
-# ([7] <2.320e-01 7.680e-01 >)
-# ([8] <2.210e-01 7.790e-01 >)
-# ([9] <2.069e-01 7.931e-01 >)
-# ([10] <7.657e-01 2.343e-01 >)
-# ([11] <1.225e-01 8.775e-01 >)
-# ([12] <4.270e-01 5.730e-01 >)
-# ([13] <5.362e-01 4.638e-01 >)
-# ([14] <6.279e-01 3.721e-01 >)
-# ([15] <1.372e-01 8.628e-01 >)
+# ({x0} <3.853e-01 6.147e-01 >)
+# ({x1} <5.560e-01 4.440e-01 >)
+# ({x2} <4.596e-01 5.404e-01 >)
+# ({x3} <5.466e-01 4.534e-01 >)
+# ({x4} <6.661e-01 3.339e-01 >)
+# ({x5} <2.083e-01 7.917e-01 >)
+# ({x6} <8.194e-01 1.806e-01 >)
+# ({x7} <2.320e-01 7.680e-01 >)
+# ({x8} <2.210e-01 7.790e-01 >)
+# ({x9} <2.069e-01 7.931e-01 >)
+# ({x10} <7.657e-01 2.343e-01 >)
+# ({x11} <1.225e-01 8.775e-01 >)
+# ({x12} <4.270e-01 5.730e-01 >)
+# ({x13} <5.362e-01 4.638e-01 >)
+# ({x14} <6.279e-01 3.721e-01 >)
+# ({x15} <1.372e-01 8.628e-01 >)
 LCBP_FULLCAV_SEQFIX                       1.225e-03   5.589e-04   N/A         1.000e-09   
-# ([0] <3.888e-01 6.112e-01 >)
-# ([1] <5.559e-01 4.441e-01 >)
-# ([2] <4.583e-01 5.417e-01 >)
-# ([3] <5.482e-01 4.518e-01 >)
-# ([4] <6.657e-01 3.343e-01 >)
-# ([5] <2.113e-01 7.887e-01 >)
-# ([6] <8.172e-01 1.828e-01 >)
-# ([7] <2.329e-01 7.671e-01 >)
-# ([8] <2.182e-01 7.818e-01 >)
-# ([9] <2.062e-01 7.938e-01 >)
-# ([10] <7.652e-01 2.348e-01 >)
-# ([11] <1.214e-01 8.786e-01 >)
-# ([12] <4.205e-01 5.795e-01 >)
-# ([13] <5.358e-01 4.642e-01 >)
-# ([14] <6.285e-01 3.715e-01 >)
-# ([15] <1.359e-01 8.641e-01 >)
+# ({x0} <3.888e-01 6.112e-01 >)
+# ({x1} <5.559e-01 4.441e-01 >)
+# ({x2} <4.583e-01 5.417e-01 >)
+# ({x3} <5.482e-01 4.518e-01 >)
+# ({x4} <6.657e-01 3.343e-01 >)
+# ({x5} <2.113e-01 7.887e-01 >)
+# ({x6} <8.172e-01 1.828e-01 >)
+# ({x7} <2.329e-01 7.671e-01 >)
+# ({x8} <2.182e-01 7.818e-01 >)
+# ({x9} <2.062e-01 7.938e-01 >)
+# ({x10} <7.652e-01 2.348e-01 >)
+# ({x11} <1.214e-01 8.786e-01 >)
+# ({x12} <4.205e-01 5.795e-01 >)
+# ({x13} <5.358e-01 4.642e-01 >)
+# ({x14} <6.285e-01 3.715e-01 >)
+# ({x15} <1.359e-01 8.641e-01 >)
 LCBP_FULLCAVin_SEQFIX                     1.225e-03   5.589e-04   N/A         1.000e-09   
-# ([0] <3.888e-01 6.112e-01 >)
-# ([1] <5.559e-01 4.441e-01 >)
-# ([2] <4.583e-01 5.417e-01 >)
-# ([3] <5.482e-01 4.518e-01 >)
-# ([4] <6.657e-01 3.343e-01 >)
-# ([5] <2.113e-01 7.887e-01 >)
-# ([6] <8.172e-01 1.828e-01 >)
-# ([7] <2.329e-01 7.671e-01 >)
-# ([8] <2.182e-01 7.818e-01 >)
-# ([9] <2.062e-01 7.938e-01 >)
-# ([10] <7.652e-01 2.348e-01 >)
-# ([11] <1.214e-01 8.786e-01 >)
-# ([12] <4.205e-01 5.795e-01 >)
-# ([13] <5.358e-01 4.642e-01 >)
-# ([14] <6.285e-01 3.715e-01 >)
-# ([15] <1.359e-01 8.641e-01 >)
+# ({x0} <3.888e-01 6.112e-01 >)
+# ({x1} <5.559e-01 4.441e-01 >)
+# ({x2} <4.583e-01 5.417e-01 >)
+# ({x3} <5.482e-01 4.518e-01 >)
+# ({x4} <6.657e-01 3.343e-01 >)
+# ({x5} <2.113e-01 7.887e-01 >)
+# ({x6} <8.172e-01 1.828e-01 >)
+# ({x7} <2.329e-01 7.671e-01 >)
+# ({x8} <2.182e-01 7.818e-01 >)
+# ({x9} <2.062e-01 7.938e-01 >)
+# ({x10} <7.652e-01 2.348e-01 >)
+# ({x11} <1.214e-01 8.786e-01 >)
+# ({x12} <4.205e-01 5.795e-01 >)
+# ({x13} <5.358e-01 4.642e-01 >)
+# ({x14} <6.285e-01 3.715e-01 >)
+# ({x15} <1.359e-01 8.641e-01 >)
 LCBP_FULLCAV_SEQRND                       1.225e-03   5.589e-04   N/A         1.000e-09   
-# ([0] <3.888e-01 6.112e-01 >)
-# ([1] <5.559e-01 4.441e-01 >)
-# ([2] <4.583e-01 5.417e-01 >)
-# ([3] <5.482e-01 4.518e-01 >)
-# ([4] <6.657e-01 3.343e-01 >)
-# ([5] <2.113e-01 7.887e-01 >)
-# ([6] <8.172e-01 1.828e-01 >)
-# ([7] <2.329e-01 7.671e-01 >)
-# ([8] <2.182e-01 7.818e-01 >)
-# ([9] <2.062e-01 7.938e-01 >)
-# ([10] <7.652e-01 2.348e-01 >)
-# ([11] <1.214e-01 8.786e-01 >)
-# ([12] <4.205e-01 5.795e-01 >)
-# ([13] <5.358e-01 4.642e-01 >)
-# ([14] <6.285e-01 3.715e-01 >)
-# ([15] <1.359e-01 8.641e-01 >)
+# ({x0} <3.888e-01 6.112e-01 >)
+# ({x1} <5.559e-01 4.441e-01 >)
+# ({x2} <4.583e-01 5.417e-01 >)
+# ({x3} <5.482e-01 4.518e-01 >)
+# ({x4} <6.657e-01 3.343e-01 >)
+# ({x5} <2.113e-01 7.887e-01 >)
+# ({x6} <8.172e-01 1.828e-01 >)
+# ({x7} <2.329e-01 7.671e-01 >)
+# ({x8} <2.182e-01 7.818e-01 >)
+# ({x9} <2.062e-01 7.938e-01 >)
+# ({x10} <7.652e-01 2.348e-01 >)
+# ({x11} <1.214e-01 8.786e-01 >)
+# ({x12} <4.205e-01 5.795e-01 >)
+# ({x13} <5.358e-01 4.642e-01 >)
+# ({x14} <6.285e-01 3.715e-01 >)
+# ({x15} <1.359e-01 8.641e-01 >)
 LCBP_FULLCAVin_SEQRND                     1.225e-03   5.589e-04   N/A         1.000e-09   
-# ([0] <3.888e-01 6.112e-01 >)
-# ([1] <5.559e-01 4.441e-01 >)
-# ([2] <4.583e-01 5.417e-01 >)
-# ([3] <5.482e-01 4.518e-01 >)
-# ([4] <6.657e-01 3.343e-01 >)
-# ([5] <2.113e-01 7.887e-01 >)
-# ([6] <8.172e-01 1.828e-01 >)
-# ([7] <2.329e-01 7.671e-01 >)
-# ([8] <2.182e-01 7.818e-01 >)
-# ([9] <2.062e-01 7.938e-01 >)
-# ([10] <7.652e-01 2.348e-01 >)
-# ([11] <1.214e-01 8.786e-01 >)
-# ([12] <4.205e-01 5.795e-01 >)
-# ([13] <5.358e-01 4.642e-01 >)
-# ([14] <6.285e-01 3.715e-01 >)
-# ([15] <1.359e-01 8.641e-01 >)
+# ({x0} <3.888e-01 6.112e-01 >)
+# ({x1} <5.559e-01 4.441e-01 >)
+# ({x2} <4.583e-01 5.417e-01 >)
+# ({x3} <5.482e-01 4.518e-01 >)
+# ({x4} <6.657e-01 3.343e-01 >)
+# ({x5} <2.113e-01 7.887e-01 >)
+# ({x6} <8.172e-01 1.828e-01 >)
+# ({x7} <2.329e-01 7.671e-01 >)
+# ({x8} <2.182e-01 7.818e-01 >)
+# ({x9} <2.062e-01 7.938e-01 >)
+# ({x10} <7.652e-01 2.348e-01 >)
+# ({x11} <1.214e-01 8.786e-01 >)
+# ({x12} <4.205e-01 5.795e-01 >)
+# ({x13} <5.358e-01 4.642e-01 >)
+# ({x14} <6.285e-01 3.715e-01 >)
+# ({x15} <1.359e-01 8.641e-01 >)
 LCBP_FULLCAV_NONE                         1.318e-02   2.644e-03   N/A         1.000e+00   
-# ([0] <3.859e-01 6.141e-01 >)
-# ([1] <5.569e-01 4.431e-01 >)
-# ([2] <4.719e-01 5.281e-01 >)
-# ([3] <5.491e-01 4.509e-01 >)
-# ([4] <6.629e-01 3.371e-01 >)
-# ([5] <2.119e-01 7.881e-01 >)
-# ([6] <8.245e-01 1.755e-01 >)
-# ([7] <2.313e-01 7.687e-01 >)
-# ([8] <2.191e-01 7.809e-01 >)
-# ([9] <2.058e-01 7.942e-01 >)
-# ([10] <7.698e-01 2.302e-01 >)
-# ([11] <1.207e-01 8.793e-01 >)
-# ([12] <4.179e-01 5.821e-01 >)
-# ([13] <5.350e-01 4.650e-01 >)
-# ([14] <6.290e-01 3.710e-01 >)
-# ([15] <1.364e-01 8.636e-01 >)
+# ({x0} <3.859e-01 6.141e-01 >)
+# ({x1} <5.569e-01 4.431e-01 >)
+# ({x2} <4.719e-01 5.281e-01 >)
+# ({x3} <5.491e-01 4.509e-01 >)
+# ({x4} <6.629e-01 3.371e-01 >)
+# ({x5} <2.119e-01 7.881e-01 >)
+# ({x6} <8.245e-01 1.755e-01 >)
+# ({x7} <2.313e-01 7.687e-01 >)
+# ({x8} <2.191e-01 7.809e-01 >)
+# ({x9} <2.058e-01 7.942e-01 >)
+# ({x10} <7.698e-01 2.302e-01 >)
+# ({x11} <1.207e-01 8.793e-01 >)
+# ({x12} <4.179e-01 5.821e-01 >)
+# ({x13} <5.350e-01 4.650e-01 >)
+# ({x14} <6.290e-01 3.710e-01 >)
+# ({x15} <1.364e-01 8.636e-01 >)
 LCBP_FULLCAVin_NONE                       1.318e-02   2.644e-03   N/A         1.000e+00   
-# ([0] <3.859e-01 6.141e-01 >)
-# ([1] <5.569e-01 4.431e-01 >)
-# ([2] <4.719e-01 5.281e-01 >)
-# ([3] <5.491e-01 4.509e-01 >)
-# ([4] <6.629e-01 3.371e-01 >)
-# ([5] <2.119e-01 7.881e-01 >)
-# ([6] <8.245e-01 1.755e-01 >)
-# ([7] <2.313e-01 7.687e-01 >)
-# ([8] <2.191e-01 7.809e-01 >)
-# ([9] <2.058e-01 7.942e-01 >)
-# ([10] <7.698e-01 2.302e-01 >)
-# ([11] <1.207e-01 8.793e-01 >)
-# ([12] <4.179e-01 5.821e-01 >)
-# ([13] <5.350e-01 4.650e-01 >)
-# ([14] <6.290e-01 3.710e-01 >)
-# ([15] <1.364e-01 8.636e-01 >)
+# ({x0} <3.859e-01 6.141e-01 >)
+# ({x1} <5.569e-01 4.431e-01 >)
+# ({x2} <4.719e-01 5.281e-01 >)
+# ({x3} <5.491e-01 4.509e-01 >)
+# ({x4} <6.629e-01 3.371e-01 >)
+# ({x5} <2.119e-01 7.881e-01 >)
+# ({x6} <8.245e-01 1.755e-01 >)
+# ({x7} <2.313e-01 7.687e-01 >)
+# ({x8} <2.191e-01 7.809e-01 >)
+# ({x9} <2.058e-01 7.942e-01 >)
+# ({x10} <7.698e-01 2.302e-01 >)
+# ({x11} <1.207e-01 8.793e-01 >)
+# ({x12} <4.179e-01 5.821e-01 >)
+# ({x13} <5.350e-01 4.650e-01 >)
+# ({x14} <6.290e-01 3.710e-01 >)
+# ({x15} <1.364e-01 8.636e-01 >)
 LCBP_PAIRCAV_SEQFIX                       1.564e-02   5.284e-03   N/A         1.000e-09   
-# ([0] <3.872e-01 6.128e-01 >)
-# ([1] <5.540e-01 4.460e-01 >)
-# ([2] <4.596e-01 5.404e-01 >)
-# ([3] <5.460e-01 4.540e-01 >)
-# ([4] <6.601e-01 3.399e-01 >)
-# ([5] <2.050e-01 7.950e-01 >)
-# ([6] <8.200e-01 1.800e-01 >)
-# ([7] <2.314e-01 7.686e-01 >)
-# ([8] <2.327e-01 7.673e-01 >)
-# ([9] <2.095e-01 7.905e-01 >)
-# ([10] <7.621e-01 2.379e-01 >)
-# ([11] <1.283e-01 8.717e-01 >)
-# ([12] <4.367e-01 5.633e-01 >)
-# ([13] <5.282e-01 4.718e-01 >)
-# ([14] <6.240e-01 3.760e-01 >)
-# ([15] <1.409e-01 8.591e-01 >)
+# ({x0} <3.872e-01 6.128e-01 >)
+# ({x1} <5.540e-01 4.460e-01 >)
+# ({x2} <4.596e-01 5.404e-01 >)
+# ({x3} <5.460e-01 4.540e-01 >)
+# ({x4} <6.601e-01 3.399e-01 >)
+# ({x5} <2.050e-01 7.950e-01 >)
+# ({x6} <8.200e-01 1.800e-01 >)
+# ({x7} <2.314e-01 7.686e-01 >)
+# ({x8} <2.327e-01 7.673e-01 >)
+# ({x9} <2.095e-01 7.905e-01 >)
+# ({x10} <7.621e-01 2.379e-01 >)
+# ({x11} <1.283e-01 8.717e-01 >)
+# ({x12} <4.367e-01 5.633e-01 >)
+# ({x13} <5.282e-01 4.718e-01 >)
+# ({x14} <6.240e-01 3.760e-01 >)
+# ({x15} <1.409e-01 8.591e-01 >)
 LCBP_PAIRCAVin_SEQFIX                     1.564e-02   5.284e-03   N/A         1.000e-09   
-# ([0] <3.872e-01 6.128e-01 >)
-# ([1] <5.540e-01 4.460e-01 >)
-# ([2] <4.596e-01 5.404e-01 >)
-# ([3] <5.460e-01 4.540e-01 >)
-# ([4] <6.601e-01 3.399e-01 >)
-# ([5] <2.050e-01 7.950e-01 >)
-# ([6] <8.200e-01 1.800e-01 >)
-# ([7] <2.314e-01 7.686e-01 >)
-# ([8] <2.327e-01 7.673e-01 >)
-# ([9] <2.095e-01 7.905e-01 >)
-# ([10] <7.621e-01 2.379e-01 >)
-# ([11] <1.283e-01 8.717e-01 >)
-# ([12] <4.367e-01 5.633e-01 >)
-# ([13] <5.282e-01 4.718e-01 >)
-# ([14] <6.240e-01 3.760e-01 >)
-# ([15] <1.409e-01 8.591e-01 >)
+# ({x0} <3.872e-01 6.128e-01 >)
+# ({x1} <5.540e-01 4.460e-01 >)
+# ({x2} <4.596e-01 5.404e-01 >)
+# ({x3} <5.460e-01 4.540e-01 >)
+# ({x4} <6.601e-01 3.399e-01 >)
+# ({x5} <2.050e-01 7.950e-01 >)
+# ({x6} <8.200e-01 1.800e-01 >)
+# ({x7} <2.314e-01 7.686e-01 >)
+# ({x8} <2.327e-01 7.673e-01 >)
+# ({x9} <2.095e-01 7.905e-01 >)
+# ({x10} <7.621e-01 2.379e-01 >)
+# ({x11} <1.283e-01 8.717e-01 >)
+# ({x12} <4.367e-01 5.633e-01 >)
+# ({x13} <5.282e-01 4.718e-01 >)
+# ({x14} <6.240e-01 3.760e-01 >)
+# ({x15} <1.409e-01 8.591e-01 >)
 LCBP_PAIRCAV_SEQRND                       1.564e-02   5.284e-03   N/A         1.000e-09   
-# ([0] <3.872e-01 6.128e-01 >)
-# ([1] <5.540e-01 4.460e-01 >)
-# ([2] <4.596e-01 5.404e-01 >)
-# ([3] <5.460e-01 4.540e-01 >)
-# ([4] <6.601e-01 3.399e-01 >)
-# ([5] <2.050e-01 7.950e-01 >)
-# ([6] <8.200e-01 1.800e-01 >)
-# ([7] <2.314e-01 7.686e-01 >)
-# ([8] <2.327e-01 7.673e-01 >)
-# ([9] <2.095e-01 7.905e-01 >)
-# ([10] <7.621e-01 2.379e-01 >)
-# ([11] <1.283e-01 8.717e-01 >)
-# ([12] <4.367e-01 5.633e-01 >)
-# ([13] <5.282e-01 4.718e-01 >)
-# ([14] <6.240e-01 3.760e-01 >)
-# ([15] <1.409e-01 8.591e-01 >)
+# ({x0} <3.872e-01 6.128e-01 >)
+# ({x1} <5.540e-01 4.460e-01 >)
+# ({x2} <4.596e-01 5.404e-01 >)
+# ({x3} <5.460e-01 4.540e-01 >)
+# ({x4} <6.601e-01 3.399e-01 >)
+# ({x5} <2.050e-01 7.950e-01 >)
+# ({x6} <8.200e-01 1.800e-01 >)
+# ({x7} <2.314e-01 7.686e-01 >)
+# ({x8} <2.327e-01 7.673e-01 >)
+# ({x9} <2.095e-01 7.905e-01 >)
+# ({x10} <7.621e-01 2.379e-01 >)
+# ({x11} <1.283e-01 8.717e-01 >)
+# ({x12} <4.367e-01 5.633e-01 >)
+# ({x13} <5.282e-01 4.718e-01 >)
+# ({x14} <6.240e-01 3.760e-01 >)
+# ({x15} <1.409e-01 8.591e-01 >)
 LCBP_PAIRCAVin_SEQRND                     1.564e-02   5.284e-03   N/A         1.000e-09   
-# ([0] <3.872e-01 6.128e-01 >)
-# ([1] <5.540e-01 4.460e-01 >)
-# ([2] <4.596e-01 5.404e-01 >)
-# ([3] <5.460e-01 4.540e-01 >)
-# ([4] <6.601e-01 3.399e-01 >)
-# ([5] <2.050e-01 7.950e-01 >)
-# ([6] <8.200e-01 1.800e-01 >)
-# ([7] <2.314e-01 7.686e-01 >)
-# ([8] <2.327e-01 7.673e-01 >)
-# ([9] <2.095e-01 7.905e-01 >)
-# ([10] <7.621e-01 2.379e-01 >)
-# ([11] <1.283e-01 8.717e-01 >)
-# ([12] <4.367e-01 5.633e-01 >)
-# ([13] <5.282e-01 4.718e-01 >)
-# ([14] <6.240e-01 3.760e-01 >)
-# ([15] <1.409e-01 8.591e-01 >)
+# ({x0} <3.872e-01 6.128e-01 >)
+# ({x1} <5.540e-01 4.460e-01 >)
+# ({x2} <4.596e-01 5.404e-01 >)
+# ({x3} <5.460e-01 4.540e-01 >)
+# ({x4} <6.601e-01 3.399e-01 >)
+# ({x5} <2.050e-01 7.950e-01 >)
+# ({x6} <8.200e-01 1.800e-01 >)
+# ({x7} <2.314e-01 7.686e-01 >)
+# ({x8} <2.327e-01 7.673e-01 >)
+# ({x9} <2.095e-01 7.905e-01 >)
+# ({x10} <7.621e-01 2.379e-01 >)
+# ({x11} <1.283e-01 8.717e-01 >)
+# ({x12} <4.367e-01 5.633e-01 >)
+# ({x13} <5.282e-01 4.718e-01 >)
+# ({x14} <6.240e-01 3.760e-01 >)
+# ({x15} <1.409e-01 8.591e-01 >)
 LCBP_PAIRCAV_NONE                         1.869e-01   6.816e-02   N/A         1.000e+00   
-# ([0] <3.558e-01 6.442e-01 >)
-# ([1] <5.320e-01 4.680e-01 >)
-# ([2] <4.581e-01 5.419e-01 >)
-# ([3] <5.768e-01 4.232e-01 >)
-# ([4] <7.724e-01 2.276e-01 >)
-# ([5] <2.314e-01 7.686e-01 >)
-# ([6] <9.366e-01 6.343e-02 >)
-# ([7] <1.862e-01 8.138e-01 >)
-# ([8] <1.145e-01 8.855e-01 >)
-# ([9] <1.196e-01 8.804e-01 >)
-# ([10] <8.803e-01 1.197e-01 >)
-# ([11] <5.173e-02 9.483e-01 >)
-# ([12] <4.454e-01 5.546e-01 >)
-# ([13] <6.323e-01 3.677e-01 >)
-# ([14] <8.161e-01 1.839e-01 >)
-# ([15] <1.676e-01 8.324e-01 >)
+# ({x0} <3.558e-01 6.442e-01 >)
+# ({x1} <5.320e-01 4.680e-01 >)
+# ({x2} <4.581e-01 5.419e-01 >)
+# ({x3} <5.768e-01 4.232e-01 >)
+# ({x4} <7.724e-01 2.276e-01 >)
+# ({x5} <2.314e-01 7.686e-01 >)
+# ({x6} <9.366e-01 6.343e-02 >)
+# ({x7} <1.862e-01 8.138e-01 >)
+# ({x8} <1.145e-01 8.855e-01 >)
+# ({x9} <1.196e-01 8.804e-01 >)
+# ({x10} <8.803e-01 1.197e-01 >)
+# ({x11} <5.173e-02 9.483e-01 >)
+# ({x12} <4.454e-01 5.546e-01 >)
+# ({x13} <6.323e-01 3.677e-01 >)
+# ({x14} <8.161e-01 1.839e-01 >)
+# ({x15} <1.676e-01 8.324e-01 >)
 LCBP_PAIRCAVin_NONE                       1.869e-01   6.816e-02   N/A         1.000e+00   
-# ([0] <3.558e-01 6.442e-01 >)
-# ([1] <5.320e-01 4.680e-01 >)
-# ([2] <4.581e-01 5.419e-01 >)
-# ([3] <5.768e-01 4.232e-01 >)
-# ([4] <7.724e-01 2.276e-01 >)
-# ([5] <2.314e-01 7.686e-01 >)
-# ([6] <9.366e-01 6.343e-02 >)
-# ([7] <1.862e-01 8.138e-01 >)
-# ([8] <1.145e-01 8.855e-01 >)
-# ([9] <1.196e-01 8.804e-01 >)
-# ([10] <8.803e-01 1.197e-01 >)
-# ([11] <5.173e-02 9.483e-01 >)
-# ([12] <4.454e-01 5.546e-01 >)
-# ([13] <6.323e-01 3.677e-01 >)
-# ([14] <8.161e-01 1.839e-01 >)
-# ([15] <1.676e-01 8.324e-01 >)
+# ({x0} <3.558e-01 6.442e-01 >)
+# ({x1} <5.320e-01 4.680e-01 >)
+# ({x2} <4.581e-01 5.419e-01 >)
+# ({x3} <5.768e-01 4.232e-01 >)
+# ({x4} <7.724e-01 2.276e-01 >)
+# ({x5} <2.314e-01 7.686e-01 >)
+# ({x6} <9.366e-01 6.343e-02 >)
+# ({x7} <1.862e-01 8.138e-01 >)
+# ({x8} <1.145e-01 8.855e-01 >)
+# ({x9} <1.196e-01 8.804e-01 >)
+# ({x10} <8.803e-01 1.197e-01 >)
+# ({x11} <5.173e-02 9.483e-01 >)
+# ({x12} <4.454e-01 5.546e-01 >)
+# ({x13} <6.323e-01 3.677e-01 >)
+# ({x14} <8.161e-01 1.839e-01 >)
+# ({x15} <1.676e-01 8.324e-01 >)
 LCBP_PAIR2CAV_SEQFIX                      1.535e-02   4.445e-03   N/A         1.000e-09   
-# ([0] <3.844e-01 6.156e-01 >)
-# ([1] <5.557e-01 4.443e-01 >)
-# ([2] <4.588e-01 5.412e-01 >)
-# ([3] <5.461e-01 4.539e-01 >)
-# ([4] <6.648e-01 3.352e-01 >)
-# ([5] <2.057e-01 7.943e-01 >)
-# ([6] <8.205e-01 1.795e-01 >)
-# ([7] <2.312e-01 7.688e-01 >)
-# ([8] <2.282e-01 7.718e-01 >)
-# ([9] <2.029e-01 7.971e-01 >)
-# ([10] <7.643e-01 2.357e-01 >)
-# ([11] <1.286e-01 8.714e-01 >)
-# ([12] <4.368e-01 5.632e-01 >)
-# ([13] <5.280e-01 4.720e-01 >)
-# ([14] <6.250e-01 3.750e-01 >)
-# ([15] <1.411e-01 8.589e-01 >)
+# ({x0} <3.844e-01 6.156e-01 >)
+# ({x1} <5.557e-01 4.443e-01 >)
+# ({x2} <4.588e-01 5.412e-01 >)
+# ({x3} <5.461e-01 4.539e-01 >)
+# ({x4} <6.648e-01 3.352e-01 >)
+# ({x5} <2.057e-01 7.943e-01 >)
+# ({x6} <8.205e-01 1.795e-01 >)
+# ({x7} <2.312e-01 7.688e-01 >)
+# ({x8} <2.282e-01 7.718e-01 >)
+# ({x9} <2.029e-01 7.971e-01 >)
+# ({x10} <7.643e-01 2.357e-01 >)
+# ({x11} <1.286e-01 8.714e-01 >)
+# ({x12} <4.368e-01 5.632e-01 >)
+# ({x13} <5.280e-01 4.720e-01 >)
+# ({x14} <6.250e-01 3.750e-01 >)
+# ({x15} <1.411e-01 8.589e-01 >)
 LCBP_PAIR2CAVin_SEQFIX                    1.535e-02   4.445e-03   N/A         1.000e-09   
-# ([0] <3.844e-01 6.156e-01 >)
-# ([1] <5.557e-01 4.443e-01 >)
-# ([2] <4.588e-01 5.412e-01 >)
-# ([3] <5.461e-01 4.539e-01 >)
-# ([4] <6.648e-01 3.352e-01 >)
-# ([5] <2.057e-01 7.943e-01 >)
-# ([6] <8.205e-01 1.795e-01 >)
-# ([7] <2.312e-01 7.688e-01 >)
-# ([8] <2.282e-01 7.718e-01 >)
-# ([9] <2.029e-01 7.971e-01 >)
-# ([10] <7.643e-01 2.357e-01 >)
-# ([11] <1.286e-01 8.714e-01 >)
-# ([12] <4.368e-01 5.632e-01 >)
-# ([13] <5.280e-01 4.720e-01 >)
-# ([14] <6.250e-01 3.750e-01 >)
-# ([15] <1.411e-01 8.589e-01 >)
+# ({x0} <3.844e-01 6.156e-01 >)
+# ({x1} <5.557e-01 4.443e-01 >)
+# ({x2} <4.588e-01 5.412e-01 >)
+# ({x3} <5.461e-01 4.539e-01 >)
+# ({x4} <6.648e-01 3.352e-01 >)
+# ({x5} <2.057e-01 7.943e-01 >)
+# ({x6} <8.205e-01 1.795e-01 >)
+# ({x7} <2.312e-01 7.688e-01 >)
+# ({x8} <2.282e-01 7.718e-01 >)
+# ({x9} <2.029e-01 7.971e-01 >)
+# ({x10} <7.643e-01 2.357e-01 >)
+# ({x11} <1.286e-01 8.714e-01 >)
+# ({x12} <4.368e-01 5.632e-01 >)
+# ({x13} <5.280e-01 4.720e-01 >)
+# ({x14} <6.250e-01 3.750e-01 >)
+# ({x15} <1.411e-01 8.589e-01 >)
 LCBP_PAIR2CAV_SEQRND                      1.535e-02   4.445e-03   N/A         1.000e-09   
-# ([0] <3.844e-01 6.156e-01 >)
-# ([1] <5.557e-01 4.443e-01 >)
-# ([2] <4.588e-01 5.412e-01 >)
-# ([3] <5.461e-01 4.539e-01 >)
-# ([4] <6.648e-01 3.352e-01 >)
-# ([5] <2.057e-01 7.943e-01 >)
-# ([6] <8.205e-01 1.795e-01 >)
-# ([7] <2.312e-01 7.688e-01 >)
-# ([8] <2.282e-01 7.718e-01 >)
-# ([9] <2.029e-01 7.971e-01 >)
-# ([10] <7.643e-01 2.357e-01 >)
-# ([11] <1.286e-01 8.714e-01 >)
-# ([12] <4.368e-01 5.632e-01 >)
-# ([13] <5.280e-01 4.720e-01 >)
-# ([14] <6.250e-01 3.750e-01 >)
-# ([15] <1.411e-01 8.589e-01 >)
+# ({x0} <3.844e-01 6.156e-01 >)
+# ({x1} <5.557e-01 4.443e-01 >)
+# ({x2} <4.588e-01 5.412e-01 >)
+# ({x3} <5.461e-01 4.539e-01 >)
+# ({x4} <6.648e-01 3.352e-01 >)
+# ({x5} <2.057e-01 7.943e-01 >)
+# ({x6} <8.205e-01 1.795e-01 >)
+# ({x7} <2.312e-01 7.688e-01 >)
+# ({x8} <2.282e-01 7.718e-01 >)
+# ({x9} <2.029e-01 7.971e-01 >)
+# ({x10} <7.643e-01 2.357e-01 >)
+# ({x11} <1.286e-01 8.714e-01 >)
+# ({x12} <4.368e-01 5.632e-01 >)
+# ({x13} <5.280e-01 4.720e-01 >)
+# ({x14} <6.250e-01 3.750e-01 >)
+# ({x15} <1.411e-01 8.589e-01 >)
 LCBP_PAIR2CAVin_SEQRND                    1.535e-02   4.445e-03   N/A         1.000e-09   
-# ([0] <3.844e-01 6.156e-01 >)
-# ([1] <5.557e-01 4.443e-01 >)
-# ([2] <4.588e-01 5.412e-01 >)
-# ([3] <5.461e-01 4.539e-01 >)
-# ([4] <6.648e-01 3.352e-01 >)
-# ([5] <2.057e-01 7.943e-01 >)
-# ([6] <8.205e-01 1.795e-01 >)
-# ([7] <2.312e-01 7.688e-01 >)
-# ([8] <2.282e-01 7.718e-01 >)
-# ([9] <2.029e-01 7.971e-01 >)
-# ([10] <7.643e-01 2.357e-01 >)
-# ([11] <1.286e-01 8.714e-01 >)
-# ([12] <4.368e-01 5.632e-01 >)
-# ([13] <5.280e-01 4.720e-01 >)
-# ([14] <6.250e-01 3.750e-01 >)
-# ([15] <1.411e-01 8.589e-01 >)
+# ({x0} <3.844e-01 6.156e-01 >)
+# ({x1} <5.557e-01 4.443e-01 >)
+# ({x2} <4.588e-01 5.412e-01 >)
+# ({x3} <5.461e-01 4.539e-01 >)
+# ({x4} <6.648e-01 3.352e-01 >)
+# ({x5} <2.057e-01 7.943e-01 >)
+# ({x6} <8.205e-01 1.795e-01 >)
+# ({x7} <2.312e-01 7.688e-01 >)
+# ({x8} <2.282e-01 7.718e-01 >)
+# ({x9} <2.029e-01 7.971e-01 >)
+# ({x10} <7.643e-01 2.357e-01 >)
+# ({x11} <1.286e-01 8.714e-01 >)
+# ({x12} <4.368e-01 5.632e-01 >)
+# ({x13} <5.280e-01 4.720e-01 >)
+# ({x14} <6.250e-01 3.750e-01 >)
+# ({x15} <1.411e-01 8.589e-01 >)
 LCBP_PAIR2CAV_NONE                        1.894e-01   7.196e-02   N/A         1.000e+00   
-# ([0] <3.525e-01 6.475e-01 >)
-# ([1] <5.395e-01 4.605e-01 >)
-# ([2] <4.567e-01 5.433e-01 >)
-# ([3] <5.786e-01 4.214e-01 >)
-# ([4] <7.797e-01 2.203e-01 >)
-# ([5] <2.350e-01 7.650e-01 >)
-# ([6] <9.358e-01 6.415e-02 >)
-# ([7] <1.860e-01 8.140e-01 >)
-# ([8] <1.133e-01 8.867e-01 >)
-# ([9] <1.167e-01 8.833e-01 >)
-# ([10] <8.886e-01 1.114e-01 >)
-# ([11] <4.668e-02 9.533e-01 >)
-# ([12] <4.484e-01 5.516e-01 >)
-# ([13] <6.444e-01 3.556e-01 >)
-# ([14] <8.185e-01 1.815e-01 >)
-# ([15] <1.841e-01 8.159e-01 >)
+# ({x0} <3.525e-01 6.475e-01 >)
+# ({x1} <5.395e-01 4.605e-01 >)
+# ({x2} <4.567e-01 5.433e-01 >)
+# ({x3} <5.786e-01 4.214e-01 >)
+# ({x4} <7.797e-01 2.203e-01 >)
+# ({x5} <2.350e-01 7.650e-01 >)
+# ({x6} <9.358e-01 6.415e-02 >)
+# ({x7} <1.860e-01 8.140e-01 >)
+# ({x8} <1.133e-01 8.867e-01 >)
+# ({x9} <1.167e-01 8.833e-01 >)
+# ({x10} <8.886e-01 1.114e-01 >)
+# ({x11} <4.668e-02 9.533e-01 >)
+# ({x12} <4.484e-01 5.516e-01 >)
+# ({x13} <6.444e-01 3.556e-01 >)
+# ({x14} <8.185e-01 1.815e-01 >)
+# ({x15} <1.841e-01 8.159e-01 >)
 LCBP_PAIR2CAVin_NONE                      1.894e-01   7.196e-02   N/A         1.000e+00   
-# ([0] <3.525e-01 6.475e-01 >)
-# ([1] <5.395e-01 4.605e-01 >)
-# ([2] <4.567e-01 5.433e-01 >)
-# ([3] <5.786e-01 4.214e-01 >)
-# ([4] <7.797e-01 2.203e-01 >)
-# ([5] <2.350e-01 7.650e-01 >)
-# ([6] <9.358e-01 6.415e-02 >)
-# ([7] <1.860e-01 8.140e-01 >)
-# ([8] <1.133e-01 8.867e-01 >)
-# ([9] <1.167e-01 8.833e-01 >)
-# ([10] <8.886e-01 1.114e-01 >)
-# ([11] <4.668e-02 9.533e-01 >)
-# ([12] <4.484e-01 5.516e-01 >)
-# ([13] <6.444e-01 3.556e-01 >)
-# ([14] <8.185e-01 1.815e-01 >)
-# ([15] <1.841e-01 8.159e-01 >)
+# ({x0} <3.525e-01 6.475e-01 >)
+# ({x1} <5.395e-01 4.605e-01 >)
+# ({x2} <4.567e-01 5.433e-01 >)
+# ({x3} <5.786e-01 4.214e-01 >)
+# ({x4} <7.797e-01 2.203e-01 >)
+# ({x5} <2.350e-01 7.650e-01 >)
+# ({x6} <9.358e-01 6.415e-02 >)
+# ({x7} <1.860e-01 8.140e-01 >)
+# ({x8} <1.133e-01 8.867e-01 >)
+# ({x9} <1.167e-01 8.833e-01 >)
+# ({x10} <8.886e-01 1.114e-01 >)
+# ({x11} <4.668e-02 9.533e-01 >)
+# ({x12} <4.484e-01 5.516e-01 >)
+# ({x13} <6.444e-01 3.556e-01 >)
+# ({x14} <8.185e-01 1.815e-01 >)
+# ({x15} <1.841e-01 8.159e-01 >)
 LCBP_UNICAV_SEQFIX                        9.483e-02   3.078e-02   N/A         1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)
 LCBP_UNICAV_SEQRND                        9.483e-02   3.078e-02   N/A         1.000e-09   
-# ([0] <4.233e-01 5.767e-01 >)
-# ([1] <5.422e-01 4.578e-01 >)
-# ([2] <4.662e-01 5.338e-01 >)
-# ([3] <5.424e-01 4.576e-01 >)
-# ([4] <6.042e-01 3.958e-01 >)
-# ([5] <1.845e-01 8.155e-01 >)
-# ([6] <8.203e-01 1.797e-01 >)
-# ([7] <2.292e-01 7.708e-01 >)
-# ([8] <3.119e-01 6.881e-01 >)
-# ([9] <2.975e-01 7.025e-01 >)
-# ([10] <7.268e-01 2.732e-01 >)
-# ([11] <1.485e-01 8.515e-01 >)
-# ([12] <4.512e-01 5.488e-01 >)
-# ([13] <5.266e-01 4.734e-01 >)
-# ([14] <6.033e-01 3.967e-01 >)
-# ([15] <1.558e-01 8.442e-01 >)
+# ({x0} <4.233e-01 5.767e-01 >)
+# ({x1} <5.422e-01 4.578e-01 >)
+# ({x2} <4.662e-01 5.338e-01 >)
+# ({x3} <5.424e-01 4.576e-01 >)
+# ({x4} <6.042e-01 3.958e-01 >)
+# ({x5} <1.845e-01 8.155e-01 >)
+# ({x6} <8.203e-01 1.797e-01 >)
+# ({x7} <2.292e-01 7.708e-01 >)
+# ({x8} <3.119e-01 6.881e-01 >)
+# ({x9} <2.975e-01 7.025e-01 >)
+# ({x10} <7.268e-01 2.732e-01 >)
+# ({x11} <1.485e-01 8.515e-01 >)
+# ({x12} <4.512e-01 5.488e-01 >)
+# ({x13} <5.266e-01 4.734e-01 >)
+# ({x14} <6.033e-01 3.967e-01 >)
+# ({x15} <1.558e-01 8.442e-01 >)