
Hi Patrick, you wrote:
Answering myself,
That happens sometimes ;-)
without a symmetric type I can just check for a diagonal matrix inside the pinv function and branch, see code below.
As far as I've understood you're looking for a type safe diagonal variant of banded_matrix. Would it be helpful, if we'd go to add something like // Diagonal matrix class template<class T, class F, class A> class diagonal_matrix: public banded_matrix<T, F, A> { public: BOOST_UBLAS_USING banded_matrix<T, F, A>::operator =; typedef banded_matrix<T, F, A> matrix_type; // Construction and destruction BOOST_UBLAS_INLINE diagonal_matrix (): matrix_type () {} BOOST_UBLAS_INLINE diagonal_matrix (std::size_t size1, std::size_t size2): matrix_type (size1, size2) {} BOOST_UBLAS_INLINE ~diagonal_matrix () {} // Assignment BOOST_UBLAS_INLINE diagonal_matrix &operator = (const diagonal_matrix &m) { matrix_type::operator = (m); return *this; } }; and the corresponding diagonal_adaptor to the code base?
Are there some recommendations for namespaces for functions like "pinv" ? Inside the loop, shall I use size_type?
I currently haven't enough time to look into a SVD implementation. So I'll cc this reply to http://groups.yahoo.com/group/ublas-dev. HTH, Joerg [snip]