]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/multiprecision/test/ublas_interop/test22.cpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / libs / multiprecision / test / ublas_interop / test22.cpp
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 #if defined(__GNUC__) && (__GNUC__ >= 9)
14 #pragma GCC diagnostic ignored "-Wdeprecated-copy"
15 #endif
16
17 #include "test2.hpp"
18
19 template <class V, class M, int N>
20 void test_blas_2<V, M, N>::test()
21 {
22 {
23 V v1(N), v2(N);
24 M m(N, N);
25
26 // _t_mv
27 initialize_vector(v1);
28 initialize_matrix(m);
29 ublas::blas_2::tmv(v1, m);
30 std::cout << "tmv (v1, m) = " << v1 << std::endl;
31 initialize_vector(v1);
32 initialize_matrix(m);
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);
37 initialize_matrix(m);
38 ublas::blas_2::tmv(v1, ublas::herm(m));
39 std::cout << "tmv (v1, herm (m)) = " << v1 << std::endl;
40 #endif
41
42 // _t_sv
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;
59 #endif
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;
76 #endif
77
78 // _g_mv
79 // _s_mv
80 // _h_mv
81 initialize_vector(v1);
82 initialize_vector(v2);
83 initialize_matrix(m);
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;
91 #endif
92
93 // _g_r
94 // _g_ru
95 // _g_rc
96 initialize_vector(v1);
97 initialize_vector(v2);
98 initialize_matrix(m);
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;
103
104 // _s_r
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;
109
110 #ifdef USE_STD_COMPLEX
111 // _h_r
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;
116 #endif
117
118 // _s_r2
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;
124
125 #ifdef USE_STD_COMPLEX
126 // _h_r2
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;
132 #endif
133 }
134 }
135
136 #ifdef USE_FLOAT
137 template struct test_blas_2<ublas::vector<mp_test_type>, ublas::matrix<mp_test_type>, 3>;
138 #endif
139
140 #ifdef USE_DOUBLE
141 template struct test_blas_2<ublas::vector<double>, ublas::matrix<double>, 3>;
142 #endif
143
144 #ifdef USE_STD_COMPLEX
145 #ifdef USE_FLOAT
146 template struct test_blas_2<ublas::vector<std::complex<mp_test_type> >, ublas::matrix<std::complex<mp_test_type> >, 3>;
147 #endif
148
149 #ifdef USE_DOUBLE
150 template struct test_blas_2<ublas::vector<std::complex<double> >, ublas::matrix<std::complex<double> >, 3>;
151 #endif
152 #endif