Conjugate transpose: Difference between revisions
Content added Content deleted
m (C++ code made slightly shorter) |
m (Added constructor taking an initializer list to C++ complex_matrix class) |
||
Line 332: | Line 332: | ||
complex_matrix(size_t rows, size_t columns) |
complex_matrix(size_t rows, size_t columns) |
||
: rows_(rows), columns_(columns) { |
: rows_(rows), columns_(columns), elements_(rows * columns) {} |
||
⚫ | |||
⚫ | |||
complex_matrix(size_t rows, size_t columns, element_type value) |
complex_matrix(size_t rows, size_t columns, element_type value) |
||
: rows_(rows), columns_(columns), elements_(rows * columns, 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) |
|||
⚫ | |||
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_; } |
size_t rows() const { return rows_; } |
||
Line 366: | Line 376: | ||
a.elements_ == b.elements_; |
a.elements_ == b.elements_; |
||
} |
} |
||
private: |
private: |
||
size_t rows_; |
size_t rows_; |
||
Line 480: | Line 491: | ||
int main() { |
int main() { |
||
complex_matrix<double> |
using matrix = complex_matrix<double>; |
||
complex_matrix<double> matrix2(3, 3); |
|||
complex_matrix<double> matrix3(3, 3); |
|||
matrix1 |
matrix matrix1(3, 3, |
||
{{{2, 0}, {2, 1}, {4, 0}}, |
|||
{{2, -1}, {3, 0}, {0, 1}}, |
|||
{{4, 0}, {0, -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); |
double n = std::sqrt(0.5); |
||
matrix2 |
matrix matrix2(3, 3, |
||
{{{n, 0}, {n, 0}, {0, 0}}, |
|||
{{0, -n}, {0, n}, {0, 0}}, |
|||
{{0, 0}, {0, 0}, {0, 1}}}); |
|||
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}; |
|||
matrix3 |
matrix matrix3(3, 3, |
||
{{{2, 2}, {3, 1}, {-3, 5}}, |
|||
{{2, -1}, {4, 1}, {0, 0}}, |
|||
matrix3.at(0, 2) = {-3, 5}; |
|||
{{7, -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); |
test(matrix1); |