Conjugate transpose: Difference between revisions

m
Added constructor taking an initializer list to C++ complex_matrix class
m (C++ code made slightly shorter)
m (Added constructor taking an initializer list to C++ complex_matrix class)
Line 332:
 
complex_matrix(size_t rows, size_t columns)
: rows_(rows), columns_(columns), elements_(rows * columns) {}
 
elements_.resize(rows * columns);
}
complex_matrix(size_t rows, size_t columns, element_type value)
: rows_(rows), columns_(columns), elements_(rows * columns, value) {}
 
complex_matrix(size_t rows, size_t columns,
const std::initializer_list<std::initializer_list<element_type>>& values)
: rows_(rows), columns_(columns), elements_.resize(rows * columns); {
assert(values.size() <= rows_);
size_t i = 0;
for (const auto& row : values) {
assert(row.size() <= columns_);
std::copy(begin(row), end(row), row_data(i++));
}
}
 
size_t rows() const { return rows_; }
Line 366 ⟶ 376:
a.elements_ == b.elements_;
}
 
private:
size_t rows_;
Line 480 ⟶ 491:
 
int main() {
using matrix = complex_matrix<double> matrix1(3, 3);
complex_matrix<double> matrix2(3, 3);
complex_matrix<double> matrix3(3, 3);
 
matrix matrix1.at(03, 0) = {23, 0};
matrix1.at(0, 1) = {{{2, 0}, {2, 1};, {4, 0}},
matrix1.at(0, {{2), =-1}, {43, 0};, {0, 1}},
matrix1.at(1 {{4, 0) =}, {20, -1}, {1, 0}}});
matrix1.at(1, 1) = {3, 0};
matrix1.at(1, 2) = {0, 1};
matrix1.at(2, 0) = {4, 0};
matrix1.at(2, 1) = {0, -1};
matrix1.at(2, 2) = {1, 0};
 
double n = std::sqrt(0.5);
matrix matrix2.at(03, 0) = {n3, 0};
matrix2.at( {{{n, 0}, 1){n, =0}, {n0, 0};},
matrix2.at( {{0, 2)-n}, ={0, n}, {0, 0};},
matrix2.at(1 {{0, 0)}, ={0, 0}, {0, -n1}}});
matrix2.at(1, 1) = {0, n};
matrix2.at(1, 2) = {0, 0};
matrix2.at(2, 0) = {0, 0};
matrix2.at(2, 1) = {0, 0};
matrix2.at(2, 2) = {0, 1};
 
matrix matrix3.at(03, 0) = {23, 2};
matrix3.at(0, 1) = {{{2, 2}, {3, 1};, {-3, 5}},
{{2, -1}, {4, 1}, {0, 0}},
matrix3.at(0, 2) = {-3, 5};
matrix3.at(1, 0) = {{27, -5}, {1, -4}, {1, 0}}});
matrix3.at(1, 1) = {4, 1};
matrix3.at(1, 2) = {0, 0};
matrix3.at(2, 0) = {7, -5};
matrix3.at(2, 1) = {1, -4};
matrix3.at(2, 2) = {1, 0};
 
test(matrix1);
1,777

edits