mat_sum_sq

View page source

Sum Elements of a Matrix Times Itself

Syntax

# include <cppad/speed/mat_sum_sq.hpp>

mat_sum_sq ( n , x , y , z )

Purpose

This routine is intended for use with the matrix multiply speed tests; to be specific, it computes

\begin{eqnarray} y_{i,j} & = & \sum_{k=0}^{n-1} x_{i,k} x_{k,j} \\ z_0 & = & \sum_{i=0}^{n-1} \sum_{j=0}^{n-1} y_{i,j} \end{eqnarray}

see link_mat_mul .

Inclusion

The template function mat_sum_sq is defined in the CppAD namespace by including the file cppad/speed/mat_sum_sq.hpp (relative to the CppAD distribution directory).

n

This argument has prototype

size_t n

It specifies the size of the matrices.

x

The argument x has prototype

const Vector & x

and x . size () == n * n . It contains the elements of \(x\) in row major order; i.e.,

\[x_{i,j} = x [ i * n + j ]\]

y

The argument y has prototype

Vector & y

and y . size () == n * n . The input value of its elements does not matter. Upon return,

\begin{eqnarray} y_{i,j} & = & \sum_{k=0}^{n-1} x_{i,k} x_{k,j} \\ y[ i * n + j ] & = & y_{i,j} \end{eqnarray}

z

The argument d has prototype

Vector & z

. The input value of its element does not matter. Upon return

\begin{eqnarray} z_0 & = & \sum_{i=0}^{n-1} \sum_{j=0}^n y_{i,j} \\ z[0] & = & z_0 \end{eqnarray}

Vector

The type Vector is any SimpleVector , or it can be a raw pointer to the vector elements. The element type must support addition, multiplication, and assignment to both its own type and to a double value.

Example

The file mat_sum_sq.cpp contains an example and test of mat_sum_sq.hpp .

Source Code

The file mat_sum_sq.hpp contains the source for this template function.