[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
8.3.2 Accessing vector elements
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.
- Function: double gsl_vector_get (const gsl_vector * v, size_t i)
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. An inline version of this function is used when
HAVE_INLINE
is defined.
- Function: void gsl_vector_set (gsl_vector * v, size_t i, double x)
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. An inline version of this function is used when
HAVE_INLINE
is defined.
- Function: double * gsl_vector_ptr (gsl_vector * v, size_t i)
- Function: const double * gsl_vector_const_ptr (const gsl_vector * v, size_t i)
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. Inline versions of these functions are used when
HAVE_INLINE
is defined.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |