toon-members
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Toon-members] TooN internal/mbase.hh test/lutest.cc


From: Edward Rosten
Subject: [Toon-members] TooN internal/mbase.hh test/lutest.cc
Date: Fri, 27 Feb 2009 12:46:55 +0000

CVSROOT:        /cvsroot/toon
Module name:    TooN
Changes by:     Edward Rosten <edrosten>        09/02/27 12:46:55

Modified files:
        internal       : mbase.hh 
        test           : lutest.cc 

Log message:
        Fixed matrix multiplication (actually, a bug in taking a row of a 
dynamic 
        matrix).
        
        Also, simplified lutest, since multiplication now works properly.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/TooN/internal/mbase.hh?cvsroot=toon&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/TooN/test/lutest.cc?cvsroot=toon&r1=1.1&r2=1.2

Patches:
Index: internal/mbase.hh
===================================================================
RCS file: /cvsroot/toon/TooN/internal/mbase.hh,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- internal/mbase.hh   24 Feb 2009 18:16:11 -0000      1.13
+++ internal/mbase.hh   27 Feb 2009 12:46:55 -0000      1.14
@@ -29,7 +29,8 @@
 
////////////////////////////////////////////////////////////////////////////////
 //Closure used to acquire strides
 //-1 means dynamic stride
-//-2 means dynamic stride is tied to size
+//-2 means dynamic stride is tied to size for a normal matrix
+//-3 means dynamic stride is tied to size for a transposed matrix
 template<int Stride> struct Slice
 {
        struct RowMajor
@@ -139,7 +140,7 @@
        static const int SliceStride = Stride == -2?-1: Stride;
 
        int stride() const {
-               if(Stride == -2)
+               if(Stride == -2) //Normal tied stride
                        return num_cols();
                else
                        return StrideHolder<Stride>::stride();
@@ -220,11 +221,11 @@
 
 
        Matrix<Cols, Rows, Precision, typename Slice<Stride>::ColMajor> T(){
-               return Matrix<Cols, Rows, Precision, typename 
Slice<Stride>::ColMajor>(my_data, num_rows(), num_cols(), stride(), Slicing());
+               return Matrix<Cols, Rows, Precision, typename 
Slice<Stride>::ColMajor>(my_data, num_cols(), num_rows(), stride(), Slicing());
        }
 
        const Matrix<Cols, Rows, Precision, typename Slice<Stride>::ColMajor> 
T() const{
-               return Matrix<Cols, Rows, Precision, typename 
Slice<Stride>::ColMajor>(const_cast<Precision*>(my_data), num_rows(), 
num_cols(), stride(), Slicing());
+               return Matrix<Cols, Rows, Precision, typename 
Slice<Stride>::ColMajor>(const_cast<Precision*>(my_data), num_cols(), 
num_rows(), stride(), Slicing());
        }
 };
 
@@ -244,7 +245,7 @@
        static const int SliceStride = Stride == -2?-1: Stride;
 
        int stride() const {
-               if(Stride == -2)
+               if(Stride == -2) //Normal tied stride
                        return num_rows();
                else
                        return StrideHolder<Stride>::stride();
@@ -282,7 +283,7 @@
                return my_data[c*stride() + r];
        }
        
-       typedef Vector<Cols, Precision, SliceVBase<Cols, Stride, Precision> > 
Vec;
+       typedef Vector<Cols, Precision, SliceVBase<Cols, SliceStride, 
Precision> > Vec;
        Vec operator[](int r) {
                Internal::check_index(num_rows(), r);
                return Vec(my_data + r, num_cols(), stride(), Slicing());
@@ -324,11 +325,11 @@
        }
 
        Matrix<Cols, Rows, Precision, typename Slice<Stride>::RowMajor> T(){
-               return Matrix<Cols, Rows, Precision, typename 
Slice<Stride>::RowMajor>(my_data, num_rows(), num_cols(), stride(), Slicing());
+               return Matrix<Cols, Rows, Precision, typename 
Slice<Stride>::RowMajor>(my_data, num_cols(), num_rows(), stride(), Slicing());
        }
 
        const Matrix<Cols, Rows, Precision, typename Slice<Stride>::RowMajor> 
T() const {
-               return Matrix<Cols, Rows, Precision, typename 
Slice<Stride>::RowMajor>(const_cast<Precision*>(my_data), num_rows(), 
num_cols(), stride(), Slicing());
+               return Matrix<Cols, Rows, Precision, typename 
Slice<Stride>::RowMajor>(const_cast<Precision*>(my_data), num_cols(), 
num_rows(), stride(), Slicing());
        }
 };
 

Index: test/lutest.cc
===================================================================
RCS file: /cvsroot/toon/TooN/test/lutest.cc,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- test/lutest.cc      26 Feb 2009 21:50:23 -0000      1.1
+++ test/lutest.cc      27 Feb 2009 12:46:55 -0000      1.2
@@ -1,4 +1,5 @@
 #include <cstdlib>
+#include <cmath>
 #include <iostream>
 #include <TooN/TooN.h>
 #include <TooN/LU.h>
@@ -16,11 +17,8 @@
                        m[i][j] = drand48();
 
        
-       LU<5,float> mlu(m);
-
-       cout << mlu.get_inverse() << endl;
-       Matrix<5,5,float> inv = mlu.get_inverse();
-       Matrix<5,5,float> a = m*inv;
+       LU<-1,float> mlu(m);
+       Matrix<5,5,float> a = m*mlu.get_inverse();
 
        for(int i=0; i< m.num_rows(); i++)
                for(int j=0; j< m.num_rows(); j++)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]