/**
\addtogroup arrayfire_func
@{
\defgroup blas_func_dot dot

\ingroup blas_mat

\brief Calculate the dot product of a vector

Scalar dot product between two vectors.  Also referred to as the inner
product.

=======================================================================

\defgroup blas_func_matmul matmul
\ingroup blas_mat

\brief Matrix multiplication using array

Performs a matrix multiplication on the two input arrays after performing the
operations specified in the options. The operations are done while reading the
data from memory. This results in no additional memory being used for temporary
buffers.

Batched matrix multiplications are supported. Given below are the supported
types of batch operations for any given set of two matrices A and B.

| Size of Input Matrix A     | Size of Input Matrix B     | Output Matrix Size          |
|:--------------------------:|:--------------------------:|:---------------------------:|
| \f$ \{ M, K,  1,  1 \} \f$ | \f$ \{ K, N,  1,  1 \} \f$ |  \f$ \{ M, N,  1,  1 \} \f$ |
| \f$ \{ M, K, b2, b3 \} \f$ | \f$ \{ K, N, b2, b3 \} \f$ |  \f$ \{ M, N, b2, b3 \} \f$ |
| \f$ \{ M, K,  1,  1 \} \f$ | \f$ \{ K, N, b2, b3 \} \f$ |  \f$ \{ M, N, b2, b3 \} \f$ |
| \f$ \{ M, K, b2, b3 \} \f$ | \f$ \{ K, N,  1,  1 \} \f$ |  \f$ \{ M, N, b2, b3 \} \f$ |

where M, K, N are dimensions of the matrix and b2, b3 indicate batch size along the
respective dimension.

For the last two entries in the above table, the 2D matrix is broadcasted to
match the dimensions of 3D/4D array. This broadcast doesn't involve any additional
memory allocations either on host or device.

\note Sparse support was added to ArrayFire in v3.4.0. This function can be used
for Sparse-Dense matrix multiplication. See the notes of the function for usage
and restrictions.


=======================================================================

\defgroup blas_func_transpose transpose
\ingroup blas_mat
\ingroup manip_mat

\brief Transpose a matrix.

Reverse or permute the dimensions of an array; returns the modified array.
For an array a with two dimensions, `transpose(a)` gives the matrix transpose.
For an array with more than two dimensions, the first two dimensions are
transposed across higher dimensions.

Set `conjugate=true` to perform the complex conjugate transpose of a matrix
which interchanges the row and column index for each element, reflecting the
elements across the main diagonal and negating the imaginary part of any
complex numbers. For example, if `b = transpose(a, true)` and element
`a(2, 1)` is `(1, 2)`, then element `b(1, 2)` is `(1, -2)`.

In-place versions perform matrix transposition by reordering the input,
reducing memory footprint.

__Examples:__

\snippet test/transpose.cpp ex_blas_func_transpose

=======================================================================

@}
*/
