[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Toon-members] TooN SymEigen.h
From: |
Edward Rosten |
Subject: |
[Toon-members] TooN SymEigen.h |
Date: |
Mon, 24 Aug 2009 13:02:05 +0000 |
CVSROOT: /cvsroot/toon
Module name: TooN
Changes by: Edward Rosten <edrosten> 09/08/24 13:02:05
Modified files:
. : SymEigen.h
Log message:
Docs
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/TooN/SymEigen.h?cvsroot=toon&r1=1.17&r2=1.18
Patches:
Index: SymEigen.h
===================================================================
RCS file: /cvsroot/toon/TooN/SymEigen.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- SymEigen.h 24 Jul 2009 17:30:46 -0000 1.17
+++ SymEigen.h 24 Aug 2009 13:02:05 -0000 1.18
@@ -39,14 +39,19 @@
namespace TooN {
-///Default condition number for SymEigen::backsub, SymEigen::get_pinv and
SymEigen::get_inv_diag
-static const double symeigen_condition_no=1e9;
-///Helper struct for computing eigensystems, to allow for specialization on
-///2x2 matrices.
-///@ingroup gInternal
-template <int Size> struct ComputeSymEigen {
+namespace Internal{
+ ///Default condition number for SymEigen::backsub, SymEigen::get_pinv
and SymEigen::get_inv_diag
+ static const double symeigen_condition_no=1e9;
+
+ ///@internal
+ ///@brief Compute eigensystems for sizes > 2
+ ///Helper struct for computing eigensystems, to allow for
specialization on
+ ///2x2 matrices.
+ ///@ingroup gInternal
+ template <int Size> struct ComputeSymEigen {
+ ///@internal
///Compute an eigensystem.
///@param m Input matrix (assumed to be symmetric)
///@param evectors Eigen vector output
@@ -74,10 +79,19 @@
<< "M = " << m << std::endl;
}
}
-};
+ };
-template <> struct ComputeSymEigen<2> {
+ ///@internal
+ ///@brief Compute 2x2 eigensystems
+ ///Helper struct for computing eigensystems, specialized on 2x2
matrices.
+ ///@ingroup gInternal
+ template <> struct ComputeSymEigen<2> {
+ ///@internal
+ ///Compute an eigensystem.
+ ///@param m Input matrix (assumed to be symmetric)
+ ///@param eig Eigen vector output
+ ///@param ev Eigen values output
template<typename P, typename B>
static inline void compute(const Matrix<2,2,P,B>& m, Matrix<2,2,P>&
eig, Vector<2, P>& ev) {
double trace = m[0][0] + m[1][1];
@@ -102,6 +116,8 @@
eig[1][0] = -eig[0][1];
eig[1][1] = eig[0][0];
}
+ };
+
};
/**
@@ -146,7 +162,7 @@
inline void compute(const Matrix<R,C,Precision,B>& m){
SizeMismatch<R, C>::test(m.num_rows(), m.num_cols());
SizeMismatch<R, Size>::test(m.num_rows(),
my_evectors.num_rows());
- ComputeSymEigen<Size>::compute(m, my_evectors, my_evalues);
+ Internal::ComputeSymEigen<Size>::compute(m, my_evectors,
my_evalues);
}
/// Calculate result of multiplying the (pseudo-)inverse of M by a
vector.
- [Toon-members] TooN SymEigen.h,
Edward Rosten <=