Examples for 'Matrix::isTriangular'


Test whether a Matrix is Triangular or Diagonal

Aliases: isTriangular isTriangular-methods isDiagonal isDiagonal-methods isTriangular,diagonalMatrix-method isTriangular,indMatrix-method isTriangular,matrix-method isTriangular,symmetricMatrix-method isTriangular,triangularMatrix-method isDiagonal,CsparseMatrix-method isDiagonal,RsparseMatrix-method isDiagonal,TsparseMatrix-method isDiagonal,diagonalMatrix-method isDiagonal,indMatrix-method isDiagonal,matrix-method isDiagonal,packedMatrix-method isDiagonal,unpackedMatrix-method isTriangular,dgCMatrix-method isTriangular,dgRMatrix-method isTriangular,dgTMatrix-method isTriangular,dgeMatrix-method isTriangular,lgCMatrix-method isTriangular,lgRMatrix-method isTriangular,lgTMatrix-method isTriangular,lgeMatrix-method isTriangular,ngCMatrix-method isTriangular,ngRMatrix-method isTriangular,ngTMatrix-method isTriangular,ngeMatrix-method

Keywords: methods

### ** Examples

isTriangular(Diagonal(4))
[1] TRUE
attr(,"kind")
[1] "U"
## is TRUE: a diagonal matrix is also (both upper and lower) triangular
(M <- Matrix(c(1,2,0,1), 2,2))
2 x 2 Matrix of class "dtrMatrix"
     [,1] [,2]
[1,]    1    .
[2,]    2    1
isTriangular(M) # TRUE (*and* of formal class "dtrMatrix")
[1] TRUE
attr(,"kind")
[1] "L"
isTriangular(as(M, "generalMatrix")) # still triangular, even if not "formally"
[1] TRUE
attr(,"kind")
[1] "L"
isTriangular(crossprod(M)) # FALSE
[1] FALSE
isDiagonal(matrix(c(2,0,0,1), 2,2)) # TRUE
[1] TRUE
## Look at implementations:
showMethods("isTriangular", includeDefs = TRUE)
Function: isTriangular (package Matrix)
object="dgCMatrix"
function (object, upper = NA, ...) 
.Call(Csparse_is_triangular, object, upper)


object="dgeMatrix"
function (object, upper = NA, ...) 
.Call(unpackedMatrix_is_triangular, object, upper)


object="dgRMatrix"
function (object, upper = NA, ...) 
.Call(Rsparse_is_triangular, object, upper)


object="dgTMatrix"
function (object, upper = NA, ...) 
.Call(Tsparse_is_triangular, object, upper)


object="diagonalMatrix"
function (object, upper = NA, ...) 
if (is.na(upper)) `attr<-`(TRUE, "kind", "U") else TRUE


object="indMatrix"
function (object, upper = NA, ...) 
{
    d <- object@Dim
    if ((n <- d[1L]) != d[2L]) 
        return(FALSE)
    i <- seq_len(n)
    j <- object@perm
    if (is.na(upper)) {
        if (all(j >= i)) 
            return(`attr<-`(TRUE, "kind", "U"))
        if (all(i <= j)) 
            return(`attr<-`(TRUE, "kind", "L"))
        FALSE
    }
    else if (upper) {
        all(j >= i)
    }
    else {
        all(i <= j)
    }
}


object="lgCMatrix"
function (object, upper = NA, ...) 
.Call(Csparse_is_triangular, object, upper)


object="lgeMatrix"
function (object, upper = NA, ...) 
.Call(unpackedMatrix_is_triangular, object, upper)


object="lgRMatrix"
function (object, upper = NA, ...) 
.Call(Rsparse_is_triangular, object, upper)


object="lgTMatrix"
function (object, upper = NA, ...) 
.Call(Tsparse_is_triangular, object, upper)


object="matrix"
function (object, upper = NA, ...) 
.Call(matrix_is_triangular, object, upper)


object="ngCMatrix"
function (object, upper = NA, ...) 
.Call(Csparse_is_triangular, object, upper)


object="ngeMatrix"
function (object, upper = NA, ...) 
.Call(unpackedMatrix_is_triangular, object, upper)


object="ngRMatrix"
function (object, upper = NA, ...) 
.Call(Rsparse_is_triangular, object, upper)


object="ngTMatrix"
function (object, upper = NA, ...) 
.Call(Tsparse_is_triangular, object, upper)


object="symmetricMatrix"
function (object, upper = NA, ...) 
{
    if (!isDiagonal(object)) 
        FALSE
    else if (is.na(upper)) 
        `attr<-`(TRUE, "kind", "U")
    else TRUE
}


object="triangularMatrix"
function (object, upper = NA, ...) 
{
    if (is.na(upper)) 
        `attr<-`(TRUE, "kind", object@uplo)
    else object@uplo == (if (upper) 
        "U"
    else "L") || isDiagonal(object)
}
showMethods("isDiagonal", includeDefs = TRUE)
Function: isDiagonal (package Matrix)
object="CsparseMatrix"
function (object) 
.Call(Csparse_is_diagonal, object)


object="diagonalMatrix"
function (object) 
TRUE


object="indMatrix"
function (object) 
{
    d <- object@Dim
    if ((n <- d[1L]) != d[2L]) 
        return(FALSE)
    all(object@perm == seq_len(n))
}


object="matrix"
function (object) 
.Call(matrix_is_diagonal, object)


object="packedMatrix"
function (object) 
.Call(packedMatrix_is_diagonal, object)


object="RsparseMatrix"
function (object) 
.Call(Rsparse_is_diagonal, object)


object="TsparseMatrix"
function (object) 
.Call(Tsparse_is_diagonal, object)


object="unpackedMatrix"
function (object) 
.Call(unpackedMatrix_is_diagonal, object)

[Package Matrix version 1.5-3 Index]