$include_dir="/home/hyper-archives/ublas/include"; include("$include_dir/msg-header.inc") ?>
From: Markus Werle (numerical.simulation_at_[hidden])
Date: 2006-10-05 05:51:20
Hi!
It seems that all bindings only work for dense matrices.
But maybe I obverlooked something, so please tell me if it is easy to get
code similar to the one below compiled with a few changes ...
regards, Markus
#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
#include <boost/numeric/bindings/traits/std_vector.hpp>
#include <boost/numeric/bindings/lapack/gesvd.hpp>
#include <boost/numeric/bindings/lapack/gesdd.hpp>
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/vector_proxy.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_sparse.hpp>
#include <boost/numeric/bindings/traits/sparse_traits.hpp>
#include <boost/numeric/ublas/triangular.hpp>
// #include <boost/numeric/ublas/lu.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <iostream>
namespace ublas = boost::numeric::ublas;
namespace lapack = boost::numeric::bindings::lapack;
int main() 
{
        typedef ublas::coordinate_matrix<double, ublas::column_major> matrix_t; 
        
        matrix_t H (3, 3, 9);
        
        H(0,0) = 1.00000; H(0,1) = 0.50000; H(0,2) = 0.33333;
        H(1,0) = 0.50000; H(1,1) = 0.33333; H(1,2) = 0.25000;
        H(2,0) = 0.33333; H(2,1) = 0.25000; H(2,2) = 0.20000;
        matrix_t U (3, 3, 9);
        ublas::vector<double> s (3);
        matrix_t VT (3, 3, 9);
         lapack::gesvd('A', 'A', H, s, U, VT);
        // divide and conquer
        //lapack::gesdd(H, s, U, VT);
        std::cout << U << std::endl;
        std::cout << s << std::endl;
        std::cout << ublas::trans(VT) << std::endl;
        return 0;
}