mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Add free-function swap.
This commit is contained in:
committed by
Rasmus Munk Larsen
parent
820e8a45fb
commit
b396a6fbb2
@@ -63,6 +63,16 @@ void swap(const MatrixType& m) {
|
||||
}
|
||||
m1 = m1_copy;
|
||||
m2 = m2_copy;
|
||||
d1 = m1.data(), d2 = m2.data();
|
||||
swap(m1, m2);
|
||||
VERIFY_IS_APPROX(m1, m2_copy);
|
||||
VERIFY_IS_APPROX(m2, m1_copy);
|
||||
if (MatrixType::SizeAtCompileTime == Dynamic) {
|
||||
VERIFY(m1.data() == d2);
|
||||
VERIFY(m2.data() == d1);
|
||||
}
|
||||
m1 = m1_copy;
|
||||
m2 = m2_copy;
|
||||
|
||||
// test swapping 2 matrices of different types
|
||||
m1.swap(m3);
|
||||
@@ -70,6 +80,11 @@ void swap(const MatrixType& m) {
|
||||
VERIFY_IS_APPROX(m3, m1_copy);
|
||||
m1 = m1_copy;
|
||||
m3 = m3_copy;
|
||||
swap(m1, m3);
|
||||
VERIFY_IS_APPROX(m1, m3_copy);
|
||||
VERIFY_IS_APPROX(m3, m1_copy);
|
||||
m1 = m1_copy;
|
||||
m3 = m3_copy;
|
||||
|
||||
// test swapping matrix with expression
|
||||
m1.swap(m2.block(0, 0, rows, cols));
|
||||
@@ -77,6 +92,11 @@ void swap(const MatrixType& m) {
|
||||
VERIFY_IS_APPROX(m2, m1_copy);
|
||||
m1 = m1_copy;
|
||||
m2 = m2_copy;
|
||||
swap(m1, m2.block(0, 0, rows, cols));
|
||||
VERIFY_IS_APPROX(m1, m2_copy);
|
||||
VERIFY_IS_APPROX(m2, m1_copy);
|
||||
m1 = m1_copy;
|
||||
m2 = m2_copy;
|
||||
|
||||
// test swapping two expressions of different types
|
||||
m1.transpose().swap(m3.transpose());
|
||||
@@ -84,6 +104,11 @@ void swap(const MatrixType& m) {
|
||||
VERIFY_IS_APPROX(m3, m1_copy);
|
||||
m1 = m1_copy;
|
||||
m3 = m3_copy;
|
||||
swap(m1.transpose(), m3.transpose());
|
||||
VERIFY_IS_APPROX(m1, m3_copy);
|
||||
VERIFY_IS_APPROX(m3, m1_copy);
|
||||
m1 = m1_copy;
|
||||
m3 = m3_copy;
|
||||
|
||||
check_row_swap(m1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user