R: Matrix multiplication envolving the commutation matrix

comm.prod {fastmatrix} | R Documentation

## Matrix multiplication envolving the commutation matrix

### Description

Given the row and column dimension of a commutation and matrix `x`, performs one of the matrix-matrix operations:

- \bold{Y} = \bold{KX}, if `side = "left"` and `transposed = FALSE`, or

- \bold{Y} = \bold{K}^T\bold{X}, if `side = "left"` and `transposed = TRUE`, or

- \bold{Y} = \bold{XK}, if `side = "right"` and `transposed = FALSE`, or

- \bold{Y} = \bold{XK}^T, if `side = "right"` and `transposed = TRUE`,

where \bold{K} is the commutation matrix of order mn. The main aim of `comm.prod` is to do this matrix multiplication without forming the commutation matrix.

### Usage

    comm.prod(m = 1, n = m, x = NULL, transposed = FALSE, side = "left")

### Arguments

`m` | a positive integer row dimension.
`n` | a positive integer column dimension.
`x` | numeric matrix (or vector).
`transposed` | logical. Commutation matrix should be transposed?
`side` | a string selecting if commutation matrix is pre-multiplying `x`, that is `side = "left"` or post-multiplying `x`, by using `side = "right"`.

### Details

Underlying `Fortran` code only uses information provided by `comm.info` to performs the matrix multiplication. The commutation matrix is never created.

### See Also

`commutation`

### Examples

    K42 <- commutation(m = 4, n = 2, matrix = TRUE)
    x <- matrix(1:24, ncol = 3)
    y <- K42 %*% x

    z <- comm.prod(m = 4, n = 2, x) # K42 is not stored
    all(z == y) # matrices y and z are equal!

[Package fastmatrix version 0.3-8196 Index]