<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html > <head><title>Computational routines</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)"> <meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)"> <!-- html,3 --> <meta name="src" content="userhtml.tex"> <link rel="stylesheet" type="text/css" href="userhtml.css"> </head><body > <!--l. 1--><div class="crosslinks"><p class="noindent">[<a href="userhtmlse8.html" >next</a>] [<a href="userhtmlse3.html" >prev</a>] [<a href="userhtmlse3.html#tailuserhtmlse3.html" >prev-tail</a>] [<a href="#tailuserhtmlse4.html">tail</a>] [<a href="userhtml.html#userhtmlse7.html" >up</a>] </p></div> <h3 class="sectionHead"><span class="titlemark">4 </span> <a id="x9-550004"></a>Computational routines</h3> <h4 class="subsectionHead"><span class="titlemark">4.1 </span> <a id="x9-560004.1"></a>psb_geaxpby — General Dense Matrix Sum</h4> <!--l. 10--><p class="noindent" >This subroutine is an interface to the computational kernel for dense matrix sum: <div class="math-display" > <img src="userhtml1x.png" alt="y ← α x+ βy " class="math-display" ></div> <!--l. 12--><p class="nopar" > <!--l. 19--><p class="indent" > <code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">psb_geaxpby</span><span style="color:#000000">(</span><span style="color:#000000">alpha</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">beta</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">y</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000">)</span></code> <div class="table"> <!--l. 23--><p class="indent" > <a id="x9-56001r1"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 24--><p class="noindent" > <div class="tabular"> <table id="TBL-1" class="tabular" ><colgroup id="TBL-1-1g"><col id="TBL-1-1"><col id="TBL-1-2"></colgroup><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-1-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-1-1" class="td11"><span class="cmmi-10">x</span>, <span class="cmmi-10">y</span>, <span class="cmmi-10">α</span>, <span class="cmmi-10">β </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-1-1-2" class="td11"><span class="cmbx-10">Subroutine</span></td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-1-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-2-1" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-2-2" class="td11">psb_geaxpby</td> </tr><tr style="vertical-align:baseline;" id="TBL-1-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-3-2" class="td11">psb_geaxpby</td> </tr><tr style="vertical-align:baseline;" id="TBL-1-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-4-1" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-4-2" class="td11">psb_geaxpby</td> </tr><tr style="vertical-align:baseline;" id="TBL-1-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-5-1" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-5-2" class="td11">psb_geaxpby</td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-1-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 1: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-56001r1 --> </div><hr class="endfloat" /> </div> <dl class="description"><dt class="description"> <!--l. 40--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 40--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 41--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 41--><p class="noindent" > </dd><dt class="description"> <!--l. 42--><p class="noindent" > <span class="cmbx-10">alpha</span> </dt><dd class="description"> <!--l. 42--><p class="noindent" >the scalar <span class="cmmi-10">α</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a number of the data type indicated in Table <a href="#x9-56001r1">1<!--tex4ht:ref: tab:f90axpby --></a>. </dd><dt class="description"> <!--l. 45--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 45--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-56001r1">1<!--tex4ht:ref: tab:f90axpby --></a>. The rank of <span class="cmmi-10">x </span>must be the same of <span class="cmmi-10">y</span>. </dd><dt class="description"> <!--l. 53--><p class="noindent" > <span class="cmbx-10">beta</span> </dt><dd class="description"> <!--l. 53--><p class="noindent" >the scalar <span class="cmmi-10">β</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a number of the data type indicated in Table <a href="#x9-56001r1">1<!--tex4ht:ref: tab:f90axpby --></a>. </dd><dt class="description"> <!--l. 58--><p class="noindent" > <span class="cmbx-10">y</span> </dt><dd class="description"> <!--l. 58--><p class="noindent" >the local portion of the global dense matrix <span class="cmmi-10">y</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of the type indicated in Table <a href="#x9-56001r1">1<!--tex4ht:ref: tab:f90axpby --></a>. The rank of <span class="cmmi-10">y </span>must be the same of <span class="cmmi-10">x</span>. </dd><dt class="description"> <!--l. 65--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 65--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd></dl> <dl class="description"><dt class="description"> <!--l. 91--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 91--><p class="noindent" > </dd><dt class="description"> <!--l. 92--><p class="noindent" > <span class="cmbx-10">y</span> </dt><dd class="description"> <!--l. 92--><p class="noindent" >the local portion of result submatrix <span class="cmmi-10">y</span>.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of the type indicated in Table <a href="#x9-56001r1">1<!--tex4ht:ref: tab:f90axpby --></a>. </dd><dt class="description"> <!--l. 98--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 98--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <h4 class="subsectionHead"><span class="titlemark">4.2 </span> <a id="x9-570004.2"></a>psb_gedot — Dot Product</h4> <!--l. 113--><p class="noindent" >This function computes dot product between two vectors <span class="cmmi-10">x </span>and <span class="cmmi-10">y</span>.<br class="newline" />If <span class="cmmi-10">x </span>and <span class="cmmi-10">y </span>are real vectors it computes dot-product as: <div class="math-display" > <img src="userhtml2x.png" alt="dot ← xTy " class="math-display" ></div> <!--l. 117--><p class="nopar" > Else if <span class="cmmi-10">x </span>and <span class="cmmi-10">y </span>are complex vectors then it computes dot-product as: <div class="math-display" > <img src="userhtml3x.png" alt="dot ← xHy " class="math-display" ></div> <!--l. 119--><p class="nopar" > <!--l. 126--><p class="indent" > <code class="lstinline"><span style="color:#000000">psb_gedot</span><span style="color:#000000">(</span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">y</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000"> </span><span style="color:#000000">[,</span><span style="color:#000000">global</span><span style="color:#000000">])</span></code> <div class="table"> <!--l. 128--><p class="indent" > <a id="x9-57001r2"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 129--><p class="noindent" > <div class="tabular"> <table id="TBL-2" class="tabular" ><colgroup id="TBL-2-1g"><col id="TBL-2-1"><col id="TBL-2-2"></colgroup><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-1" class="td11"><span class="cmmi-10">dot</span>, <span class="cmmi-10">x</span>, <span class="cmmi-10">y </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-2" class="td11"><span class="cmbx-10">Function</span></td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-1" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-2" class="td11">psb_gedot</td> </tr><tr style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-2" class="td11">psb_gedot</td> </tr><tr style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-1" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-2" class="td11">psb_gedot</td> </tr><tr style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-1" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-2" class="td11">psb_gedot</td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 2: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-57001r2 --> </div><hr class="endfloat" /> </div> <dl class="description"><dt class="description"> <!--l. 145--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 145--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 146--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 146--><p class="noindent" > </dd><dt class="description"> <!--l. 147--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 147--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-57001r2">2<!--tex4ht:ref: tab:f90dot --></a>. The rank of <span class="cmmi-10">x </span>must be the same of <span class="cmmi-10">y</span>. </dd><dt class="description"> <!--l. 157--><p class="noindent" > <span class="cmbx-10">y</span> </dt><dd class="description"> <!--l. 157--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">y</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-57001r2">2<!--tex4ht:ref: tab:f90dot --></a>. The rank of <span class="cmmi-10">y </span>must be the same of <span class="cmmi-10">x</span>. </dd><dt class="description"> <!--l. 167--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 167--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 172--><p class="noindent" > <span class="cmbx-10">global</span> </dt><dd class="description"> <!--l. 172--><p class="noindent" >Specifies whether the computation should include the global reduction across all processes.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">optional</span>.<br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a logical scalar. Default: <code class="lstinline"><span style="color:#000000">global</span><span style="color:#000000">=.</span><span style="color:#000000">true</span><span style="color:#000000">.</span></code><br class="newline" /> </dd><dt class="description"> <!--l. 191--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 191--><p class="noindent" > </dd><dt class="description"> <!--l. 192--><p class="noindent" > <span class="cmbx-10">Function value</span> </dt><dd class="description"> <!--l. 192--><p class="noindent" >is the dot product of vectors <span class="cmmi-10">x </span>and <span class="cmmi-10">y</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span>unless the optional variable <code class="lstinline"><span style="color:#000000">global</span><span style="color:#000000">=.</span><span style="color:#000000">false</span><span style="color:#000000">.</span></code> has been specified<br class="newline" />Specified as: a number of the data type indicated in Table <a href="#x9-57001r2">2<!--tex4ht:ref: tab:f90dot --></a>. </dd><dt class="description"> <!--l. 196--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 196--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <!--l. 203--><p class="noindent" ><span class="cmbx-12">Notes</span> <ol class="enumerate1" > <li class="enumerate" id="x9-57003x1"> <!--l. 205--><p class="noindent" >The computation of a global result requires a global communication, which entails a significant overhead. It may be necessary and/or advisable to compute multiple dot products at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme: <!--l. 218--> <pre class="lstlisting" id="listing-103"><span class="label"><a id="x9-57004r1"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(1)</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">=</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_gedot</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">x1</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">y1</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">desc_a</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">info</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">global</span></span><span style="color:#000000"><span class="cmtt-10">=.</span></span><span style="color:#000000"><span class="cmtt-10">false</span></span><span style="color:#000000"><span class="cmtt-10">.)</span></span> <span class="label"><a id="x9-57005r2"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(2)</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">=</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_gedot</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">x2</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">y2</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">desc_a</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">info</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">global</span></span><span style="color:#000000"><span class="cmtt-10">=.</span></span><span style="color:#000000"><span class="cmtt-10">false</span></span><span style="color:#000000"><span class="cmtt-10">.)</span></span> <span class="label"><a id="x9-57006r3"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(3)</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">=</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_gedot</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">x3</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">y3</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">desc_a</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">info</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">global</span></span><span style="color:#000000"><span class="cmtt-10">=.</span></span><span style="color:#000000"><span class="cmtt-10">false</span></span><span style="color:#000000"><span class="cmtt-10">.)</span></span> <span class="label"><a id="x9-57007r4"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">call</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_sum</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">ctxt</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(1:3))</span></span></pre> <!--l. 225--><p class="noindent" >In this way the global communication, which for small sizes is a latency-bound operation, is invoked only once.</li></ol> <h4 class="subsectionHead"><span class="titlemark">4.3 </span> <a id="x9-580004.3"></a>psb_gedots — Generalized Dot Product</h4> <!--l. 237--><p class="noindent" >This subroutine computes a series of dot products among the columns of two dense matrices <span class="cmmi-10">x </span>and <span class="cmmi-10">y</span>: <div class="math-display" > <img src="userhtml4x.png" alt="res(i) ← x(:,i)Ty(:,i) " class="math-display" ></div> <!--l. 239--><p class="nopar" > If the matrices are complex, then the usual convention applies, i.e. the conjugate transpose of <span class="cmmi-10">x </span>is used. If <span class="cmmi-10">x </span>and <span class="cmmi-10">y </span>are of rank one, then <span class="cmmi-10">res </span>is a scalar, else it is a rank one array. <!--l. 245--><p class="indent" > <code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">psb_gedots</span><span style="color:#000000">(</span><span style="color:#000000">res</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">y</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000">)</span></code> <div class="table"> <!--l. 247--><p class="indent" > <a id="x9-58001r3"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 248--><p class="noindent" > <div class="tabular"> <table id="TBL-3" class="tabular" ><colgroup id="TBL-3-1g"><col id="TBL-3-1"><col id="TBL-3-2"></colgroup><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-3-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-1" class="td11"><span class="cmmi-10">res</span>, <span class="cmmi-10">x</span>, <span class="cmmi-10">y </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-2" class="td11"><span class="cmbx-10">Subroutine</span></td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-3-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-1" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-2" class="td11">psb_gedots </td> </tr><tr style="vertical-align:baseline;" id="TBL-3-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-2" class="td11">psb_gedots </td> </tr><tr style="vertical-align:baseline;" id="TBL-3-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-1" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-2" class="td11">psb_gedots </td> </tr><tr style="vertical-align:baseline;" id="TBL-3-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-1" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-2" class="td11">psb_gedots </td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-3-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 3: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-58001r3 --> </div><hr class="endfloat" /> </div> <dl class="description"><dt class="description"> <!--l. 264--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 264--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 265--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 265--><p class="noindent" > </dd><dt class="description"> <!--l. 266--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 266--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">x</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-58001r3">3<!--tex4ht:ref: tab:f90mdot --></a>. The rank of <span class="cmmi-10">x </span>must be the same of <span class="cmmi-10">y</span>. </dd><dt class="description"> <!--l. 274--><p class="noindent" > <span class="cmbx-10">y</span> </dt><dd class="description"> <!--l. 274--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">y</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-58001r3">3<!--tex4ht:ref: tab:f90mdot --></a>. The rank of <span class="cmmi-10">y </span>must be the same of <span class="cmmi-10">x</span>. </dd><dt class="description"> <!--l. 282--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 282--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 287--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 287--><p class="noindent" > </dd><dt class="description"> <!--l. 288--><p class="noindent" > <span class="cmbx-10">res</span> </dt><dd class="description"> <!--l. 288--><p class="noindent" >is the dot product of vectors <span class="cmmi-10">x </span>and <span class="cmmi-10">y</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />Specified as: a number or a rank-one array of the data type indicated in Table <a href="#x9-57001r2">2<!--tex4ht:ref: tab:f90dot --></a>. </dd><dt class="description"> <!--l. 293--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 293--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <h4 class="subsectionHead"><span class="titlemark">4.4 </span> <a id="x9-590004.4"></a>psb_normi — Infinity-Norm of Vector</h4> <!--l. 309--><p class="noindent" >This function computes the infinity-norm of a vector <span class="cmmi-10">x</span>.<br class="newline" />If <span class="cmmi-10">x </span>is a real vector it computes infinity norm as: <div class="math-display" > <img src="userhtml5x.png" alt="amax ← max |xi| i " class="math-display" ></div> <!--l. 313--><p class="nopar" > else if <span class="cmmi-10">x </span>is a complex vector then it computes the infinity-norm as: <div class="math-display" > <img src="userhtml6x.png" alt="amax ← maxi (|re(xi)|+ |im(xi)|) " class="math-display" ></div> <!--l. 315--><p class="nopar" > <!--l. 321--><p class="indent" > <code class="lstinline"><span style="color:#000000">psb_geamax</span><span style="color:#000000">(</span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000"> </span><span style="color:#000000">[,</span><span style="color:#000000">global</span><span style="color:#000000">])</span></code><br class="newline" /><code class="lstinline"><span style="color:#000000">psb_normi</span><span style="color:#000000">(</span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000"> </span><span style="color:#000000">[,</span><span style="color:#000000">global</span><span style="color:#000000">])</span></code> <div class="table"> <!--l. 325--><p class="indent" > <a id="x9-59001r4"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 326--><p class="noindent" > <div class="tabular"> <table id="TBL-4" class="tabular" ><colgroup id="TBL-4-1g"><col id="TBL-4-1"><col id="TBL-4-2"><col id="TBL-4-3"></colgroup><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-4-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-1" class="td11"><span class="cmmi-10">amax </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-2" class="td11"><span class="cmmi-10">x </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-3" class="td11"><span class="cmbx-10">Function </span></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-4-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-1" class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-2" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-3" class="td11">psb_geamax</td> </tr><tr style="vertical-align:baseline;" id="TBL-4-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-2" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-3" class="td11">psb_geamax</td> </tr><tr style="vertical-align:baseline;" id="TBL-4-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-1" class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-2" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-3" class="td11">psb_geamax</td> </tr><tr style="vertical-align:baseline;" id="TBL-4-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-2" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-3" class="td11">psb_geamax</td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-4-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 4: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-59001r4 --> </div><hr class="endfloat" /> </div> <dl class="description"><dt class="description"> <!--l. 343--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 343--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 344--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 344--><p class="noindent" > </dd><dt class="description"> <!--l. 345--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 345--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">x</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-59001r4">4<!--tex4ht:ref: tab:f90amax --></a>. </dd><dt class="description"> <!--l. 355--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 355--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 360--><p class="noindent" > <span class="cmbx-10">global</span> </dt><dd class="description"> <!--l. 360--><p class="noindent" >Specifies whether the computation should include the global reduction across all processes.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">optional</span>.<br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a logical scalar. Default: <code class="lstinline"><span style="color:#000000">global</span><span style="color:#000000">=.</span><span style="color:#000000">true</span><span style="color:#000000">.</span></code><br class="newline" /> </dd><dt class="description"> <!--l. 373--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 373--><p class="noindent" > </dd><dt class="description"> <!--l. 374--><p class="noindent" > <span class="cmbx-10">Function value</span> </dt><dd class="description"> <!--l. 374--><p class="noindent" >is the infinity norm of vector <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span>unless the optional variable <code class="lstinline"><span style="color:#000000">global</span><span style="color:#000000">=.</span><span style="color:#000000">false</span><span style="color:#000000">.</span></code> has been specified<br class="newline" />Specified as: a long precision real number. </dd><dt class="description"> <!--l. 378--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 378--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <!--l. 385--><p class="noindent" ><span class="cmbx-12">Notes</span> <ol class="enumerate1" > <li class="enumerate" id="x9-59003x1"> <!--l. 387--><p class="noindent" >The computation of a global result requires a global communication, which entails a significant overhead. It may be necessary and/or advisable to compute multiple norms at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme: <!--l. 400--> <pre class="lstlisting" id="listing-109"><span class="label"><a id="x9-59004r1"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(1)</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">=</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_geamax</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">x1</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">desc_a</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">info</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">global</span></span><span style="color:#000000"><span class="cmtt-10">=.</span></span><span style="color:#000000"><span class="cmtt-10">false</span></span><span style="color:#000000"><span class="cmtt-10">.)</span></span> <span class="label"><a id="x9-59005r2"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(2)</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">=</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_geamax</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">x2</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">desc_a</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">info</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">global</span></span><span style="color:#000000"><span class="cmtt-10">=.</span></span><span style="color:#000000"><span class="cmtt-10">false</span></span><span style="color:#000000"><span class="cmtt-10">.)</span></span> <span class="label"><a id="x9-59006r3"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(3)</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">=</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_geamax</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">x3</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">desc_a</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">info</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">global</span></span><span style="color:#000000"><span class="cmtt-10">=.</span></span><span style="color:#000000"><span class="cmtt-10">false</span></span><span style="color:#000000"><span class="cmtt-10">.)</span></span> <span class="label"><a id="x9-59007r4"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">call</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_amx</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">ctxt</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(1:3))</span></span></pre> <!--l. 407--><p class="noindent" >In this way the global communication, which for small sizes is a latency-bound operation, is invoked only once.</li></ol> <h4 class="subsectionHead"><span class="titlemark">4.5 </span> <a id="x9-600004.5"></a>psb_geamaxs — Generalized Infinity Norm</h4> <!--l. 419--><p class="noindent" >This subroutine computes a series of infinity norms on the columns of a dense matrix <span class="cmmi-10">x</span>: <div class="math-display" > <img src="userhtml7x.png" alt="res(i) ← max|x(k,i)| k " class="math-display" ></div> <!--l. 421--><p class="nopar" > <!--l. 423--><p class="indent" > <code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">psb_geamaxs</span><span style="color:#000000">(</span><span style="color:#000000">res</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000">)</span></code> <div class="table"> <!--l. 425--><p class="indent" > <a id="x9-60001r5"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 426--><p class="noindent" > <div class="tabular"> <table id="TBL-5" class="tabular" ><colgroup id="TBL-5-1g"><col id="TBL-5-1"><col id="TBL-5-2"><col id="TBL-5-3"></colgroup><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-1" class="td11"><span class="cmmi-10">res </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-2" class="td11"><span class="cmmi-10">x </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-3" class="td11"><span class="cmbx-10">Subroutine </span></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-1" class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-2" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-3" class="td11">psb_geamaxs</td> </tr><tr style="vertical-align:baseline;" id="TBL-5-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-2" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-3" class="td11">psb_geamaxs</td> </tr><tr style="vertical-align:baseline;" id="TBL-5-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-1" class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-2" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-3" class="td11">psb_geamaxs</td> </tr><tr style="vertical-align:baseline;" id="TBL-5-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-2" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-3" class="td11">psb_geamaxs</td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 5: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-60001r5 --> </div><hr class="endfloat" /> </div> <dl class="description"><dt class="description"> <!--l. 442--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 442--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 443--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 443--><p class="noindent" > </dd><dt class="description"> <!--l. 444--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 444--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">x</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-60001r5">5<!--tex4ht:ref: tab:f90mamax --></a>. </dd><dt class="description"> <!--l. 452--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 452--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 457--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 457--><p class="noindent" > </dd><dt class="description"> <!--l. 458--><p class="noindent" > <span class="cmbx-10">res</span> </dt><dd class="description"> <!--l. 458--><p class="noindent" >is the infinity norm of the columns of <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />Specified as: a number or a rank-one array of long precision real numbers. </dd><dt class="description"> <!--l. 462--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 462--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <h4 class="subsectionHead"><span class="titlemark">4.6 </span> <a id="x9-610004.6"></a>psb_norm1 — 1-Norm of Vector</h4> <!--l. 478--><p class="noindent" >This function computes the 1-norm of a vector <span class="cmmi-10">x</span>.<br class="newline" />If <span class="cmmi-10">x </span>is a real vector it computes 1-norm as: <div class="math-display" > <img src="userhtml8x.png" alt="asum ← ∥xi∥ " class="math-display" ></div> <!--l. 481--><p class="nopar" > else if <span class="cmmi-10">x </span>is a complex vector then it computes 1-norm as: <div class="math-display" > <img src="userhtml9x.png" alt="asum ← ∥re(x)∥1 + ∥im (x)∥1 " class="math-display" ></div> <!--l. 483--><p class="nopar" > <!--l. 486--><p class="indent" > <code class="lstinline"><span style="color:#000000">psb_geasum</span><span style="color:#000000">(</span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000"> </span><span style="color:#000000">[,</span><span style="color:#000000">global</span><span style="color:#000000">])</span></code> <code class="lstinline"><span style="color:#000000">psb_norm1</span><span style="color:#000000">(</span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000"> </span><span style="color:#000000">[,</span><span style="color:#000000">global</span><span style="color:#000000">])</span></code> <div class="table"> <!--l. 489--><p class="indent" > <a id="x9-61001r6"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 490--><p class="noindent" > <div class="tabular"> <table id="TBL-6" class="tabular" ><colgroup id="TBL-6-1g"><col id="TBL-6-1"><col id="TBL-6-2"><col id="TBL-6-3"></colgroup><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-6-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-1" class="td11"><span class="cmmi-10">asum </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-2" class="td11"><span class="cmmi-10">x </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-3" class="td11"><span class="cmbx-10">Function </span></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-6-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-1" class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-2" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-3" class="td11">psb_geasum</td> </tr><tr style="vertical-align:baseline;" id="TBL-6-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-2" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-3" class="td11">psb_geasum</td> </tr><tr style="vertical-align:baseline;" id="TBL-6-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-1" class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-2" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-3" class="td11">psb_geasum</td> </tr><tr style="vertical-align:baseline;" id="TBL-6-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-2" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-3" class="td11">psb_geasum</td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-6-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 6: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-61001r6 --> </div><hr class="endfloat" /> </div> <dl class="description"><dt class="description"> <!--l. 506--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 506--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 507--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 507--><p class="noindent" > </dd><dt class="description"> <!--l. 508--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 508--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">x</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-61001r6">6<!--tex4ht:ref: tab:f90asum --></a>. </dd><dt class="description"> <!--l. 518--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 518--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 523--><p class="noindent" > <span class="cmbx-10">global</span> </dt><dd class="description"> <!--l. 523--><p class="noindent" >Specifies whether the computation should include the global reduction across all processes.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">optional</span>.<br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a logical scalar. Default: <code class="lstinline"><span style="color:#000000">global</span><span style="color:#000000">=.</span><span style="color:#000000">true</span><span style="color:#000000">.</span></code><br class="newline" /> </dd><dt class="description"> <!--l. 531--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 531--><p class="noindent" > </dd><dt class="description"> <!--l. 532--><p class="noindent" > <span class="cmbx-10">Function value</span> </dt><dd class="description"> <!--l. 532--><p class="noindent" >is the 1-norm of vector <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span>unless the optional variable <code class="lstinline"><span style="color:#000000">global</span><span style="color:#000000">=.</span><span style="color:#000000">false</span><span style="color:#000000">.</span></code> has been specified<br class="newline" />Specified as: a long precision real number. </dd><dt class="description"> <!--l. 536--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 536--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <!--l. 543--><p class="noindent" ><span class="cmbx-12">Notes</span> <ol class="enumerate1" > <li class="enumerate" id="x9-61003x1"> <!--l. 545--><p class="noindent" >The computation of a global result requires a global communication, which entails a significant overhead. It may be necessary and/or advisable to compute multiple norms at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme: <!--l. 558--> <pre class="lstlisting" id="listing-115"><span class="label"><a id="x9-61004r1"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(1)</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">=</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_geasum</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">x1</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">desc_a</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">info</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">global</span></span><span style="color:#000000"><span class="cmtt-10">=.</span></span><span style="color:#000000"><span class="cmtt-10">false</span></span><span style="color:#000000"><span class="cmtt-10">.)</span></span> <span class="label"><a id="x9-61005r2"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(2)</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">=</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_geasum</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">x2</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">desc_a</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">info</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">global</span></span><span style="color:#000000"><span class="cmtt-10">=.</span></span><span style="color:#000000"><span class="cmtt-10">false</span></span><span style="color:#000000"><span class="cmtt-10">.)</span></span> <span class="label"><a id="x9-61006r3"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(3)</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">=</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_geasum</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">x3</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">desc_a</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">info</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">global</span></span><span style="color:#000000"><span class="cmtt-10">=.</span></span><span style="color:#000000"><span class="cmtt-10">false</span></span><span style="color:#000000"><span class="cmtt-10">.)</span></span> <span class="label"><a id="x9-61007r4"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">call</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_sum</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">ctxt</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(1:3))</span></span></pre> <!--l. 565--><p class="noindent" >In this way the global communication, which for small sizes is a latency-bound operation, is invoked only once.</li></ol> <h4 class="subsectionHead"><span class="titlemark">4.7 </span> <a id="x9-620004.7"></a>psb_geasums — Generalized 1-Norm of Vector</h4> <!--l. 572--><p class="noindent" >This subroutine computes a series of 1-norms on the columns of a dense matrix <span class="cmmi-10">x</span>: <div class="math-display" > <img src="userhtml10x.png" alt="res(i) ← max|x(k,i)| k " class="math-display" ></div> <!--l. 574--><p class="nopar" > This function computes the 1-norm of a vector <span class="cmmi-10">x</span>.<br class="newline" />If <span class="cmmi-10">x </span>is a real vector it computes 1-norm as: <div class="math-display" > <img src="userhtml11x.png" alt="res(i) ← ∥xi∥ " class="math-display" ></div> <!--l. 578--><p class="nopar" > else if <span class="cmmi-10">x </span>is a complex vector then it computes 1-norm as: <div class="math-display" > <img src="userhtml12x.png" alt="res(i) ← ∥re(x )∥1 +∥im (x )∥1 " class="math-display" ></div> <!--l. 580--><p class="nopar" > <!--l. 583--><p class="indent" > <code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">psb_geasums</span><span style="color:#000000">(</span><span style="color:#000000">res</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000">)</span></code> <div class="table"> <!--l. 585--><p class="indent" > <a id="x9-62001r7"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 586--><p class="noindent" > <div class="tabular"> <table id="TBL-7" class="tabular" ><colgroup id="TBL-7-1g"><col id="TBL-7-1"><col id="TBL-7-2"><col id="TBL-7-3"></colgroup><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-7-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-1-1" class="td11"><span class="cmmi-10">res </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-1-2" class="td11"><span class="cmmi-10">x </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-1-3" class="td11"><span class="cmbx-10">Subroutine</span></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-7-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-1" class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-2" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-3" class="td11">psb_geasums</td> </tr><tr style="vertical-align:baseline;" id="TBL-7-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-2" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-3" class="td11">psb_geasums</td> </tr><tr style="vertical-align:baseline;" id="TBL-7-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-1" class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-2" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-3" class="td11">psb_geasums</td> </tr><tr style="vertical-align:baseline;" id="TBL-7-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-2" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-3" class="td11">psb_geasums</td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-7-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 7: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-62001r7 --> </div><hr class="endfloat" /> </div> <dl class="description"><dt class="description"> <!--l. 602--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 602--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 603--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 603--><p class="noindent" > </dd><dt class="description"> <!--l. 604--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 604--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">x</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-62001r7">7<!--tex4ht:ref: tab:f90asums --></a>. </dd><dt class="description"> <!--l. 614--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 614--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 620--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 620--><p class="noindent" > </dd><dt class="description"> <!--l. 621--><p class="noindent" > <span class="cmbx-10">res</span> </dt><dd class="description"> <!--l. 621--><p class="noindent" >contains the 1-norm of (the columns of) <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />Short as: a long precision real number. Specified as: a long precision real number. </dd><dt class="description"> <!--l. 626--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 626--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <h4 class="subsectionHead"><span class="titlemark">4.8 </span> <a id="x9-630004.8"></a>psb_norm2 — 2-Norm of Vector</h4> <!--l. 643--><p class="noindent" >This function computes the 2-norm of a vector <span class="cmmi-10">x</span>.<br class="newline" />If <span class="cmmi-10">x </span>is a real vector it computes 2-norm as: <div class="math-display" > <img src="userhtml13x.png" alt="nrm2 ← √xT-x- " class="math-display" ></div> <!--l. 646--><p class="nopar" > else if <span class="cmmi-10">x </span>is a complex vector then it computes 2-norm as: <div class="math-display" > <img src="userhtml14x.png" alt=" √---- nrm2 ← xHx " class="math-display" ></div> <!--l. 648--><p class="nopar" > <div class="table"> <!--l. 654--><p class="indent" > <a id="x9-63001r8"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 655--><p class="noindent" > <div class="tabular"> <table id="TBL-8" class="tabular" ><colgroup id="TBL-8-1g"><col id="TBL-8-1"><col id="TBL-8-2"><col id="TBL-8-3"></colgroup><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-8-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-1-1" class="td11"><span class="cmmi-10">nrm</span>2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-1-2" class="td11"><span class="cmmi-10">x </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-1-3" class="td11"><span class="cmbx-10">Function </span></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-8-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-1" class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-2" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-3" class="td11">psb_genrm2</td> </tr><tr style="vertical-align:baseline;" id="TBL-8-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-2" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-3" class="td11">psb_genrm2</td> </tr><tr style="vertical-align:baseline;" id="TBL-8-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-1" class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-2" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-3" class="td11">psb_genrm2</td> </tr><tr style="vertical-align:baseline;" id="TBL-8-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-2" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-3" class="td11">psb_genrm2</td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-8-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 8: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-63001r8 --> </div><hr class="endfloat" /> </div> <!--l. 670--><p class="indent" > <code class="lstinline"><span style="color:#000000">psb_genrm2</span><span style="color:#000000">(</span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000"> </span><span style="color:#000000">[,</span><span style="color:#000000">global</span><span style="color:#000000">])</span></code><br class="newline" /><code class="lstinline"><span style="color:#000000">psb_norm2</span><span style="color:#000000">(</span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000"> </span><span style="color:#000000">[,</span><span style="color:#000000">global</span><span style="color:#000000">])</span></code><br class="newline" /> <dl class="description"><dt class="description"> <!--l. 675--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 675--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 676--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 676--><p class="noindent" > </dd><dt class="description"> <!--l. 677--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 677--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-63001r8">8<!--tex4ht:ref: tab:f90nrm2 --></a>. </dd><dt class="description"> <!--l. 687--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 687--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 692--><p class="noindent" > <span class="cmbx-10">global</span> </dt><dd class="description"> <!--l. 692--><p class="noindent" >Specifies whether the computation should include the global reduction across all processes.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">optional</span>.<br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a logical scalar. Default: <code class="lstinline"><span style="color:#000000">global</span><span style="color:#000000">=.</span><span style="color:#000000">true</span><span style="color:#000000">.</span></code><br class="newline" /> </dd><dt class="description"> <!--l. 705--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 705--><p class="noindent" > </dd><dt class="description"> <!--l. 706--><p class="noindent" > <span class="cmbx-10">Function Value</span> </dt><dd class="description"> <!--l. 706--><p class="noindent" >is the 2-norm of vector <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span>unless the optional variable <code class="lstinline"><span style="color:#000000">global</span><span style="color:#000000">=.</span><span style="color:#000000">false</span><span style="color:#000000">.</span></code> has been specified<br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Specified as: a long precision real number. </dd><dt class="description"> <!--l. 711--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 711--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <!--l. 718--><p class="noindent" ><span class="cmbx-12">Notes</span> <ol class="enumerate1" > <li class="enumerate" id="x9-63003x1"> <!--l. 720--><p class="noindent" >The computation of a global result requires a global communication, which entails a significant overhead. It may be necessary and/or advisable to compute multiple norms at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme: <!--l. 725--> <pre class="lstlisting" id="listing-121"><span class="label"><a id="x9-63004r1"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(1)</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">=</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_genrm2</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">x1</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">desc_a</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">info</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">global</span></span><span style="color:#000000"><span class="cmtt-10">=.</span></span><span style="color:#000000"><span class="cmtt-10">false</span></span><span style="color:#000000"><span class="cmtt-10">.)</span></span> <span class="label"><a id="x9-63005r2"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(2)</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">=</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_genrm2</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">x2</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">desc_a</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">info</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">global</span></span><span style="color:#000000"><span class="cmtt-10">=.</span></span><span style="color:#000000"><span class="cmtt-10">false</span></span><span style="color:#000000"><span class="cmtt-10">.)</span></span> <span class="label"><a id="x9-63006r3"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(3)</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">=</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_genrm2</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">x3</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">desc_a</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">info</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">global</span></span><span style="color:#000000"><span class="cmtt-10">=.</span></span><span style="color:#000000"><span class="cmtt-10">false</span></span><span style="color:#000000"><span class="cmtt-10">.)</span></span> <span class="label"><a id="x9-63007r4"></a></span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span class="cmtt-10"> </span><span style="color:#000000"><span class="cmtt-10">call</span></span><span style="color:#000000"> </span><span style="color:#000000"><span class="cmtt-10">psb_nrm2</span></span><span style="color:#000000"><span class="cmtt-10">(</span></span><span style="color:#000000"><span class="cmtt-10">ctxt</span></span><span style="color:#000000"><span class="cmtt-10">,</span></span><span style="color:#000000"><span class="cmtt-10">vres</span></span><span style="color:#000000"><span class="cmtt-10">(1:3))</span></span></pre> <!--l. 731--><p class="noindent" >In this way the global communication, which for small sizes is a latency-bound operation, is invoked only once.</li></ol> <h4 class="subsectionHead"><span class="titlemark">4.9 </span> <a id="x9-640004.9"></a>psb_genrm2s — Generalized 2-Norm of Vector</h4> <!--l. 739--><p class="noindent" >This subroutine computes a series of 2-norms on the columns of a dense matrix <span class="cmmi-10">x</span>: <div class="math-display" > <img src="userhtml15x.png" alt="res(i) ← ∥x(:,i)∥2 " class="math-display" ></div> <!--l. 741--><p class="nopar" > <!--l. 744--><p class="indent" > <code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">psb_genrm2s</span><span style="color:#000000">(</span><span style="color:#000000">res</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000">)</span></code> <div class="table"> <!--l. 746--><p class="indent" > <a id="x9-64001r9"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 747--><p class="noindent" > <div class="tabular"> <table id="TBL-9" class="tabular" ><colgroup id="TBL-9-1g"><col id="TBL-9-1"><col id="TBL-9-2"><col id="TBL-9-3"></colgroup><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-9-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-1-1" class="td11"><span class="cmmi-10">res </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-1-2" class="td11"><span class="cmmi-10">x </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-1-3" class="td11"><span class="cmbx-10">Subroutine</span></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-9-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-1" class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-2" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-3" class="td11">psb_genrm2s</td> </tr><tr style="vertical-align:baseline;" id="TBL-9-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-2" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-3" class="td11">psb_genrm2s</td> </tr><tr style="vertical-align:baseline;" id="TBL-9-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-1" class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-2" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-3" class="td11">psb_genrm2s</td> </tr><tr style="vertical-align:baseline;" id="TBL-9-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-2" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-3" class="td11">psb_genrm2s</td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-9-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 9: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-64001r9 --> </div><hr class="endfloat" /> </div> <dl class="description"><dt class="description"> <!--l. 763--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 763--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 764--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 764--><p class="noindent" > </dd><dt class="description"> <!--l. 765--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 765--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">x</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-64001r9">9<!--tex4ht:ref: tab:f90nrm2s --></a>. </dd><dt class="description"> <!--l. 775--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 775--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 781--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 781--><p class="noindent" > </dd><dt class="description"> <!--l. 782--><p class="noindent" > <span class="cmbx-10">res</span> </dt><dd class="description"> <!--l. 782--><p class="noindent" >contains the 1-norm of (the columns of) <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />Specified as: a long precision real number. </dd><dt class="description"> <!--l. 786--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 786--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <h4 class="subsectionHead"><span class="titlemark">4.10 </span> <a id="x9-650004.10"></a>psb_norm1 — 1-Norm of Sparse Matrix</h4> <!--l. 804--><p class="noindent" >This function computes the 1-norm of a matrix <span class="cmmi-10">A</span>:<br class="newline" /> <div class="par-math-display" > <img src="userhtml16x.png" alt="nrm1 ← ∥A ∥1 " class="par-math-display" ></div> <!--l. 806--><p class="nopar" > where: <dl class="description"><dt class="description"> <!--l. 809--><p class="noindent" > <span class="cmmi-10">A</span> </dt><dd class="description"> <!--l. 809--><p class="noindent" >represents the global matrix <span class="cmmi-10">A</span></dd></dl> <div class="table"> <!--l. 812--><p class="indent" > <a id="x9-65001r10"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 813--><p class="noindent" > <div class="tabular"> <table id="TBL-10" class="tabular" ><colgroup id="TBL-10-1g"><col id="TBL-10-1"><col id="TBL-10-2"></colgroup><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-10-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-1-1" class="td11"><span class="cmmi-10">A </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-1-2" class="td11"><span class="cmbx-10">Function </span></td></tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-10-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-1" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-2" class="td11">psb_spnrm1</td> </tr><tr style="vertical-align:baseline;" id="TBL-10-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-2" class="td11">psb_spnrm1</td> </tr><tr style="vertical-align:baseline;" id="TBL-10-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-1" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-2" class="td11">psb_spnrm1</td> </tr><tr style="vertical-align:baseline;" id="TBL-10-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-1" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-2" class="td11">psb_spnrm1</td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-10-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 10: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-65001r10 --> </div><hr class="endfloat" /> </div> <pre class="verbatim" id="verbatim-31"> psb_spnrm1(A, desc_a, info) psb_norm1(A, desc_a, info) </pre> <!--l. 831--><p class="nopar" > <dl class="description"><dt class="description"> <!--l. 834--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 834--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 835--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 835--><p class="noindent" > </dd><dt class="description"> <!--l. 836--><p class="noindent" > <span class="cmbx-10">a</span> </dt><dd class="description"> <!--l. 836--><p class="noindent" >the local portion of the global sparse matrix <span class="cmmi-10">A</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#spdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_Tspmat</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 842--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 842--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 847--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 847--><p class="noindent" > </dd><dt class="description"> <!--l. 848--><p class="noindent" > <span class="cmbx-10">Function value</span> </dt><dd class="description"> <!--l. 848--><p class="noindent" >is the 1-norm of sparse submatrix <span class="cmmi-10">A</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Specified as: a long precision real number. </dd><dt class="description"> <!--l. 851--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 851--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <h4 class="subsectionHead"><span class="titlemark">4.11 </span> <a id="x9-660004.11"></a>psb_normi — Infinity Norm of Sparse Matrix</h4> <!--l. 868--><p class="noindent" >This function computes the infinity-norm of a matrix <span class="cmmi-10">A</span>:<br class="newline" /> <div class="par-math-display" > <img src="userhtml17x.png" alt="nrmi ← ∥A∥∞ " class="par-math-display" ></div> <!--l. 870--><p class="nopar" > where: <dl class="description"><dt class="description"> <!--l. 873--><p class="noindent" > <span class="cmmi-10">A</span> </dt><dd class="description"> <!--l. 873--><p class="noindent" >represents the global matrix <span class="cmmi-10">A</span></dd></dl> <div class="table"> <!--l. 876--><p class="indent" > <a id="x9-66001r11"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 877--><p class="noindent" > <div class="tabular"> <table id="TBL-11" class="tabular" ><colgroup id="TBL-11-1g"><col id="TBL-11-1"><col id="TBL-11-2"></colgroup><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-1-1" class="td11"><span class="cmmi-10">A </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-1-2" class="td11"><span class="cmbx-10">Function </span></td></tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-1" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-2" class="td11">psb_spnrmi</td> </tr><tr style="vertical-align:baseline;" id="TBL-11-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-2" class="td11">psb_spnrmi</td> </tr><tr style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-1" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-2" class="td11">psb_spnrmi</td> </tr><tr style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-1" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-2" class="td11">psb_spnrmi</td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 11: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-66001r11 --> </div><hr class="endfloat" /> </div> <pre class="verbatim" id="verbatim-32"> psb_spnrmi(A, desc_a, info) psb_normi(A, desc_a, info) </pre> <!--l. 895--><p class="nopar" > <dl class="description"><dt class="description"> <!--l. 898--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 898--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 899--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 899--><p class="noindent" > </dd><dt class="description"> <!--l. 900--><p class="noindent" > <span class="cmbx-10">a</span> </dt><dd class="description"> <!--l. 900--><p class="noindent" >the local portion of the global sparse matrix <span class="cmmi-10">A</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#spdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_Tspmat</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 906--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 906--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 911--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 911--><p class="noindent" > </dd><dt class="description"> <!--l. 912--><p class="noindent" > <span class="cmbx-10">Function value</span> </dt><dd class="description"> <!--l. 912--><p class="noindent" >is the infinity-norm of sparse submatrix <span class="cmmi-10">A</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Specified as: a long precision real number. </dd><dt class="description"> <!--l. 915--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 915--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <h4 class="subsectionHead"><span class="titlemark">4.12 </span> <a id="x9-670004.12"></a>psb_spmm — Sparse Matrix by Dense Matrix Product</h4> <!--l. 933--><p class="noindent" >This subroutine computes the Sparse Matrix by Dense Matrix Product: <table class="equation"><tr><td> <div class="math-display" > <img src="userhtml18x.png" alt="y ← αAx + βy " class="math-display" ><a id="x9-67001r1"></a></div> </td><td class="equation-label">(1)</td></tr></table> <!--l. 938--><p class="nopar" > <table class="equation"><tr><td> <div class="math-display" > <img src="userhtml19x.png" alt=" T y ← αA x+ βy " class="math-display" ><a id="x9-67002r2"></a></div> </td><td class="equation-label">(2)</td></tr></table> <!--l. 942--><p class="nopar" > <table class="equation"><tr><td> <div class="math-display" > <img src="userhtml20x.png" alt="y ← αAHx + βy " class="math-display" ><a id="x9-67003r3"></a></div> </td><td class="equation-label">(3)</td></tr></table> <!--l. 946--><p class="nopar" > <!--l. 948--><p class="indent" > where: <dl class="description"><dt class="description"> <!--l. 950--><p class="noindent" > <span class="cmmi-10">x</span> </dt><dd class="description"> <!--l. 950--><p class="noindent" >is the global dense matrix <span class="cmmi-10">x</span><sub><span class="cmr-7">:</span><span class="cmmi-7">,</span><span class="cmr-7">:</span></sub> </dd><dt class="description"> <!--l. 951--><p class="noindent" > <span class="cmmi-10">y</span> </dt><dd class="description"> <!--l. 951--><p class="noindent" >is the global dense matrix <span class="cmmi-10">y</span><sub><span class="cmr-7">:</span><span class="cmmi-7">,</span><span class="cmr-7">:</span></sub> </dd><dt class="description"> <!--l. 952--><p class="noindent" > <span class="cmmi-10">A</span> </dt><dd class="description"> <!--l. 952--><p class="noindent" >is the global sparse matrix <span class="cmmi-10">A</span></dd></dl> <div class="table"> <!--l. 955--><p class="indent" > <a id="x9-67004r12"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 956--><p class="noindent" > <div class="tabular"> <table id="TBL-12" class="tabular" ><colgroup id="TBL-12-1g"><col id="TBL-12-1"><col id="TBL-12-2"></colgroup><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-1-1" class="td11"><span class="cmmi-10">A</span>, <span class="cmmi-10">x</span>, <span class="cmmi-10">y</span>, <span class="cmmi-10">α</span>, <span class="cmmi-10">β </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-1-2" class="td11"><span class="cmbx-10">Subroutine</span></td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-1" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-2" class="td11">psb_spmm </td> </tr><tr style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-2" class="td11">psb_spmm </td> </tr><tr style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-1" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-2" class="td11">psb_spmm </td> </tr><tr style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-5-1" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-5-2" class="td11">psb_spmm </td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 12: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-67004r12 --> </div><hr class="endfloat" /> </div> <!--l. 971--><p class="indent" > <code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">psb_spmm</span><span style="color:#000000">(</span><span style="color:#000000">alpha</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">beta</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">y</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000">)</span></code><br class="newline" /><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">psb_spmm</span><span style="color:#000000">(</span><span style="color:#000000">alpha</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">beta</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">y</span><span style="color:#000000">,</span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">trans</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">work</span><span style="color:#000000">)</span></code> <dl class="description"><dt class="description"> <!--l. 975--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 975--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 976--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 976--><p class="noindent" > </dd><dt class="description"> <!--l. 977--><p class="noindent" > <span class="cmbx-10">alpha</span> </dt><dd class="description"> <!--l. 977--><p class="noindent" >the scalar <span class="cmmi-10">α</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a number of the data type indicated in Table <a href="#x9-67004r12">12<!--tex4ht:ref: tab:f90spmm --></a>. </dd><dt class="description"> <!--l. 983--><p class="noindent" > <span class="cmbx-10">a</span> </dt><dd class="description"> <!--l. 983--><p class="noindent" >the local portion of the sparse matrix <span class="cmmi-10">A</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#spdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_Tspmat</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 989--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 989--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">x</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-67004r12">12<!--tex4ht:ref: tab:f90spmm --></a>. The rank of <span class="cmmi-10">x </span>must be the same of <span class="cmmi-10">y</span>. </dd><dt class="description"> <!--l. 999--><p class="noindent" > <span class="cmbx-10">beta</span> </dt><dd class="description"> <!--l. 999--><p class="noindent" >the scalar <span class="cmmi-10">β</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a number of the data type indicated in Table <a href="#x9-67004r12">12<!--tex4ht:ref: tab:f90spmm --></a>. </dd><dt class="description"> <!--l. 1004--><p class="noindent" > <span class="cmbx-10">y</span> </dt><dd class="description"> <!--l. 1004--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">y</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-67004r12">12<!--tex4ht:ref: tab:f90spmm --></a>. The rank of <span class="cmmi-10">y </span>must be the same of <span class="cmmi-10">x</span>. </dd><dt class="description"> <!--l. 1014--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 1014--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 1019--><p class="noindent" > <span class="cmbx-10">trans</span> </dt><dd class="description"> <!--l. 1019--><p class="noindent" >indicates what kind of operation to perform. <dl class="description"><dt class="description"> <!--l. 1021--><p class="noindent" > <span class="cmbx-10">trans = N</span> </dt><dd class="description"> <!--l. 1021--><p class="noindent" >the operation is specified by equation <a href="#x9-67001r1">1<!--tex4ht:ref: eq:f90spmm_no_tra --></a> </dd><dt class="description"> <!--l. 1022--><p class="noindent" > <span class="cmbx-10">trans = T</span> </dt><dd class="description"> <!--l. 1022--><p class="noindent" >the operation is specified by equation <a href="#x9-67002r2">2<!--tex4ht:ref: eq:f90spmm_tra --></a> </dd><dt class="description"> <!--l. 1024--><p class="noindent" > <span class="cmbx-10">trans = C</span> </dt><dd class="description"> <!--l. 1024--><p class="noindent" >the operation is specified by equation <a href="#x9-67003r3">3<!--tex4ht:ref: eq:f90spmm_con --></a></dd></dl> <!--l. 1027--><p class="noindent" >Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">optional</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Default: <span class="cmmi-10">trans </span>= <span class="cmmi-10">N</span><br class="newline" />Specified as: a character variable. </dd><dt class="description"> <!--l. 1050--><p class="noindent" > <span class="cmbx-10">work</span> </dt><dd class="description"> <!--l. 1050--><p class="noindent" >work array.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">optional</span><br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />Specified as: a rank one array of the same type of <span class="cmmi-10">x </span>and <span class="cmmi-10">y </span>with the TARGET attribute. </dd><dt class="description"> <!--l. 1057--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 1057--><p class="noindent" > </dd><dt class="description"> <!--l. 1058--><p class="noindent" > <span class="cmbx-10">y</span> </dt><dd class="description"> <!--l. 1058--><p class="noindent" >the local portion of result matrix <span class="cmmi-10">y</span>.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />Specified as: an array of rank one or two containing numbers of type specified in Table <a href="#x9-67004r12">12<!--tex4ht:ref: tab:f90spmm --></a>. </dd><dt class="description"> <!--l. 1065--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 1065--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <h4 class="subsectionHead"><span class="titlemark">4.13 </span> <a id="x9-680004.13"></a>psb_spsm — Triangular System Solve</h4> <!--l. 1081--><p class="noindent" >This subroutine computes the Triangular System Solve: <div class="eqnarray"> <div class="math-display" > <img src="userhtml21x.png" alt="y ← αT- 1x + βy y ← αDT -1x +βy - 1 y ← αT Dx +βy y ← αT- Tx+ βy y ← αDT -Tx + βy y ← αT- TDx + βy - H y ← αT x +βy y ← αDT -Hx + βy y ← αT- HDx + βy " class="math-display" ></div> </div> <!--l. 1096--><p class="indent" > where: <dl class="description"><dt class="description"> <!--l. 1098--><p class="noindent" > <span class="cmmi-10">x</span> </dt><dd class="description"> <!--l. 1098--><p class="noindent" >is the global dense matrix <span class="cmmi-10">x</span><sub><span class="cmr-7">:</span><span class="cmmi-7">,</span><span class="cmr-7">:</span></sub> </dd><dt class="description"> <!--l. 1099--><p class="noindent" > <span class="cmmi-10">y</span> </dt><dd class="description"> <!--l. 1099--><p class="noindent" >is the global dense matrix <span class="cmmi-10">y</span><sub><span class="cmr-7">:</span><span class="cmmi-7">,</span><span class="cmr-7">:</span></sub> </dd><dt class="description"> <!--l. 1100--><p class="noindent" > <span class="cmmi-10">T</span> </dt><dd class="description"> <!--l. 1100--><p class="noindent" >is the global sparse block triangular submatrix <span class="cmmi-10">T</span> </dd><dt class="description"> <!--l. 1101--><p class="noindent" > <span class="cmmi-10">D</span> </dt><dd class="description"> <!--l. 1101--><p class="noindent" >is the scaling diagonal matrix.</dd></dl> <!--l. 1104--><p class="indent" > <code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">psb_spsm</span><span style="color:#000000">(</span><span style="color:#000000">alpha</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">t</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">beta</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">y</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000">)</span></code><br class="newline" /><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">psb_spsm</span><span style="color:#000000">(</span><span style="color:#000000">alpha</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">t</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">beta</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">y</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">trans</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">unit</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">choice</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">diag</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">work</span><span style="color:#000000">)</span></code><br class="newline" /> <div class="table"> <!--l. 1107--><p class="indent" > <a id="x9-68002r13"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 1108--><p class="noindent" > <div class="tabular"> <table id="TBL-13" class="tabular" ><colgroup id="TBL-13-1g"><col id="TBL-13-1"><col id="TBL-13-2"></colgroup><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-1-1" class="td11"><span class="cmmi-10">T</span>, <span class="cmmi-10">x</span>, <span class="cmmi-10">y</span>, <span class="cmmi-10">D</span>, <span class="cmmi-10">α</span>, <span class="cmmi-10">β </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-1-2" class="td11"><span class="cmbx-10">Subroutine</span></td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-1" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-2" class="td11">psb_spsm </td> </tr><tr style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-13-3-2" class="td11">psb_spsm </td> </tr><tr style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-4-1" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-13-4-2" class="td11">psb_spsm </td> </tr><tr style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-5-1" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-13-5-2" class="td11">psb_spsm </td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 13: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-68002r13 --> </div><hr class="endfloat" /> </div> <dl class="description"><dt class="description"> <!--l. 1126--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 1126--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 1127--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 1127--><p class="noindent" > </dd><dt class="description"> <!--l. 1128--><p class="noindent" > <span class="cmbx-10">alpha</span> </dt><dd class="description"> <!--l. 1128--><p class="noindent" >the scalar <span class="cmmi-10">α</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a number of the data type indicated in Table <a href="#x9-68002r13">13<!--tex4ht:ref: tab:f90spsm --></a>. </dd><dt class="description"> <!--l. 1134--><p class="noindent" > <span class="cmbx-10">t</span> </dt><dd class="description"> <!--l. 1134--><p class="noindent" >the global portion of the sparse matrix <span class="cmmi-10">T</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object type specified in <span class="tcrm-1000">�</span> <a href="userhtmlse3.html#x8-90003">3<!--tex4ht:ref: sec:datastruct --></a>. </dd><dt class="description"> <!--l. 1141--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 1141--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">x</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-68002r13">13<!--tex4ht:ref: tab:f90spsm --></a>. The rank of <span class="cmmi-10">x </span>must be the same of <span class="cmmi-10">y</span>. </dd><dt class="description"> <!--l. 1151--><p class="noindent" > <span class="cmbx-10">beta</span> </dt><dd class="description"> <!--l. 1151--><p class="noindent" >the scalar <span class="cmmi-10">β</span>.<br class="newline" />Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: a number of the data type indicated in Table <a href="#x9-68002r13">13<!--tex4ht:ref: tab:f90spsm --></a>. </dd><dt class="description"> <!--l. 1156--><p class="noindent" > <span class="cmbx-10">y</span> </dt><dd class="description"> <!--l. 1156--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">y</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />Specified as: a rank one or two array or an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-68002r13">13<!--tex4ht:ref: tab:f90spsm --></a>. The rank of <span class="cmmi-10">y </span>must be the same of <span class="cmmi-10">x</span>. </dd><dt class="description"> <!--l. 1166--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 1166--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 1171--><p class="noindent" > <span class="cmbx-10">trans</span> </dt><dd class="description"> <!--l. 1171--><p class="noindent" >specify with <span class="cmti-10">unitd </span>the operation to perform. <dl class="description"><dt class="description"> <!--l. 1173--><p class="noindent" > <span class="cmbx-10">trans = ’N’</span> </dt><dd class="description"> <!--l. 1173--><p class="noindent" >the operation is with no transposed matrix </dd><dt class="description"> <!--l. 1174--><p class="noindent" > <span class="cmbx-10">trans = ’T’</span> </dt><dd class="description"> <!--l. 1174--><p class="noindent" >the operation is with transposed matrix. </dd><dt class="description"> <!--l. 1175--><p class="noindent" > <span class="cmbx-10">trans = ’C’</span> </dt><dd class="description"> <!--l. 1175--><p class="noindent" >the operation is with conjugate transposed matrix.</dd></dl> <!--l. 1177--><p class="noindent" >Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">optional</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Default: <span class="cmmi-10">trans </span>= <span class="cmmi-10">N</span><br class="newline" />Specified as: a character variable. </dd><dt class="description"> <!--l. 1182--><p class="noindent" > <span class="cmbx-10">unitd</span> </dt><dd class="description"> <!--l. 1182--><p class="noindent" >specify with <span class="cmti-10">trans </span>the operation to perform. <dl class="description"><dt class="description"> <!--l. 1184--><p class="noindent" > <span class="cmbx-10">unitd = ’U’</span> </dt><dd class="description"> <!--l. 1184--><p class="noindent" >the operation is with no scaling </dd><dt class="description"> <!--l. 1185--><p class="noindent" > <span class="cmbx-10">unitd = ’L’</span> </dt><dd class="description"> <!--l. 1185--><p class="noindent" >the operation is with left scaling </dd><dt class="description"> <!--l. 1186--><p class="noindent" > <span class="cmbx-10">unitd = ’R’</span> </dt><dd class="description"> <!--l. 1186--><p class="noindent" >the operation is with right scaling.</dd></dl> <!--l. 1188--><p class="noindent" >Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">optional</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Default: <span class="cmmi-10">unitd </span>= <span class="cmmi-10">U</span><br class="newline" />Specified as: a character variable. </dd><dt class="description"> <!--l. 1193--><p class="noindent" > <span class="cmbx-10">choice</span> </dt><dd class="description"> <!--l. 1193--><p class="noindent" >specifies the update of overlap elements to be performed on exit: <dl class="description"><dt class="description"> <!--l. 1196--><p class="noindent" > </dt><dd class="description"> <!--l. 1196--><p class="noindent" ><code class="lstinline"><span style="color:#000000">psb_none_</span></code> </dd><dt class="description"> <!--l. 1197--><p class="noindent" > </dt><dd class="description"> <!--l. 1197--><p class="noindent" ><code class="lstinline"><span style="color:#000000">psb_sum_</span></code> </dd><dt class="description"> <!--l. 1198--><p class="noindent" > </dt><dd class="description"> <!--l. 1198--><p class="noindent" ><code class="lstinline"><span style="color:#000000">psb_avg_</span></code> </dd><dt class="description"> <!--l. 1199--><p class="noindent" > </dt><dd class="description"> <!--l. 1199--><p class="noindent" ><code class="lstinline"><span style="color:#000000">psb_square_root_</span></code></dd></dl> <!--l. 1201--><p class="noindent" >Scope: <span class="cmbx-10">global </span><br class="newline" />Type: <span class="cmbx-10">optional</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Default: <code class="lstinline"><span style="color:#000000">psb_avg_</span></code><br class="newline" />Specified as: an integer variable. </dd><dt class="description"> <!--l. 1206--><p class="noindent" > <span class="cmbx-10">diag</span> </dt><dd class="description"> <!--l. 1206--><p class="noindent" >the diagonal scaling matrix.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">optional</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Default: <span class="cmmi-10">diag</span>(1) = 1(<span class="cmmi-10">noscaling</span>)<br class="newline" />Specified as: a rank one array containing numbers of the type indicated in Table <a href="#x9-68002r13">13<!--tex4ht:ref: tab:f90spsm --></a>. </dd><dt class="description"> <!--l. 1213--><p class="noindent" > <span class="cmbx-10">work</span> </dt><dd class="description"> <!--l. 1213--><p class="noindent" >a work array. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">optional</span><br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />Specified as: a rank one array of the same type of <span class="cmmi-10">x </span>with the TARGET attribute. </dd><dt class="description"> <!--l. 1220--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 1220--><p class="noindent" > </dd><dt class="description"> <!--l. 1221--><p class="noindent" > <span class="cmbx-10">y</span> </dt><dd class="description"> <!--l. 1221--><p class="noindent" >the local portion of global dense matrix <span class="cmmi-10">y</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />Specified as: an array of rank one or two containing numbers of type specified in Table <a href="#x9-68002r13">13<!--tex4ht:ref: tab:f90spsm --></a>. </dd><dt class="description"> <!--l. 1231--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 1231--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <h4 class="subsectionHead"><span class="titlemark">4.14 </span> <a id="x9-690004.14"></a>psb_gemlt — Entrywise Product</h4> <!--l. 1247--><p class="noindent" >This function computes the entrywise product between two vectors <span class="cmmi-10">x </span>and <span class="cmmi-10">y</span> <div class="math-display" > <img src="userhtml22x.png" alt="dot ← x(i)y(i). " class="math-display" ></div> <!--l. 1249--><p class="nopar" > <!--l. 1251--><p class="indent" > <code class="lstinline"><span style="color:#000000">psb_gemlt</span><span style="color:#000000">(</span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">y</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000">)</span></code> <div class="table"> <!--l. 1254--><p class="indent" > <a id="x9-69001r14"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 1255--><p class="noindent" > <div class="tabular"> <table id="TBL-14" class="tabular" ><colgroup id="TBL-14-1g"><col id="TBL-14-1"><col id="TBL-14-2"></colgroup><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-1-1" class="td11"><span class="cmmi-10">dot</span>, <span class="cmmi-10">x</span>, <span class="cmmi-10">y </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-1-2" class="td11"><span class="cmbx-10">Function</span></td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-2-1" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-14-2-2" class="td11">psb_gemlt</td> </tr><tr style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-14-3-2" class="td11">psb_gemlt</td> </tr><tr style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-4-1" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-14-4-2" class="td11">psb_gemlt</td> </tr><tr style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-5-1" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-14-5-2" class="td11">psb_gemlt</td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 14: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-69001r14 --> </div><hr class="endfloat" /> </div> <dl class="description"><dt class="description"> <!--l. 1271--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 1271--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 1272--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 1272--><p class="noindent" > </dd><dt class="description"> <!--l. 1273--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 1273--><p class="noindent" >the local portion of global dense vector <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-57001r2">2<!--tex4ht:ref: tab:f90dot --></a>. </dd><dt class="description"> <!--l. 1283--><p class="noindent" > <span class="cmbx-10">y</span> </dt><dd class="description"> <!--l. 1283--><p class="noindent" >the local portion of global dense vector <span class="cmmi-10">y</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-57001r2">2<!--tex4ht:ref: tab:f90dot --></a>. </dd><dt class="description"> <!--l. 1293--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 1293--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 1298--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 1298--><p class="noindent" > </dd><dt class="description"> <!--l. 1299--><p class="noindent" > <span class="cmbx-10">y</span> </dt><dd class="description"> <!--l. 1299--><p class="noindent" >the local portion of result submatrix <span class="cmmi-10">y</span>.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of the type indicated in Table <a href="#x9-69001r14">14<!--tex4ht:ref: tab:f90mlt --></a>. </dd><dt class="description"> <!--l. 1305--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 1305--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <h4 class="subsectionHead"><span class="titlemark">4.15 </span> <a id="x9-700004.15"></a>psb_gediv — Entrywise Division</h4> <!--l. 1314--><p class="noindent" >This function computes the entrywise division between two vectors <span class="cmmi-10">x </span>and <span class="cmmi-10">y</span> <div class="math-display" > <img src="userhtml23x.png" alt="∕ ← x(i)∕y(i). " class="math-display" ></div> <!--l. 1316--><p class="nopar" > <!--l. 1318--><p class="indent" > <code class="lstinline"><span style="color:#000000">psb_gediv</span><span style="color:#000000">(</span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">y</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">[</span><span style="color:#000000">flag</span><span style="color:#000000">)</span></code> <div class="table"> <!--l. 1321--><p class="indent" > <a id="x9-70001r15"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 1322--><p class="noindent" > <div class="tabular"> <table id="TBL-15" class="tabular" ><colgroup id="TBL-15-1g"><col id="TBL-15-1"><col id="TBL-15-2"></colgroup><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-1-1" class="td11"><span class="cmmi-10">∕</span>, <span class="cmmi-10">x</span>, <span class="cmmi-10">y </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-1-2" class="td11"><span class="cmbx-10">Function</span></td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-2-1" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-15-2-2" class="td11">psb_gediv</td> </tr><tr style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-15-3-2" class="td11">psb_gediv</td> </tr><tr style="vertical-align:baseline;" id="TBL-15-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-4-1" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-15-4-2" class="td11">psb_gediv</td> </tr><tr style="vertical-align:baseline;" id="TBL-15-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-5-1" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-15-5-2" class="td11">psb_gediv</td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-15-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 15: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-70001r15 --> </div><hr class="endfloat" /> </div> <dl class="description"><dt class="description"> <!--l. 1338--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 1338--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 1339--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 1339--><p class="noindent" > </dd><dt class="description"> <!--l. 1340--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 1340--><p class="noindent" >the local portion of global dense vector <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-57001r2">2<!--tex4ht:ref: tab:f90dot --></a>. </dd><dt class="description"> <!--l. 1350--><p class="noindent" > <span class="cmbx-10">y</span> </dt><dd class="description"> <!--l. 1350--><p class="noindent" >the local portion of global dense vector <span class="cmmi-10">y</span>. <br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-57001r2">2<!--tex4ht:ref: tab:f90dot --></a>. </dd><dt class="description"> <!--l. 1360--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 1360--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 1365--><p class="noindent" > <span class="cmbx-10">flag</span> </dt><dd class="description"> <!--l. 1365--><p class="noindent" >check if any of the <span class="cmmi-10">y</span>(<span class="cmmi-10">i</span>) = 0, and in case returns error halting the computation.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">optional </span>Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: the logical value <code class="lstinline"><span style="color:#000000">flag</span><span style="color:#000000">=.</span><span style="color:#000000">true</span><span style="color:#000000">.</span></code> </dd><dt class="description"> <!--l. 1370--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 1370--><p class="noindent" > </dd><dt class="description"> <!--l. 1371--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 1371--><p class="noindent" >the local portion of result submatrix <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of the type indicated in Table <a href="#x9-69001r14">14<!--tex4ht:ref: tab:f90mlt --></a>. </dd><dt class="description"> <!--l. 1377--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 1377--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <h4 class="subsectionHead"><span class="titlemark">4.16 </span> <a id="x9-710004.16"></a>psb_geinv — Entrywise Inversion</h4> <!--l. 1386--><p class="noindent" >This function computes the entrywise inverse of a vector <span class="cmmi-10">x </span>and puts it into <span class="cmmi-10">y</span> <div class="math-display" > <img src="userhtml24x.png" alt="∕ ← 1∕x(i). " class="math-display" ></div> <!--l. 1388--><p class="nopar" > <!--l. 1390--><p class="indent" > <code class="lstinline"><span style="color:#000000">psb_geinv</span><span style="color:#000000">(</span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">y</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">info</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">[</span><span style="color:#000000">flag</span><span style="color:#000000">)</span></code> <div class="table"> <!--l. 1393--><p class="indent" > <a id="x9-71001r16"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 1394--><p class="noindent" > <div class="tabular"> <table id="TBL-16" class="tabular" ><colgroup id="TBL-16-1g"><col id="TBL-16-1"><col id="TBL-16-2"></colgroup><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-1-1" class="td11"><span class="cmmi-10">∕</span>, <span class="cmmi-10">x</span>, <span class="cmmi-10">y </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-1-2" class="td11"><span class="cmbx-10">Function</span></td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-2-1" class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-16-2-2" class="td11">psb_geinv</td> </tr><tr style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-3-1" class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-16-3-2" class="td11">psb_geinv</td> </tr><tr style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-4-1" class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-16-4-2" class="td11">psb_geinv</td> </tr><tr style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-5-1" class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-16-5-2" class="td11">psb_geinv</td> </tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-16-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-6-1" class="td11"> </td></tr></table> </div></div> <br /> <div class="caption" ><span class="id">Table 16: </span><span class="content">Data types</span></div><!--tex4ht:label?: x9-71001r16 --> </div><hr class="endfloat" /> </div> <dl class="description"><dt class="description"> <!--l. 1410--><p class="noindent" > <span class="cmbx-10">Type:</span> </dt><dd class="description"> <!--l. 1410--><p class="noindent" >Synchronous. </dd><dt class="description"> <!--l. 1411--><p class="noindent" > <span class="cmbx-10">On Entry</span> </dt><dd class="description"> <!--l. 1411--><p class="noindent" > </dd><dt class="description"> <!--l. 1412--><p class="noindent" > <span class="cmbx-10">x</span> </dt><dd class="description"> <!--l. 1412--><p class="noindent" >the local portion of global dense vector <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of type specified in Table <a href="#x9-57001r2">2<!--tex4ht:ref: tab:f90dot --></a>. </dd><dt class="description"> <!--l. 1422--><p class="noindent" > <span class="cmbx-10">desc</span><span class="cmbx-10">_a</span> </dt><dd class="description"> <!--l. 1422--><p class="noindent" >contains data structures for communications.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required</span><br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#descdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_desc</span><span class="cmtt-10">_type</span></a>. </dd><dt class="description"> <!--l. 1427--><p class="noindent" > <span class="cmbx-10">flag</span> </dt><dd class="description"> <!--l. 1427--><p class="noindent" >check if any of the <span class="cmmi-10">x</span>(<span class="cmmi-10">i</span>) = 0, and in case returns error halting the computation.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">optional </span>Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: the logical value <code class="lstinline"><span style="color:#000000">flag</span><span style="color:#000000">=.</span><span style="color:#000000">true</span><span style="color:#000000">.</span></code> </dd><dt class="description"> <!--l. 1432--><p class="noindent" > <span class="cmbx-10">On Return</span> </dt><dd class="description"> <!--l. 1432--><p class="noindent" > </dd><dt class="description"> <!--l. 1433--><p class="noindent" > <span class="cmbx-10">y</span> </dt><dd class="description"> <!--l. 1433--><p class="noindent" >the local portion of result submatrix <span class="cmmi-10">x</span>.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />Specified as: an object of type <a href="userhtmlse3.html#vdata"><span class="cmtt-10">psb</span><span class="cmtt-10">_T</span><span class="cmtt-10">_vect</span><span class="cmtt-10">_type</span></a> containing numbers of the type indicated in Table <a href="#x9-71001r16">16<!--tex4ht:ref: tab:f90inv --></a>. </dd><dt class="description"> <!--l. 1439--><p class="noindent" > <span class="cmbx-10">info</span> </dt><dd class="description"> <!--l. 1439--><p class="noindent" >Error code.<br class="newline" />Scope: <span class="cmbx-10">local </span><br class="newline" />Type: <span class="cmbx-10">required </span><br class="newline" />Intent: <span class="cmbx-10">out</span>.<br class="newline" />An integer value; 0 means no error has been detected.</dd></dl> <!--l. 1--><div class="crosslinks"><p class="noindent">[<a href="userhtmlse8.html" >next</a>] [<a href="userhtmlse3.html" >prev</a>] [<a href="userhtmlse3.html#tailuserhtmlse3.html" >prev-tail</a>] [<a href="userhtmlse4.html" >front</a>] [<a href="userhtml.html#userhtmlse7.html" >up</a>] </p></div> <!--l. 1--><p class="indent" > <a id="tailuserhtmlse4.html"></a> </body></html>