no.uib.cipr.matrix.sparse
Class CompDiagMatrix

java.lang.Object
  extended by no.uib.cipr.matrix.AbstractMatrix
      extended by no.uib.cipr.matrix.sparse.CompDiagMatrix
All Implemented Interfaces:
java.lang.Iterable<MatrixEntry>, Matrix

public class CompDiagMatrix
extends AbstractMatrix

Compressed diagonal storage (CDS) matrix


Nested Class Summary
 
Nested classes/interfaces inherited from interface no.uib.cipr.matrix.Matrix
Matrix.Norm
 
Field Summary
 
Fields inherited from class no.uib.cipr.matrix.AbstractMatrix
numColumns, numRows
 
Constructor Summary
CompDiagMatrix(int numRows, int numColumns)
          Creates a new sparse matrix without preallocation
CompDiagMatrix(int numRows, int numColumns, int[] diagonal)
          Creates a new sparse matrix with the given diagonals preallocated.
CompDiagMatrix(Matrix A)
          Creates a new sparse matrix copied from the given matrix.
CompDiagMatrix(Matrix A, boolean deep)
          Creates a new sparse matrix copied from the given matrix.
CompDiagMatrix(Matrix A, int[] diagonal)
          Creates a new sparse matrix copied from the given matrix.
CompDiagMatrix(Matrix A, int[] diagonal, boolean deep)
          Creates a new sparse matrix copied from the given matrix.
CompDiagMatrix(MatrixVectorReader r)
          Constructor for CompDiagMatrix
 
Method Summary
 void add(int row, int column, double value)
          A(row,column) += value
 Matrix copy()
          Creates a deep copy of the matrix
 double get(int row, int column)
          Returns A(row,column)
 double[][] getDiagonals()
          Returns the internal diagonal storage
 int[] getIndex()
          Returns the diagonal offsets
 java.util.Iterator<MatrixEntry> iterator()
           
 Vector mult(Vector x, Vector y)
          y = A*x
 Vector multAdd(double alpha, Vector x, Vector y)
          y = alpha*A*x + y
 void set(int row, int column, double value)
          A(row,column) = value
 Vector transMultAdd(double alpha, Vector x, Vector y)
          y = alpha*AT*x + y
 Matrix zero()
          Zeros all the entries in the matrix, while preserving any underlying structure.
 
Methods inherited from class no.uib.cipr.matrix.AbstractMatrix
add, add, check, checkMultAdd, checkMultAdd, checkRank1, checkRank1, checkRank2, checkRank2, checkSize, checkSolve, checkSolve, checkTransABmultAdd, checkTransAmultAdd, checkTransBmultAdd, checkTransMultAdd, checkTranspose, checkTranspose, checkTransRank1, checkTransRank2, isSquare, max, max, mult, mult, mult, multAdd, multAdd, multAdd, norm, norm1, normF, normInf, numColumns, numRows, rank1, rank1, rank1, rank1, rank1, rank1, rank2, rank2, rank2, rank2, scale, set, set, solve, solve, toString, transABmult, transABmult, transABmultAdd, transABmultAdd, transAmult, transAmult, transAmultAdd, transAmultAdd, transBmult, transBmult, transBmultAdd, transBmultAdd, transMult, transMult, transMultAdd, transpose, transpose, transRank1, transRank1, transRank2, transRank2, transSolve, transSolve
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CompDiagMatrix

public CompDiagMatrix(MatrixVectorReader r)
               throws java.io.IOException
Constructor for CompDiagMatrix

Parameters:
r - Reader to get sparse matrix from
Throws:
java.io.IOException

CompDiagMatrix

public CompDiagMatrix(int numRows,
                      int numColumns,
                      int[] diagonal)
Creates a new sparse matrix with the given diagonals preallocated. A negative index is a subdiagonal, positive is superdiagonal


CompDiagMatrix

public CompDiagMatrix(int numRows,
                      int numColumns)
Creates a new sparse matrix without preallocation


CompDiagMatrix

public CompDiagMatrix(Matrix A,
                      int[] diagonal,
                      boolean deep)
Creates a new sparse matrix copied from the given matrix. Can take a deep copy or a shallow copy. For the latter, the supplied matrix must be a CompDiagMatrix. Preallocation is also possible, but is only used for the deep copy.


CompDiagMatrix

public CompDiagMatrix(Matrix A,
                      int[] diagonal)
Creates a new sparse matrix copied from the given matrix. Takes a deep copy, with possibility to specify preallocation


CompDiagMatrix

public CompDiagMatrix(Matrix A,
                      boolean deep)
Creates a new sparse matrix copied from the given matrix. Can take a deep copy or a shallow copy. For the latter, the supplied matrix must be a CompDiagMatrix. No preallocation is done


CompDiagMatrix

public CompDiagMatrix(Matrix A)
Creates a new sparse matrix copied from the given matrix. Takes a deep copy without preallocation

Method Detail

getDiagonals

public double[][] getDiagonals()
Returns the internal diagonal storage


getIndex

public int[] getIndex()
Returns the diagonal offsets


add

public void add(int row,
                int column,
                double value)
Description copied from interface: Matrix
A(row,column) += value

Specified by:
add in interface Matrix
Overrides:
add in class AbstractMatrix

get

public double get(int row,
                  int column)
Description copied from interface: Matrix
Returns A(row,column)

Specified by:
get in interface Matrix
Overrides:
get in class AbstractMatrix

set

public void set(int row,
                int column,
                double value)
Description copied from interface: Matrix
A(row,column) = value

Specified by:
set in interface Matrix
Overrides:
set in class AbstractMatrix

copy

public Matrix copy()
Description copied from interface: Matrix
Creates a deep copy of the matrix

Specified by:
copy in interface Matrix
Overrides:
copy in class AbstractMatrix
Returns:
A

zero

public Matrix zero()
Description copied from interface: Matrix
Zeros all the entries in the matrix, while preserving any underlying structure. Useful for general, unstructured matrices.

Specified by:
zero in interface Matrix
Overrides:
zero in class AbstractMatrix
Returns:
A

mult

public Vector mult(Vector x,
                   Vector y)
Description copied from interface: Matrix
y = A*x

Specified by:
mult in interface Matrix
Overrides:
mult in class AbstractMatrix
Parameters:
x - Vector of size A.numColumns()
y - Vector of size A.numRows()
Returns:
y

multAdd

public Vector multAdd(double alpha,
                      Vector x,
                      Vector y)
Description copied from interface: Matrix
y = alpha*A*x + y

Specified by:
multAdd in interface Matrix
Overrides:
multAdd in class AbstractMatrix
x - Vector of size A.numColumns()
y - Vector of size A.numRows()
Returns:
y

transMultAdd

public Vector transMultAdd(double alpha,
                           Vector x,
                           Vector y)
Description copied from interface: Matrix
y = alpha*AT*x + y

Specified by:
transMultAdd in interface Matrix
Overrides:
transMultAdd in class AbstractMatrix
x - Vector of size A.numRows()
y - Vector of size A.numColumns()
Returns:
y

iterator

public java.util.Iterator<MatrixEntry> iterator()
Specified by:
iterator in interface java.lang.Iterable<MatrixEntry>
Overrides:
iterator in class AbstractMatrix