\hypertarget{ddss__dsymm_8c}{}\section{src/ddss\+\_\+dsymm.c File Reference}
\label{ddss__dsymm_8c}\index{src/ddss\+\_\+dsymm.\+c@{src/ddss\+\_\+dsymm.\+c}}


L\+A\+Ss-\/\+D\+D\+Ss ddss\+\_\+dsymm routine.  


{\ttfamily \#include \char`\"{}../include/lass.\+h\char`\"{}}\\*
Include dependency graph for ddss\+\_\+dsymm.\+c\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{ddss__dsymm_8c__incl}
\end{center}
\end{figure}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
int \hyperlink{ddss__dsymm_8c_ac44ec86fd98b217ac8a71c84b1aa5f14}{ddss\+\_\+dsymm} (enum D\+D\+S\+S\+\_\+\+S\+I\+DE S\+I\+DE, enum D\+D\+S\+S\+\_\+\+U\+P\+LO U\+P\+LO, int M, int N, double A\+L\+P\+HA, double $\ast$A, int L\+DA, double $\ast$B, int L\+DB, double B\+E\+TA, double $\ast$C, int L\+DC)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
L\+A\+Ss-\/\+D\+D\+Ss ddss\+\_\+dsymm routine. 

L\+A\+Ss-\/\+D\+D\+Ss is a software package provided by\+: Barcelona Supercomputing Center -\/ Centro Nacional de Supercomputacion

\begin{DoxyAuthor}{Author}
Pedro Valero-\/\+Lara \href{mailto:pedro.valero@bsc.es}{\tt pedro.\+valero@bsc.\+es} 
\end{DoxyAuthor}
\begin{DoxyDate}{Date}
2017-\/07-\/11   
\end{DoxyDate}


\subsection{Function Documentation}
\index{ddss\+\_\+dsymm.\+c@{ddss\+\_\+dsymm.\+c}!ddss\+\_\+dsymm@{ddss\+\_\+dsymm}}
\index{ddss\+\_\+dsymm@{ddss\+\_\+dsymm}!ddss\+\_\+dsymm.\+c@{ddss\+\_\+dsymm.\+c}}
\subsubsection[{\texorpdfstring{ddss\+\_\+dsymm(enum D\+D\+S\+S\+\_\+\+S\+I\+D\+E S\+I\+D\+E, enum D\+D\+S\+S\+\_\+\+U\+P\+L\+O U\+P\+L\+O, int M, int N, double A\+L\+P\+H\+A, double $\ast$\+A, int L\+D\+A, double $\ast$\+B, int L\+D\+B, double B\+E\+T\+A, double $\ast$\+C, int L\+D\+C)}{ddss_dsymm(enum DDSS_SIDE SIDE, enum DDSS_UPLO UPLO, int M, int N, double ALPHA, double *A, int LDA, double *B, int LDB, double BETA, double *C, int LDC)}}]{\setlength{\rightskip}{0pt plus 5cm}int ddss\+\_\+dsymm (
\begin{DoxyParamCaption}
\item[{enum D\+D\+S\+S\+\_\+\+S\+I\+DE}]{S\+I\+DE, }
\item[{enum D\+D\+S\+S\+\_\+\+U\+P\+LO}]{U\+P\+LO, }
\item[{int}]{M, }
\item[{int}]{N, }
\item[{double}]{A\+L\+P\+HA, }
\item[{double $\ast$}]{A, }
\item[{int}]{L\+DA, }
\item[{double $\ast$}]{B, }
\item[{int}]{L\+DB, }
\item[{double}]{B\+E\+TA, }
\item[{double $\ast$}]{C, }
\item[{int}]{L\+DC}
\end{DoxyParamCaption}
)}\hypertarget{ddss__dsymm_8c_ac44ec86fd98b217ac8a71c84b1aa5f14}{}\label{ddss__dsymm_8c_ac44ec86fd98b217ac8a71c84b1aa5f14}
Performs one of the matrix-\/matrix operations\+: \begin{DoxyVerb}C = ALPHA * A * B + BETA * C
\end{DoxyVerb}
 or \begin{DoxyVerb}C = ALPHA * B * A + BETA * C
\end{DoxyVerb}


where op( X ) is one of\+: \begin{DoxyVerb}op( X ) = X      or
op( X ) = X**T 
\end{DoxyVerb}


A\+L\+P\+HA and B\+E\+TA are scalars, A is a symmetric matrix, and B and C are M by N matrices.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em S\+I\+DE} & enum D\+D\+S\+S\+\_\+\+S\+I\+DE. U\+P\+LO specifies the position of the symmetric A matrix in the operation\+:
\begin{DoxyItemize}
\item Left\+: C = A\+L\+P\+HA $\ast$ A $\ast$ B + B\+E\+TA $\ast$ C
\item Right\+: C = A\+L\+P\+HA $\ast$ B $\ast$ A + B\+E\+TA $\ast$ C
\end{DoxyItemize}\\
\hline
\mbox{\tt in}  & {\em U\+P\+LO} & enum D\+D\+S\+S\+\_\+\+U\+P\+LO. U\+P\+LO specifies the form of A is stored\+:
\begin{DoxyItemize}
\item Lower\+: Lower triangle of A is stored. The upper traingular part is not referenced.
\item Upper\+: Upper triangle of A is stored. The lower triangular part is not referenced.
\end{DoxyItemize}\\
\hline
\mbox{\tt in}  & {\em M} & int. M specifies the number of rows of the matrix C. M must be equal or greater than zero.\\
\hline
\mbox{\tt in}  & {\em N} & int. N specifies the number of columns of the matrix C. N must be equal or greater than zero.\\
\hline
\mbox{\tt in}  & {\em A\+L\+P\+HA} & double.\\
\hline
\mbox{\tt in}  & {\em A} & double $\ast$. A is a pointer to a matrix of dimension Ma ( rows ) by Na (columns), where Ma is M and Na is M when S\+I\+DE = Left, and Ma is N and Na is N when S\+I\+DE = Right\\
\hline
\mbox{\tt in}  & {\em L\+DA} & int. L\+DA specifies the number of columns of A ( row-\/major order ). L\+DA must be at least max( 1, Na ).\\
\hline
\mbox{\tt in}  & {\em B} & double $\ast$. B is a pointer to a matrix of dimension M by N.\\
\hline
\mbox{\tt in}  & {\em L\+DB} & int. L\+DB specifies the number of columns of B ( row-\/major order ). L\+DB must be at least max( 1, N ).\\
\hline
\mbox{\tt in}  & {\em B\+E\+TA} & double.\\
\hline
\mbox{\tt in,out}  & {\em C} & double $\ast$. C is a pointer to a matrix of dimension M by N. On exit, C is overwritten by the M by N matrix.\\
\hline
\mbox{\tt in}  & {\em L\+DC} & int. L\+DC specifies the number of columns of C ( row-\/major order ). L\+DC must be at least max( 1, N ).\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em Success} & successful exit \\
\hline
{\em No\+Success} & unsuccessful exit\\
\hline
\end{DoxyRetVals}
\begin{DoxySeeAlso}{See also}
\hyperlink{lass_8h_a90d0704ec71cf332ce1c55aa29904456}{kdsymm} 
\end{DoxySeeAlso}


Definition at line 120 of file ddss\+\_\+dsymm.\+c.



References kdsymm().


\begin{DoxyCode}
125 \{
126 
127     \textcolor{comment}{// Local variables}
128     \textcolor{keywordtype}{int} nA;
129 
130     \textcolor{comment}{// Argument checking}
131     \textcolor{keywordflow}{if} ( ( SIDE != Left ) && ( SIDE != Right ) )
132     \{
133         fprintf( stderr, \textcolor{stringliteral}{"Illegal value of SIDE, in ddss\_dsymm code\(\backslash\)n"} );
134         \textcolor{keywordflow}{return} NoSuccess;
135     \}
136     
137     \textcolor{keywordflow}{if} ( ( UPLO != Upper ) && ( UPLO != Lower ) )
138     \{
139         fprintf( stderr, \textcolor{stringliteral}{"Illegal value of UPLO, in ddss\_dsymm code\(\backslash\)n"} );
140         \textcolor{keywordflow}{return} NoSuccess;
141     \}
142 
143     \textcolor{keywordflow}{if} ( M < 0 )
144     \{
145         fprintf( stderr, \textcolor{stringliteral}{"Illegal value of M, in ddss\_dsymm code\(\backslash\)n"} );
146         \textcolor{keywordflow}{return} NoSuccess;
147     \}
148     
149     \textcolor{keywordflow}{if} ( N < 0 )
150     \{
151         fprintf( stderr, \textcolor{stringliteral}{"Illegal value of N, in ddss\_dsymm code\(\backslash\)n"} );
152         \textcolor{keywordflow}{return} NoSuccess;
153     \}
154 
155     \textcolor{comment}{// Quick return}
156     \textcolor{keywordflow}{if} ( M == 0 || N == 0 || ( ALPHA == 0.0 && BETA == 1.0 ) )
157     \{
158         \textcolor{keywordflow}{return} Success;
159     \}
160 
161     \textcolor{keywordflow}{if} ( SIDE == Left )
162     \{
163         nA = M;
164     \}
165     \textcolor{keywordflow}{else}
166     \{
167         nA = N;
168     \}   
169 
170     \textcolor{keywordflow}{if} ( LDA < MAX( 1, nA ) )
171     \{
172         fprintf( stderr, \textcolor{stringliteral}{"Illegal value of LDA, in ddss\_dsymm code\(\backslash\)n"} );    
173         \textcolor{keywordflow}{return} NoSuccess;
174     \}
175 
176     \textcolor{keywordflow}{if} ( LDB < MAX( 1, N ) )
177     \{
178         fprintf( stderr, \textcolor{stringliteral}{"Illegal value of LDB, in ddss\_dsymm code\(\backslash\)n"} );    
179         \textcolor{keywordflow}{return} NoSuccess;
180     \}
181     
182     \textcolor{keywordflow}{if} ( LDC < MAX( 1, N ) )
183     \{
184         fprintf( stderr, \textcolor{stringliteral}{"Illegal value of LDC, in ddss\_dsymm code\(\backslash\)n"} );    
185         \textcolor{keywordflow}{return} NoSuccess;
186     \}
187     
188     \textcolor{keywordflow}{return} \hyperlink{kdsymm_8c_a90d0704ec71cf332ce1c55aa29904456}{kdsymm}( SIDE, UPLO, M, N,
189                     ( \textcolor{keyword}{const} \textcolor{keywordtype}{double} ) ALPHA, A, LDA,
190                                             B, LDB,
191                     ( \textcolor{keyword}{const} \textcolor{keywordtype}{double} )  BETA, C, LDC );
192 
193 \} 
\end{DoxyCode}
