Macaulay2 Engine
Loading...
Searching...
No Matches

◆ concat()

Matrix * Matrix::concat ( const Matrix & m) const

Definition at line 605 of file matrix.cpp.

606{
607 auto R = get_ring();
608 if (R != m.get_ring())
609 {
610 ERROR("concat: different base rings");
611 return nullptr;
612 }
613 if (n_rows() != m.n_rows())
614 {
615 ERROR("concat: matrices have different numbers of rows");
616 return nullptr;
617 }
618
619 const FreeModule *G = cols()->direct_sum(m.cols());
620 MatrixConstructor mat(rows(), G, nullptr);
621 int i;
622 int nc = n_cols();
623 for (i = 0; i < nc; i++) mat.set_column(i, R->copy_vec(elem(i)));
624 for (i = 0; i < m.n_cols(); i++)
625 mat.set_column(nc + i, R->copy_vec(m.elem(i)));
626 return mat.to_matrix();
627}
FreeModule * direct_sum(const FreeModule *G) const
Definition freemod.cpp:244
friend class FreeModule
Definition matrix.hpp:73
const Ring * get_ring() const
Definition matrix.hpp:134
ring_elem elem(int i, int j) const
Definition matrix.cpp:307
friend class MatrixConstructor
Definition matrix.hpp:76
int n_cols() const
Definition matrix.hpp:147
int n_rows() const
Definition matrix.hpp:146
const FreeModule * rows() const
Definition matrix.hpp:144
const FreeModule * cols() const
Definition matrix.hpp:145
const int ERROR
Definition m2-mem.cpp:55
tbb::flow::graph G

References cols(), concat(), elem(), ERROR, FreeModule, G, get_ring(), Matrix(), MatrixConstructor, n_cols(), n_rows(), rows(), MatrixConstructor::set_column(), and MatrixConstructor::to_matrix().

Referenced by concat().