From 16b4091db1f5df3321f4d2a1b9cf1e4a28b444b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= <klinkjak@fjfi.cvut.cz> Date: Sat, 6 Apr 2019 10:29:49 +0200 Subject: [PATCH] Improved asserts in dense matrix --- src/TNL/Matrices/Dense_impl.h | 41 +++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/src/TNL/Matrices/Dense_impl.h b/src/TNL/Matrices/Dense_impl.h index e8e9ed9f1c..d204c3a0a6 100644 --- a/src/TNL/Matrices/Dense_impl.h +++ b/src/TNL/Matrices/Dense_impl.h @@ -158,9 +158,11 @@ __cuda_callable__ Real& Dense< Real, Device, Index >::operator()( const IndexType row, const IndexType column ) { - TNL_ASSERT( row >= 0 && row < this->getRows() && - column >= 0 && column < this->getColumns(), - printf( " row = %d, column = %d, this->getRows = %d, this->getColumns() = %d \n", row, column, this->getRows(), this->getColumns() ) ); + TNL_ASSERT_GE( row, 0, "Row index must be non-negative." ); + TNL_ASSERT_LT( row, this->getRows(), "Row index is out of bounds." ); + TNL_ASSERT_GE( column, 0, "Column index must be non-negative." ); + TNL_ASSERT_LT( column, this->getColumns(), "Column index is out of bounds." ); + return this->values.operator[]( this->getElementIndex( row, column ) ); } @@ -171,9 +173,11 @@ __cuda_callable__ const Real& Dense< Real, Device, Index >::operator()( const IndexType row, const IndexType column ) const { - TNL_ASSERT( row >= 0 && row < this->getRows() && - column >= 0 && column < this->getColumns(), - printf( " row = %d, column = %d, this->getRows = %d, this->getColumns() = %d \n", row, column, this->getRows(), this->getColumns() ) ); + TNL_ASSERT_GE( row, 0, "Row index must be non-negative." ); + TNL_ASSERT_LT( row, this->getRows(), "Row index is out of bounds." ); + TNL_ASSERT_GE( column, 0, "Column index must be non-negative." ); + TNL_ASSERT_LT( column, this->getColumns(), "Column index is out of bounds." ); + return this->values.operator[]( this->getElementIndex( row, column ) ); } @@ -186,10 +190,11 @@ bool Dense< Real, Device, Index >::setElementFast( const IndexType row, const IndexType column, const RealType& value ) { - TNL_ASSERT( row >= 0 && row < this->getRows() && - column >= 0 && column < this->getColumns(), - std::cerr << " row = " << row << " column = " << column << " this->getRows() = " << this->getRows() - << " this->getColumns() = " << this->getColumns() ); + TNL_ASSERT_GE( row, 0, "Row index must be non-negative." ); + TNL_ASSERT_LT( row, this->getRows(), "Row index is out of bounds." ); + TNL_ASSERT_GE( column, 0, "Column index must be non-negative." ); + TNL_ASSERT_LT( column, this->getColumns(), "Column index is out of bounds." ); + this->values.operator[]( this->getElementIndex( row, column ) ) = value; return true; } @@ -215,9 +220,11 @@ bool Dense< Real, Device, Index >::addElementFast( const IndexType row, const RealType& value, const RealType& thisElementMultiplicator ) { - TNL_ASSERT( row >= 0 && row < this->getRows() && - column >= 0 && column < this->getColumns(), - printf( " row = %d, column = %d, this->getRows = %d, this->getColumns() = %d \n", row, column, this->getRows(), this->getColumns() ) ); + TNL_ASSERT_GE( row, 0, "Row index must be non-negative." ); + TNL_ASSERT_LT( row, this->getRows(), "Row index is out of bounds." ); + TNL_ASSERT_GE( column, 0, "Column index must be non-negative." ); + TNL_ASSERT_LT( column, this->getColumns(), "Column index is out of bounds." ); + const IndexType elementIndex = this->getElementIndex( row, column ); if( thisElementMultiplicator == 1.0 ) this->values.operator[]( elementIndex ) += value; @@ -324,9 +331,11 @@ __cuda_callable__ const Real& Dense< Real, Device, Index >::getElementFast( const IndexType row, const IndexType column ) const { - TNL_ASSERT( row >= 0 && row < this->getRows() && - column >= 0 && column < this->getColumns(), - printf( " row = %d, column = %d, this->getRows = %d, this->getColumns() = %d \n", row, column, this->getRows(), this->getColumns() ) ); + TNL_ASSERT_GE( row, 0, "Row index must be non-negative." ); + TNL_ASSERT_LT( row, this->getRows(), "Row index is out of bounds." ); + TNL_ASSERT_GE( column, 0, "Column index must be non-negative." ); + TNL_ASSERT_LT( column, this->getColumns(), "Column index is out of bounds." ); + return this->values.operator[]( this->getElementIndex( row, column ) ); } -- GitLab