Basic vector interface. It holds
double
s in an array, and is used alongside
Matrix
in numerical computations. Implementing classes decides on the actual storage.
Basic operations
Use size
to get the vector size. get(int)
gets an element, and there are corresponding set(int,double)
and add(int,double)
methods as well. Note that vector indices are zero-based (typical for Java and C). This means that they range from 0 to size-1
. It is legal to have size
equal zero.
Other basic operations are zero
which zeros all the entries of the vector, which can be cheaper than either zeroing the vector manually, or creating a new vector, and the operation copy
which creates a deep copy of the vector. This copy has separate storage, but starts with the same contents as the current vector.
Iterators
The vector interface extends Iterable
, and the iterator returns a VectorEntry
which contains current index and entry value. Note that the iterator may skip non-zero entries. Using an iterator, many simple and efficient algorithms can be created. The iterator also permits changing values in the vector, however only non-zero entries can be changed.
Basic linear algebra
A selection of basic linear algebra operations are available. To ensure high efficiency, little or no internal memory allocation is done, and the user is required to supply the output arguments.
The operations available include:
- Additions
- Vectors can be added to each other, even if their underlying vector structures are incompatible
- Scaling
- Scalar multiplication (scaling) of a whole vector
- Norms
- Both innerproducts and norms can be computed. Several common norms are supported