Skip to contents

Computes t(lhs) %*% rhs. If rhs is missing, computes t(lhs) %*% lhs. Above rank 2 the last two axes are the matrix and the leading ones are batch axes, as in nv_matmul(): only the matrix is transposed.

Usage

nv_crossprod(lhs, rhs = NULL)

# S3 method for class 'AnvlArray'
crossprod(x, y = NULL, ...)

Arguments

lhs

(arrayish)
An array with at least 2 axes, as for base::crossprod(). Can be any numeric data type; lhs and rhs are promoted to a common data type.

rhs

(arrayish | NULL)
Optional second array. If NULL, uses lhs.

x, y

Same as lhs and rhs; the names used by the base R S3 generic.

...

No additional arguments.

Value

(arrayish)
Has the operands' common data type, and the shape of t(lhs) %*% rhs.

Examples

# `t(x) %*% x`, so a 3x2 gives a 2x2
x <- nv_matrix(1:6, nrow = 3, dtype = "f32")
nv_crossprod(x)
#> AnvlArray
#>  14 32
#>  32 77
#> [ CPUf32{2,2} ]