[Top][All Lists]
[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++)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Toon-members] TooN internal/mbase.hh test/lutest.cc,
Edward Rosten <=