# 2.2.3.9.1 matrixbase::AllNonZero

## Description

Indicates whether or not an entire row or column of this matrix is comprised of all non-zero elements.

## Syntax

int AllNonZero( vector<BOOL> & vAllNonZero, int nDim = 1, double dTol = DEFAULT_TOLERANCE )

## Parameters

vAllNonZero
[output] The result vector
nDim
[input] The AllNonZero test can occur row wise (relative to the first dimension when nDim=1) or column wise (relative to the second dimension when nDim=2)
dTol
[input] The tolerance used to decide whether or not an element is zero (if abs(element) < dTol then the element is considered to be zero)

## Return

Returns 0 on success and a non-zero error code on failure.

## Examples

EX1

//to indicate whether or not each row or column of this matrix is comprised of all non-zero elements
void matrixbase_AllNonZero_ex1()
{

vector<BOOL> vRowIsAllNonZeros, vColIsAllNonZeros;

matrix<double> mat1 = {
{1, 1, 1, 0.001},
{1, 1, 0, 0},
{1, 0, 0, 0}
};

int rc;
// to indicate whether or not each column of this matrix is comprised of all non-zero elements
rc=mat1.AllNonZero(vRowIsAllNonZeros);
if(rc!=0)
printf("  AllNonZero failed. Error Code=%d\n",rc);
else{
for(int n = 0 ; n<vRowIsAllNonZeros.GetSize(); n++)
printf("%d ",vRowIsAllNonZeros[n]);
// The result is 1 0 0 0.
printf("\n");
}

// to indicate whether or not each row of this matrix is comprised of all non-zero elements
rc=mat1.AllNonZero(vColIsAllNonZeros,2);
if(rc!=0)
printf("  AllNonZero failed. Error Code=%d\n",rc);
else{
for(int n = 0 ; n<vColIsAllNonZeros.GetSize(); n++)
printf("%d ",vColIsAllNonZeros[n]);
// The result is 1 0 0.
printf("\n");
}

//if abs(element) < dTol then the element is considered to be zero
rc=mat1.AllNonZero(vColIsAllNonZeros, 2, 0.01);
if(rc!=0)
printf("  AllNonZero failed. Error Code=%d\n",rc);
else{
for(int n = 0 ; n<vColIsAllNonZeros.GetSize(); n++)
printf("%d ",vColIsAllNonZeros[n]);
// The result is 0 0 0.
printf("\n");
}
}

EX2

// Determin if all cell(s) in each matrix column (or row) are non-zeros.
void matrixbase_AllNonZero_ex2()
{
PageBase pgbase;
int rc, ii, jj;

vector<BOOL> vRowIsAllNonZeros;

matrix<double> mat1 = {
{1, 1, 0,  1,  1,  0, 99},
{1, 1, 0,  1, 99, 99, 99},
{1, 0, 0, 99, 99, 99, 99}
};
for(ii=0; ii<3; ii++)
for(jj=0; jj<7; jj++)
if(mat1[ii][jj]==99)
mat1[ii][jj]=NANUM;  // set row=ii,col=jj to NANUM
// Input matrix:
// {1, 1, 0,  1,  1,  0, --},
// {1, 1, 0,  1, --, --, --},
// {1, 0, 0, --, --, --, --}

String MatWinName,MatLyName;

MatrixPage MatPg1;
MatPg1.Create("Origin");
MatWinName=MatPg1.GetName();
MatrixLayer MatLy1 = MatPg1.Layers(0);
MatLyName=MatLy1.GetName();
Matrix Mat1(MatLy1);
pgbase = Project.Pages(); // Get the active page
pgbase.Rename("Original");
printf("%s matrix is created.\n",Mat1.GetName());
Mat1=mat1;

rc=mat1.AllNonZero(vRowIsAllNonZeros);
if(rc!=0)
printf("  AllNonZero failed. Error Code=%d\n",rc);
else{
MatrixPage MatPg2;
MatPg2.Create("Origin");
MatrixLayer MatLy2 = MatPg2.Layers(0);
Matrix Mat2(MatLy2);
pgbase = Project.Pages(); // Get the active page
pgbase.Rename("AllNonZero");

Mat2.SetSize(1,vRowIsAllNonZeros.GetSize());
Mat2.SetRow(vRowIsAllNonZeros, 0);  // Set 1st Row(as the index starts 0) of Mat2
printf("AllNonZero vector is placed in %s.\n",Mat2.GetName());
printf("Note that ALL cells in the column should be non-zero and non-NANUM,\n");
}
}

## Remark

Indicates whether or not an entire row or column of this matrix is comprised of all non-zero elements. For matrices having an underlying base type of double or complex a specified tolerance is used to determine whether or not each element is zero.