R/trace.r

#' @title Trace of a square matrix
#' @description calculates the trace of a square matrix
#' @param x square numeric matrix
#' @export trace_matrix tr
#' @aliases trace_matrix tr
#' @examples
#' # a square matrix
#' set.seed(5)
#' M = matrix(runif(9), 3, 3)
#' 
#' # trace
#' trace_matrix(M)
#' 
#' # synonym function
#' tr(M)
trace_matrix <- function(x)
{
  if (is_not_square_numeric_matrix(x)) {
    if (is_scalar(x)) {
      return(x)
    } else {
      stop("\n'trace_matrix()' requires a square numeric matrix")      
    }
  }
  
  # output
  sum(diag(x))
}

tr <- function(x) {
  trace_matrix(x)
}
gastonstat/matrixkit documentation built on May 16, 2019, 5:45 p.m.