Skip to content
ddss__dsyr2k_8c.html 21.9 KiB
Newer Older
PEDRO VALERO LARA's avatar
PEDRO VALERO LARA committed
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>LASs - Linear Algebra Routines on OmpSs: src/ddss_dsyr2k.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">LASs - Linear Algebra Routines on OmpSs
   &#160;<span id="projectnumber">1.0.0</span>
   </div>
   <div id="projectbrief">LASs</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">ddss_dsyr2k.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>LASs-DDSs ddss_dsyr2k routine.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="lass_8h_source.html">../include/lass.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for ddss_dsyr2k.c:</div>
<div class="dyncontent">
<div class="center"><img src="ddss__dsyr2k_8c__incl.png" border="0" usemap="#src_2ddss__dsyr2k_8c" alt=""/></div>
<map name="src_2ddss__dsyr2k_8c" id="src_2ddss__dsyr2k_8c">
<area shape="rect" id="node2" href="lass_8h.html" title="LASs header definition. " alt="" coords="569,80,684,107"/>
<area shape="rect" id="node15" href="lass__macros_8h.html" title="Macros definition. " alt="" coords="1181,155,1288,181"/>
<area shape="rect" id="node16" href="lass__types_8h_source.html" title="lass_types.h" alt="" coords="1312,155,1408,181"/>
</map>
</div>
</div>
<p><a href="ddss__dsyr2k_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a0bd18e3495c9d8ab6ae463389a2b00bf"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ddss__dsyr2k_8c.html#a0bd18e3495c9d8ab6ae463389a2b00bf">ddss_dsyr2k</a> (enum DDSS_UPLO UPLO, enum DDSS_TRANS TRANS, int N, int K, const double ALPHA, double *A, int LDA, double *B, int LDB, const double BETA, double *C, int LDC)</td></tr>
<tr class="separator:a0bd18e3495c9d8ab6ae463389a2b00bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>LASs-DDSs ddss_dsyr2k routine. </p>
<p>LASs-DDSs is a software package provided by: Barcelona Supercomputing Center - Centro Nacional de Supercomputacion</p>
<dl class="section author"><dt>Author</dt><dd>Pedro Valero-Lara <a href="#" onclick="location.href='mai'+'lto:'+'ped'+'ro'+'.va'+'le'+'ro@'+'bs'+'c.e'+'s'; return false;">pedro<span style="display: none;">.nosp@m.</span>.val<span style="display: none;">.nosp@m.</span>ero@b<span style="display: none;">.nosp@m.</span>sc.e<span style="display: none;">.nosp@m.</span>s</a> </dd>
<dd>
Boro Sofranac <a href="#" onclick="location.href='mai'+'lto:'+'bor'+'o.'+'sof'+'ra'+'nac'+'@b'+'sc.'+'es'; return false;">boro.<span style="display: none;">.nosp@m.</span>sofr<span style="display: none;">.nosp@m.</span>anac@<span style="display: none;">.nosp@m.</span>bsc.<span style="display: none;">.nosp@m.</span>es</a> </dd></dl>
<dl class="section date"><dt>Date</dt><dd>2018-02-21   </dd></dl>

<p>Definition in file <a class="el" href="ddss__dsyr2k_8c_source.html">ddss_dsyr2k.c</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a0bd18e3495c9d8ab6ae463389a2b00bf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ddss_dsyr2k </td>
          <td>(</td>
          <td class="paramtype">enum DDSS_UPLO&#160;</td>
          <td class="paramname"><em>UPLO</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">enum DDSS_TRANS&#160;</td>
          <td class="paramname"><em>TRANS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>N</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>K</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>ALPHA</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>LDA</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>B</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>LDB</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>BETA</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>C</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>LDC</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Performs one of the symmetric rank 2k operations: </p><pre class="fragment">C = ALPHA * A * B**T + ALPHA * B * A**T + BETA * C or
C = ALPHA * A**T * B + ALPHA * B**T * A + BETA * C
</pre><p>ALPHA and BETA are scalars, C is an N by N symmetric matrix and A and B are N by K matrices in the first case and K by N matrices in the second case. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">UPLO</td><td>enum DDSS_UPLO. UPLO specifies the form in which C is stored:<ul>
<li>Lower: Lower triangular part of C is stored. The upper traingular part is not referenced.</li>
<li>Upper: Upper triangular part of C is stored. The lower triangular part is not referenced.</li>
</ul>
</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">TRANS</td><td>enum DDSS_TRANS. TRANS specifies the operation to be performed as follows:<ul>
<li>NoTrans: C = ALPHA * A * B**T + ALPHA * B * A**T + BETA * C</li>
<li>Trans: C = ALPHA * A**T * B + ALPHA * B**T * A + BETA * C</li>
</ul>
</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">N</td><td>int. N specifies the order of matrix C. N must be at least zero.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">K</td><td>int. With TRANS = NoTrans, K specifies the number of columns of the matrices A and B, and with TRANS = Trans, K specifies the number of rows of the matrices A and B. K must be at least zero.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ALPHA</td><td>double. ALPHA specifies the scalar alpha.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>double *. A is a pointer to a matrix of dimension Na ( rows ) by Ka ( columns ), where Na is N and Ka is K when TRANS = NoTrans, and Na is K and Ka is N otherwise.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">LDA</td><td>int. LDA specifies the number of columns of A ( row-major order ). When TRANS = NoTrans then LDA must be at least max( 1, K ), otherwise LDA must be at least max( 1, N ).</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">B</td><td>double *. B is a pointer to a matrix of dimension Nb ( rows ) by Kb ( columns ), where Nb is N and Kb is K when TRANS = NoTrans, and Nb is K and Kb is N otherwise.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">LDB</td><td>int. LDB specifies the number of columns of B ( row-major order ). When TRANS = NoTrans then LDB must be at least max( 1, K ), otherwise LDB must be at least max( 1, N ).</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">BETA</td><td>double. BETA specifies the scalar beta.</td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">C</td><td>double *. C is a pointer to a matrix of dimension N by N. When UPLO = Uppper the strictly lower triangular part of C is not referenced. On exit, the upper triangular part of C is overwritten by the upper triangular part of the updated solution matrix C. When UPLO = Lower the strictly upper triangular part of C is not referenced. On exit, the lower triangular part of C is overwritten by the lower triangular part of the updated solution matrix C.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">LDC</td><td>int. LDC specifies the number of columns of C ( row-major order ). LDC must be at least max( 1, N ).</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="lass_8h.html#a2ef29953763cd105a69a3c8db2adc1b3">kdsyr2k</a> </dd></dl>

<p>Definition at line <a class="el" href="ddss__dsyr2k_8c_source.html#l00114">114</a> of file <a class="el" href="ddss__dsyr2k_8c_source.html">ddss_dsyr2k.c</a>.</p>

<p>References <a class="el" href="kdsyr2k_8c_source.html#l00124">kdsyr2k()</a>.</p>
<div class="fragment"><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;{</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="comment">// Local variables</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <span class="keywordtype">int</span> nA, nB;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    </div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <span class="comment">// Argument checking</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="keywordflow">if</span> ( ( UPLO != Upper ) &amp;&amp; ( UPLO != Lower ) ) </div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    {</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        fprintf( stderr, <span class="stringliteral">&quot;Illegal value of UPLO, in ddss_dsyr2k code\n&quot;</span> );</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        <span class="keywordflow">return</span> NoSuccess;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    }</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    </div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="keywordflow">if</span> ( ( TRANS != NoTrans ) &amp;&amp; ( TRANS != Trans ) )</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    {</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        fprintf( stderr, <span class="stringliteral">&quot;Illegal value of TRANS, in ddss_dsyr2k code\n&quot;</span> );</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        <span class="keywordflow">return</span> NoSuccess;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    }</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    </div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keywordflow">if</span> ( N &lt; 0 )</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    {</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;        fprintf( stderr, <span class="stringliteral">&quot;Illegal value of N, in ddss_dsyr2k code\n&quot;</span> );</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        <span class="keywordflow">return</span> NoSuccess;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    }</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        </div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <span class="keywordflow">if</span> ( K &lt; 0 )</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    {</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        fprintf( stderr, <span class="stringliteral">&quot;Illegal value of K, in ddss_dsyr2k code\n&quot;</span> );</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;        <span class="keywordflow">return</span> NoSuccess;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    }</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    </div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="keywordflow">if</span> ( TRANS == NoTrans ) </div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    {</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        nA = nB = K;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    } </div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    <span class="keywordflow">else</span> </div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    {</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        nA = nB = N;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    }</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <span class="keywordflow">if</span> ( LDA &lt; MAX( 1, nA ) ) </div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    {</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        fprintf( stderr, <span class="stringliteral">&quot;Illegal value of LDA, in ddss_dsyr2k code\n&quot;</span> );</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;        <span class="keywordflow">return</span> NoSuccess;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    }</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    </div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="keywordflow">if</span> ( LDB &lt; MAX( 1, nB ) ) </div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    {</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;        fprintf( stderr, <span class="stringliteral">&quot;Illegal value of LDB, in ddss_dsyr2k code\n&quot;</span> );</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        <span class="keywordflow">return</span> NoSuccess;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    }</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="keywordflow">if</span> ( LDC &lt; MAX( 1, N ) ) </div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    {</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;        fprintf( stderr, <span class="stringliteral">&quot;Illegal value of LDC, in ddss_dsyr2k code\n&quot;</span> );</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;        <span class="keywordflow">return</span> NoSuccess;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    }</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    </div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="comment">// Quick return</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;     <span class="keywordflow">if</span> ( N == 0 || ( ( ALPHA == 0.0 || K == 0 ) &amp;&amp; BETA == 1.0 ) )</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;     {</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;         <span class="keywordflow">return</span> Success;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;     }</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    </div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="kdsyr2k_8c.html#a2ef29953763cd105a69a3c8db2adc1b3">kdsyr2k</a>( UPLO, TRANS,</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;                    N, K,</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;                    ALPHA, A, LDA,</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;                           B, LDB,</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;                    BETA,  C, LDC );</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;}</div><div class="ttc" id="kdsyr2k_8c_html_a2ef29953763cd105a69a3c8db2adc1b3"><div class="ttname"><a href="kdsyr2k_8c.html#a2ef29953763cd105a69a3c8db2adc1b3">kdsyr2k</a></div><div class="ttdeci">enum LASS_RETURN kdsyr2k(enum DDSS_UPLO UPLO, enum DDSS_TRANS TRANS, int N, int K, const double ALPHA, double *A, int LDA, double *B, int LDB, const double BETA, double *C, int LDC)</div><div class="ttdef"><b>Definition:</b> <a href="kdsyr2k_8c_source.html#l00124">kdsyr2k.c:124</a></div></div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>