#include "long_extras.h"
#include "d_mat.h"
void
d_mat_init(d_mat_t mat, slong rows, slong cols)
{
slong i;
if (rows != 0)
mat->rows = flint_malloc(rows * sizeof(double *));
else
mat->rows = NULL;
mat->r = rows;
mat->c = cols;
if (rows != 0 && cols != 0)
{
slong num;
int of;
of = z_mul_checked(&num, rows, cols);
if (of)
flint_throw(FLINT_ERROR, "Overflow creating a %wd x %wd object\n", rows, cols);
mat->entries = flint_calloc(num, sizeof(double));
for (i = 0; i < rows; i++)
mat->rows[i] = mat->entries + i * cols;
}
else
{
mat->entries = NULL;
for (i = 0; i < rows; i++)
mat->rows[i] = NULL;
}
}