1 | // |
2 | // Copyright (c) 2000-2002 |
3 | // Joerg Walter, Mathias Koch |
4 | // |
5 | // Distributed under the Boost Software License, Version 1.0. (See |
6 | // accompanying file LICENSE_1_0.txt or copy at |
7 | // http://www.boost.org/LICENSE_1_0.txt) |
8 | // |
9 | // The authors gratefully acknowledge the support of |
10 | // GeNeSys mbH & Co. KG in producing this work. |
11 | // |
12 | |
13 | #include "test2.hpp" |
14 | |
15 | template<class V, class M, std::size_t N> |
16 | void test_blas_2<V, M, N>::test () { |
17 | { |
18 | V v1 (N), v2 (N); |
19 | M m (N, N); |
20 | |
21 | // _t_mv |
22 | initialize_vector (v1); |
23 | initialize_matrix (m); |
24 | ublas::blas_2::tmv (v1, m); |
25 | std::cout << "tmv (v1, m) = " << v1 << std::endl; |
26 | initialize_vector (v1); |
27 | initialize_matrix (m); |
28 | ublas::blas_2::tmv (v1, ublas::trans (m)); |
29 | std::cout << "tmv (v1, trans (m)) = " << v1 << std::endl; |
30 | #ifdef USE_STD_COMPLEX |
31 | initialize_vector (v1); |
32 | initialize_matrix (m); |
33 | ublas::blas_2::tmv (v1, ublas::herm (m)); |
34 | std::cout << "tmv (v1, herm (m)) = " << v1 << std::endl; |
35 | #endif |
36 | |
37 | // _t_sv |
38 | initialize_vector (v1); |
39 | initialize_vector (v2); |
40 | initialize_matrix (m, ublas::lower_tag ()); |
41 | ublas::blas_2::tsv (v1, m, ublas::lower_tag ()); |
42 | std::cout << "tsv (v1, m) = " << v1 << " " << ublas::prod (m, v1) - v2 << std::endl; |
43 | initialize_vector (v1); |
44 | initialize_vector (v2); |
45 | initialize_matrix (m, ublas::upper_tag ()); |
46 | ublas::blas_2::tsv (v1, ublas::trans (m), ublas::lower_tag ()); |
47 | std::cout << "tsv (v1, trans (m)) = " << v1 << " " << ublas::prod (ublas::trans (m), v1) - v2 << std::endl; |
48 | #ifdef USE_STD_COMPLEX |
49 | initialize_vector (v1); |
50 | initialize_vector (v2); |
51 | initialize_matrix (m, ublas::upper_tag ()); |
52 | ublas::blas_2::tsv (v1, ublas::herm (m), ublas::lower_tag ()); |
53 | std::cout << "tsv (v1, herm (m)) = " << v1 << " " << ublas::prod (ublas::herm (m), v1) - v2 << std::endl; |
54 | #endif |
55 | initialize_vector (v1); |
56 | initialize_vector (v2); |
57 | initialize_matrix (m, ublas::upper_tag ()); |
58 | ublas::blas_2::tsv (v1, m, ublas::upper_tag ()); |
59 | std::cout << "tsv (v1, m) = " << v1 << " " << ublas::prod (m, v1) - v2 << std::endl; |
60 | initialize_vector (v1); |
61 | initialize_vector (v2); |
62 | initialize_matrix (m, ublas::lower_tag ()); |
63 | ublas::blas_2::tsv (v1, ublas::trans (m), ublas::upper_tag ()); |
64 | std::cout << "tsv (v1, trans (m)) = " << v1 << " " << ublas::prod (ublas::trans (m), v1) - v2 << std::endl; |
65 | #ifdef USE_STD_COMPLEX |
66 | initialize_vector (v1); |
67 | initialize_vector (v2); |
68 | initialize_matrix (m, ublas::lower_tag ()); |
69 | ublas::blas_2::tsv (v1, ublas::herm (m), ublas::upper_tag ()); |
70 | std::cout << "tsv (v1, herm (m)) = " << v1 << " " << ublas::prod (ublas::herm (m), v1) - v2 << std::endl; |
71 | #endif |
72 | |
73 | // _g_mv |
74 | // _s_mv |
75 | // _h_mv |
76 | initialize_vector (v1); |
77 | initialize_vector (v2); |
78 | initialize_matrix (m); |
79 | ublas::blas_2::gmv (v1, value_type (1), value_type (1), m, v2); |
80 | std::cout << "gmv (v1, 1, 1, m, v2) = " << v1 << std::endl; |
81 | ublas::blas_2::gmv (v1, value_type (1), value_type (1), ublas::trans (m), v2); |
82 | std::cout << "gmv (v1, 1, 1, trans (m), v2) = " << v1 << std::endl; |
83 | #ifdef USE_STD_COMPLEX |
84 | ublas::blas_2::gmv (v1, value_type (1), value_type (1), ublas::herm (m), v2); |
85 | std::cout << "gmv (v1, 1, 1, herm (m), v2) = " << v1 << std::endl; |
86 | #endif |
87 | |
88 | // _g_r |
89 | // _g_ru |
90 | // _g_rc |
91 | initialize_vector (v1); |
92 | initialize_vector (v2); |
93 | initialize_matrix (m); |
94 | ublas::blas_2::gr (m, value_type (1), v1, v2); |
95 | std::cout << "gr (m, 1, v1, v2) = " << m << std::endl; |
96 | ublas::blas_2::gr (m, value_type (1), v1, ublas::conj (v2)); |
97 | std::cout << "gr (m, 1, v1, conj (v2)) = " << m << std::endl; |
98 | |
99 | // _s_r |
100 | initialize_vector (v1); |
101 | initialize_matrix (m); |
102 | ublas::blas_2::sr (m, value_type (1), v1); |
103 | std::cout << "sr (m, 1, v1) = " << m << std::endl; |
104 | |
105 | #ifdef USE_STD_COMPLEX |
106 | // _h_r |
107 | initialize_vector (v1); |
108 | initialize_matrix (m); |
109 | ublas::blas_2::hr (m, value_type (1), v1); |
110 | std::cout << "hr (m, 1, v1) = " << m << std::endl; |
111 | #endif |
112 | |
113 | // _s_r2 |
114 | initialize_vector (v1); |
115 | initialize_vector (v2); |
116 | initialize_matrix (m); |
117 | ublas::blas_2::sr2 (m, value_type (1), v1, v2); |
118 | std::cout << "sr2 (m, 1, v1, v2) = " << m << std::endl; |
119 | |
120 | #ifdef USE_STD_COMPLEX |
121 | // _h_r2 |
122 | initialize_vector (v1); |
123 | initialize_vector (v2); |
124 | initialize_matrix (m); |
125 | ublas::blas_2::hr2 (m, value_type (1), v1, v2); |
126 | std::cout << "hr2 (m, 1, v1, v2) = " << m << std::endl; |
127 | #endif |
128 | } |
129 | } |
130 | |
131 | #ifdef USE_FLOAT |
132 | template struct test_blas_2<ublas::vector<float>, ublas::matrix<float>, 3>; |
133 | #endif |
134 | |
135 | #ifdef USE_DOUBLE |
136 | template struct test_blas_2<ublas::vector<double>, ublas::matrix<double>, 3>; |
137 | #endif |
138 | |
139 | #ifdef USE_STD_COMPLEX |
140 | #ifdef USE_FLOAT |
141 | template struct test_blas_2<ublas::vector<std::complex<float> >, ublas::matrix<std::complex<float> >, 3>; |
142 | #endif |
143 | |
144 | #ifdef USE_DOUBLE |
145 | template struct test_blas_2<ublas::vector<std::complex<double> >, ublas::matrix<std::complex<double> >, 3>; |
146 | #endif |
147 | #endif |
148 | |