Next: , Previous: Matrix allocation, Up: Matrices


8.4.2 Accessing matrix elements

The functions for accessing the elements of a matrix use the same range checking system as vectors. You can turn off range checking by recompiling your program with the preprocessor definition GSL_RANGE_CHECK_OFF.

The elements of the matrix are stored in “C-order”, where the second index moves continuously through memory. More precisely, the element accessed by the function gsl_matrix_get(m,i,j) and gsl_matrix_set(m,i,j,x) is

     m->data[i * m->tda + j]

where tda is the physical row-length of the matrix.

— Function: double gsl_matrix_get (const gsl_matrix * m, size_t i, size_t j)

This function returns the (i,j)-th element of a matrix m. If i or j lie outside the allowed range of 0 to n1-1 and 0 to n2-1 then the error handler is invoked and 0 is returned. An inline version of this function is used when HAVE_INLINE is defined.

— Function: void gsl_matrix_set (gsl_matrix * m, size_t i, size_t j, double x)

This function sets the value of the (i,j)-th element of a matrix m to x. If i or j lies outside the allowed range of 0 to n1-1 and 0 to n2-1 then the error handler is invoked. An inline version of this function is used when HAVE_INLINE is defined.

— Function: double * gsl_matrix_ptr (gsl_matrix * m, size_t i, size_t j)
— Function: const double * gsl_matrix_const_ptr (const gsl_matrix * m, size_t i, size_t j)

These functions return a pointer to the (i,j)-th element of a matrix m. If i or j lie outside the allowed range of 0 to n1-1 and 0 to n2-1 then the error handler is invoked and a null pointer is returned. Inline versions of these functions are used when HAVE_INLINE is defined.