#include "nmod_poly.h"
#include "nmod_poly_mat.h"
void
nmod_poly_mat_concat_horizontal(nmod_poly_mat_t res, const nmod_poly_mat_t mat1, const nmod_poly_mat_t mat2)
{
slong i, j;
slong r1 = mat1->r;
slong c1 = mat1->c;
slong r2 = mat2->r;
slong c2 = mat2->c;
for (i = 0; i < r1; i++)
{
for (j = 0; j < c1; j++)
{
nmod_poly_set(nmod_poly_mat_entry(res, i, j), nmod_poly_mat_entry(mat1, i, j));
}
}
for (i = 0; i < r2; i++)
{
for (j = 0; j < c2; j++)
{
nmod_poly_set(nmod_poly_mat_entry(res, i, j + c1), nmod_poly_mat_entry(mat2, i, j));
}
}
}
void
nmod_poly_mat_concat_vertical(nmod_poly_mat_t res, const nmod_poly_mat_t mat1, const nmod_poly_mat_t mat2)
{
slong i, j;
slong r1 = mat1->r;
slong c1 = mat1->c;
slong r2 = mat2->r;
slong c2 = mat2->c;
for (i = 0; i < r1; i++)
{
for (j = 0; j < c1; j++)
{
nmod_poly_set(nmod_poly_mat_entry(res, i, j), nmod_poly_mat_entry(mat1, i, j));
}
}
for (i = 0; i < r2; i++)
{
for (j = 0; j < c2; j++)
{
nmod_poly_set(nmod_poly_mat_entry(res, i + r1, j), nmod_poly_mat_entry(mat2, i, j));
}
}
}