|
Prev | Next |
# include <cppad/speed/mat_sum_sq.hpp>
mat_sum_sq(n, x, y, z)
\[
\begin{array}{rcl}
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{array}
\]
see link_mat_mul
.
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).
It is only intended for example and testing purposes,
so it is not automatically included by
cppad.hpp
.
size_t n
It specifies the size of the matrices.
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
has prototype
Vector& y
and
y.size() == n * n
.
The input value of its elements does not matter.
Upon return,
\[
\begin{array}{rcl}
y_{i,j} & = & \sum_{k=0}^{n-1} x_{i,k} x_{k,j}
\\
y[ i * n + j ] & = & y_{i,j}
\end{array}
\]
d
has prototype
Vector& z
.
The input value of its element does not matter.
Upon return
\[
\begin{array}{rcl}
z_0 & = & \sum_{i=0}^{n-1} \sum_{j=0}^n y_{i,j}
\\
z[0] & = & z_0
\end{array}
\]
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.
mat_sum_sq.hpp.
It returns true if it succeeds and false otherwise.