2 // Copyright (c) 2000-2002
3 // Joerg Walter, Mathias Koch
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)
9 // The authors gratefully acknowledge the support of
10 // GeNeSys mbH & Co. KG in producing this work.
13 #if defined(__GNUC__) && (__GNUC__ >= 9)
14 #pragma GCC diagnostic ignored "-Wdeprecated-copy"
19 template <class V, class M, int N>
20 void test_blas_2<V, M, N>::test()
27 initialize_vector(v1);
29 ublas::blas_2::tmv(v1, m);
30 std::cout << "tmv (v1, m) = " << v1 << std::endl;
31 initialize_vector(v1);
33 ublas::blas_2::tmv(v1, ublas::trans(m));
34 std::cout << "tmv (v1, trans (m)) = " << v1 << std::endl;
35 #ifdef USE_STD_COMPLEX
36 initialize_vector(v1);
38 ublas::blas_2::tmv(v1, ublas::herm(m));
39 std::cout << "tmv (v1, herm (m)) = " << v1 << std::endl;
43 initialize_vector(v1);
44 initialize_vector(v2);
45 initialize_matrix(m, ublas::lower_tag());
46 ublas::blas_2::tsv(v1, m, ublas::lower_tag());
47 std::cout << "tsv (v1, m) = " << v1 << " " << ublas::prod(m, v1) - v2 << std::endl;
48 initialize_vector(v1);
49 initialize_vector(v2);
50 initialize_matrix(m, ublas::upper_tag());
51 ublas::blas_2::tsv(v1, ublas::trans(m), ublas::lower_tag());
52 std::cout << "tsv (v1, trans (m)) = " << v1 << " " << ublas::prod(ublas::trans(m), v1) - v2 << std::endl;
53 #ifdef USE_STD_COMPLEX
54 initialize_vector(v1);
55 initialize_vector(v2);
56 initialize_matrix(m, ublas::upper_tag());
57 ublas::blas_2::tsv(v1, ublas::herm(m), ublas::lower_tag());
58 std::cout << "tsv (v1, herm (m)) = " << v1 << " " << ublas::prod(ublas::herm(m), v1) - v2 << std::endl;
60 initialize_vector(v1);
61 initialize_vector(v2);
62 initialize_matrix(m, ublas::upper_tag());
63 ublas::blas_2::tsv(v1, m, ublas::upper_tag());
64 std::cout << "tsv (v1, m) = " << v1 << " " << ublas::prod(m, v1) - v2 << std::endl;
65 initialize_vector(v1);
66 initialize_vector(v2);
67 initialize_matrix(m, ublas::lower_tag());
68 ublas::blas_2::tsv(v1, ublas::trans(m), ublas::upper_tag());
69 std::cout << "tsv (v1, trans (m)) = " << v1 << " " << ublas::prod(ublas::trans(m), v1) - v2 << std::endl;
70 #ifdef USE_STD_COMPLEX
71 initialize_vector(v1);
72 initialize_vector(v2);
73 initialize_matrix(m, ublas::lower_tag());
74 ublas::blas_2::tsv(v1, ublas::herm(m), ublas::upper_tag());
75 std::cout << "tsv (v1, herm (m)) = " << v1 << " " << ublas::prod(ublas::herm(m), v1) - v2 << std::endl;
81 initialize_vector(v1);
82 initialize_vector(v2);
84 ublas::blas_2::gmv(v1, value_type(1), value_type(1), m, v2);
85 std::cout << "gmv (v1, 1, 1, m, v2) = " << v1 << std::endl;
86 ublas::blas_2::gmv(v1, value_type(1), value_type(1), ublas::trans(m), v2);
87 std::cout << "gmv (v1, 1, 1, trans (m), v2) = " << v1 << std::endl;
88 #ifdef USE_STD_COMPLEX
89 ublas::blas_2::gmv(v1, value_type(1), value_type(1), ublas::herm(m), v2);
90 std::cout << "gmv (v1, 1, 1, herm (m), v2) = " << v1 << std::endl;
96 initialize_vector(v1);
97 initialize_vector(v2);
99 ublas::blas_2::gr(m, value_type(1), v1, v2);
100 std::cout << "gr (m, 1, v1, v2) = " << m << std::endl;
101 ublas::blas_2::gr(m, value_type(1), v1, ublas::conj(v2));
102 std::cout << "gr (m, 1, v1, conj (v2)) = " << m << std::endl;
105 initialize_vector(v1);
106 initialize_matrix(m);
107 ublas::blas_2::sr(m, value_type(1), v1);
108 std::cout << "sr (m, 1, v1) = " << m << std::endl;
110 #ifdef USE_STD_COMPLEX
112 initialize_vector(v1);
113 initialize_matrix(m);
114 ublas::blas_2::hr(m, value_type(1), v1);
115 std::cout << "hr (m, 1, v1) = " << m << std::endl;
119 initialize_vector(v1);
120 initialize_vector(v2);
121 initialize_matrix(m);
122 ublas::blas_2::sr2(m, value_type(1), v1, v2);
123 std::cout << "sr2 (m, 1, v1, v2) = " << m << std::endl;
125 #ifdef USE_STD_COMPLEX
127 initialize_vector(v1);
128 initialize_vector(v2);
129 initialize_matrix(m);
130 ublas::blas_2::hr2(m, value_type(1), v1, v2);
131 std::cout << "hr2 (m, 1, v1, v2) = " << m << std::endl;
137 template struct test_blas_2<ublas::vector<mp_test_type>, ublas::matrix<mp_test_type>, 3>;
141 template struct test_blas_2<ublas::vector<double>, ublas::matrix<double>, 3>;
144 #ifdef USE_STD_COMPLEX
146 template struct test_blas_2<ublas::vector<std::complex<mp_test_type> >, ublas::matrix<std::complex<mp_test_type> >, 3>;
150 template struct test_blas_2<ublas::vector<std::complex<double> >, ublas::matrix<std::complex<double> >, 3>;