Next: Initializing vector elements, Previous: Vector allocation, Up: Vectors
Unlike fortran compilers, C compilers do not usually provide
support for range checking of vectors and matrices. Range checking is
available in the GNU C Compiler bounds-checking extension, but it is not
part of the default installation of GCC. The functions
gsl_vector_get
and gsl_vector_set
can perform portable
range checking for you and report an error if you attempt to access
elements outside the allowed range.
The functions for accessing the elements of a vector or matrix are
defined in gsl_vector.h and declared extern inline
to
eliminate function-call overhead. You must compile your program with
the macro HAVE_INLINE
defined to use these functions.
If necessary you can turn off range checking completely without
modifying any source files by recompiling your program with the
preprocessor definition GSL_RANGE_CHECK_OFF
. Provided your
compiler supports inline functions the effect of turning off range
checking is to replace calls to gsl_vector_get(v,i)
by
v->data[i*v->stride]
and calls to gsl_vector_set(v,i,x)
by
v->data[i*v->stride]=x
. Thus there should be no performance
penalty for using the range checking functions when range checking is
turned off.
This function returns the i-th element of a vector v. If i lies outside the allowed range of 0 to n-1 then the error handler is invoked and 0 is returned.
This function sets the value of the i-th element of a vector v to x. If i lies outside the allowed range of 0 to n-1 then the error handler is invoked.
These functions return a pointer to the i-th element of a vector v. If i lies outside the allowed range of 0 to n-1 then the error handler is invoked and a null pointer is returned.