GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
#include "typedef.h"1#include "matrix.h"23/**************************************************************************\4@---------------------------------------------------------------------------5@---------------------------------------------------------------------------6@ FILE: null_mat.c7@---------------------------------------------------------------------------8@---------------------------------------------------------------------------9@10\**************************************************************************/1112/**************************************************************************\13@---------------------------------------------------------------------------14@ int null_mat(mat)15@ matrix_TYP *mat;16@17@ Checks if the matrix has only 0 as entry.18@ return 1 if yes, 0 otherwise.19@---------------------------------------------------------------------------20@21\**************************************************************************/22int null_mat(mat)23matrix_TYP *mat;24{25return(save_null_mat(mat));26}27/*{{{}}}*/28/*{{{ save_null_mat*/29/**************************************************************************\30@---------------------------------------------------------------------------31@ int save_null_mat(mat)32@ matrix_TYP *mat;33@34@ The same as null_mat35@---------------------------------------------------------------------------36@37\**************************************************************************/38int save_null_mat(mat)39matrix_TYP *mat;40{41int i,j;4243for ( i=0; i < mat->rows;i++) {44for ( j=0; j < mat->cols;j++) {45if ( mat->array.SZ[i][j] != 0 ) return FALSE;46}47}48return TRUE;49}5051/*}}} */52/*{{{ quick_null_mat*/53/**************************************************************************\54@---------------------------------------------------------------------------55@ int quick_null_mat(mat)56@ matrix_TYP *mat;57@58@ Checks if the matrix has only 0 as entry using mat->flags.59@ If for example mat->flags.Diagonal = 1 only the diagonal entries60@ are checked to be 0.61@ return 1 if yes, 0 otherwise.62@---------------------------------------------------------------------------63@64\**************************************************************************/65int quick_null_mat(mat)66matrix_TYP *mat;67{68int i, j;6970if ( mat->flags.Scalar ) {71return( mat->array.SZ[0][0] == 0 );72} else if ( mat->flags.Diagonal ) {73for ( i=0;i < mat->rows;i++) {74if ( mat->array.SZ[i][i] != 0 ) return FALSE;75}76return TRUE;77} else if ( mat->flags.Symmetric ) {78for ( i=0;i < mat->rows; i ++ ) {79for ( j=i; j < mat->cols; j++ ) {80if ( mat->array.SZ[i][j] != 0 ) {81return FALSE;82}83}84}85return TRUE;86} else {87return ( save_null_mat(mat) );88}89}909192/*}}} */939495