# Vector Arguments

Compressed sparse vectors. Let a be a vector stored in an array, and assume that the only non-zero elements of a are the following:
`a(k1), a (k2), a (k3) . . . a(knz),`

where nz is the total number of non-zero elements in a.

In Sparse BLAS, this vector can be represented in compressed form by two FORTRAN arrays, x (values) and indx (indices). Each array has nz elements:
`x(1)=a(k1), x(2)=a(k2), . . . x(nz)= a(knz),`
`indx(1)=k1, indx(2)=k2, . . . indx(nz)= knz.`

Thus, a sparse vector is fully determined by the triple (nz, x, indx). If you pass a negative or zero value of nz to Sparse BLAS, the subroutines do not modify any arrays or variables.

Full-storage vectors. Sparse BLAS routines can also use a vector argument fully stored in a single FORTRAN array (a full-storage vector). If y is a full-storage vector, its elements must be stored contiguously: the first element in `y(1)`, the second in y`(2)`, and so on. This corresponds to an increment `incy = 1` in BLAS Level 1. No increment value for full-storage vectors is passed as an argument to Sparse BLAS routines or functions.

Parent topic: Sparse BLAS Level 1 Routines