119 for (
size_t i = 0;
i <
m1.GetNumRows(); ++
i)
121 for (
size_t j = 0;
j <
m1.GetNumCols(); ++
j)
133 "The number of rows in resulting matrix is not correct");
136 "The number of cols in resulting matrix is not correct");
139 "The number of rows and cols should be equal");
140 for (
size_t i = 0;
i <
m3.GetNumCols(); ++
i)
142 for (
size_t j = 0;
j <
m3.GetNumRows(); ++
j)
146 "The element value should be " <<
m1.GetNumCols());
152 for (
size_t i = 0;
i <
m4.GetNumCols(); ++
i)
154 for (
size_t j = 0;
j <
m4.GetNumRows(); ++
j)
158 "The values are not equal");
166 for (
size_t p = 0; p <
m5.GetNumPages(); ++p)
168 for (
size_t i = 0;
i <
m5.GetNumRows(); ++
i)
170 for (
size_t j = 0;
j <
m5.GetNumCols(); ++
j)
180 "The number of rows in resulting matrix is not correct");
183 "The number of cols in resulting matrix is not correct");
186 "The number of rows and cols should be equal");
188 for (
size_t p = 0; p <
m7.GetNumPages(); ++p)
190 for (
size_t i = 0;
i <
m7.GetNumCols(); ++
i)
192 for (
size_t j = 0;
j <
m7.GetNumRows(); ++
j)
196 "The element value should be " <<
m5.GetNumCols());
211 std::valarray<int>
a{0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4};
212 std::valarray<int> b{0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4};
214 std::valarray<T>
bCasted(b.size());
215 for (
size_t i = 0;
i <
a.size(); ++
i)
219 for (
size_t i = 0;
i < b.size(); ++
i)
234 (
m9.GetNumPages() == 1),
236 "Creation of vector is not correct.");
259 a = {0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5};
260 b = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1};
261 std::valarray<int>
c{2, 3, 4, 6, 2, 3, 4, 6};
262 aCasted = std::valarray<T>(
a.size());
263 bCasted = std::valarray<T>(b.size());
264 std::valarray<T>
cCasted = std::valarray<T>(
c.size());
266 for (
size_t i = 0;
i <
a.size(); ++
i)
270 for (
size_t i = 0;
i < b.size(); ++
i)
274 for (
size_t i = 0;
i <
c.size(); ++
i)
284 "The number of columns is not as expected.");
287 "The number of rows is not as expected.");
297 a = std::valarray<int>(
298 {0, 1, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 0, 1, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5});
299 b = std::valarray<int>({0, 1, 0, 1, 0, 1, 0, 10, 0, 10, 0, 10});
300 c = std::valarray<int>({2, 3, 2, 3, 4, 6, 4, 6, 20, 30, 20, 30, 40, 60, 40, 60});
301 aCasted = std::valarray<T>(
a.size());
302 bCasted = std::valarray<T>(b.size());
303 cCasted = std::valarray<T>(
c.size());
305 for (
size_t i = 0;
i <
a.size(); ++
i)
309 for (
size_t i = 0;
i < b.size(); ++
i)
313 for (
size_t i = 0;
i <
c.size(); ++
i)
324 "The number of columns is not as expected.");
327 "The number of rows is not as expected.");
337 a = std::valarray<int>({5, 4, 5, 5, 4, 5});
338 b = std::valarray<int>({0, 1, 0, 1, 0, 1, 1, 2, 3, 10, 100, 1000});
339 c = std::valarray<int>({4, 10, 28, 5450});
340 aCasted = std::valarray<T>(
a.size());
341 bCasted = std::valarray<T>(b.size());
342 cCasted = std::valarray<T>(
c.size());
344 for (
size_t i = 0;
i <
a.size(); ++
i)
348 for (
size_t i = 0;
i < b.size(); ++
i)
352 for (
size_t i = 0;
i <
c.size(); ++
i)
363 "The number of columns is not as expected.");
366 "The number of rows is not as expected.");
373 std::valarray<int>
d{1, 1, 1};
374 std::valarray<int> e{1, 1};
375 std::valarray<int> f{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3};
376 std::valarray<int> g{12, 12};
378 std::valarray<T>
eCasted(e.size());
379 std::valarray<T>
fCasted(f.size());
380 std::valarray<T>
gCasted(g.size());
381 for (
size_t i = 0;
i <
d.size(); ++
i)
385 for (
size_t i = 0;
i < e.size(); ++
i)
389 for (
size_t i = 0;
i < f.size(); ++
i)
393 for (
size_t i = 0;
i < g.size(); ++
i)
405 std::valarray<int>
h{1, 3, 2, 2, 4, 0};
406 std::valarray<int>
j{2, 2, 3, 4, 1, 3, 0, 5};
407 std::valarray<int> k{1, 2, 0, 0, 2, 3, 4, 1, 2, 3, 4, 1, 1, 2, 0, 0, 2, 3, 4, 1, 2, 3, 4, 1};
408 std::valarray<int>
l{144, 132, 128, 104, 144, 132, 128, 104};
411 std::valarray<T>
kCasted(k.size());
413 for (
size_t i = 0;
i <
h.size(); ++
i)
417 for (
size_t i = 0;
i <
j.size(); ++
i)
421 for (
size_t i = 0;
i < k.size(); ++
i)
425 for (
size_t i = 0;
i <
l.size(); ++
i)
461 std::vector<std::pair<std::valarray<int>, T>>
detTestCases{
463 {{1, 0, 7, 4, 2, 0, 6, 5, 3}, 62},
465 {{1, 4, 6, 0, 2, 5, 7, 0, 3}, 62},
467 {{1, 0, 0, 0, 1, 0, 0, 0, 1}, 1},
469 {{1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}, 1},
471 {{0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0}, -1},
473 {{36, -5, -5, 43}, 1523},
485 "The determinants are not equal.");
527 std::vector<int>
determinants = {1, -1, 62, 60, -315, 4, 0};
533 "The determinants from the page " << std::to_string(page)
534 <<
" are not equal.");
538 std::vector<double>
fnorms = {
sqrt(3),
sqrt(3), 11.8322, 15.3297, 14.7309, 3.4641, 2};
543 std::abs(
static_cast<T
>(
fnorms[page])),
545 "The Frobenius norm from the page " << std::to_string(page)
546 <<
" are not equal.");
555 "Creating " << std::to_string(
noOfCopies) <<
" copies failed.");
558 "The copy doesn't have the same number of rows as the original.");
561 "The copy doesn't have the same number of columns as the original.");
562 for (
size_t page = 0; page <
copies.GetNumPages(); page++)