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 indexoutofbounds 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), 149188 (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.