package linalg
LinAlg provides data types and operations for algebraic vectors and matrices.
Vector and Matrix elements can be of arbitrary type, provided that a factory
for that element type is available. Currently, factories exist for Double
,
Float
, Long
, Int
, Short
, Byte
and Char
.
Vector and matrix (row and column) indices can be any integer (to state more
precisely, an index must be in the interval [Mindex, Maxdex]
, as defined in
the Index
object). But only elements corresponding to a subset of that whole
integer range actually are stored (the concrete elements), while all other
elements by definition are zero (virtual elements).
This concept (which I got to value a long time ago with the ALGOL68 library prelude TORRIX [1]) does not only provide a natural approach to operations with vectors and matrixes of different index ranges, but also prevents from index-out-of-bounds exceptions.
Concrete index ranges (those indices that correspond to concrete elements) implicitly or explicitly are assigned when a vector or matrix is created. By default, it starts at 1 and extends to the number of elements specified, but this is customizable.
Vector
s and Matrix
es both are immutable by design, so there exist no
update
methods or the like (you cannot do v(i) = something
). There are,
however, builder classes that allow you to build Vector
s and Matrix
es
element by element.
Currently, operations on vectors and matrices require identical element
types. For instance, you can add a Vector[Int]
to another Vector[Int]
,
but you cannot add a Vector[Int]
to another Vector[Double]
.
- See also
[1] S. G. van der Meulen, P. Kühling, "Programmieren in ALGOL68", Bd. II (Berlin, New York: de Gruyter), 149-188 (1977)
- Alphabetic
- By Inheritance
- linalg
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
trait
GenMatrixLike[E, +M <: Matrix[E]] extends IterableLike[Vector[E], M]
A template trait for matrices with operations suitable for all kinds of data storage.
A template trait for matrices with operations suitable for all kinds of data storage. For performance reasons, some methods might be overriden by implementation traits in regard to specific storage engines.
- Since
3.0.0
-
trait
GenVectorLike[E, +V <: Vector[E]] extends IterableLike[E, V]
A template trait for vectors with operations suitable for all kinds of data storage.
A template trait for vectors with operations suitable for all kinds of data storage. For performance reasons, some methods might be overriden by implementation traits in regard to specific storage engines.
- Since
3.0.0
-
class
Index extends Seq[Int] with Equals
Defines an immutable index range for vectors from
low
tohigh
(both inclusive) with step1
. -
class
Index2 extends Seq[(Int, Int)] with Equals
Defines immutable index ranges for matrices from
low
tohigh
(both inclusive) with step1
in two dimensions (rows and columns), respectively. -
trait
Matrix[E] extends Iterable[Vector[E]] with GenMatrixLike[E, Matrix[E]] with MatrixStore[E] with Equals with Immutable
An immutable algebraic matrix consisting of
E
elements.An immutable algebraic matrix consisting of
E
elements.The index range of a matrix in both dimensions spans the whole
Int
set. The concrete range is[(index.dim1.low,index.dim1.high),(index.dim2.low,index.dim2.high)]
; all values outside of the concrete range are treated as zero. AnIndexOutOfBoundsException
will never occur. -
trait
MatrixLike[E, +M <: Matrix[E]] extends GenMatrixLike[E, M]
Implementation trait for matrices of type
Matrix[E}
.Implementation trait for matrices of type
Matrix[E}
.- Since
2.0.0
-
implicit
class
ScalarOps[E] extends AnyRef
Defines vector and matrix operations on the scalar
s
as left operand. -
trait
SparseMatrix[E] extends Matrix[E] with SparseMatrixLike[E, SparseMatrix[E]] with SparseRowMatrixStore[E]
An immutable algebraic matrix with sparse storage of
E
elements.An immutable algebraic matrix with sparse storage of
E
elements.- Since
3.0.0
-
trait
SparseMatrixLike[E, +M <: SparseMatrix[E]] extends GenMatrixLike[E, M]
Implementation trait for matrices of type
SparseMatrix[E]
.Implementation trait for matrices of type
SparseMatrix[E]
.- Since
3.0.0
-
trait
SparseVector[E] extends Vector[E] with SparseVectorLike[E, SparseVector[E]] with SparseVectorStore[E]
An immutable algebraic vector with sparse storage of
E
elements.An immutable algebraic vector with sparse storage of
E
elements.- Since
3.0.0
-
trait
SparseVectorLike[E, +V <: SparseVector[E]] extends GenVectorLike[E, V]
Implementation trait for vectors of type
SparseVector[E]
.Implementation trait for vectors of type
SparseVector[E]
.- Since
3.0.0
-
trait
Vector[E] extends Iterable[E] with GenVectorLike[E, Vector[E]] with VectorStore[E] with Equals with Immutable
An immutable algebraic vector consisting of
E
elements.An immutable algebraic vector consisting of
E
elements.The index range of a vector spans the whole
Int
set. The concrete range is[index.low, index.high]
; all values outside of the concrete range are treated as zero. AnIndexOutOfBoundsException
will never occur. -
trait
VectorLike[E, +V <: Vector[E]] extends GenVectorLike[E, V]
Implementation trait for vectors of type
Vector[E}
.Implementation trait for vectors of type
Vector[E}
.- Since
2.0.0
-
implicit
class
VectorOps[E] extends AnyRef
Defines matrix operations on the vector
v
as left operand.