lines 8-126 of file: include/cppad/speed/mat_sum_sq.hpp {xrst_begin mat_sum_sq} Sum Elements of a Matrix Times Itself ##################################### Syntax ****** # ``include `` *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 .. math:: :nowrap: \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 :ref:`link_mat_mul-name` . 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 :math:`x` in row major order; i.e., .. math:: 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, .. math:: :nowrap: \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 .. math:: :nowrap: \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 :ref:`SimpleVector-name` , 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. {xrst_toc_hidden speed/example/mat_sum_sq.cpp xrst/mat_sum_sq_hpp.xrst } Example ******* The file :ref:`mat_sum_sq.cpp-name` contains an example and test of ``mat_sum_sq.hpp`` . Source Code *********** The file :ref:`mat_sum_sq.hpp-name` contains the source for this template function. {xrst_end mat_sum_sq}