]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/numeric/ublas/doc/samples/ex_triangular.cpp
1 // Copyright Gunter Winkler 2004 - 2009.
2 // Distributed under the Boost Software License, Version 1.0.
3 // (See accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
9 #include <boost/numeric/ublas/matrix.hpp>
10 #include <boost/numeric/ublas/triangular.hpp>
12 #include <boost/numeric/ublas/io.hpp>
19 namespace ublas
= boost::numeric::ublas
;
22 int main(int argc
, char * argv
[] ) {
24 ublas::matrix
<double> M (3, 3);
25 for (std::size_t i
=0; i
< M
.data().size(); ++i
) { M
.data()[i
] = 1+i
; }
27 std::cout
<< "full M = " << M
<< "\n" ;
29 ublas::triangular_matrix
<double, ublas::lower
> L
;
30 ublas::triangular_matrix
<double, ublas::unit_lower
> UL
;
31 ublas::triangular_matrix
<double, ublas::strict_lower
> SL
;
33 L
= ublas::triangular_adaptor
<ublas::matrix
<double>, ublas::lower
> (M
);
34 SL
= ublas::triangular_adaptor
<ublas::matrix
<double>, ublas::strict_lower
> (M
);
35 UL
= ublas::triangular_adaptor
<ublas::matrix
<double>, ublas::unit_lower
> (M
);
37 std::cout
<< "lower L = " << L
<< "\n"
38 << "strict lower SL = " << SL
<< "\n"
39 << "unit lower UL = " << UL
<< "\n" ;
41 ublas::triangular_matrix
<double, ublas::upper
> U
;
42 ublas::triangular_matrix
<double, ublas::unit_upper
> UU
;
43 ublas::triangular_matrix
<double, ublas::strict_upper
> SU
;
45 U
= ublas::triangular_adaptor
<ublas::matrix
<double>, ublas::upper
> (M
);
46 SU
= ublas::triangular_adaptor
<ublas::matrix
<double>, ublas::strict_upper
> (M
);
47 UU
= ublas::triangular_adaptor
<ublas::matrix
<double>, ublas::unit_upper
> (M
);
49 std::cout
<< "upper U = " << U
<< "\n"
50 << "strict upper SU = " << SU
<< "\n"
51 << "unit upper UU = " << UU
<< "\n" ;
53 std::cout
<< "M = L + SU ? " << ((norm_inf( M
- (L
+ SU
) ) == 0.0)?"ok":"failed") << "\n";
54 std::cout
<< "M = U + SL ? " << ((norm_inf( M
- (U
+ SL
) ) == 0.0)?"ok":"failed") << "\n";