1 //=================================================================================================
2 /*!
3 // \file src/mathtest/traits/columntrait/ClassTest.cpp
4 // \brief Source file for the ColumnTrait class test
5 //
6 // Copyright (C) 2012-2020 Klaus Iglberger - All Rights Reserved
7 //
8 // This file is part of the Blaze library. You can redistribute it and/or modify it under
9 // the terms of the New (Revised) BSD License. Redistribution and use in source and binary
10 // forms, with or without modification, are permitted provided that the following conditions
11 // are met:
12 //
13 // 1. Redistributions of source code must retain the above copyright notice, this list of
14 // conditions and the following disclaimer.
15 // 2. Redistributions in binary form must reproduce the above copyright notice, this list
16 // of conditions and the following disclaimer in the documentation and/or other materials
17 // provided with the distribution.
18 // 3. Neither the names of the Blaze development group nor the names of its contributors
19 // may be used to endorse or promote products derived from this software without specific
20 // prior written permission.
21 //
22 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
23 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
24 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
25 // SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
27 // TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
28 // BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30 // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
31 // DAMAGE.
32 */
33 //=================================================================================================
34
35
36 //*************************************************************************************************
37 // Includes
38 //*************************************************************************************************
39
40 #include <cstdlib>
41 #include <iostream>
42 #include <utility>
43 #include <blaze/math/CompressedMatrix.h>
44 #include <blaze/math/CustomMatrix.h>
45 #include <blaze/math/DiagonalMatrix.h>
46 #include <blaze/math/DynamicMatrix.h>
47 #include <blaze/math/HermitianMatrix.h>
48 #include <blaze/math/HybridMatrix.h>
49 #include <blaze/math/InitializerMatrix.h>
50 #include <blaze/math/LowerMatrix.h>
51 #include <blaze/math/StaticMatrix.h>
52 #include <blaze/math/StrictlyLowerMatrix.h>
53 #include <blaze/math/StrictlyUpperMatrix.h>
54 #include <blaze/math/SymmetricMatrix.h>
55 #include <blaze/math/traits/ColumnTrait.h>
56 #include <blaze/math/typetraits/TransposeFlag.h>
57 #include <blaze/math/UniformMatrix.h>
58 #include <blaze/math/UniLowerMatrix.h>
59 #include <blaze/math/UniUpperMatrix.h>
60 #include <blaze/math/UpperMatrix.h>
61 #include <blaze/math/Views.h>
62 #include <blaze/math/ZeroMatrix.h>
63 #include <blaze/util/typetraits/IsSame.h>
64 #include <blaze/util/typetraits/RemoveCVRef.h>
65 #include <blazetest/mathtest/traits/columntrait/ClassTest.h>
66
67
68 namespace blazetest {
69
70 namespace mathtest {
71
72 namespace traits {
73
74 namespace columntrait {
75
76 //=================================================================================================
77 //
78 // CONSTRUCTORS
79 //
80 //=================================================================================================
81
82 //*************************************************************************************************
83 /*!\brief Constructor for the ColumnTrait class test.
84 //
85 // \exception std::runtime_error Error detected.
86 */
ClassTest()87 ClassTest::ClassTest()
88 {
89 testColumnOperation();
90 }
91 //*************************************************************************************************
92
93
94
95
96 //=================================================================================================
97 //
98 // TEST FUNCTIONS
99 //
100 //=================================================================================================
101
102 //*************************************************************************************************
103 /*!\brief Test of the 'ColumnTrait' class template for column operations.
104 //
105 // \return void
106 // \exception std::runtime_error Error detected.
107 //
108 // This function performs a compile time test of the 'ColumnTrait' class template for column
109 // operations. In case an error is detected, a compilation error is created.
110 */
testColumnOperation()111 void ClassTest::testColumnOperation()
112 {
113 using namespace blaze;
114
115
116 // StaticMatrix
117 {
118 {
119 using MT = StaticMatrix<int,3UL,5UL,rowMajor>;
120 using RT = StaticVector<int,3UL,columnVector>;
121 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
122
123 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
124 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
125 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
126 }
127 {
128 using MT = StaticMatrix<int,3UL,5UL,columnMajor>;
129 using RT = StaticVector<int,3UL,columnVector>;
130 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
131
132 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
133 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
134 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
135 }
136 {
137 using MT = StaticMatrix<int,3UL,5UL,rowMajor>;
138 using RT = StaticVector<int,3UL,columnVector>;
139 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
140
141 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
142 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
143 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
144 }
145 {
146 using MT = StaticMatrix<int,3UL,5UL,columnMajor>;
147 using RT = StaticVector<int,3UL,columnVector>;
148 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
149
150 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
151 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
152 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
153 }
154 }
155
156 // HybridMatrix
157 {
158 {
159 using MT = HybridMatrix<int,3UL,5UL,rowMajor>;
160 using RT = HybridVector<int,3UL,columnVector>;
161 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
162
163 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
164 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
165 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
166 }
167 {
168 using MT = HybridMatrix<int,3UL,5UL,columnMajor>;
169 using RT = HybridVector<int,3UL,columnVector>;
170 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
171
172 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
173 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
174 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
175 }
176 {
177 using MT = HybridMatrix<int,3UL,5UL,rowMajor>;
178 using RT = HybridVector<int,3UL,columnVector>;
179 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
180
181 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
182 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
183 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
184 }
185 {
186 using MT = HybridMatrix<int,3UL,5UL,columnMajor>;
187 using RT = HybridVector<int,3UL,columnVector>;
188 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
189
190 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
191 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
192 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
193 }
194 }
195
196 // DynamicMatrix
197 {
198 {
199 using MT = DynamicMatrix<int,rowMajor>;
200 using RT = DynamicVector<int,columnVector>;
201 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
202
203 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
204 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
205 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
206 }
207 {
208 using MT = DynamicMatrix<int,columnMajor>;
209 using RT = DynamicVector<int,columnVector>;
210 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
211
212 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
213 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
214 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
215 }
216 {
217 using MT = DynamicMatrix<int,rowMajor>;
218 using RT = DynamicVector<int,columnVector>;
219 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
220
221 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
222 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
223 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
224 }
225 {
226 using MT = DynamicMatrix<int,columnMajor>;
227 using RT = DynamicVector<int,columnVector>;
228 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
229
230 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
231 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
232 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
233 }
234 }
235
236 // CustomMatrix
237 {
238 {
239 using MT = CustomMatrix<int,unaligned,unpadded,rowMajor>;
240 using RT = DynamicVector<int,columnVector>;
241 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
242
243 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
244 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
245 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
246 }
247 {
248 using MT = CustomMatrix<int,unaligned,unpadded,columnMajor>;
249 using RT = DynamicVector<int,columnVector>;
250 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
251
252 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
253 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
254 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
255 }
256 {
257 using MT = CustomMatrix<int,unaligned,unpadded,rowMajor>;
258 using RT = DynamicVector<int,columnVector>;
259 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
260
261 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
262 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
263 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
264 }
265 {
266 using MT = CustomMatrix<int,unaligned,unpadded,columnMajor>;
267 using RT = DynamicVector<int,columnVector>;
268 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
269
270 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
271 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
272 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
273 }
274 }
275
276 // UniformMatrix
277 {
278 {
279 using MT = UniformMatrix<int,rowMajor>;
280 using RT = UniformVector<int,columnVector>;
281 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
282
283 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
284 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
285 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
286 }
287 {
288 using MT = UniformMatrix<int,columnMajor>;
289 using RT = UniformVector<int,columnVector>;
290 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
291
292 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
293 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
294 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
295 }
296 {
297 using MT = UniformMatrix<int,rowMajor>;
298 using RT = UniformVector<int,columnVector>;
299 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
300
301 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
302 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
303 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
304 }
305 {
306 using MT = UniformMatrix<int,columnMajor>;
307 using RT = UniformVector<int,columnVector>;
308 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
309
310 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
311 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
312 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
313 }
314 }
315
316 // InitializerMatrix
317 {
318 {
319 using MT = InitializerMatrix<int>;
320 using RT = DynamicVector<int,columnVector>;
321 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
322
323 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
324 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
325 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
326 }
327 {
328 using MT = InitializerMatrix<int>;
329 using RT = DynamicVector<int,columnVector>;
330 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
331
332 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
333 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
334 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
335 }
336 }
337
338 // CompressedMatrix
339 {
340 {
341 using MT = CompressedMatrix<int,rowMajor>;
342 using RT = CompressedVector<int,columnVector>;
343 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
344
345 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
346 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
347 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
348 }
349 {
350 using MT = CompressedMatrix<int,columnMajor>;
351 using RT = CompressedVector<int,columnVector>;
352 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
353
354 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
355 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
356 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
357 }
358 {
359 using MT = CompressedMatrix<int,rowMajor>;
360 using RT = CompressedVector<int,columnVector>;
361 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
362
363 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
364 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
365 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
366 }
367 {
368 using MT = CompressedMatrix<int,columnMajor>;
369 using RT = CompressedVector<int,columnVector>;
370 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
371
372 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
373 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
374 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
375 }
376 }
377
378 // IdentityMatrix
379 {
380 {
381 using MT = IdentityMatrix<int,rowMajor>;
382 using RT = CompressedVector<int,columnVector>;
383 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
384
385 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
386 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
387 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
388 }
389 {
390 using MT = IdentityMatrix<int,columnMajor>;
391 using RT = CompressedVector<int,columnVector>;
392 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
393
394 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
395 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
396 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
397 }
398 {
399 using MT = IdentityMatrix<int,rowMajor>;
400 using RT = CompressedVector<int,columnVector>;
401 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
402
403 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
404 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
405 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
406 }
407 {
408 using MT = IdentityMatrix<int,columnMajor>;
409 using RT = CompressedVector<int,columnVector>;
410 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
411
412 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
413 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
414 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
415 }
416 }
417
418 // ZeroMatrix
419 {
420 {
421 using MT = ZeroMatrix<int,rowMajor>;
422 using RT = ZeroVector<int,columnVector>;
423 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
424
425 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
426 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
427 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
428 }
429 {
430 using MT = ZeroMatrix<int,columnMajor>;
431 using RT = ZeroVector<int,columnVector>;
432 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
433
434 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
435 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
436 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
437 }
438 {
439 using MT = ZeroMatrix<int,rowMajor>;
440 using RT = ZeroVector<int,columnVector>;
441 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
442
443 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
444 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
445 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
446 }
447 {
448 using MT = ZeroMatrix<int,columnMajor>;
449 using RT = ZeroVector<int,columnVector>;
450 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
451
452 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
453 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
454 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
455 }
456 }
457
458 // SymmetricMatrix<DynamicMatrix> (real)
459 {
460 {
461 using MT = SymmetricMatrix< DynamicMatrix<int,rowMajor> >;
462 using RT = DynamicVector<int,columnVector>;
463 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
464
465 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
466 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
467 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
468 }
469 {
470 using MT = SymmetricMatrix< DynamicMatrix<int,columnMajor> >;
471 using RT = DynamicVector<int,columnVector>;
472 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
473
474 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
475 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
476 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
477 }
478 {
479 using MT = SymmetricMatrix< DynamicMatrix<int,rowMajor> >;
480 using RT = DynamicVector<int,columnVector>;
481 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
482
483 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
484 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
485 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
486 }
487 {
488 using MT = SymmetricMatrix< DynamicMatrix<int,columnMajor> >;
489 using RT = DynamicVector<int,columnVector>;
490 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
491
492 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
493 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
494 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
495 }
496 }
497
498 // SymmetricMatrix<DynamicMatrix> (complex)
499 {
500 {
501 using MT = SymmetricMatrix< DynamicMatrix<complex<int>,rowMajor> >;
502 using RT = DynamicVector<complex<int>,columnVector>;
503 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
504
505 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
506 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
507 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
508 }
509 {
510 using MT = SymmetricMatrix< DynamicMatrix<complex<int>,columnMajor> >;
511 using RT = DynamicVector<complex<int>,columnVector>;
512 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
513
514 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
515 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
516 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
517 }
518 {
519 using MT = SymmetricMatrix< DynamicMatrix<complex<int>,rowMajor> >;
520 using RT = DynamicVector<complex<int>,columnVector>;
521 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
522
523 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
524 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
525 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
526 }
527 {
528 using MT = SymmetricMatrix< DynamicMatrix<complex<int>,columnMajor> >;
529 using RT = DynamicVector<complex<int>,columnVector>;
530 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
531
532 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
533 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
534 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
535 }
536 }
537
538 // SymmetricMatrix<UniformMatrix> (real)
539 {
540 {
541 using MT = SymmetricMatrix< UniformMatrix<int,rowMajor> >;
542 using RT = UniformVector<int,columnVector>;
543 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
544
545 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
546 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
547 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
548 }
549 {
550 using MT = SymmetricMatrix< UniformMatrix<int,columnMajor> >;
551 using RT = UniformVector<int,columnVector>;
552 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
553
554 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
555 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
556 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
557 }
558 {
559 using MT = SymmetricMatrix< UniformMatrix<int,rowMajor> >;
560 using RT = UniformVector<int,columnVector>;
561 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
562
563 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
564 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
565 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
566 }
567 {
568 using MT = SymmetricMatrix< UniformMatrix<int,columnMajor> >;
569 using RT = UniformVector<int,columnVector>;
570 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
571
572 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
573 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
574 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
575 }
576 }
577
578 // SymmetricMatrix<ZeroMatrix> (real)
579 {
580 {
581 using MT = SymmetricMatrix< ZeroMatrix<int,rowMajor> >;
582 using RT = ZeroVector<int,columnVector>;
583 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
584
585 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
586 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
587 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
588 }
589 {
590 using MT = SymmetricMatrix< ZeroMatrix<int,columnMajor> >;
591 using RT = ZeroVector<int,columnVector>;
592 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
593
594 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
595 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
596 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
597 }
598 {
599 using MT = SymmetricMatrix< ZeroMatrix<int,rowMajor> >;
600 using RT = ZeroVector<int,columnVector>;
601 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
602
603 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
604 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
605 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
606 }
607 {
608 using MT = SymmetricMatrix< ZeroMatrix<int,columnMajor> >;
609 using RT = ZeroVector<int,columnVector>;
610 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
611
612 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
613 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
614 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
615 }
616 }
617
618 // HermitianMatrix<DynamicMatrix> (symmetric)
619 {
620 {
621 using MT = HermitianMatrix< DynamicMatrix<int,rowMajor> >;
622 using RT = DynamicVector<int,columnVector>;
623 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
624
625 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
626 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
627 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
628 }
629 {
630 using MT = HermitianMatrix< DynamicMatrix<int,columnMajor> >;
631 using RT = DynamicVector<int,columnVector>;
632 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
633
634 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
635 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
636 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
637 }
638 {
639 using MT = HermitianMatrix< DynamicMatrix<int,rowMajor> >;
640 using RT = DynamicVector<int,columnVector>;
641 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
642
643 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
644 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
645 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
646 }
647 {
648 using MT = HermitianMatrix< DynamicMatrix<int,columnMajor> >;
649 using RT = DynamicVector<int,columnVector>;
650 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
651
652 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
653 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
654 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
655 }
656 }
657
658 // HermitianMatrix<DynamicMatrix> (Hermitian)
659 {
660 {
661 using MT = HermitianMatrix< DynamicMatrix<complex<int>,rowMajor> >;
662 using RT = DynamicVector<complex<int>,columnVector>;
663 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
664
665 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
666 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
667 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
668 }
669 {
670 using MT = HermitianMatrix< DynamicMatrix<complex<int>,columnMajor> >;
671 using RT = DynamicVector<complex<int>,columnVector>;
672 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
673
674 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
675 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
676 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
677 }
678 {
679 using MT = HermitianMatrix< DynamicMatrix<complex<int>,rowMajor> >;
680 using RT = DynamicVector<complex<int>,columnVector>;
681 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
682
683 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
684 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
685 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
686 }
687 {
688 using MT = HermitianMatrix< DynamicMatrix<complex<int>,columnMajor> >;
689 using RT = DynamicVector<complex<int>,columnVector>;
690 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
691
692 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
693 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
694 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
695 }
696 }
697
698 // LowerMatrix<DynamicMatrix>
699 {
700 {
701 using MT = LowerMatrix< DynamicMatrix<int,rowMajor> >;
702 using RT = DynamicVector<int,columnVector>;
703 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
704
705 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
706 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
707 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
708 }
709 {
710 using MT = LowerMatrix< DynamicMatrix<int,columnMajor> >;
711 using RT = DynamicVector<int,columnVector>;
712 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
713
714 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
715 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
716 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
717 }
718 {
719 using MT = LowerMatrix< DynamicMatrix<int,rowMajor> >;
720 using RT = DynamicVector<int,columnVector>;
721 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
722
723 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
724 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
725 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
726 }
727 {
728 using MT = LowerMatrix< DynamicMatrix<int,columnMajor> >;
729 using RT = DynamicVector<int,columnVector>;
730 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
731
732 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
733 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
734 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
735 }
736 }
737
738 // UniLowerMatrix<DynamicMatrix>
739 {
740 {
741 using MT = UniLowerMatrix< DynamicMatrix<int,rowMajor> >;
742 using RT = DynamicVector<int,columnVector>;
743 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
744
745 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
746 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
747 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
748 }
749 {
750 using MT = UniLowerMatrix< DynamicMatrix<int,columnMajor> >;
751 using RT = DynamicVector<int,columnVector>;
752 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
753
754 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
755 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
756 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
757 }
758 {
759 using MT = UniLowerMatrix< DynamicMatrix<int,rowMajor> >;
760 using RT = DynamicVector<int,columnVector>;
761 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
762
763 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
764 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
765 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
766 }
767 {
768 using MT = UniLowerMatrix< DynamicMatrix<int,columnMajor> >;
769 using RT = DynamicVector<int,columnVector>;
770 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
771
772 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
773 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
774 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
775 }
776 }
777
778 // StrictlyLowerMatrix<DynamicMatrix>
779 {
780 {
781 using MT = StrictlyLowerMatrix< DynamicMatrix<int,rowMajor> >;
782 using RT = DynamicVector<int,columnVector>;
783 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
784
785 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
786 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
787 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
788 }
789 {
790 using MT = StrictlyLowerMatrix< DynamicMatrix<int,columnMajor> >;
791 using RT = DynamicVector<int,columnVector>;
792 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
793
794 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
795 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
796 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
797 }
798 {
799 using MT = StrictlyLowerMatrix< DynamicMatrix<int,rowMajor> >;
800 using RT = DynamicVector<int,columnVector>;
801 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
802
803 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
804 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
805 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
806 }
807 {
808 using MT = StrictlyLowerMatrix< DynamicMatrix<int,columnMajor> >;
809 using RT = DynamicVector<int,columnVector>;
810 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
811
812 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
813 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
814 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
815 }
816 }
817
818 // UpperMatrix<DynamicMatrix>
819 {
820 {
821 using MT = UpperMatrix< DynamicMatrix<int,rowMajor> >;
822 using RT = DynamicVector<int,columnVector>;
823 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
824
825 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
826 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
827 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
828 }
829 {
830 using MT = UpperMatrix< DynamicMatrix<int,columnMajor> >;
831 using RT = DynamicVector<int,columnVector>;
832 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
833
834 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
835 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
836 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
837 }
838 {
839 using MT = UpperMatrix< DynamicMatrix<int,rowMajor> >;
840 using RT = DynamicVector<int,columnVector>;
841 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
842
843 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
844 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
845 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
846 }
847 {
848 using MT = UpperMatrix< DynamicMatrix<int,columnMajor> >;
849 using RT = DynamicVector<int,columnVector>;
850 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
851
852 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
853 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
854 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
855 }
856 }
857
858 // UniUpperMatrix<DynamicMatrix>
859 {
860 {
861 using MT = UniUpperMatrix< DynamicMatrix<int,rowMajor> >;
862 using RT = DynamicVector<int,columnVector>;
863 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
864
865 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
866 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
867 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
868 }
869 {
870 using MT = UniUpperMatrix< DynamicMatrix<int,columnMajor> >;
871 using RT = DynamicVector<int,columnVector>;
872 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
873
874 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
875 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
876 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
877 }
878 {
879 using MT = UniUpperMatrix< DynamicMatrix<int,rowMajor> >;
880 using RT = DynamicVector<int,columnVector>;
881 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
882
883 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
884 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
885 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
886 }
887 {
888 using MT = UniUpperMatrix< DynamicMatrix<int,columnMajor> >;
889 using RT = DynamicVector<int,columnVector>;
890 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
891
892 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
893 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
894 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
895 }
896 }
897
898 // StrictlyUpperMatrix<DynamicMatrix>
899 {
900 {
901 using MT = StrictlyUpperMatrix< DynamicMatrix<int,rowMajor> >;
902 using RT = DynamicVector<int,columnVector>;
903 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
904
905 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
906 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
907 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
908 }
909 {
910 using MT = StrictlyUpperMatrix< DynamicMatrix<int,columnMajor> >;
911 using RT = DynamicVector<int,columnVector>;
912 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
913
914 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
915 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
916 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
917 }
918 {
919 using MT = StrictlyUpperMatrix< DynamicMatrix<int,rowMajor> >;
920 using RT = DynamicVector<int,columnVector>;
921 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
922
923 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
924 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
925 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
926 }
927 {
928 using MT = StrictlyUpperMatrix< DynamicMatrix<int,columnMajor> >;
929 using RT = DynamicVector<int,columnVector>;
930 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
931
932 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
933 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
934 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
935 }
936 }
937
938 // DiagonalMatrix<DynamicMatrix>
939 {
940 {
941 using MT = DiagonalMatrix< DynamicMatrix<int,rowMajor> >;
942 using RT = DynamicVector<int,columnVector>;
943 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
944
945 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
946 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
947 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
948 }
949 {
950 using MT = DiagonalMatrix< DynamicMatrix<int,columnMajor> >;
951 using RT = DynamicVector<int,columnVector>;
952 static_assert( IsSame_v< ColumnTrait_t<MT>, RT >, "Non-matching type detected" );
953
954 using Expr = RemoveCVRef_t< decltype( column( std::declval<MT>(), 0UL ) ) >;
955 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
956 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
957 }
958 {
959 using MT = DiagonalMatrix< DynamicMatrix<int,rowMajor> >;
960 using RT = DynamicVector<int,columnVector>;
961 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
962
963 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
964 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
965 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
966 }
967 {
968 using MT = DiagonalMatrix< DynamicMatrix<int,columnMajor> >;
969 using RT = DynamicVector<int,columnVector>;
970 static_assert( IsSame_v< ColumnTrait_t<MT,0UL>, RT >, "Non-matching type detected" );
971
972 using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval<MT>() ) ) >;
973 static_assert( IsSame_v< ResultType_t<Expr>, RT >, "Non-matching type detected" );
974 static_assert( TransposeFlag_v<Expr> == TransposeFlag_v<RT>, "Non-matching transpose flag detected" );
975 }
976 }
977 }
978 //*************************************************************************************************
979
980 } // namespace columntrait
981
982 } // namespace traits
983
984 } // namespace mathtest
985
986 } // namespace blazetest
987
988
989
990
991 //=================================================================================================
992 //
993 // MAIN FUNCTION
994 //
995 //=================================================================================================
996
997 //*************************************************************************************************
main()998 int main()
999 {
1000 std::cout << " Running ColumnTrait class test..." << std::endl;
1001
1002 try
1003 {
1004 RUN_COLUMNTRAIT_CLASS_TEST;
1005 }
1006 catch( std::exception& ex ) {
1007 std::cerr << "\n\n ERROR DETECTED during ColumnTrait class test:\n"
1008 << ex.what() << "\n";
1009 return EXIT_FAILURE;
1010 }
1011
1012 return EXIT_SUCCESS;
1013 }
1014 //*************************************************************************************************
1015