docs/pdf/commrout.tex
 docs/pdf/datastruct.tex
 docs/pdf/methods.tex
 docs/pdf/penv.tex
 docs/pdf/psbrout.tex
 docs/pdf/title.tex
 docs/pdf/toolsrout.tex
 docs/userguide.pdf

Updated docs with  single precision.
psblas3-type-indexed
Salvatore Filippone 18 years ago
parent c3532df7fd
commit b888d66e98

@ -25,7 +25,10 @@ where:
\hline \hline
$\alpha$, $x$ & {\bf Subroutine}\\ $\alpha$, $x$ & {\bf Subroutine}\\
\hline \hline
Integer & psb\_halo \\
Short Precision Real & psb\_halo \\
Long Precision Real & psb\_halo \\ Long Precision Real & psb\_halo \\
Short Precision Complex & psb\_halo \\
Long Precision Complex & psb\_halo \\ Long Precision Complex & psb\_halo \\
\hline \hline
\end{tabular} \end{tabular}
@ -174,7 +177,9 @@ operators $ P_a$ and $ P^{T}$.
\hline \hline
$x$ & {\bf Subroutine}\\ $x$ & {\bf Subroutine}\\
\hline \hline
Short Precision Real & psb\_ovrl \\
Long Precision Real & psb\_ovrl \\ Long Precision Real & psb\_ovrl \\
Short Precision Complex & psb\_ovrl \\
Long Precision Complex & psb\_ovrl \\ Long Precision Complex & psb\_ovrl \\
\hline \hline
\end{tabular} \end{tabular}
@ -359,7 +364,10 @@ process $i$.
\hline \hline
$x_i, y$ & {\bf Subroutine}\\ $x_i, y$ & {\bf Subroutine}\\
\hline \hline
Integer & psb\_gather \\
Short Precision Real & psb\_gather \\
Long Precision Real & psb\_gather \\ Long Precision Real & psb\_gather \\
Short Precision Complex & psb\_gather \\
Long Precision Complex & psb\_gather \\ Long Precision Complex & psb\_gather \\
\hline \hline
\end{tabular} \end{tabular}
@ -454,7 +462,10 @@ process $i$.
\hline \hline
$x_i, y$ & {\bf Subroutine}\\ $x_i, y$ & {\bf Subroutine}\\
\hline \hline
Integer & psb\_scatter \\
Short Precision Real & psb\_scatter \\
Long Precision Real & psb\_scatter \\ Long Precision Real & psb\_scatter \\
Short Precision Complex & psb\_scatter \\
Long Precision Complex & psb\_scatter \\ Long Precision Complex & psb\_scatter \\
\hline \hline
\end{tabular} \end{tabular}

@ -15,6 +15,9 @@ user subroutine that makes use of the library.
Real and complex data types are parametrized with a kind type defined Real and complex data types are parametrized with a kind type defined
in the library as follows: in the library as follows:
\begin{description} \begin{description}
\item[psb\_spk\_] Kind parameter for short precision real and complex
data; corresponds to a \verb|REAL| declaration and is
normally 4 bytes.
\item[psb\_dpk\_] Kind parameter for long precision real and complex \item[psb\_dpk\_] Kind parameter for long precision real and complex
data; corresponds to a \verb|DOUBLE PRECISION| declaration and is data; corresponds to a \verb|DOUBLE PRECISION| declaration and is
normally 8 bytes. normally 8 bytes.
@ -226,11 +229,23 @@ Specified as: integer variable.
\end{description} \end{description}
The Fortran~95 interface for distributed sparse matrices containing The Fortran~95 interface for distributed sparse matrices containing
double precision real entries is defined as shown in double precision real entries is defined as shown in
figure~\ref{fig:spmattype}. figure~\ref{fig:spmattype}. The definitions for single precision and
complex data are identical except for the \verb|real| declaration and
for the kind type parameter.
\begin{figure}[h!] \begin{figure}[h!]
\begin{Sbox} \begin{Sbox}
\begin{minipage}[tl]{0.85\textwidth} \begin{minipage}[tl]{0.85\textwidth}
\begin{verbatim} \begin{verbatim}
type psb_sspmat_type
integer :: m, k
character :: fida(5)
character :: descra(10)
integer :: infoa(psb_ifa_size_)
real(psb_spk_), allocatable :: aspk(:)
integer, allocatable :: ia1(:), ia2(:)
integer, allocatable :: pr(:), pl(:)
end type psb_sspmat_type
type psb_dspmat_type type psb_dspmat_type
integer :: m, k integer :: m, k
character :: fida(5) character :: fida(5)
@ -240,6 +255,27 @@ type psb_dspmat_type
integer, allocatable :: ia1(:), ia2(:) integer, allocatable :: ia1(:), ia2(:)
integer, allocatable :: pr(:), pl(:) integer, allocatable :: pr(:), pl(:)
end type psb_dspmat_type end type psb_dspmat_type
type psb_cspmat_type
integer :: m, k
character :: fida(5)
character :: descra(10)
integer :: infoa(psb_ifa_size_)
complex(psb_spk_), allocatable :: aspk(:)
integer, allocatable :: ia1(:), ia2(:)
integer, allocatable :: pr(:), pl(:)
end type psb_cspmat_type
type psb_zspmat_type
integer :: m, k
character :: fida(5)
character :: descra(10)
integer :: infoa(psb_ifa_size_)
complex(psb_dpk_), allocatable :: aspk(:)
integer, allocatable :: ia1(:), ia2(:)
integer, allocatable :: pr(:), pl(:)
end type psb_zspmat_type
\end{verbatim} \end{verbatim}
\end{minipage} \end{minipage}
\end{Sbox} \end{Sbox}
@ -330,10 +366,10 @@ associated communication descriptor.%% which may be different than the
%% This data structure wants to be flexible enough to easily allow the %% This data structure wants to be flexible enough to easily allow the
%% implementation of new kind of preconditioners. %% implementation of new kind of preconditioners.
The values contained in The values contained in
the \verb|iprcparm| and \verb|dprcparm| define tha type of the \verb|iprcparm| and \verb|rprcparm| define tha type of
preconditioner along with all the parameters related to it; thus, preconditioner along with all the parameters related to it; thus,
\verb|iprcparm| and \verb|dprcparm| define how the other records have \verb|iprcparm| and \verb|rprcparm| define how the other records have
to be interpreted. This data structure is the basis of ore complex to be interpreted. This data structure is the basis of more complex
preconditioning strategies, which are the subject of further preconditioning strategies, which are the subject of further
research. research.
\begin{figure}[h!] \begin{figure}[h!]
@ -342,16 +378,46 @@ research.
\begin{minipage}[tl]{0.9\textwidth} \begin{minipage}[tl]{0.9\textwidth}
\begin{verbatim} \begin{verbatim}
type psb_sprec_type
type(psb_sspmat_type), allocatable :: av(:)
real(psb_spk_), allocatable :: d(:)
type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:)
real(psb_spk_), allocatable :: rprcparm(:)
integer, allocatable :: perm(:), invperm(:)
integer :: prec, base_prec
end type psb_sprec_type
type psb_dprec_type type psb_dprec_type
type(psb_dspmat_type), allocatable :: av(:) type(psb_dspmat_type), allocatable :: av(:)
real(psb_dpk_), allocatable :: d(:) real(psb_dpk_), allocatable :: d(:)
type(psb_desc_type) :: desc_data type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:) integer, allocatable :: iprcparm(:)
real(psb_dpk_), allocatable :: dprcparm(:) real(psb_dpk_), allocatable :: rprcparm(:)
integer, allocatable :: perm(:), invperm(:) integer, allocatable :: perm(:), invperm(:)
integer :: prec, base_prec integer :: prec, base_prec
end type psb_dprec_type end type psb_dprec_type
type psb_cprec_type
type(psb_cspmat_type), allocatable :: av(:)
complex(psb_spk_), allocatable :: d(:)
type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:)
real(psb_spk_), allocatable :: rprcparm(:)
integer, allocatable :: perm(:), invperm(:)
integer :: prec, base_prec
end type psb_cprec_type
type psb_zprec_type
type(psb_zspmat_type), allocatable :: av(:)
complex(psb_dpk_), allocatable :: d(:)
type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:)
real(psb_dpk_), allocatable :: rprcparm(:)
integer, allocatable :: perm(:), invperm(:)
integer :: prec, base_prec
end type psb_zprec_type
\end{verbatim} \end{verbatim}
\end{minipage} \end{minipage}
\end{Sbox} \end{Sbox}

@ -26,7 +26,7 @@ later). In the above formulae, $x_i$ is the tentative solution and
$r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration. $r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration.
\syntax{call psb\_krylov}{method,a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop} \syntax{call psb\_krylov}{method,a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop,cond}
\begin{description} \begin{description}
\item[Type:] Synchronous. \item[Type:] Synchronous.
@ -34,13 +34,13 @@ $r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration.
\item[method] a string that defines the iterative method to be \item[method] a string that defines the iterative method to be
used. Supported values are: used. Supported values are:
\begin{description} \begin{description}
\item[CG]: the Conjugate Gradient method; \item[CG:] the Conjugate Gradient method;
\item[CGS]:the Conjugate Gradient Stabilized method; \item[CGS:] the Conjugate Gradient Stabilized method;
\item[BICG]: the Bi-Conjugate Gradient method; \item[BICG:] the Bi-Conjugate Gradient method;
\item[BICGSTAB]: the Bi-Conjugate Gradient Stabilized method; \item[BICGSTAB:] the Bi-Conjugate Gradient Stabilized method;
\item[BICGSTABL]: the Bi-Conjugate Gradient Stabilized method with restarting; \item[BICGSTABL:] the Bi-Conjugate Gradient Stabilized method with restarting;
\item[RGMRES]: the Generalized Minimal Residual method with restarting. \item[RGMRES:] the Generalized Minimal Residual method with restarting.
\end{description} \end{description}
\item[a] the local portion of global sparse matrix \item[a] the local portion of global sparse matrix
$A$. \\ $A$. \\
@ -113,6 +113,12 @@ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf out}.\\ Intent: {\bf out}.\\
Returned as: a real number. Returned as: a real number.
\item[cond] An estimate of the condition number of matrix $A$; only
available with the $CG$ method.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
Intent: {\bf out}.\\
Returned as: a real number.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\

@ -255,7 +255,7 @@ Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical variable, scalar, or a rank 1 or 2 array, or a character or logical variable,
which may be a scalar or rank 1 array. \ which may be a scalar or rank 1 array. \
Type, rank and size must agree on all processes. Type, kind, rank and size must agree on all processes.
\item[root] Root process holding data to be broadcast.\\ \item[root] Root process holding data to be broadcast.\\
Scope: {\bf global}.\\ Scope: {\bf global}.\\
Type: {\bf optional}.\\ Type: {\bf optional}.\\
@ -272,7 +272,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\ Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. \ scalar, or a rank 1 or 2 array, or a character or logical scalar. \
Type, rank and size must agree on all processes. Type, kind, rank and size must agree on all processes.
\end{description} \end{description}
@ -297,7 +297,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\ Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, kind, rank and size must agree on all processes.
\item[root] Process to hold the final sum, or $-1$ to make it available \item[root] Process to hold the final sum, or $-1$ to make it available
on all processes.\\ on all processes.\\
Scope: {\bf global}.\\ Scope: {\bf global}.\\
@ -315,7 +315,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\ Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \\ scalar, or a rank 1 or 2 array. \\
Type, rank and size must agree on all processes. Type, kind, rank and size must agree on all processes.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
@ -348,7 +348,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\ Intent: {\bf inout}.\\
Specified as: an integer or real variable, which may be a Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, kind, rank and size must agree on all processes.
\item[root] Process to hold the final maximum, or $-1$ to make it available \item[root] Process to hold the final maximum, or $-1$ to make it available
on all processes.\\ on all processes.\\
Scope: {\bf global}.\\ Scope: {\bf global}.\\
@ -366,7 +366,7 @@ Type: {\bf required}.\\
Intent: {\bf in}.\\ Intent: {\bf in}.\\
Specified as: an integer or real variable, which may be a Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, kind, rank and size must agree on all processes.
\end{description} \end{description}
@ -398,7 +398,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\ Intent: {\bf inout}.\\
Specified as: an integer or real variable, which may be a Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, kind, rank and size must agree on all processes.
\item[root] Process to hold the final value, or $-1$ to make it available \item[root] Process to hold the final value, or $-1$ to make it available
on all processes.\\ on all processes.\\
Scope: {\bf global}.\\ Scope: {\bf global}.\\
@ -416,7 +416,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\ Intent: {\bf inout}.\\
Specified as: an integer or real variable, which may be a Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. \\ scalar, or a rank 1 or 2 array. \\
Type, rank and size must agree on all processes. Type, kind, rank and size must agree on all processes.
\end{description} \end{description}
@ -448,7 +448,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\ Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, kind, rank and size must agree on all processes.
\item[root] Process to hold the final value, or $-1$ to make it available \item[root] Process to hold the final value, or $-1$ to make it available
on all processes.\\ on all processes.\\
Scope: {\bf global}.\\ Scope: {\bf global}.\\
@ -466,7 +466,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\ Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, kind, rank and size must agree on all processes.
\end{description} \end{description}
@ -498,7 +498,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\ Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, kind, rank and size must agree on all processes.
\item[root] Process to hold the final value, or $-1$ to make it available \item[root] Process to hold the final value, or $-1$ to make it available
on all processes.\\ on all processes.\\
Scope: {\bf global}.\\ Scope: {\bf global}.\\
@ -516,7 +516,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\ Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \\ scalar, or a rank 1 or 2 array. \\
Type, rank and size must agree on all processes. Type, kind, rank and size must agree on all processes.
\end{description} \end{description}
@ -548,7 +548,7 @@ Type: {\bf required}.\\
Intent: {\bf in}.\\ Intent: {\bf in}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. \ scalar, or a rank 1 or 2 array, or a character or logical scalar. \
Type and rank must agree on sender and receiver process; if $m$ is Type, kind and rank must agree on sender and receiver process; if $m$ is
not specified, size must agree as well. not specified, size must agree as well.
\item[dst] Destination process.\\ \item[dst] Destination process.\\
Scope: {\bf global}.\\ Scope: {\bf global}.\\
@ -615,7 +615,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\ Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. \ scalar, or a rank 1 or 2 array, or a character or logical scalar. \
Type and rank must agree on sender and receiver process; if $m$ is Type, kind and rank must agree on sender and receiver process; if $m$ is
not specified, size must agree as well. not specified, size must agree as well.
\end{description} \end{description}

@ -26,7 +26,9 @@ dense matrix sum:
\hline \hline
$x$, $y$, $\alpha$, $\beta$ & {\bf Subroutine}\\ $x$, $y$, $\alpha$, $\beta$ & {\bf Subroutine}\\
\hline \hline
Short Precision Real & psb\_geaxpby \\
Long Precision Real & psb\_geaxpby \\ Long Precision Real & psb\_geaxpby \\
Short Precision Complex & psb\_geaxpby \\
Long Precision Complex & psb\_geaxpby \\ Long Precision Complex & psb\_geaxpby \\
\hline \hline
\end{tabular} \end{tabular}
@ -113,10 +115,10 @@ An integer value; 0 means no error has been detected.
This function computes dot product between two vectors $x$ and This function computes dot product between two vectors $x$ and
$y$.\\ $y$.\\
If $x$ and $y$ are double precision real vectors If $x$ and $y$ are real vectors
computes dot-product as: it computes dot-product as:
\[dot \leftarrow x^T y\] \[dot \leftarrow x^T y\]
Else if $x$ and $y$ are double precision complex vectors then computes dot-product as: Else if $x$ and $y$ are complex vectors then it computes dot-product as:
\[dot \leftarrow x^H y\] \[dot \leftarrow x^H y\]
%% where: %% where:
%% \begin{description} %% \begin{description}
@ -132,7 +134,9 @@ Else if $x$ and $y$ are double precision complex vectors then computes dot-produ
\hline \hline
$dot$, $x$, $y$ & {\bf Function}\\ $dot$, $x$, $y$ & {\bf Function}\\
\hline \hline
Short Precision Real & psb\_gedot \\
Long Precision Real & psb\_gedot \\ Long Precision Real & psb\_gedot \\
Short Precision Complex & psb\_gedot \\
Long Precision Complex & psb\_gedot \\ Long Precision Complex & psb\_gedot \\
\hline \hline
\end{tabular} \end{tabular}
@ -213,7 +217,9 @@ is a rank one array.
\hline \hline
$res$, $x$, $y$ & {\bf Subroutine}\\ $res$, $x$, $y$ & {\bf Subroutine}\\
\hline \hline
Short Precision Real & psb\_gedots \\
Long Precision Real & psb\_gedots \\ Long Precision Real & psb\_gedots \\
Short Precision Complex & psb\_gedots \\
Long Precision Complex & psb\_gedots \\ Long Precision Complex & psb\_gedots \\
\hline \hline
\end{tabular} \end{tabular}
@ -269,10 +275,10 @@ An integer value; 0 means no error has been detected.
This function computes This function computes
the infinity-norm of a vector $x$.\\ the infinity-norm of a vector $x$.\\
If $x$ is a double precision real vector If $x$ is a real vector
computes infinity norm as: it computes infinity norm as:
\[ amax \leftarrow \max_i |x_i|\] \[ amax \leftarrow \max_i |x_i|\]
else if $x$ is a double precision complex vector then computes infinity-norm as: else if $x$ is a complex vector then it computes infinity-norm as:
\[ amax \leftarrow \max_i {(|re(x_i)| + |im(x_i)|)}\] \[ amax \leftarrow \max_i {(|re(x_i)| + |im(x_i)|)}\]
%% where: %% where:
%% \begin{description} %% \begin{description}
@ -288,7 +294,9 @@ else if $x$ is a double precision complex vector then computes infinity-norm as
\hline \hline
$amax$ & $x$ & {\bf Function}\\ $amax$ & $x$ & {\bf Function}\\
\hline \hline
Short Precision Real& Short Precision Real & psb\_geamax \\
Long Precision Real&Long Precision Real & psb\_geamax \\ Long Precision Real&Long Precision Real & psb\_geamax \\
Short Precision Real&Short Precision Complex & psb\_geamax \\
Long Precision Real&Long Precision Complex & psb\_geamax \\ Long Precision Real&Long Precision Complex & psb\_geamax \\
\hline \hline
\end{tabular} \end{tabular}
@ -351,7 +359,9 @@ a dense matrix $x$:
\hline \hline
$res$& $x$& {\bf Subroutine}\\ $res$& $x$& {\bf Subroutine}\\
\hline \hline
Short Precision Real &Short Precision Real & psb\_geamaxs\\
Long Precision Real &Long Precision Real & psb\_geamaxs\\ Long Precision Real &Long Precision Real & psb\_geamaxs\\
Short Precision Real &Short Precision Complex & psb\_geamaxs\\
Long Precision Real &Long Precision Complex & psb\_geamaxs\\ Long Precision Real &Long Precision Complex & psb\_geamaxs\\
\hline \hline
\end{tabular} \end{tabular}
@ -397,10 +407,10 @@ An integer value; 0 means no error has been detected.
\subroutine{psb\_geasum}{1-Norm of Vector} \subroutine{psb\_geasum}{1-Norm of Vector}
This function computes the 1-norm of a vector $x$.\\ This function computes the 1-norm of a vector $x$.\\
If $x$ is a double precision real vector If $x$ is a real vector
computes 1-norm as: it computes 1-norm as:
\[ asum \leftarrow \|x_i\|\] \[ asum \leftarrow \|x_i\|\]
else if $x$ is double precision complex vector then computes 1-norm as: else if $x$ is a vector then it computes 1-norm as:
\[ asum \leftarrow \|re(x)\|_1 + \|im(x)\|_1\] \[ asum \leftarrow \|re(x)\|_1 + \|im(x)\|_1\]
@ -412,7 +422,9 @@ else if $x$ is double precision complex vector then computes 1-norm as:
\hline \hline
$asum$ & $x$ & {\bf Function}\\ $asum$ & $x$ & {\bf Function}\\
\hline \hline
Short Precision Real&Short Precision Real & psb\_geasum \\
Long Precision Real&Long Precision Real & psb\_geasum \\ Long Precision Real&Long Precision Real & psb\_geasum \\
Short Precision Real&Short Precision Complex & psb\_geasum \\
Long Precision Real&Long Precision Complex & psb\_geasum \\ Long Precision Real&Long Precision Complex & psb\_geasum \\
\hline \hline
\end{tabular} \end{tabular}
@ -457,10 +469,10 @@ This subroutine computes a series of 1-norms on the columns of
a dense matrix $x$: a dense matrix $x$:
\[ res(i) \leftarrow \max_k |x(k,i)| \] \[ res(i) \leftarrow \max_k |x(k,i)| \]
This function computes the 1-norm of a vector $x$.\\ This function computes the 1-norm of a vector $x$.\\
If $x$ is a double precision real vector If $x$ is a real vector
computes 1-norm as: it computes 1-norm as:
\[ res(i) \leftarrow \|x_i\|\] \[ res(i) \leftarrow \|x_i\|\]
else if $x$ is double precision complex vector then computes 1-norm as: else if $x$ is a complex vector then it computes 1-norm as:
\[ res(i) \leftarrow \|re(x)\|_1 + \|im(x)\|_1\] \[ res(i) \leftarrow \|re(x)\|_1 + \|im(x)\|_1\]
@ -472,7 +484,9 @@ else if $x$ is double precision complex vector then computes 1-norm as:
\hline \hline
$res$ & $x$ & {\bf Subroutine}\\ $res$ & $x$ & {\bf Subroutine}\\
\hline \hline
Short Precision Real&Short Precision Real & psb\_geasums \\
Long Precision Real&Long Precision Real & psb\_geasums \\ Long Precision Real&Long Precision Real & psb\_geasums \\
Short Precision Real&Short Precision Complex & psb\_geasums \\
Long Precision Real&Long Precision Complex & psb\_geasums \\ Long Precision Real&Long Precision Complex & psb\_geasums \\
\hline \hline
\end{tabular} \end{tabular}
@ -503,6 +517,7 @@ Specified as: a structured data of type \descdata.
\item[res] contains the 1-norm of (the columns of) $x$.\\ \item[res] contains the 1-norm of (the columns of) $x$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Intent: {\bf out}.\\ Intent: {\bf out}.\\
Short as: a long precision real number.
Specified as: a long precision real number. Specified as: a long precision real number.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
@ -523,9 +538,9 @@ An integer value; 0 means no error has been detected.
This function computes the 2-norm of a vector $x$.\\ This function computes the 2-norm of a vector $x$.\\
If $x$ is a double precision real vector If $x$ is a double precision real vector
computes 2-norm as: it computes 2-norm as:
\[ nrm2 \leftarrow \sqrt{x^T x}\] \[ nrm2 \leftarrow \sqrt{x^T x}\]
else if $x$ is double precision complex vector then computes 2-norm as: else if $x$ is double precision complex vector then it computes 2-norm as:
\[ nrm2 \leftarrow \sqrt{x^H x}\] \[ nrm2 \leftarrow \sqrt{x^H x}\]
%% where: %% where:
%% \begin{description} %% \begin{description}
@ -538,7 +553,9 @@ else if $x$ is double precision complex vector then computes 2-norm as:
\hline \hline
$nrm2$ & $x$ & {\bf Function}\\ $nrm2$ & $x$ & {\bf Function}\\
\hline \hline
Short Precision Real&Short Precision Real & psb\_genrm2 \\
Long Precision Real&Long Precision Real & psb\_genrm2 \\ Long Precision Real&Long Precision Real & psb\_genrm2 \\
Short Precision Real&Short Precision Complex & psb\_genrm2 \\
Long Precision Real&Long Precision Complex & psb\_genrm2 \\ Long Precision Real&Long Precision Complex & psb\_genrm2 \\
\hline \hline
\end{tabular} \end{tabular}
@ -593,11 +610,10 @@ This subroutine computes a series of 1-norms on the columns of
a dense matrix $x$: a dense matrix $x$:
\[ res(i) \leftarrow \max_k |x(k,i)| \] \[ res(i) \leftarrow \max_k |x(k,i)| \]
This function computes the 1-norm of a vector $x$.\\ This function computes the 1-norm of a vector $x$.\\
If $x$ is a double precision real vector If $x$ is a real vector
computes 1-norm as: it computes 1-norm as:
\[ res(i) \leftarrow \sqrt{x^T x}\] \[ res(i) \leftarrow \sqrt{x^T x}\]
else if $x$ is a complex vector then it computes 1-norm as:
else if $x$ is double precision complex vector then computes 1-norm as:
\[ res(i) \leftarrow \sqrt{x^H x}\] \[ res(i) \leftarrow \sqrt{x^H x}\]
@ -609,7 +625,9 @@ else if $x$ is double precision complex vector then computes 1-norm as:
\hline \hline
$res$ & $x$ & {\bf Subroutine}\\ $res$ & $x$ & {\bf Subroutine}\\
\hline \hline
Short Precision Real&Short Precision Real & psb\_genrm2s \\
Long Precision Real&Long Precision Real & psb\_genrm2s \\ Long Precision Real&Long Precision Real & psb\_genrm2s \\
Short Precision Real&Short Precision Complex & psb\_genrm2s \\
Long Precision Real&Long Precision Complex & psb\_genrm2s \\ Long Precision Real&Long Precision Complex & psb\_genrm2s \\
\hline \hline
\end{tabular} \end{tabular}
@ -673,7 +691,9 @@ where:
\hline \hline
$A$ & {\bf Function}\\ $A$ & {\bf Function}\\
\hline \hline
Short Precision Real & psb\_spnrmi \\
Long Precision Real & psb\_spnrmi \\ Long Precision Real & psb\_spnrmi \\
Short Precision Complex & psb\_spnrmi \\
Long Precision Complex & psb\_spnrmi \\ Long Precision Complex & psb\_spnrmi \\
\hline \hline
\end{tabular} \end{tabular}
@ -747,7 +767,9 @@ where:
\hline \hline
$A$, $x$, $y$, $\alpha$, $\beta$ & {\bf Subroutine}\\ $A$, $x$, $y$, $\alpha$, $\beta$ & {\bf Subroutine}\\
\hline \hline
Short Precision Real & psb\_spmm \\
Long Precision Real & psb\_spmm \\ Long Precision Real & psb\_spmm \\
Short Precision Complex & psb\_spmm \\
Long Precision Complex & psb\_spmm \\ Long Precision Complex & psb\_spmm \\
\hline \hline
\end{tabular} \end{tabular}
@ -900,7 +922,9 @@ trans, unit, choice, diag, work}
\hline \hline
$T$, $x$, $y$, $D$, $\alpha$, $\beta$ & {\bf Subroutine}\\ $T$, $x$, $y$, $D$, $\alpha$, $\beta$ & {\bf Subroutine}\\
\hline \hline
Short Precision Real & psb\_spsm \\
Long Precision Real & psb\_spsm \\ Long Precision Real & psb\_spsm \\
Short Precision Complex & psb\_spsm \\
Long Precision Complex & psb\_spsm \\ Long Precision Complex & psb\_spsm \\
\hline \hline
\end{tabular} \end{tabular}

@ -5,7 +5,7 @@
\ifx\pdfoutput\undefined % We're not running pdftex \ifx\pdfoutput\undefined % We're not running pdftex
\else \else
\pdfbookmark{PSBLAS-v2.2 User's Guide}{title} \pdfbookmark{PSBLAS-v2.3 User's Guide}{title}
\fi \fi
\newlength{\centeroffset} \newlength{\centeroffset}
\setlength{\centeroffset}{-0.5\oddsidemargin} \setlength{\centeroffset}{-0.5\oddsidemargin}
@ -15,7 +15,7 @@
\vspace*{\stretch{1}} \vspace*{\stretch{1}}
\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth} \noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth}
\flushright \flushright
{\Huge\bfseries PSBLAS-2.2 User's guide {\Huge\bfseries PSBLAS 2.3 User's guide
} }
\noindent\rule[-1ex]{\textwidth}{5pt}\\[2.5ex] \noindent\rule[-1ex]{\textwidth}{5pt}\\[2.5ex]
\hfill\emph{\Large A reference guide for the Parallel Sparse BLAS library} \hfill\emph{\Large A reference guide for the Parallel Sparse BLAS library}

@ -509,7 +509,8 @@ Specified as: an integer array of size $nz$.
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\ Intent: {\bf in}.\\
Specified as: an array of size $nz$. Specified as: an array of size $nz$. Must be of the same type and kind
of the \verb|aspk| component of the sparse matrix $a$.
\item[desc\_a] The communication descriptor.\\ \item[desc\_a] The communication descriptor.\\
Scope: {\bf local}. \\ Scope: {\bf local}. \\
Type: {\bf required}.\\ Type: {\bf required}.\\
@ -1544,7 +1545,7 @@ position as the corresponding entries in $x$.
output difference is the handling of ties (i.e. items with an output difference is the handling of ties (i.e. items with an
equal value) in the original input. With the merge-sort algorithm equal value) in the original input. With the merge-sort algorithm
ties are preserved in the same order as they had in the original ties are preserved in the same order as they had in the original
sequence, while this is not guaranteed for quicksort; sequence, while this is not guaranteed for quicksort or heapsort;
\item If $flag = psb\_sort\_ovw\_idx\_$ then the entries in $ix(1:n)$ \item If $flag = psb\_sort\_ovw\_idx\_$ then the entries in $ix(1:n)$
where $n$ is the size of $x$ are initialized to $ix(i) \leftarrow where $n$ is the size of $x$ are initialized to $ix(i) \leftarrow
i$; thus, upon return from the subroutine, for each i$; thus, upon return from the subroutine, for each

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save