view mayachemtools/docs/modules/man3/Matrix.3 @ 0:73ae111cf86f draft

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 11:55:01 -0500
parents
children
line wrap: on
line source

.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.22)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings.  \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.ie \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.el \{\
.    de IX
..
.\}
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
.    \" fudge factors for nroff and troff
.if n \{\
.    ds #H 0
.    ds #V .8m
.    ds #F .3m
.    ds #[ \f1
.    ds #] \fP
.\}
.if t \{\
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.    ds #V .6m
.    ds #F 0
.    ds #[ \&
.    ds #] \&
.\}
.    \" simple accents for nroff and troff
.if n \{\
.    ds ' \&
.    ds ` \&
.    ds ^ \&
.    ds , \&
.    ds ~ ~
.    ds /
.\}
.if t \{\
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
.    \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.    \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.    \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.    ds : e
.    ds 8 ss
.    ds o a
.    ds d- d\h'-1'\(ga
.    ds D- D\h'-1'\(hy
.    ds th \o'bp'
.    ds Th \o'LP'
.    ds ae ae
.    ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "MATRIX 1"
.TH MATRIX 1 "2015-03-29" "perl v5.14.2" "MayaChemTools"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
Matrix
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
use Matrix;
.PP
use Matrix qw(:all);
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
\&\fBMatrix\fR class provides the following methods:
.PP
new, AddColumnValues, AddRowValues, Copy, GetColumnValues,
GetColumnValuesAsColumnMatrix, GetColumnValuesAsRowMatrix,
GetColumnValuesAsString, GetColumnValuesAsVector, GetDiagonalValues,
GetDiagonalValuesAsColumnMatrix, GetDiagonalValuesAsRowMatrix,
GetDiagonalValuesAsString, GetDiagonalValuesAsVector, GetDimension,
GetMatrixValuesReference, GetNumOfColumns, GetNumOfRows, GetRowValues,
GetRowValuesAsColumnMatrix, GetRowValuesAsRowMatrix, GetRowValuesAsString,
GetRowValuesAsVector, GetSize, GetValue, IdentityMatrix, IsAntiSymmetric,
IsBiDiagonal, IsDiagonal, IsIdentity, IsLeftTriangular, IsLowerBiDiagonal,
IsLowerTriangular, IsLowerUniTriangular, IsMatrix, IsNegative, IsPositive,
IsRightTriangular, IsSkewSymmetric, IsSquare, IsStrictlyLowerTriangular,
IsStrictlyUpperTriangular, IsSymmetric, IsTriDiagonal, IsUnit,
IsUnitLowerTriangular, IsUnitUpperTriangular, IsUpperBiDiagonal,
IsUpperTriangular, IsUpperUniTriangular, NewFromColumns, NewFromDiagonal,
NewFromRows, One, SetAllValues, SetColumnValues, SetDiagonalValues,
SetMatrixPrintStyle, SetRowValues, SetValue, SetValuePrintFormat, StringifyMatrix,
Transpose, UnitMatrix, Zero, ZeroMatrix
.PP
The following functions are available:
.PP
IsMatrix, IdentityMatrix, NewFromRows, NewFromColumns, NewFromDiagonal,
UnitMatrix, ZeroMatrix
.PP
The following operators are overloaded:
.PP
.Vb 6
\&    "" bool !
\&    @{}
\&    + \- * / ** %
\&    == != < <= > >=
\&    neg
\&    abs exp log sqrt cos sin
.Ve
.PP
The matrix row and column indicies start from zero.
.SS "\s-1FUNCTIONS\s0"
.IX Subsection "FUNCTIONS"
.IP "\fBnew\fR" 4
.IX Item "new"
.Vb 1
\&    $NewMatrix = $Matrix\->new($NumOfRows, $NumOfCols);
.Ve
.Sp
Creates a new \fBMatrix\fR of size \fINumOfRows x NumOfCol\fR  and returns \fBNewMatrix\fR
object.
.IP "\fBAddColumnValues\fR" 4
.IX Item "AddColumnValues"
.Vb 4
\&    $Matrix\->AddColumnValues(@Values);
\&    $Matrix\->AddColumnValues(\e@Values);
\&    $Matrix\->AddColumnValues($VectorObject);
\&    $Matrix\->AddColumnValues("Value1 Value2 Value3 ...");
.Ve
.Sp
Adds column values to \fIMatrix\fR using an array, reference to an array, another vector, or space
delimited value string and returns \fIMatrix\fR.
.IP "\fBAddRowValues\fR" 4
.IX Item "AddRowValues"
.Vb 4
\&    $Matrix\->AddRowValues(@Values);
\&    $Matrix\->AddRowValues(\e@Values);
\&    $Matrix\->AddRowValues($VectorObject);
\&    $Matrix\->AddRowValues("Value1 Value2 Value3 ...");
.Ve
.Sp
Adds row values to \fIMatrix\fR using an array, reference to an array, another vector, or space
delimited value string and returns \fBMatrix\fR.
.IP "\fBCopy\fR" 4
.IX Item "Copy"
.Vb 1
\&    $NewMatrix = $Matrix\->Copy();
.Ve
.Sp
Creates a copy of \fIMatrix\fR and returns \fBNewMatrix\fR.
.IP "\fBGetColumnValues\fR" 4
.IX Item "GetColumnValues"
.Vb 2
\&    @Values = $Matrix\->GetColumnValues($ColIndex);
\&    $ValueCount = $Matrix\->GetColumnValues($ColIndex);
.Ve
.Sp
Returns an array containing column value specified using \fIColIndex\fR with column index
starting at 0. In scalar context, number of column values is returned.
.IP "\fBGetColumnValuesAsColumnMatrix\fR" 4
.IX Item "GetColumnValuesAsColumnMatrix"
.Vb 1
\&    $ColumnMatrix = $Matrix\->GetColumnValuesAsColumnMatrix($ColIndex);
.Ve
.Sp
Returns a new \fBColumnMatrix\fR containing column values specified using \fIColIndex\fR with
column index starting at 0.
.IP "\fBGetColumnValuesAsRowMatrix\fR" 4
.IX Item "GetColumnValuesAsRowMatrix"
.Vb 1
\&    $RowMatrix = $Matrix\->GetColumnValuesAsRowMatrix($ColIndex);
.Ve
.Sp
Returns a new \fBRowMatrix\fR containing column values specified using \fIColIndex\fR with
column index starting at 0.
.IP "\fBGetColumnValuesAsString\fR" 4
.IX Item "GetColumnValuesAsString"
.Vb 1
\&    $ColumnValuesString = $Matrix\->GetColumnValuesAsString($ColIndex);
.Ve
.Sp
Returns a space delimited \fBColumnValuesString\fR column values specified using \fIColIndex\fR with
column index starting at 0.
.IP "\fBGetColumnValuesAsVector\fR" 4
.IX Item "GetColumnValuesAsVector"
.Vb 1
\&    $ColumnVector = $Matrix\->GetColumnValuesAsVector($ColIndex);
.Ve
.Sp
Returns a new \fBColumnVector\fR column values specified using \fIRowIndex\fR with
column index starting at 0.
.IP "\fBGetDiagonalValues\fR" 4
.IX Item "GetDiagonalValues"
.Vb 2
\&    @Values = $Matrix\->GetDiagonalValues();
\&    $ValueCount = $Matrix\->GetDiagonalValues();
.Ve
.Sp
Returns an array containing diagonal values. In scalar context, number of diagonal
values is returned.
.IP "\fBGetDiagonalValuesAsColumnMatrix\fR" 4
.IX Item "GetDiagonalValuesAsColumnMatrix"
.Vb 1
\&    $ColumnMatrix = $Matrix\->GetDiagonalValuesAsColumnMatrix();
.Ve
.Sp
Returns a new \fBColumnMatrix\fR containing diagonal values corresponding to \fIMatrix\fR.
.IP "\fBGetDiagonalValuesAsRowMatrix\fR" 4
.IX Item "GetDiagonalValuesAsRowMatrix"
.Vb 1
\&    $RowMatrix = $Matrix\->GetDiagonalValuesAsRowMatrix();
.Ve
.Sp
Returns a new \fBRowMatrix\fR containing diagonal values corresponding to \fIMatrix\fR.
.IP "\fBGetDiagonalValuesAsString\fR" 4
.IX Item "GetDiagonalValuesAsString"
.Vb 1
\&    $DiagonalValuesString = $Matrix\->GetDiagonalValuesAsString();
.Ve
.Sp
Returns a space delimited \fBDiagonalValuesString\fR containing diagonal values corresponding to
\&\fIMatrix\fR.
.IP "\fBGetDiagonalValuesAsVector\fR" 4
.IX Item "GetDiagonalValuesAsVector"
.Vb 1
\&    $DiagonalVector = $Matrix\->GetDiagonalValuesAsVector();
.Ve
.Sp
Returns a new \fBDiagonalVector\fR containing diagonal values corresponding to \fIMatrix\fR.
.IP "\fBGetDimension\fR" 4
.IX Item "GetDimension"
.Vb 1
\&    ($NumOfRows, $NumOfCols) = $Matrix\->GetDimension();
.Ve
.Sp
Returns size of \fIMatrix\fR.
.IP "\fBGetMatrixValuesReference\fR" 4
.IX Item "GetMatrixValuesReference"
.Vb 1
\&    $ValuesRef = $Matrix\->GetMatrixValuesReference();
.Ve
.Sp
Returns a reference to array containing rows and column values corresponding to \fIMatrix\fR.
.IP "\fBGetNumOfColumns\fR" 4
.IX Item "GetNumOfColumns"
.Vb 1
\&    $NumOfCols = $Matrix\->GetNumOfColumns();
.Ve
.Sp
Returns \fBNumOfCols\fR in \fIMatrix\fR.
.IP "\fBGetNumOfRows\fR" 4
.IX Item "GetNumOfRows"
.Vb 1
\&    $NumOfRows = $Matrix\->GetNumOfRows();
.Ve
.Sp
Returns \fBNumOfRows\fR in \fIMatrix\fR.
.IP "\fBGetRowValues\fR" 4
.IX Item "GetRowValues"
.Vb 2
\&    @Values = $Matrix\->GetRowValues($RowIndex);
\&    $ValueCount = $Matrix\->GetRowValues($RowIndex);
.Ve
.Sp
Returns an array containing row value specified using \fIRowIndex\fR with row index
starting at 0. In scalar context, number of row values is returned.
.IP "\fBGetRowValuesAsColumnMatrix\fR" 4
.IX Item "GetRowValuesAsColumnMatrix"
.Vb 1
\&    $ColumnMatrix = $Matrix\->GetRowValuesAsColumnMatrix($RowIndex);
.Ve
.Sp
Returns a new \fBColumnMatrix\fR containing row values specified using \fIRowIndex\fR with
column index starting at 0.
.IP "\fBGetRowValuesAsRowMatrix\fR" 4
.IX Item "GetRowValuesAsRowMatrix"
.Vb 1
\&    $RowMatrix = $Matrix\->GetRowValuesAsRowMatrix($RowIndex);
.Ve
.Sp
Returns a new \fBRowMatrix\fR containing row values specified using \fIRowIndex\fR with
row index starting at 0.
.IP "\fBGetRowValuesAsString\fR" 4
.IX Item "GetRowValuesAsString"
.Vb 1
\&    $RowValuesString = $Matrix\->GetRowValuesAsString($RowIndex);
.Ve
.Sp
Returns a space delimited \fBRowValuesString\fR row values specified using \fIRowIndex\fR with
row index starting at 0.
.IP "\fBGetRowValuesAsVector\fR" 4
.IX Item "GetRowValuesAsVector"
.Vb 1
\&    $RowVector = $Matrix\->GetColumnValuesAsVector($RowIndex);
.Ve
.Sp
Returns a new \fBRowVector\fR row values specified using \fIRowIndex\fR with
row index starting at 0.
.IP "\fBGetSize\fR" 4
.IX Item "GetSize"
.Vb 1
\&    ($NumOfRows, $NumOfCols) = $Matrix\->GetSize();
.Ve
.Sp
Returns size of \fIMatrix\fR.
.IP "\fBGetValue\fR" 4
.IX Item "GetValue"
.Vb 1
\&    $Value = $Matrix\->GetValue($RowIndex, $ColIndex, [$SkipIndexCheck]);
.Ve
.Sp
Returns \fBValue\fR of \fIMatrix\fR element specified using \fIRowIndex\fR and \fIColIndex\fR with indicies
starting at 0 with optional validation of specified index values.
.IP "\fBIdentityMatrix\fR" 4
.IX Item "IdentityMatrix"
.Vb 3
\&    $NewIdentityMatrix = $Matrix\->IdentityMatrix($NumOfRows, $NumOfCols);
\&    $NewIdentityMatrix = Matrix::IdentityMatrix($NumOfRows, $NumOfCols);
\&    $NewIdentityMatrix = Matrix::IdentityMatrix();
.Ve
.Sp
Creates a new \fBIdentityMatrix\fR of specified size \fINumOfRows x NumOfCol\fR or of size 3 x 3 and
returns \fBNewIdentityMatrix\fR object.
.IP "\fBIsAntiSymmetric\fR" 4
.IX Item "IsAntiSymmetric"
.Vb 1
\&    $Status = $Matrix\->IsAntiSymmetric();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is an anti symmetric matrix.
.Sp
A matrix is an anti symmetric matrix:
.Sp
.Vb 4
\&    . It\*(Aqs a square matrix
\&    . Its elements are asymmetric with respect to main diagonal. In other words,
\&      elements below the main diagonal are equal to the negative of elements above
\&      the main diagonal.
.Ve
.Sp
Transpose of an anti symmetric matrix equals the negative of the matrix.
.IP "\fBIsBiDiagonal\fR" 4
.IX Item "IsBiDiagonal"
.Vb 1
\&    $Status = $Matrix\->IsBiDiagonal();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is upper or lower bidiagonal matrix.
.IP "\fBIsDiagonal\fR" 4
.IX Item "IsDiagonal"
.Vb 1
\&    $Status = $Matrix\->IsDiagonal();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a diagonal matrix.
.Sp
A matrix is a diagonal matrix:
.Sp
.Vb 3
\&    . It\*(Aqs a square matrix
\&    . All its off\-diagonal elements are zeros and its diagonal elements may or may not
\&      be zeros
.Ve
.IP "\fBIsIdentity\fR" 4
.IX Item "IsIdentity"
.Vb 1
\&    $Status = $Matrix\->IsIdentity();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is an identity matrix.
.IP "\fBIsLeftTriangular\fR" 4
.IX Item "IsLeftTriangular"
.Vb 1
\&    $Status = $Matrix\->IsLeftTriangular();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a left or lower matrix.
.Sp
A matrix is a left triangular matrix:
.Sp
.Vb 2
\&    . It\*(Aqs a square matrix
\&    . All its entries above the main diagonal are zero
.Ve
.IP "\fBIsLowerBiDiagonal\fR" 4
.IX Item "IsLowerBiDiagonal"
.Vb 1
\&    $Status = $Matrix\->IsLowerBiDiagonal();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a lower bidiagonal matrix.
.Sp
A matrix is a lower bidiagonal matrix:
.Sp
.Vb 3
\&    . It\*(Aqs a square matrix
\&    . All its main diagonal and lower diagonal elements are non\-zeros and all its
\&      other elements are zeros
.Ve
.IP "\fBIsLowerTriangular\fR" 4
.IX Item "IsLowerTriangular"
.Vb 1
\&    $Status = $Matrix\->IsLowerTriangular();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a left or lower triangular matrix.
.Sp
A matrix is a lower triangular matrix:
.Sp
.Vb 2
\&    . It\*(Aqs a square matrix
\&    . All its entries above the main diagonal are zero
.Ve
.IP "\fBIsLowerUniTriangular\fR" 4
.IX Item "IsLowerUniTriangular"
.Vb 1
\&    $Status = $Matrix\->IsLowerUniTriangular();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a lower triangular matrix.
.IP "\fBIsMatrix\fR" 4
.IX Item "IsMatrix"
.Vb 1
\&    $Status = Matrix::IsMatrix($Object);
.Ve
.Sp
Returns 1 or 0 based on whether \fIObject\fR is a \fBMatrix\fR object.
.IP "\fBIsNegative\fR" 4
.IX Item "IsNegative"
.Vb 1
\&    $Status = $Matrix\->IsNegative();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a negative matrix containing only values
less than or equal to zero.
.IP "\fBIsPositive\fR" 4
.IX Item "IsPositive"
.Vb 1
\&    $Status = $Matrix\->IsPositive();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a negative matrix containing only values
greater than or equal to zero.
.IP "\fBIsRightTriangular\fR" 4
.IX Item "IsRightTriangular"
.Vb 1
\&    $Status = $Matrix\->IsRightTriangular();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a right or upper triangular matrix.
.IP "\fBIsSkewSymmetric\fR" 4
.IX Item "IsSkewSymmetric"
.Vb 1
\&    $Status = $Matrix\->IsSkewSymmetric();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a skew or anti symmetric matrix.
.IP "\fBIsSquare\fR" 4
.IX Item "IsSquare"
.Vb 1
\&    $Status = $Matrix\->IsSquare();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a square matrix containing equal
number of rows and columns.
.IP "\fBIsStrictlyLowerTriangular\fR" 4
.IX Item "IsStrictlyLowerTriangular"
.Vb 1
\&    $Status = $Matrix\->IsStrictlyLowerTriangular();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a strictly lower triangular matrix.
.Sp
A matrix is a strictly lower triangular matrix:
.Sp
.Vb 2
\&    . It\*(Aqs a square matrix
\&    . All its entries on and above the main diagonal are zero
.Ve
.IP "\fBIsStrictlyUpperTriangular\fR" 4
.IX Item "IsStrictlyUpperTriangular"
.Vb 1
\&    $Status = $Matrix\->IsStrictlyUpperTriangular();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a strictly upper triangular matrix.
.Sp
A matrix is a strictly upper triangular matrix:
.Sp
.Vb 2
\&    . It\*(Aqs a square matrix
\&    . All its entries on and below the main diagonal are zero
.Ve
.IP "\fBIsSymmetric\fR" 4
.IX Item "IsSymmetric"
.Vb 1
\&    $Status = $Matrix\->IsSymmetric();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a symmetric matrix.
.Sp
A matrix is a symmetric matrix:
.Sp
.Vb 4
\&    . It\*(Aqs a square matrix
\&    . Its elements are symmetric with respect to main diagonal. In other words,
\&      elements below the main diagonal are equal to the elements above the main
\&      diagonal.
.Ve
.Sp
Transpose of a symmetric matrix equals the matrix itself.
.IP "\fBIsTriDiagonal\fR" 4
.IX Item "IsTriDiagonal"
.Vb 1
\&    $Status = $Matrix\->IsTriDiagonal();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a tridiagonal matrix.
.Sp
A matrix is a  tribidiagonal matrix:
.Sp
.Vb 3
\&    . It\*(Aqs a square matrix
\&    . All its main diagonal, upper diagonal, and lower diagonal elements are non\-zeros and all its
\&      other elements are zeros
.Ve
.IP "\fBIsUnit\fR" 4
.IX Item "IsUnit"
.Vb 1
\&    $Status = $Matrix\->IsUnit();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a unit matrix.
.Sp
A matrix is a unit matrix:
.Sp
.Vb 2
\&    . It\*(Aqs a square matrix
\&    . All its diagonal elements are ones and its off\-diagonal elements are zeros
.Ve
.IP "\fBIsUnitLowerTriangular\fR" 4
.IX Item "IsUnitLowerTriangular"
.Vb 1
\&    $Status = $Matrix\->IsUnitLowerTriangular();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is an unit lower triangular matrix.
.Sp
A matrix is an unit lower triangular matrix:
.Sp
.Vb 3
\&    . It\*(Aqs a square matrix
\&    . All its entries main diagonal are one
\&    . All its entries above the main diagonal are zero
.Ve
.IP "\fBIsUnitUpperTriangular\fR" 4
.IX Item "IsUnitUpperTriangular"
.Vb 1
\&    $Status = $Matrix\->IsUnitUpperTriangular();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is an unit upper triangular matrix.
.Sp
A matrix is an unit upper triangular matrix:
.Sp
.Vb 3
\&    . It\*(Aqs a square matrix
\&    . All its entries main diagonal are one
\&    . All its entries below the main diagonal are zero
.Ve
.IP "\fBIsUpperBiDiagonal\fR" 4
.IX Item "IsUpperBiDiagonal"
.Vb 1
\&    $Status = $Matrix\->IsUpperBiDiagonal();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is an upper bidiagonal matrix.
.Sp
A matrix is an upper bidiagonal matrix:
.Sp
.Vb 3
\&    . It\*(Aqs a square matrix
\&    . All its main diagonal and upper diagonal elements are non\-zeros and all its
\&      other elements are zeros
.Ve
.IP "\fBIsUpperTriangular\fR" 4
.IX Item "IsUpperTriangular"
.Vb 1
\&    $Status = $Matrix\->IsUpperTriangular();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a right or upper triangular matrix.
.Sp
A matrix is an upper triangular matrix:
.Sp
.Vb 2
\&    . It\*(Aqs a square matrix
\&    . All its entries below the main diagonal are zero
.Ve
.IP "\fBIsUpperUniTriangular\fR" 4
.IX Item "IsUpperUniTriangular"
.Vb 1
\&    $Status = $Matrix\->IsUpperUniTriangular();
.Ve
.Sp
Returns 1 or 0 based on whether \fIMatrix\fR is a right or upper triangular matrix.
.IP "\fBNewFromColumns\fR" 4
.IX Item "NewFromColumns"
.Vb 3
\&    $NewMatrix = Matrix::NewFromColumns($Col1Vector, $Col2Vector, ...);
\&    $NewMatrix = Matrix::NewFromColumns($Col1ValuesRef, $Col2ValuesRef, ...);
\&    $NewMatrix = Matrix::NewFromColumns("Val1 Val2 ...", "Val1 Val2", ...);
\&
\&    $NewMatrix = $Matrix\->NewFromColumns($Col1Vector, $Col2Vector, ...);
\&    $NewMatrix = $Matrix\->NewFromColumns($Col1ValuesRef, $Col2ValuesRef, ...);
\&    $NewMatrix = $Matrix\->NewFromColumns("Val1 Val2 ...", "Val1 Val2", ...);
.Ve
.Sp
Creates a new \fBMatrix\fR using specified column values and returns \fBNewMatrix\fR object.
.Sp
The column values can be specified in one of the following formats:
.Sp
.Vb 3
\&    . List of vector objects
\&    . References to list of values
\&    . List of strings containing columns values delimited by space
.Ve
.Sp
Each column must contain the same number of values.
.IP "\fBNewFromDiagonal\fR" 4
.IX Item "NewFromDiagonal"
.Vb 3
\&    $NewMatrix = Matrix::NewFromDiagonal($DiagonalVector);
\&    $NewMatrix = Matrix::NewFromDiagonal($DiagonalValuesRef);
\&    $NewMatrix = Matrix::NewFromDiagonal("Val1 Val2 ...");
\&
\&    $NewMatrix = Matrix\->NewFromDiagonal($DiagonalVector);
\&    $NewMatrix = Matrix\->NewFromDiagonal($DiagonalValuesRef);
\&    $NewMatrix = Matrix\->NewFromDiagonal("Val1 Val2 ...");
.Ve
.Sp
Creates a new \fBMatrix\fR using specified diagonal values and returns \fBNewMatrix\fR object.
.Sp
The column values can be specified in one of the following formats:
.Sp
.Vb 3
\&    . A vector object
\&    . Reference to list of values
\&    . Strings containing diagonal values delimited by space
.Ve
.IP "\fBNewFromRows\fR" 4
.IX Item "NewFromRows"
.Vb 3
\&    $NewMatrix = Matrix::NewFromRows($Row1Vector, $RowVector, ...);
\&    $NewMatrix = Matrix::NewFromRows($Row1ValuesRef, $Row2ValuesRef, ...);
\&    $NewMatrix = Matrix::NewFromRows("Val1 Val2 ...", "Val1 Val2", ...);
\&
\&    $NewMatrix = $Matrix\->NewFromRows($Row1Vector, $Row2Vector, ...);
\&    $NewMatrix = $Matrix\->NewFromRows($Row1ValuesRef, $Row2ValuesRef, ...);
\&    $NewMatrix = $Matrix\->NewFromRows("Val1 Val2 ...", "Val1 Val2", ...);
.Ve
.Sp
Creates a new \fBMatrix\fR using specified row values and returns \fBNewMatrix\fR object.
.Sp
The row values can be specified in one of the following formats:
.Sp
.Vb 3
\&    . List of vector objects
\&    . References to list of values
\&    . List of strings containing columns values delimited by space
.Ve
.Sp
Each row must contain the same number of values.
.IP "\fBOne\fR" 4
.IX Item "One"
.Vb 1
\&    $Matrix\->One();
.Ve
.Sp
Sets values of all \fIMatrix\fR elements to 1 and returns \fIMatrix\fR.
.IP "\fBSetAllValues\fR" 4
.IX Item "SetAllValues"
.Vb 1
\&    $Matrix\->SetAllValues($Value);
.Ve
.Sp
Sets values of all \fIMatrix\fR elements to specified \fIValue\fR and returns \fIMatrix\fR.
.IP "\fBSetColumnValues\fR" 4
.IX Item "SetColumnValues"
.Vb 4
\&    $Matrix\->SetColumnValues($ColIndex, @Values);
\&    $Matrix\->SetColumnValues($ColIndex, \e@Values);
\&    $Matrix\->SetColumnValues($ColIndex, $VectorObject);
\&    $Matrix\->SetColumnValues($ColIndex, "Value1 Value2 Value3 ...");
.Ve
.Sp
Sets column values of a specified \fIColIndex\fR of \fIMatrix\fR using an array, reference to an array,
another vector, or space delimited value string and returns \fIMatrix\fR.
.IP "\fBSetDiagonalValues\fR" 4
.IX Item "SetDiagonalValues"
.Vb 4
\&    $Matrix\->SetDiagonalValues(@Values);
\&    $Matrix\->SetDiagonalValues(\e@Values);
\&    $Matrix\->SetDiagonalValues($VectorObject);
\&    $Matrix\->SetDiagonalValues("Value1 Value2 Value3 ...");
.Ve
.Sp
Sets values of the diagonal in square \fIMatrix\fR and returns \fIMatrix\fR.
.IP "\fBSetMatrixPrintStyle\fR" 4
.IX Item "SetMatrixPrintStyle"
.Vb 2
\&    $Matrix\->SetMatrixPrintStyle($MatrixStyle);
\&    $Matrix::SetMatrixPrintStyle($MatrixStyle);
.Ve
.Sp
Sets print style for matrix rows for an individual object or the whole class during StringifyMatrix
operation. Possible \fIMatrixStyle\fR values: \fIAllRowsInOneLine, OneRowPerLine\fR. Default:
\&\fIAllRowsInOneLine\fR.
.IP "\fBSetRowValues\fR" 4
.IX Item "SetRowValues"
.Vb 4
\&    $Matrix\->SetRowValues($ColIndex, @Values);
\&    $Matrix\->SetRowValues($ColIndex, \e@Values);
\&    $Matrix\->SetRowValues($ColIndex, $VectorObjext);
\&    $Matrix\->SetRowValues($ColIndex, "Value1 Value2 Value3 ...");
.Ve
.Sp
Sets row values of a specified \fIRowIndex\fR of \fIMatrix\fR using an array, reference to an array,
another vector, or space delimited value string and returns \fIMatrix\fR.
.IP "\fBSetValue\fR" 4
.IX Item "SetValue"
.Vb 1
\&    $Matrix\->SetValue($RowIndex, $ColIndex, $Value, [$SkipIndexCheck]);
.Ve
.Sp
Sets \fBValue\fR of \fIMatrix\fR element specified using \fIRowIndex\fR and \fIColIndex\fR with indicies
starting at 0 with optional validation of specified index values and return \fIMatrix\fR.
.IP "\fBSetValuePrintFormat\fR" 4
.IX Item "SetValuePrintFormat"
.Vb 2
\&    $Matrix\->SetValuePrintFormat($ValueFormat);
\&    $Matrix::SetValuePrintFormat($ValueFormat);
.Ve
.Sp
Sets value print format for an individual object or the whole class during StringifyMatrix operation
and returns \fIMatrix\fR.
.IP "\fBStringifyMatrix\fR" 4
.IX Item "StringifyMatrix"
.Vb 1
\&    $String = $Matrix\->StringifyMatrix();
.Ve
.Sp
Returns a string containing information about \fIMatrix\fR object.
.IP "\fBTranspose\fR" 4
.IX Item "Transpose"
.Vb 1
\&    $Matrix\->Transpose();
.Ve
.Sp
Transposes \fIMatrix\fR by swaping rows with columns and returns \fIMatrix\fR.
.IP "\fBUnitMatrix\fR" 4
.IX Item "UnitMatrix"
.Vb 3
\&    $NewUnitMatrix = $Matrix::UnitMatrix($NumOfRows, $NumOfCols);
\&    $NewUnitMatrix = $Matrix::UnitMatrix();
\&    $NewUnitMatrix = $Matrix\->UnitMatrix($NumOfRows, $NumOfCols);
.Ve
.Sp
Creates a new \fBUnitMatrix\fR of specified size \fINumOfRows x NumOfCol\fR or of size 3 x 3 and
returns \fBNewUnitMatrix\fR object.
.IP "\fBZero\fR" 4
.IX Item "Zero"
.Vb 1
\&    $Matrix\->Zero();
.Ve
.Sp
Sets values of all \fIMatrix\fR elements to 0 and returns \fIMatrix\fR.
.IP "\fBZeroMatrix\fR" 4
.IX Item "ZeroMatrix"
.Vb 3
\&    $NewZeroMatrix = $Matrix::ZeroMatrix($NumOfRows, $NumOfCols);
\&    $NewZeroMatrix = $Matrix::ZeroMatrix();
\&    $NewZeroMatrix = $Matrix\->ZeroMatrix($NumOfRows, $NumOfCols);
.Ve
.Sp
Creates a new \fBZeroMatrix\fR of specified size \fINumOfRows x NumOfCol\fR or of size 3 x 3 and
returns \fBNewZeroMatrix\fR object.
.SH "AUTHOR"
.IX Header "AUTHOR"
Manish Sud <msud@san.rr.com>
.SH "SEE ALSO"
.IX Header "SEE ALSO"
Vector.pm
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright (C) 2015 Manish Sud. All rights reserved.
.PP
This file is part of MayaChemTools.
.PP
MayaChemTools is free software; you can redistribute it and/or modify it under
the terms of the \s-1GNU\s0 Lesser General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option)
any later version.