public abstract class MatrixBlockBase extends DenseMatrixBase implements MatrixBlock
Matrix.Partition, Matrix.WriteFormat
INDEFINITE, POSITIVE_DEFINITE, SPD, SYMMETRIC
Modifier and Type | Method and Description |
---|---|
void |
add(Matrix M)
Adds the contents of a Matrix to this matrix block.
|
void |
addNumNonZerosByCol(int[] offsets,
int idx,
Matrix.Partition part)
Adds the number of non-zero entries in each column of this block matrix to
the current values stored in the array
offsets , starting
at the location specified by idx . |
static void |
addNumNonZerosByCol(Matrix M,
int[] offsets,
int idx,
Matrix.Partition part)
Dense implementation method for
addNumNonZerosByColgetBlockCCSIndices(int[],int,Partition) . |
void |
addNumNonZerosByRow(int[] offsets,
int idx,
Matrix.Partition part)
Adds the number of non-zero entries in each row of this block matrix to
the current values stored in the array
offsets , starting
at the location specified by idx . |
static void |
addNumNonZerosByRow(Matrix M,
int[] offsets,
int idx,
Matrix.Partition part)
Dense implementation method for
addNumNonZerosByRow(int[],int,Partition) . |
static MatrixBlock |
alloc(int nrows,
int ncols) |
MatrixBlockBase |
clone()
Creates a clone of this MatrixBlock, which duplicates the size, storage
capacity, and values.
|
MatrixBlock |
down()
Returns the next matrix block in a block matrix column.
|
int |
getBlockCCSIndices(int[] rowIdxs,
int rowOff,
int[] offsets,
Matrix.Partition part) |
static int |
getBlockCCSIndices(MatrixBlock M,
int[] rowIdxs,
int rowOff,
int[] offsets,
Matrix.Partition part)
Dense implementation method for
getBlockCCSIndices(int[],int[],Partition) . |
int |
getBlockCCSValues(double[] vals,
int[] offsets,
Matrix.Partition part)
Stores the values of non-zero entries for this matrix block.
|
int |
getBlockCol()
Gets the number of the block column of this matrix block within a
SparseBlockMatrix . |
int |
getBlockCRSIndices(int[] colIdxs,
int colOff,
int[] offsets,
Matrix.Partition part)
Stores the column indices of the non-zero entries for this matrix block.
|
static int |
getBlockCRSIndices(MatrixBlock M,
int[] colIdxs,
int colOff,
int[] offsets,
Matrix.Partition part) |
int |
getBlockCRSValues(double[] vals,
int[] offsets,
Matrix.Partition part)
Stores the values of non-zero entries for this matrix block.
|
int |
getBlockNumber()
Gets the number of this block within a
SparseBlockMatrix . |
int |
getBlockRow()
Gets the number of the block row of this matrix block within a
SparseBlockMatrix . |
abstract void |
mulAdd(double[] y,
int yIdx,
double[] x,
int xidx)
Pre-multiplies a column vector by this matrix block and adds the result to
a set of existing values.
|
abstract void |
mulTransposeAdd(double[] y,
int yIdx,
double[] x,
int xidx)
Post-multiplies a row vector by this matrix block and adds the result to a
set of existing values.
|
MatrixBlock |
next()
Returns the next matrix block in a block matrix row.
|
int |
numNonZeroVals()
Returns the number of non-zero values in this matrix object.
|
void |
scale(double s)
Scales the elements of this matrix block by a scale factor.
|
void |
scaledAdd(double s,
Matrix M)
Adds the scaled contents of a Matrix to this matrix block.
|
void |
setBlockCol(int blkCol)
Sets the number of the block column of this matrix block within a
SparseBlockMatrix . |
void |
setBlockNumber(int num)
Sets the number of this block within a
SparseBlockMatrix . |
void |
setBlockRow(int blkRow)
Sets the number of the block row of this matrix block within a
SparseBlockMatrix . |
void |
setDown(MatrixBlock blk)
Sets the next matrix block in a block matrix column.
|
void |
setNext(MatrixBlock blk)
Sets the next matrix block in a block matrix row.
|
abstract void |
setZero()
Sets the contents of this matrix block to zero.
|
void |
sub(Matrix M)
Subtract the contents of a Matrix from this matrix block.
|
boolean |
valueIsNonZero(int i,
int j)
Returns true if the value at the specified location is structurally
non-zero.
|
add, checkConsistency, set, set, set, set, set, set, setCCSValues, setColumn, setColumn, setCRSValues, setRandom, setRow, setRow, setSubMatrix
colSize, containsNaN, determinant, epsilonEquals, equals, frobeniusNorm, frobeniusNormSquared, get, get, get, getCCSIndices, getCCSIndices, getCCSIndices, getCCSValues, getCCSValues, getCCSValues, getColumn, getColumn, getColumn, getCRSIndices, getCRSIndices, getCRSIndices, getCRSValues, getCRSValues, getCRSValues, getDefaultFormat, getRow, getRow, getRow, getSize, getSubMatrix, hasNaN, idString, infinityNorm, isFixedSize, isSymmetric, isWritable, maxNorm, mul, mul, mul, mulAdd, mulAdd, mulAdd, mulTranspose, mulTranspose, mulTranspose, mulTransposeAdd, mulTransposeAdd, mulTransposeAdd, numNonZeroVals, oneNorm, rowSize, scan, scan, setCRSValues, setDefaultFormat, setSize, toString, toString, toString, trace, write, write, write, write, write, write, write, writeToFile
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
createTranspose, mulAdd, mulTransposeLeftAdd, mulTransposeRightAdd, negate
set, set, set, setColumn, setColumn, setRow, setRow, setSubMatrix
checkConsistency, colSize, determinant, epsilonEquals, equals, frobeniusNorm, frobeniusNormSquared, get, get, getCCSIndices, getCCSIndices, getCCSIndices, getCCSValues, getCCSValues, getCCSValues, getColumn, getColumn, getColumn, getCRSIndices, getCRSIndices, getCRSIndices, getCRSValues, getCRSValues, getCRSValues, getRow, getRow, getRow, getSize, getSubMatrix, infinityNorm, isFixedSize, isSymmetric, maxNorm, mul, mul, mul, mulAdd, mulAdd, mulAdd, mulTranspose, mulTranspose, mulTranspose, mulTransposeAdd, mulTransposeAdd, mulTransposeAdd, numNonZeroVals, oneNorm, rowSize, scan, set, set, setCCSValues, setCRSValues, setSize, toString, toString, trace, write, write, write
public MatrixBlock next()
next
in interface MatrixBlock
public void setNext(MatrixBlock blk)
maspack.matrix
.setNext
in interface MatrixBlock
blk
- next matrix block in a rowpublic MatrixBlock down()
down
in interface MatrixBlock
public void setDown(MatrixBlock blk)
maspack.matrix
.setDown
in interface MatrixBlock
blk
- next matrix block in a columnpublic int getBlockRow()
SparseBlockMatrix
.getBlockRow
in interface MatrixBlock
public void setBlockRow(int blkRow)
SparseBlockMatrix
. Use of this
method is reserved to maspack.matrix
.setBlockRow
in interface MatrixBlock
blkRow
- row number for this blockpublic int getBlockNumber()
SparseBlockMatrix
. Block numbers are used for fast access. If
the block does not belong to a SparseBlockMatrix, then -1 is returned.getBlockNumber
in interface MatrixBlock
public void setBlockNumber(int num)
SparseBlockMatrix
. Use
of this method is reserved to maspack.matrix
.setBlockNumber
in interface MatrixBlock
num
- number for this blockpublic int getBlockCol()
SparseBlockMatrix
.getBlockCol
in interface MatrixBlock
public void setBlockCol(int blkCol)
SparseBlockMatrix
. Use of this
method is reserved to maspack.matrix
.setBlockCol
in interface MatrixBlock
blkCol
- column number for this blockpublic abstract void setZero()
setZero
in interface MatrixBlock
public void scale(double s)
scale
in interface MatrixBlock
s
- scaling factorpublic void add(Matrix M)
add
in interface MatrixBlock
M
- matrix to addpublic void scaledAdd(double s, Matrix M)
scaledAdd
in interface MatrixBlock
s
- scaling factorM
- matrix to addpublic void sub(Matrix M)
sub
in interface MatrixBlock
M
- matrix to subtractpublic abstract void mulAdd(double[] y, int yIdx, double[] x, int xidx)
x
, starting at location xIdx
, and
the result is added to values in y
, starting at location
yIdx
.mulAdd
in interface MatrixBlock
y
- accumulates resulting valuesyIdx
- starting index for accumulating valuesx
- supplies column vector valuesxidx
- starting index for column vector valuespublic abstract void mulTransposeAdd(double[] y, int yIdx, double[] x, int xidx)
x
, starting at location xIdx
, and the
result is added to values in y
, starting at location
yIdx
.mulTransposeAdd
in interface MatrixBlock
y
- accumulates resulting valuesyIdx
- starting index for accumulating valuesx
- supplies row vector valuesxidx
- starting index for row vector valuespublic static int getBlockCRSIndices(MatrixBlock M, int[] colIdxs, int colOff, int[] offsets, Matrix.Partition part)
public int getBlockCRSIndices(int[] colIdxs, int colOff, int[] offsets, Matrix.Partition part)
colIdxs
, starting at a location given by
offsets[i]
. Indices are 0-based. Upon return,
offsets[i]
should be incremented by the number of non-zero
values in row i.getBlockCRSIndices
in interface MatrixBlock
colIdxs
- stores column indices of non-zero entriescolOff
- starting column index for the first column of this blockoffsets
- offsets within colIdxs
for storing each row's indices; upon
return, should be incremented by the number of non-zero entries in each
row.part
- specifies whether to store column indices for the entire block or a
specified sub-portion.public int getBlockCRSValues(double[] vals, int[] offsets, Matrix.Partition part)
vals
,
starting at a location given by offsets[i]
. Upon return,
offsets[i]
should be incremented by the number of non-zero
values in row i.getBlockCRSValues
in interface MatrixBlock
vals
- stores values of non-zero entriesoffsets
- offsets within vals
for storing each row's values; upon
return, should be incremented by the number of non-zero entries in each
row.part
- specifies whether to store the entire block or a specified sub-portion.public static void addNumNonZerosByRow(Matrix M, int[] offsets, int idx, Matrix.Partition part)
addNumNonZerosByRow(int[],int,Partition)
.public void addNumNonZerosByRow(int[] offsets, int idx, Matrix.Partition part)
offsets
, starting
at the location specified by idx
.addNumNonZerosByRow
in interface MatrixBlock
offsets
- values to be incremented by the number of non-zero entries in each rowidx
- starting location within offsets
part
- specifies whether to consider the entire block or a specified sub-portion.public static int getBlockCCSIndices(MatrixBlock M, int[] rowIdxs, int rowOff, int[] offsets, Matrix.Partition part)
getBlockCCSIndices(int[],int[],Partition)
.public int getBlockCCSIndices(int[] rowIdxs, int rowOff, int[] offsets, Matrix.Partition part)
getBlockCCSIndices
in interface MatrixBlock
rowIdxs
- stores row indices of non-zero entriesrowOff
- starting row index for the first row of this blockoffsets
- offsets within rowIdxs
for storing each column's indices;
upon return, should be incremented by the number of non-zero entries in
each column.part
- specifies whether to store row indices for the entire block or a specified
sub-portion.public int getBlockCCSValues(double[] vals, int[] offsets, Matrix.Partition part)
vals
, starting at a location given by
offsets[j]
. Upon return, offsets[j]
should
be incremented by the number of non-zero values in column j.getBlockCCSValues
in interface MatrixBlock
vals
- stores values of non-zero entriesoffsets
- offsets within vals
for storing each columns's values; upon
return, should be incremented by the number of non-zero entries in each
column.part
- specifies whether to store the entire block or a specified sub-portion.public static void addNumNonZerosByCol(Matrix M, int[] offsets, int idx, Matrix.Partition part)
addNumNonZerosByColgetBlockCCSIndices(int[],int,Partition)
.public void addNumNonZerosByCol(int[] offsets, int idx, Matrix.Partition part)
offsets
, starting
at the location specified by idx
.addNumNonZerosByCol
in interface MatrixBlock
offsets
- values to be incremented by the number of non-zero entries in each columnidx
- starting location within offsets
part
- specifies whether to consider the entire block or a specified sub-portion.public boolean valueIsNonZero(int i, int j)
valueIsNonZero
in interface MatrixBlock
i
- row indexj
- column indexpublic int numNonZeroVals()
numNonZeroVals
in interface Matrix
numNonZeroVals
in class MatrixBase
public MatrixBlockBase clone()
clone
in interface MatrixBlock
clone
in interface Clonable
clone
in class java.lang.Object
public static MatrixBlock alloc(int nrows, int ncols)