5.5 Dot products and specialized products
real
dot_product
(vector x, vector y)
The dot product of x and y
real
dot_product
(vector x, row_vector y)
The dot product of x and y
real
dot_product
(row_vector x, vector y)
The dot product of x and y
real
dot_product
(row_vector x, row_vector y)
The dot product of x and y
row_vector
columns_dot_product
(vector x, vector y)
The dot product of the columns of x and y
row_vector
columns_dot_product
(row_vector x, row_vector y)
The dot product of the columns of x and y
row_vector
columns_dot_product
(matrix x, matrix y)
The dot product of the columns of x and y
vector
rows_dot_product
(vector x, vector y)
The dot product of the rows of x and y
vector
rows_dot_product
(row_vector x, row_vector y)
The dot product of the rows of x and y
vector
rows_dot_product
(matrix x, matrix y)
The dot product of the rows of x and y
real
dot_self
(vector x)
The dot product of the vector x with itself
real
dot_self
(row_vector x)
The dot product of the row vector x with itself
row_vector
columns_dot_self
(vector x)
The dot product of the columns of x with themselves
row_vector
columns_dot_self
(row_vector x)
The dot product of the columns of x with themselves
row_vector
columns_dot_self
(matrix x)
The dot product of the columns of x with themselves
vector
rows_dot_self
(vector x)
The dot product of the rows of x with themselves
vector
rows_dot_self
(row_vector x)
The dot product of the rows of x with themselves
vector
rows_dot_self
(matrix x)
The dot product of the rows of x with themselves
5.5.1 Specialized products
matrix
tcrossprod
(matrix x)
The product of x postmultiplied by its own transpose, similar to the
tcrossprod(x) function in R. The result is a symmetric matrix
\(\text{x}\,\text{x}^{\top}\).
matrix
crossprod
(matrix x)
The product of x premultiplied by its own transpose, similar to the
crossprod(x) function in R. The result is a symmetric matrix
\(\text{x}^{\top}\,\text{x}\).
The following functions all provide shorthand forms for common expressions, which are also much more efficient.
matrix
quad_form
(matrix A, matrix B)
The quadratic form, i.e., B' * A * B
.
real
quad_form
(matrix A, vector B)
The quadratic form, i.e., B' * A * B
.
matrix
quad_form_diag
(matrix m, vector v)
The quadratic form using the column vector v as a diagonal matrix,
i.e., diag_matrix(v) * m * diag_matrix(v)
.
matrix
quad_form_diag
(matrix m, row_vector rv)
The quadratic form using the row vector rv as a diagonal matrix, i.e.,
diag_matrix(rv) * m * diag_matrix(rv)
.
matrix
quad_form_sym
(matrix A, matrix B)
Similarly to quad_form, gives B' * A * B
, but additionally checks if
A is symmetric and ensures that the result is also symmetric.
real
quad_form_sym
(matrix A, vector B)
Similarly to quad_form, gives B' * A * B
, but additionally checks if
A is symmetric and ensures that the result is also symmetric.
real
trace_quad_form
(matrix A, matrix B)
The trace of the quadratic form, i.e., trace(B' * A * B)
.
real
trace_gen_quad_form
(matrix D,matrix A, matrix B)
The trace of a generalized quadratic form, i.e., trace(D * B' * A * B).
matrix
multiply_lower_tri_self_transpose
(matrix x)
The product of the lower triangular portion of x (including the
diagonal) times its own transpose; that is, if L
is a matrix of the
same dimensions as x with L(m,n)
equal to x(m,n)
for \(\text{n} \leq \text{m}\) and L(m,n)
equal to 0 if \(\text{n} > \text{m}\), the
result is the symmetric matrix \(\text{L}\,\text{L}^{\top}\). This is a
specialization of tcrossprod(x) for lower-triangular matrices. The
input matrix does not need to be square.
matrix
diag_pre_multiply
(vector v, matrix m)
Return the product of the diagonal matrix formed from the vector v and
the matrix m, i.e., diag_matrix(v) * m
.
matrix
diag_pre_multiply
(row_vector rv, matrix m)
Return the product of the diagonal matrix formed from the vector rv
and the matrix m, i.e., diag_matrix(rv) * m
.
matrix
diag_post_multiply
(matrix m, vector v)
Return the product of the matrix m and the diagonal matrix formed from
the vector v, i.e., m * diag_matrix(v)
.
matrix
diag_post_multiply
(matrix m, row_vector rv)
Return the product of the matrix m
and the diagonal matrix formed
from the the row vector rv
, i.e., m * diag_matrix(rv)
.