#include <typedef.h>
#include <getput.h>
#include <matrix.h>
#include <base.h>
#include <longtools.h>
MP_INT cohomology_size(matrix_TYP *D)
{
int first, i;
MP_INT coho_size;
for (first = 0; first < D->cols && D->array.SZ[first][first] == 1; first++);
mpz_init_set_si(&coho_size, 1);
for (i = first; i < D->cols && D->array.SZ[i][i] != 0; i++)
mpz_mul_ui(&coho_size, &coho_size, (unsigned long) D->array.SZ[i][i]);
return(coho_size);
}