diff --git a/Changelog b/Changelog index 3c0b4f70..35ad5234 100644 --- a/Changelog +++ b/Changelog @@ -1,5 +1,65 @@ Changelog. A lot less detailed than usual, at least for past history. +2012/06/08: Fix silly bug in GPS renumbering. + +2012/05/25: Fixed docs for release 3.0 + +2012/05/21: Fix configure script to work around configure failure on Cray. + +2012/04/30: Change descriptor's move_alloc and free to work on + uninitialized input. + +2012/04/15: New LOCAL argument to geins/spins. New LIDX argument to CDALL + with VL to allow for user-specified local numbering. + +2012/04/05: Default implementation of MV_TO_COO and MV_FROM_COO based on + CP. + +2012/03/01: Make ISO_C_BINDING a prerequisite. + +2012/02/21: Added experimental support for 8-bytes integers. + Refactored the problem generation methods and the pargen + sample programs. + +2012/02/15: Fixed major perf problem with genblock. + +2012/01/30: Reworked norms 1 and infty, added sparse mat norm1. + +2012/01/10: Bunch of fixes and configury improvements from Cray FTN + +2012/01/03: Split preconditioners into interface/implementation. + +2011/11/27: Merged may routines from preprocessing project psblas-testpre. + +2011/11/21: Added test for ISO_C_BINDING and AMD renumbering. + +2011/11/19: Added the scratch option to the vect ASB routine. + +2011/11/11: Makefile fixes allowing for parallel make. + +2011/10/25: Major upgrade defining the encapsulated vector types, + providing further support for GPU. + +2011/10/05: Split preconditioner modules to alleviate memory pressure + on the compiler, esp. XLF. + Fixed bug in glist map. + +2011/08/01: MOLD methods and various fixes for NAG configry. + +2011/07/25: Bunch of fixes for problems uncovered by Cray FTN. + +2011/06/15: Changed get_local_rows and friends into methods. + + +2011/03/25: Added version identification constants. + +2011/03/10: Added support for sparse dot products. Changed intent of X in + preconditioner apply to allow for GPU extensions. + +2011/02/27: Reworked PRINT methods, for vectors as well. + +2011/02/11: Changes to accommodate Cray compiler. + 2011/01/07: Silly bugs in spgather MPI data types and in z_nubmm calling cnumbmm. Also, don't use allocate on assignment with GNU. diff --git a/LICENSE b/LICENSE index 08e041f6..f093bbad 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ Parallel Sparse BLAS version 3.0 - (C) Copyright 2010 + (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 Salvatore Filippone University of Rome Tor Vergata Alfredo Buttari CNRS-IRIT, Toulouse diff --git a/Makefile b/Makefile index c91e3045..ef819b5c 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ clean: cd prec && $(MAKE) clean cd krylov && $(MAKE) clean cd util && $(MAKE) clean - cd opt && $(MAKE) clean +# cd opt && $(MAKE) clean check: all make check -C test/serial diff --git a/README b/README index e6865829..8808ebcb 100644 --- a/README +++ b/README @@ -1,8 +1,4 @@ -This directory contains the PSBLAS library, version 3.0-pre-release. - -WARNING: This is higly experimental, unstable, and almost undocumented. - Do not count on anything to remain unchanged by the time 3.0 - really comes out. +This directory contains the PSBLAS library, version 3.0. This version requires a working Fortran 2003 compiler; we do not use all of the language features (specifically, so far we did not employ @@ -10,27 +6,22 @@ FINAL subroutines), but the features we use were sufficient in identifying bugs in ALL compilers we tried (all the bugs have been reported and mostly fixed by the respective vendors). -Notes: This code is confirmed to work with the following compilers - (as well as newer versions): - NAGware 5.2 and subsequent; - XLF 13.1; - GNU 4.6.1; - Cray CCE 7.4.4; - All these are recognized by the configure script. - If you find it working with other compilers, please let us - know. - The Intel compiler up to version 12.1 fails. - The "undocumented" in the warning above refers to the - internals; the new internals have been completely overhauled, - and in many cases rewritten; they now enable a much - better interfacing with user-defined storage formats. If the - user is only interested in the predefined formats, then the - user's guide should be sufficient; what is lacking is - documentation on how to add to the library. This will come. +The new internals have been completely overhauled, and in many cases +rewritten; they now enable a much better interfacing with user-defined +storage formats. If the user is only interested in the predefined +formats, then the user's guide should be sufficient; what is somewhat +lacking is documentation on how to add to the library, i.e. a +developers' guide; stay tuned. +The architecture of the Fortran 2003 sparse BLAS is described in +S. Filippone, A. Buttari: +Object-Oriented Techniques for Sparse Matrix Computations in Fortran +2003, +ACM Trans. on Math. Software, vol. 38, No. 4, 2012. + Version 1.0 of the library was described in: S. Filippone, M. Colajanni PSBLAS: A library for parallel linear algebra computation on sparse matrices @@ -46,22 +37,24 @@ DOCUMENTATION See docs/psblas-3.0.pdf; an HTML version of the same document is available in docs/html. -Please consult the sample programs, especially test/pargen/ppde.f90. +Please consult the sample programs, especially +test/pargen/ppde[23]d.f90 + OTHER SOFTWARE CREDITS -We include our modified implementation of some of the Sparker (serial -sparse BLAS) material, e.g. Jagged diagonal, plus a number of -extensions of our own design. The original file spblas.f can be -downloaded from matisa.cc.rl.ac.uk; of course any bugs in our -implementation are our own to fix. The main reference for the serial -sparse BLAS is: +We originally included a modified implementation of some of the +Sparker (serial sparse BLAS) material; this has been completely +rewritten, way beyond the intention(s) and responsibilities of the +original developers. +The main reference for the serial sparse BLAS is: Duff, I., Marrone, M., Radicati, G., and Vittoli, C. Level 3 basic linear algebra subprograms for sparse matrices: a user level interface ACM Trans. Math. Softw., 23(3), 379-401, 1997. + INSTALLING To compile and run our software you will need the following @@ -76,7 +69,10 @@ prerequisites (see also SERIAL below): 3. We have had good results with the METIS library, from http://www-users.cs.umn.edu/~karypis/metis/metis/main.html This is optional; it is used in the util and test/fileread - directories but only if you define the HAVE_METIS directive. + directories but only if you specify --with-metis. + +4. If you have the AMD package of Davis, Duff and Amestoy, you can + specify --with-amd (see ./configure --help for more details). The configure script will generate a Make.inc file suitable for building the library. @@ -105,6 +101,48 @@ If you specify --prefix=/path you can do make install and the libraries will be installed under /path/lib, while the module files will be installed under /path/include. +SERIAL + +Configuring with --enable-serial will provide a fake MPI stub library +that enables running in pure serial mode; no MPI installation is +needed in this case (but note that the fake MPI stubs are only +guaranteed to cover what we use internally, it's not a complete +replacement). + +EXPERIMENTAL + +We have an experimental flag --long-integers that will enable having +8-byte integer data, allowing an index space larger than 2G; some +small cases have been tested but we do not offer full guarantee (yet). + + +COMPILER NOTES. + +This code is confirmed to work with the following compilers (or +later versions thereof): + NAGware 5.2; + GNU 4.6.1; + Cray CCE 8.0.1; + +They are all recognized by the configure script. + +To make the script work with the Cray CCE environment, it is +recommended to use the following: +./configure FC=ftn F77=ftn CC=cc MPF90=ftn MPF77=ftn MPCC=cc +with both CCE and GNU lower-level compilers. + +XLF 13.1 configures correctly, but then fails with ICEs (Internal +Compiler Error) at build time. We do not yet know whether XLF 14 +compiles correctly. + +For the GNU compilers 4.6.x we are aware of a number of memory management +issues that might surface in your applications; all of them (that +we're aware of) are solved in version 4.7.0. + +The Intel compiler up to version 12.1 fails to compile, as of the last +version we got access to. + + KNOWN ISSUES. diff --git a/base/comm/psb_cgather.f90 b/base/comm/psb_cgather.f90 index 9a05f46f..cee670e1 100644 --- a/base/comm/psb_cgather.f90 +++ b/base/comm/psb_cgather.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -50,7 +50,7 @@ subroutine psb_cgatherm(globx, locx, desc_a, info, iroot) implicit none complex(psb_spk_), intent(in) :: locx(:,:) - complex(psb_spk_), intent(out) :: globx(:,:) + complex(psb_spk_), intent(out), allocatable :: globx(:,:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -100,16 +100,13 @@ subroutine psb_cgatherm(globx, locx, desc_a, info, iroot) ilocx = 1 jlocx = 1 - lda_globx = size(globx,1) - lda_locx = size(locx, 1) - m = desc_a%get_global_rows() n = desc_a%get_global_cols() - - lock=size(locx,2)-jlocx+1 - globk=size(globx,2)-jglobx+1 - maxk=min(lock,globk) - k = maxk + lda_globx = m + lda_locx = size(locx, 1) + lock = size(locx,2) + maxk = lock + k = maxk call psb_bcast(ictxt,k,root=iiroot) @@ -130,13 +127,20 @@ subroutine psb_cgatherm(globx, locx, desc_a, info, iroot) call psb_errpush(info,name) goto 9999 end if + + call psb_realloc(m,k,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if globx(:,:)=czero do j=1,k do i=1,desc_a%get_local_rows() call psb_loc_to_glob(i,idx,desc_a,info) - globx(idx,jglobx+j-1) = locx(i,jlx+j-1) + globx(idx,j) = locx(i,jlx+j-1) end do end do @@ -146,12 +150,12 @@ subroutine psb_cgatherm(globx, locx, desc_a, info, iroot) if (me /= desc_a%ovrlap_elem(i,3)) then idx = desc_a%ovrlap_elem(i,1) call psb_loc_to_glob(idx,desc_a,info) - globx(idx,jglobx+j-1) = czero + globx(idx,j) = czero end if end do end do - call psb_sum(ictxt,globx(1:m,jglobx:jglobx+k-1),root=root) + call psb_sum(ictxt,globx(1:m,1:k),root=root) call psb_erractionrestore(err_act) return @@ -174,7 +178,7 @@ end subroutine psb_cgatherm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -223,7 +227,7 @@ subroutine psb_cgatherv(globx, locx, desc_a, info, iroot) implicit none complex(psb_spk_), intent(in) :: locx(:) - complex(psb_spk_), intent(out) :: globx(:) + complex(psb_spk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -268,12 +272,12 @@ subroutine psb_cgatherv(globx, locx, desc_a, info, iroot) jlocx=1 ilocx = 1 - lda_globx = size(globx) - lda_locx = size(locx) - m = desc_a%get_global_rows() n = desc_a%get_global_cols() + lda_globx = m + lda_locx = size(locx) + k = 1 @@ -295,6 +299,13 @@ subroutine psb_cgatherv(globx, locx, desc_a, info, iroot) goto 9999 end if + call psb_realloc(m,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if + globx(:)=czero do i=1,desc_a%get_local_rows() @@ -334,7 +345,7 @@ subroutine psb_cgather_vect(globx, locx, desc_a, info, iroot) implicit none type(psb_c_vect_type), intent(inout) :: locx - complex(psb_spk_), intent(out) :: globx(:) + complex(psb_spk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -379,11 +390,11 @@ subroutine psb_cgather_vect(globx, locx, desc_a, info, iroot) jlocx=1 ilocx = 1 - lda_globx = size(globx) - lda_locx = locx%get_nrows() m = desc_a%get_global_rows() n = desc_a%get_global_cols() + lda_globx = m + lda_locx = locx%get_nrows() k = 1 @@ -406,6 +417,13 @@ subroutine psb_cgather_vect(globx, locx, desc_a, info, iroot) goto 9999 end if + call psb_realloc(m,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if + globx(:) = czero llocx = locx%get_vect() diff --git a/base/comm/psb_chalo.f90 b/base/comm/psb_chalo.f90 index 836b8efa..30043204 100644 --- a/base/comm/psb_chalo.f90 +++ b/base/comm/psb_chalo.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -223,7 +223,7 @@ end subroutine psb_chalom !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/comm/psb_covrl.f90 b/base/comm/psb_covrl.f90 index 9fd83080..e35a130a 100644 --- a/base/comm/psb_covrl.f90 +++ b/base/comm/psb_covrl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -204,7 +204,7 @@ subroutine psb_covrlm(x,desc_a,info,jx,ik,work,update,mode) end subroutine psb_covrlm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -242,7 +242,7 @@ end subroutine psb_covrlm ! x(:) - complex The local part of the dense vector. ! desc_a - type(psb_desc_type). The communication descriptor. ! info - integer. Return code. -! work - real(optional). A work area. +! work - complex(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps diff --git a/base/comm/psb_cscatter.F90 b/base/comm/psb_cscatter.F90 index eff8477d..0fd39275 100644 --- a/base/comm/psb_cscatter.F90 +++ b/base/comm/psb_cscatter.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -235,7 +235,7 @@ end subroutine psb_cscatterm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/comm/psb_cspgather.F90 b/base/comm/psb_cspgather.F90 index ee207f0c..5ac7fe6e 100644 --- a/base/comm/psb_cspgather.F90 +++ b/base/comm/psb_cspgather.F90 @@ -1,8 +1,41 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +! File: psb_cspgather.f90 subroutine psb_csp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keeploc) use psb_descriptor_type use psb_error_mod - use psb_mat_mod use psb_penv_mod + use psb_mat_mod + use psb_tools_mod #ifdef MPI_MOD use mpi #endif @@ -20,7 +53,7 @@ subroutine psb_csp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep type(psb_c_coo_sparse_mat) :: loc_coo, glob_coo integer(psb_mpik_) :: ictxt,np,me, icomm, minfo integer(psb_ipk_) :: err_act, dupl_, nrg, ncg, nzg - integer(psb_ipk_) :: ip, ndx,naggrm1,naggrp1, i, j, k + integer(psb_ipk_) :: ip, ndx,naggrm1,naggrp1, i, j, k, nzl logical :: keepnum_, keeploc_ integer(psb_mpik_), allocatable :: nzbr(:), idisp(:) integer(psb_ipk_) :: ierr(5) @@ -59,9 +92,18 @@ subroutine psb_csp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep call psb_errpush(info,name,i_err=ierr,a_err='integer') goto 9999 end if - call loca%mv_to(loc_coo) + + + if (keeploc_) then + call loca%cp_to(loc_coo) + else + call loca%mv_to(loc_coo) + end if + nzl = loc_coo%get_nzeros() + call psb_loc_to_glob(loc_coo%ia(1:nzl),desc_a,info,iact='I') + call psb_loc_to_glob(loc_coo%ja(1:nzl),desc_a,info,iact='I') nzbr(:) = 0 - nzbr(me+1) = loc_coo%get_nzeros() + nzbr(me+1) = nzl call psb_sum(ictxt,nzbr(1:np)) nzg = sum(nzbr) if (info == psb_success_) call glob_coo%allocate(nrg,ncg,nzg) @@ -86,11 +128,7 @@ subroutine psb_csp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep goto 9999 end if - if (keeploc_) then - call loca%mv_from(loc_coo) - else - call loc_coo%free() - end if + call loc_coo%free() call glob_coo%set_nzeros(nzg) if (present(dupl)) call glob_coo%set_dupl(dupl) call globa%mv_from(glob_coo) diff --git a/base/comm/psb_dgather.f90 b/base/comm/psb_dgather.f90 index 8e41c7a1..7635f0e6 100644 --- a/base/comm/psb_dgather.f90 +++ b/base/comm/psb_dgather.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -50,7 +50,7 @@ subroutine psb_dgatherm(globx, locx, desc_a, info, iroot) implicit none real(psb_dpk_), intent(in) :: locx(:,:) - real(psb_dpk_), intent(out) :: globx(:,:) + real(psb_dpk_), intent(out), allocatable :: globx(:,:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -100,16 +100,13 @@ subroutine psb_dgatherm(globx, locx, desc_a, info, iroot) ilocx = 1 jlocx = 1 - lda_globx = size(globx,1) - lda_locx = size(locx, 1) - m = desc_a%get_global_rows() n = desc_a%get_global_cols() - - lock=size(locx,2)-jlocx+1 - globk=size(globx,2)-jglobx+1 - maxk=min(lock,globk) - k = maxk + lda_globx = m + lda_locx = size(locx, 1) + lock = size(locx,2) + maxk = lock + k = maxk call psb_bcast(ictxt,k,root=iiroot) @@ -130,13 +127,20 @@ subroutine psb_dgatherm(globx, locx, desc_a, info, iroot) call psb_errpush(info,name) goto 9999 end if + + call psb_realloc(m,k,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if globx(:,:)=dzero do j=1,k do i=1,desc_a%get_local_rows() call psb_loc_to_glob(i,idx,desc_a,info) - globx(idx,jglobx+j-1) = locx(i,jlx+j-1) + globx(idx,j) = locx(i,jlx+j-1) end do end do @@ -146,12 +150,12 @@ subroutine psb_dgatherm(globx, locx, desc_a, info, iroot) if (me /= desc_a%ovrlap_elem(i,3)) then idx = desc_a%ovrlap_elem(i,1) call psb_loc_to_glob(idx,desc_a,info) - globx(idx,jglobx+j-1) = dzero + globx(idx,j) = dzero end if end do end do - call psb_sum(ictxt,globx(1:m,jglobx:jglobx+k-1),root=root) + call psb_sum(ictxt,globx(1:m,1:k),root=root) call psb_erractionrestore(err_act) return @@ -174,7 +178,7 @@ end subroutine psb_dgatherm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -223,7 +227,7 @@ subroutine psb_dgatherv(globx, locx, desc_a, info, iroot) implicit none real(psb_dpk_), intent(in) :: locx(:) - real(psb_dpk_), intent(out) :: globx(:) + real(psb_dpk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -268,12 +272,12 @@ subroutine psb_dgatherv(globx, locx, desc_a, info, iroot) jlocx=1 ilocx = 1 - lda_globx = size(globx) - lda_locx = size(locx) - m = desc_a%get_global_rows() n = desc_a%get_global_cols() + lda_globx = m + lda_locx = size(locx) + k = 1 @@ -295,6 +299,13 @@ subroutine psb_dgatherv(globx, locx, desc_a, info, iroot) goto 9999 end if + call psb_realloc(m,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if + globx(:)=dzero do i=1,desc_a%get_local_rows() @@ -334,7 +345,7 @@ subroutine psb_dgather_vect(globx, locx, desc_a, info, iroot) implicit none type(psb_d_vect_type), intent(inout) :: locx - real(psb_dpk_), intent(out) :: globx(:) + real(psb_dpk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -379,11 +390,11 @@ subroutine psb_dgather_vect(globx, locx, desc_a, info, iroot) jlocx=1 ilocx = 1 - lda_globx = size(globx) - lda_locx = locx%get_nrows() m = desc_a%get_global_rows() n = desc_a%get_global_cols() + lda_globx = m + lda_locx = locx%get_nrows() k = 1 @@ -406,6 +417,13 @@ subroutine psb_dgather_vect(globx, locx, desc_a, info, iroot) goto 9999 end if + call psb_realloc(m,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if + globx(:) = dzero llocx = locx%get_vect() diff --git a/base/comm/psb_dhalo.f90 b/base/comm/psb_dhalo.f90 index 2a17ec94..46264970 100644 --- a/base/comm/psb_dhalo.f90 +++ b/base/comm/psb_dhalo.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -223,7 +223,7 @@ end subroutine psb_dhalom !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -499,12 +499,12 @@ subroutine psb_dhalo_vect(x,desc_a,info,alpha,work,tran,mode,data) call psb_errpush(info,name) end if - err = info + err=info call psb_errcomm(ictxt,err) - if (err /= 0) goto 9999 + if(err /= 0) goto 9999 - if (present(alpha)) then - if (alpha /= done) then + if(present(alpha)) then + if(alpha /= done) then call x%scal(alpha) end if end if diff --git a/base/comm/psb_dovrl.f90 b/base/comm/psb_dovrl.f90 index c8708bad..14611b47 100644 --- a/base/comm/psb_dovrl.f90 +++ b/base/comm/psb_dovrl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -204,7 +204,7 @@ subroutine psb_dovrlm(x,desc_a,info,jx,ik,work,update,mode) end subroutine psb_dovrlm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/comm/psb_dscatter.F90 b/base/comm/psb_dscatter.F90 index 0cd616ee..6167a7d9 100644 --- a/base/comm/psb_dscatter.F90 +++ b/base/comm/psb_dscatter.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -235,7 +235,7 @@ end subroutine psb_dscatterm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/comm/psb_dspgather.F90 b/base/comm/psb_dspgather.F90 index a5c1fe7a..658145bf 100644 --- a/base/comm/psb_dspgather.F90 +++ b/base/comm/psb_dspgather.F90 @@ -1,8 +1,41 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +! File: psb_dspgather.f90 subroutine psb_dsp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keeploc) use psb_descriptor_type use psb_error_mod - use psb_mat_mod use psb_penv_mod + use psb_mat_mod + use psb_tools_mod #ifdef MPI_MOD use mpi #endif @@ -20,7 +53,7 @@ subroutine psb_dsp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep type(psb_d_coo_sparse_mat) :: loc_coo, glob_coo integer(psb_mpik_) :: ictxt,np,me, icomm, minfo integer(psb_ipk_) :: err_act, dupl_, nrg, ncg, nzg - integer(psb_ipk_) :: ip, ndx,naggrm1,naggrp1, i, j, k + integer(psb_ipk_) :: ip, ndx,naggrm1,naggrp1, i, j, k, nzl logical :: keepnum_, keeploc_ integer(psb_mpik_), allocatable :: nzbr(:), idisp(:) integer(psb_ipk_) :: ierr(5) @@ -59,9 +92,18 @@ subroutine psb_dsp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep call psb_errpush(info,name,i_err=ierr,a_err='integer') goto 9999 end if - call loca%mv_to(loc_coo) + + + if (keeploc_) then + call loca%cp_to(loc_coo) + else + call loca%mv_to(loc_coo) + end if + nzl = loc_coo%get_nzeros() + call psb_loc_to_glob(loc_coo%ia(1:nzl),desc_a,info,iact='I') + call psb_loc_to_glob(loc_coo%ja(1:nzl),desc_a,info,iact='I') nzbr(:) = 0 - nzbr(me+1) = loc_coo%get_nzeros() + nzbr(me+1) = nzl call psb_sum(ictxt,nzbr(1:np)) nzg = sum(nzbr) if (info == psb_success_) call glob_coo%allocate(nrg,ncg,nzg) @@ -86,11 +128,7 @@ subroutine psb_dsp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep goto 9999 end if - if (keeploc_) then - call loca%mv_from(loc_coo) - else - call loc_coo%free() - end if + call loc_coo%free() call glob_coo%set_nzeros(nzg) if (present(dupl)) call glob_coo%set_dupl(dupl) call globa%mv_from(glob_coo) diff --git a/base/comm/psb_igather.f90 b/base/comm/psb_igather.f90 index 7c090329..0aaded38 100644 --- a/base/comm/psb_igather.f90 +++ b/base/comm/psb_igather.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -51,7 +51,7 @@ subroutine psb_igatherm(globx, locx, desc_a, info, iroot) implicit none integer(psb_ipk_), intent(in) :: locx(:,:) - integer(psb_ipk_), intent(out) :: globx(:,:) + integer(psb_ipk_), intent(out), allocatable :: globx(:,:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -100,16 +100,13 @@ subroutine psb_igatherm(globx, locx, desc_a, info, iroot) ilocx = 1 jlocx = 1 - lda_globx = size(globx,1) - lda_locx = size(locx, 1) - m = desc_a%get_global_rows() n = desc_a%get_global_cols() - - lock=size(locx,2)-jlocx+1 - globk=size(globx,2)-jglobx+1 - maxk=min(lock,globk) - k = maxk + lda_globx = m + lda_locx = size(locx, 1) + lock = size(locx,2) + maxk = lock + k = maxk call psb_bcast(ictxt,k,root=iiroot) @@ -130,13 +127,20 @@ subroutine psb_igatherm(globx, locx, desc_a, info, iroot) call psb_errpush(info,name) goto 9999 end if + + call psb_realloc(m,k,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if - globx(:,:)=0 + globx(:,:)=izero do j=1,k do i=1,desc_a%get_local_rows() call psb_loc_to_glob(i,idx,desc_a,info) - globx(idx,jglobx+j-1) = locx(i,jlx+j-1) + globx(idx,j) = locx(i,jlx+j-1) end do end do @@ -146,12 +150,12 @@ subroutine psb_igatherm(globx, locx, desc_a, info, iroot) if (me /= desc_a%ovrlap_elem(i,3)) then idx = desc_a%ovrlap_elem(i,1) call psb_loc_to_glob(idx,desc_a,info) - globx(idx,jglobx+j-1) = izero + globx(idx,j) = izero end if end do end do - call psb_sum(ictxt,globx(1:m,jglobx:jglobx+k-1),root=root) + call psb_sum(ictxt,globx(1:m,1:k),root=root) call psb_erractionrestore(err_act) return @@ -174,7 +178,7 @@ end subroutine psb_igatherm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -222,7 +226,7 @@ subroutine psb_igatherv(globx, locx, desc_a, info, iroot) implicit none integer(psb_ipk_), intent(in) :: locx(:) - integer(psb_ipk_), intent(out) :: globx(:) + integer(psb_ipk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -294,7 +298,7 @@ subroutine psb_igatherv(globx, locx, desc_a, info, iroot) goto 9999 end if - globx(:)=0 + globx(:)=izero do i=1,desc_a%get_local_rows() call psb_loc_to_glob(i,idx,desc_a,info) @@ -325,3 +329,121 @@ subroutine psb_igatherv(globx, locx, desc_a, info, iroot) return end subroutine psb_igatherv + + +subroutine psb_igather_vect(globx, locx, desc_a, info, iroot) + use psb_base_mod, psb_protect_name => psb_igather_vect + implicit none + + type(psb_i_vect_type), intent(inout) :: locx + integer(psb_ipk_), intent(out), allocatable :: globx(:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: iroot + + + ! locals + integer(psb_mpik_) :: ictxt, np, me, root, iiroot, icomm, myrank, rootrank + integer(psb_ipk_) :: ierr(5), err_act, n, ilocx, iglobx, jlocx,& + & jglobx, lda_locx, lda_globx, m, k, jlx, ilx, i, idx + integer(psb_ipk_), allocatable :: llocx(:) + character(len=20) :: name, ch_err + + name='psb_igatherv' + if(psb_get_errstatus() /= 0) return + info=psb_success_ + call psb_erractionsave(err_act) + + ictxt=desc_a%get_context() + + ! check on blacs grid + call psb_info(ictxt, me, np) + if (np == -1) then + info = psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + endif + + if (present(iroot)) then + root = iroot + if((root < -1).or.(root > np)) then + info=psb_err_input_value_invalid_i_ + ierr(1)=5; ierr(2)=root; + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + else + root = -1 + end if + + jglobx=1 + iglobx = 1 + jlocx=1 + ilocx = 1 + + + m = desc_a%get_global_rows() + n = desc_a%get_global_cols() + lda_globx = m + lda_locx = locx%get_nrows() + + k = 1 + + + ! there should be a global check on k here!!! + + call psb_chkglobvect(m,n,lda_globx,iglobx,jglobx,desc_a,info) + if (info == psb_success_) & + & call psb_chkvect(m,n,locx%get_nrows(),ilocx,jlocx,desc_a,info,ilx,jlx) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='psb_chk(glob)vect' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + + if ((ilx /= 1).or.(iglobx /= 1)) then + info=psb_err_ix_n1_iy_n1_unsupported_ + call psb_errpush(info,name) + goto 9999 + end if + + call psb_realloc(m,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if + + globx(:) = izero + llocx = locx%get_vect() + + do i=1,desc_a%get_local_rows() + call psb_loc_to_glob(i,idx,desc_a,info) + globx(idx) = llocx(i) + end do + + ! adjust overlapped elements + do i=1, size(desc_a%ovrlap_elem,1) + if (me /= desc_a%ovrlap_elem(i,3)) then + idx = desc_a%ovrlap_elem(i,1) + call psb_loc_to_glob(idx,desc_a,info) + globx(idx) = izero + end if + end do + + call psb_sum(ictxt,globx(1:m),root=root) + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error(ictxt) + return + end if + return + +end subroutine psb_igather_vect diff --git a/base/comm/psb_ihalo.f90 b/base/comm/psb_ihalo.f90 index 76a10058..841efea0 100644 --- a/base/comm/psb_ihalo.f90 +++ b/base/comm/psb_ihalo.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -62,7 +62,7 @@ subroutine psb_ihalom(x,desc_a,info,alpha,jx,ik,work,tran,mode,data) integer(psb_ipk_), intent(inout), target :: x(:,:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), intent(in), optional :: alpha + integer(psb_ipk_), intent(in), optional :: alpha integer(psb_ipk_), intent(inout), optional, target :: work(:) integer(psb_ipk_), intent(in), optional :: mode,jx,ik,data character, intent(in), optional :: tran @@ -227,7 +227,7 @@ end subroutine psb_ihalom !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -287,7 +287,7 @@ subroutine psb_ihalov(x,desc_a,info,alpha,work,tran,mode,data) integer(psb_ipk_), intent(inout) :: x(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), intent(in), optional :: alpha + integer(psb_ipk_), intent(in), optional :: alpha integer(psb_ipk_), intent(inout), optional, target :: work(:) integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran @@ -427,3 +427,153 @@ end subroutine psb_ihalov + +subroutine psb_ihalo_vect(x,desc_a,info,alpha,work,tran,mode,data) + use psb_base_mod, psb_protect_name => psb_ihalo_vect + use psi_mod + implicit none + + type(psb_i_vect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: alpha + integer(psb_ipk_), target, optional, intent(inout) :: work(:) + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran + + ! locals + integer(psb_ipk_) :: ictxt, np, me,& + & err_act, m, n, iix, jjx, ix, ijx, nrow, imode,& + & err, liwork,data_ + integer(psb_ipk_),pointer :: iwork(:) + character :: tran_ + character(len=20) :: name, ch_err + logical :: aliw + + name='psb_ihalov' + if(psb_get_errstatus() /= 0) return + info=psb_success_ + call psb_erractionsave(err_act) + + ictxt=desc_a%get_context() + + ! check on blacs grid + call psb_info(ictxt, me, np) + if (np == -1) then + info = psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + endif + + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + + ix = 1 + ijx = 1 + + m = desc_a%get_global_rows() + n = desc_a%get_global_cols() + nrow = desc_a%get_local_rows() + + if (present(tran)) then + tran_ = psb_toupper(tran) + else + tran_ = 'N' + endif + if (present(data)) then + data_ = data + else + data_ = psb_comm_halo_ + endif + if (present(mode)) then + imode = mode + else + imode = IOR(psb_swap_send_,psb_swap_recv_) + endif + + ! check vector correctness + call psb_chkvect(m,ione,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='psb_chkvect' + call psb_errpush(info,name,a_err=ch_err) + end if + + if (iix /= 1) then + info=psb_err_ix_n1_iy_n1_unsupported_ + call psb_errpush(info,name) + end if + + err=info + call psb_errcomm(ictxt,err) + if(err /= 0) goto 9999 + + if(present(alpha)) then + if(alpha /= done) then + call x%scal(alpha) + end if + end if + + liwork=nrow + if (present(work)) then + if(size(work) >= liwork) then + iwork => work + aliw=.false. + else + aliw=.true. + allocate(iwork(liwork),stat=info) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='psb_realloc' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + end if + else + aliw=.true. + allocate(iwork(liwork),stat=info) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='psb_realloc' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + end if + + ! exchange halo elements + if(tran_ == 'N') then + call psi_swapdata(imode,izero,x%v,& + & desc_a,iwork,info,data=data_) + else if((tran_ == 'T').or.(tran_ == 'C')) then + call psi_swaptran(imode,ione,x%v,& + & desc_a,iwork,info) + else + info = psb_err_internal_error_ + call psb_errpush(info,name,a_err='invalid tran') + goto 9999 + end if + + if (info /= psb_success_) then + ch_err='PSI_swapdata' + call psb_errpush(psb_err_from_subroutine_,name,a_err=ch_err) + goto 9999 + end if + + if (aliw) deallocate(iwork) + nullify(iwork) + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error(ictxt) + return + end if + return +end subroutine psb_ihalo_vect diff --git a/base/comm/psb_iovrl.f90 b/base/comm/psb_iovrl.f90 index bd40799e..45a4baa8 100644 --- a/base/comm/psb_iovrl.f90 +++ b/base/comm/psb_iovrl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -203,7 +203,7 @@ end subroutine psb_iovrlm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -388,3 +388,133 @@ subroutine psb_iovrlv(x,desc_a,info,work,update,mode) end if return end subroutine psb_iovrlv + +subroutine psb_iovrl_vect(x,desc_a,info,work,update,mode) + use psb_base_mod, psb_protect_name => psb_iovrl_vect + use psi_mod + implicit none + + type(psb_i_vect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional, target, intent(inout) :: work(:) + integer(psb_ipk_), intent(in), optional :: update,mode + + ! locals + integer(psb_ipk_) :: ictxt, np, me, & + & err_act, m, n, iix, jjx, ix, ijx, nrow, ncol, k, update_,& + & mode_, err, liwork,ldx + integer(psb_ipk_),pointer :: iwork(:) + logical :: do_swap + character(len=20) :: name, ch_err + logical :: aliw + + name='psb_iovrlv' + if(psb_get_errstatus() /= 0) return + info=psb_success_ + call psb_erractionsave(err_act) + + ictxt=desc_a%get_context() + + ! check on blacs grid + call psb_info(ictxt, me, np) + if (np == -1) then + info = psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + endif + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + + ix = 1 + ijx = 1 + + m = desc_a%get_global_rows() + n = desc_a%get_global_cols() + nrow = desc_a%get_local_rows() + ncol = desc_a%get_local_cols() + + k = 1 + + if (present(update)) then + update_ = update + else + update_ = psb_avg_ + endif + + if (present(mode)) then + mode_ = mode + else + mode_ = IOR(psb_swap_send_,psb_swap_recv_) + endif + do_swap = (mode_ /= 0) + + ! check vector correctness + call psb_chkvect(m,ione,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='psb_chkvect' + call psb_errpush(info,name,a_err=ch_err) + end if + + if (iix /= 1) then + info=psb_err_ix_n1_iy_n1_unsupported_ + call psb_errpush(info,name) + end if + + err=info + call psb_errcomm(ictxt,err) + if(err /= 0) goto 9999 + + ! check for presence/size of a work area + liwork=ncol + if (present(work)) then + if(size(work) >= liwork) then + aliw=.false. + else + aliw=.true. + end if + else + aliw=.true. + end if + if (aliw) then + allocate(iwork(liwork),stat=info) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='Allocate') + goto 9999 + end if + else + iwork => work + end if + + ! exchange overlap elements + if (do_swap) then + call psi_swapdata(mode_,ione,x%v,& + & desc_a,iwork,info,data=psb_comm_ovr_) + end if + if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,update_,info) + if (info /= psb_success_) then + call psb_errpush(psb_err_from_subroutine_,name,a_err='Inner updates') + goto 9999 + end if + + if (aliw) deallocate(iwork) + nullify(iwork) + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error(ictxt) + return + end if + return +end subroutine psb_iovrl_vect + diff --git a/base/comm/psb_iscatter.F90 b/base/comm/psb_iscatter.F90 index 4a5a1ba5..6388c6e8 100644 --- a/base/comm/psb_iscatter.F90 +++ b/base/comm/psb_iscatter.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -233,7 +233,7 @@ end subroutine psb_iscatterm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/comm/psb_sgather.f90 b/base/comm/psb_sgather.f90 index cd67484b..b18a426d 100644 --- a/base/comm/psb_sgather.f90 +++ b/base/comm/psb_sgather.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -50,7 +50,7 @@ subroutine psb_sgatherm(globx, locx, desc_a, info, iroot) implicit none real(psb_spk_), intent(in) :: locx(:,:) - real(psb_spk_), intent(out) :: globx(:,:) + real(psb_spk_), intent(out), allocatable :: globx(:,:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -100,16 +100,13 @@ subroutine psb_sgatherm(globx, locx, desc_a, info, iroot) ilocx = 1 jlocx = 1 - lda_globx = size(globx,1) - lda_locx = size(locx, 1) - m = desc_a%get_global_rows() n = desc_a%get_global_cols() - - lock=size(locx,2)-jlocx+1 - globk=size(globx,2)-jglobx+1 - maxk=min(lock,globk) - k = maxk + lda_globx = m + lda_locx = size(locx, 1) + lock = size(locx,2) + maxk = lock + k = maxk call psb_bcast(ictxt,k,root=iiroot) @@ -130,13 +127,20 @@ subroutine psb_sgatherm(globx, locx, desc_a, info, iroot) call psb_errpush(info,name) goto 9999 end if + + call psb_realloc(m,k,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if globx(:,:)=szero do j=1,k do i=1,desc_a%get_local_rows() call psb_loc_to_glob(i,idx,desc_a,info) - globx(idx,jglobx+j-1) = locx(i,jlx+j-1) + globx(idx,j) = locx(i,jlx+j-1) end do end do @@ -146,12 +150,12 @@ subroutine psb_sgatherm(globx, locx, desc_a, info, iroot) if (me /= desc_a%ovrlap_elem(i,3)) then idx = desc_a%ovrlap_elem(i,1) call psb_loc_to_glob(idx,desc_a,info) - globx(idx,jglobx+j-1) = szero + globx(idx,j) = szero end if end do end do - call psb_sum(ictxt,globx(1:m,jglobx:jglobx+k-1),root=root) + call psb_sum(ictxt,globx(1:m,1:k),root=root) call psb_erractionrestore(err_act) return @@ -174,7 +178,7 @@ end subroutine psb_sgatherm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -223,7 +227,7 @@ subroutine psb_sgatherv(globx, locx, desc_a, info, iroot) implicit none real(psb_spk_), intent(in) :: locx(:) - real(psb_spk_), intent(out) :: globx(:) + real(psb_spk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -268,12 +272,12 @@ subroutine psb_sgatherv(globx, locx, desc_a, info, iroot) jlocx=1 ilocx = 1 - lda_globx = size(globx) - lda_locx = size(locx) - m = desc_a%get_global_rows() n = desc_a%get_global_cols() + lda_globx = m + lda_locx = size(locx) + k = 1 @@ -295,6 +299,13 @@ subroutine psb_sgatherv(globx, locx, desc_a, info, iroot) goto 9999 end if + call psb_realloc(m,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if + globx(:)=szero do i=1,desc_a%get_local_rows() @@ -334,7 +345,7 @@ subroutine psb_sgather_vect(globx, locx, desc_a, info, iroot) implicit none type(psb_s_vect_type), intent(inout) :: locx - real(psb_spk_), intent(out) :: globx(:) + real(psb_spk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -379,11 +390,11 @@ subroutine psb_sgather_vect(globx, locx, desc_a, info, iroot) jlocx=1 ilocx = 1 - lda_globx = size(globx) - lda_locx = locx%get_nrows() m = desc_a%get_global_rows() n = desc_a%get_global_cols() + lda_globx = m + lda_locx = locx%get_nrows() k = 1 @@ -406,6 +417,13 @@ subroutine psb_sgather_vect(globx, locx, desc_a, info, iroot) goto 9999 end if + call psb_realloc(m,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if + globx(:) = szero llocx = locx%get_vect() diff --git a/base/comm/psb_shalo.f90 b/base/comm/psb_shalo.f90 index 610c5b2d..51d98c60 100644 --- a/base/comm/psb_shalo.f90 +++ b/base/comm/psb_shalo.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -223,7 +223,7 @@ end subroutine psb_shalom !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/comm/psb_sovrl.f90 b/base/comm/psb_sovrl.f90 index 605e0113..f302b3e6 100644 --- a/base/comm/psb_sovrl.f90 +++ b/base/comm/psb_sovrl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -204,7 +204,7 @@ subroutine psb_sovrlm(x,desc_a,info,jx,ik,work,update,mode) end subroutine psb_sovrlm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/comm/psb_sscatter.F90 b/base/comm/psb_sscatter.F90 index ade18eeb..dc27ea7a 100644 --- a/base/comm/psb_sscatter.F90 +++ b/base/comm/psb_sscatter.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -235,7 +235,7 @@ end subroutine psb_sscatterm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/comm/psb_sspgather.F90 b/base/comm/psb_sspgather.F90 index ea2a832e..61c600ce 100644 --- a/base/comm/psb_sspgather.F90 +++ b/base/comm/psb_sspgather.F90 @@ -1,8 +1,41 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +! File: psb_sspgather.f90 subroutine psb_ssp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keeploc) use psb_descriptor_type use psb_error_mod - use psb_mat_mod use psb_penv_mod + use psb_mat_mod + use psb_tools_mod #ifdef MPI_MOD use mpi #endif @@ -20,7 +53,7 @@ subroutine psb_ssp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep type(psb_s_coo_sparse_mat) :: loc_coo, glob_coo integer(psb_mpik_) :: ictxt,np,me, icomm, minfo integer(psb_ipk_) :: err_act, dupl_, nrg, ncg, nzg - integer(psb_ipk_) :: ip, ndx,naggrm1,naggrp1, i, j, k + integer(psb_ipk_) :: ip, ndx,naggrm1,naggrp1, i, j, k, nzl logical :: keepnum_, keeploc_ integer(psb_mpik_), allocatable :: nzbr(:), idisp(:) integer(psb_ipk_) :: ierr(5) @@ -59,9 +92,18 @@ subroutine psb_ssp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep call psb_errpush(info,name,i_err=ierr,a_err='integer') goto 9999 end if - call loca%mv_to(loc_coo) + + + if (keeploc_) then + call loca%cp_to(loc_coo) + else + call loca%mv_to(loc_coo) + end if + nzl = loc_coo%get_nzeros() + call psb_loc_to_glob(loc_coo%ia(1:nzl),desc_a,info,iact='I') + call psb_loc_to_glob(loc_coo%ja(1:nzl),desc_a,info,iact='I') nzbr(:) = 0 - nzbr(me+1) = loc_coo%get_nzeros() + nzbr(me+1) = nzl call psb_sum(ictxt,nzbr(1:np)) nzg = sum(nzbr) if (info == psb_success_) call glob_coo%allocate(nrg,ncg,nzg) @@ -86,11 +128,7 @@ subroutine psb_ssp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep goto 9999 end if - if (keeploc_) then - call loca%mv_from(loc_coo) - else - call loc_coo%free() - end if + call loc_coo%free() call glob_coo%set_nzeros(nzg) if (present(dupl)) call glob_coo%set_dupl(dupl) call globa%mv_from(glob_coo) diff --git a/base/comm/psb_zgather.f90 b/base/comm/psb_zgather.f90 index e80d1b0a..acea1264 100644 --- a/base/comm/psb_zgather.f90 +++ b/base/comm/psb_zgather.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -50,7 +50,7 @@ subroutine psb_zgatherm(globx, locx, desc_a, info, iroot) implicit none complex(psb_dpk_), intent(in) :: locx(:,:) - complex(psb_dpk_), intent(out) :: globx(:,:) + complex(psb_dpk_), intent(out), allocatable :: globx(:,:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -100,16 +100,13 @@ subroutine psb_zgatherm(globx, locx, desc_a, info, iroot) ilocx = 1 jlocx = 1 - lda_globx = size(globx,1) - lda_locx = size(locx, 1) - m = desc_a%get_global_rows() n = desc_a%get_global_cols() - - lock=size(locx,2)-jlocx+1 - globk=size(globx,2)-jglobx+1 - maxk=min(lock,globk) - k = maxk + lda_globx = m + lda_locx = size(locx, 1) + lock = size(locx,2) + maxk = lock + k = maxk call psb_bcast(ictxt,k,root=iiroot) @@ -130,13 +127,20 @@ subroutine psb_zgatherm(globx, locx, desc_a, info, iroot) call psb_errpush(info,name) goto 9999 end if + + call psb_realloc(m,k,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if globx(:,:)=zzero do j=1,k do i=1,desc_a%get_local_rows() call psb_loc_to_glob(i,idx,desc_a,info) - globx(idx,jglobx+j-1) = locx(i,jlx+j-1) + globx(idx,j) = locx(i,jlx+j-1) end do end do @@ -146,12 +150,12 @@ subroutine psb_zgatherm(globx, locx, desc_a, info, iroot) if (me /= desc_a%ovrlap_elem(i,3)) then idx = desc_a%ovrlap_elem(i,1) call psb_loc_to_glob(idx,desc_a,info) - globx(idx,jglobx+j-1) = zzero + globx(idx,j) = zzero end if end do end do - call psb_sum(ictxt,globx(1:m,jglobx:jglobx+k-1),root=root) + call psb_sum(ictxt,globx(1:m,1:k),root=root) call psb_erractionrestore(err_act) return @@ -174,7 +178,7 @@ end subroutine psb_zgatherm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -223,7 +227,7 @@ subroutine psb_zgatherv(globx, locx, desc_a, info, iroot) implicit none complex(psb_dpk_), intent(in) :: locx(:) - complex(psb_dpk_), intent(out) :: globx(:) + complex(psb_dpk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -268,12 +272,12 @@ subroutine psb_zgatherv(globx, locx, desc_a, info, iroot) jlocx=1 ilocx = 1 - lda_globx = size(globx) - lda_locx = size(locx) - m = desc_a%get_global_rows() n = desc_a%get_global_cols() + lda_globx = m + lda_locx = size(locx) + k = 1 @@ -295,6 +299,13 @@ subroutine psb_zgatherv(globx, locx, desc_a, info, iroot) goto 9999 end if + call psb_realloc(m,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if + globx(:)=zzero do i=1,desc_a%get_local_rows() @@ -334,7 +345,7 @@ subroutine psb_zgather_vect(globx, locx, desc_a, info, iroot) implicit none type(psb_z_vect_type), intent(inout) :: locx - complex(psb_dpk_), intent(out) :: globx(:) + complex(psb_dpk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: iroot @@ -379,11 +390,11 @@ subroutine psb_zgather_vect(globx, locx, desc_a, info, iroot) jlocx=1 ilocx = 1 - lda_globx = size(globx) - lda_locx = locx%get_nrows() m = desc_a%get_global_rows() n = desc_a%get_global_cols() + lda_globx = m + lda_locx = locx%get_nrows() k = 1 @@ -406,6 +417,13 @@ subroutine psb_zgather_vect(globx, locx, desc_a, info, iroot) goto 9999 end if + call psb_realloc(m,globx,info) + if (info /= psb_success_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + end if + globx(:) = zzero llocx = locx%get_vect() diff --git a/base/comm/psb_zhalo.f90 b/base/comm/psb_zhalo.f90 index 31cbedbf..ccc422fe 100644 --- a/base/comm/psb_zhalo.f90 +++ b/base/comm/psb_zhalo.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -223,7 +223,7 @@ end subroutine psb_zhalom !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/comm/psb_zovrl.f90 b/base/comm/psb_zovrl.f90 index 840d0058..793bb8fa 100644 --- a/base/comm/psb_zovrl.f90 +++ b/base/comm/psb_zovrl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -204,7 +204,7 @@ subroutine psb_zovrlm(x,desc_a,info,jx,ik,work,update,mode) end subroutine psb_zovrlm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -242,7 +242,7 @@ end subroutine psb_zovrlm ! x(:) - complex The local part of the dense vector. ! desc_a - type(psb_desc_type). The communication descriptor. ! info - integer. Return code. -! work - real(optional). A work area. +! work - complex(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps diff --git a/base/comm/psb_zscatter.F90 b/base/comm/psb_zscatter.F90 index 59f9c16f..3d43804c 100644 --- a/base/comm/psb_zscatter.F90 +++ b/base/comm/psb_zscatter.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -235,7 +235,7 @@ end subroutine psb_zscatterm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/comm/psb_zspgather.F90 b/base/comm/psb_zspgather.F90 index 55f378ae..4035a1c9 100644 --- a/base/comm/psb_zspgather.F90 +++ b/base/comm/psb_zspgather.F90 @@ -1,8 +1,41 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +! File: psb_zspgather.f90 subroutine psb_zsp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keeploc) use psb_descriptor_type use psb_error_mod - use psb_mat_mod use psb_penv_mod + use psb_mat_mod + use psb_tools_mod #ifdef MPI_MOD use mpi #endif @@ -20,7 +53,7 @@ subroutine psb_zsp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep type(psb_z_coo_sparse_mat) :: loc_coo, glob_coo integer(psb_mpik_) :: ictxt,np,me, icomm, minfo integer(psb_ipk_) :: err_act, dupl_, nrg, ncg, nzg - integer(psb_ipk_) :: ip, ndx,naggrm1,naggrp1, i, j, k + integer(psb_ipk_) :: ip, ndx,naggrm1,naggrp1, i, j, k, nzl logical :: keepnum_, keeploc_ integer(psb_mpik_), allocatable :: nzbr(:), idisp(:) integer(psb_ipk_) :: ierr(5) @@ -59,9 +92,18 @@ subroutine psb_zsp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep call psb_errpush(info,name,i_err=ierr,a_err='integer') goto 9999 end if - call loca%mv_to(loc_coo) + + + if (keeploc_) then + call loca%cp_to(loc_coo) + else + call loca%mv_to(loc_coo) + end if + nzl = loc_coo%get_nzeros() + call psb_loc_to_glob(loc_coo%ia(1:nzl),desc_a,info,iact='I') + call psb_loc_to_glob(loc_coo%ja(1:nzl),desc_a,info,iact='I') nzbr(:) = 0 - nzbr(me+1) = loc_coo%get_nzeros() + nzbr(me+1) = nzl call psb_sum(ictxt,nzbr(1:np)) nzg = sum(nzbr) if (info == psb_success_) call glob_coo%allocate(nrg,ncg,nzg) @@ -86,11 +128,7 @@ subroutine psb_zsp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep goto 9999 end if - if (keeploc_) then - call loca%mv_from(loc_coo) - else - call loc_coo%free() - end if + call loc_coo%free() call glob_coo%set_nzeros(nzg) if (present(dupl)) call glob_coo%set_dupl(dupl) call globa%mv_from(glob_coo) diff --git a/base/internals/psb_indx_map_fnd_owner.F90 b/base/internals/psb_indx_map_fnd_owner.F90 index 48b3e9cc..b1003931 100644 --- a/base/internals/psb_indx_map_fnd_owner.F90 +++ b/base/internals/psb_indx_map_fnd_owner.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_bld_tmphalo.f90 b/base/internals/psi_bld_tmphalo.f90 index 2dedb3bc..0b0667a4 100644 --- a/base/internals/psi_bld_tmphalo.f90 +++ b/base/internals/psi_bld_tmphalo.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -100,7 +100,7 @@ subroutine psi_bld_tmphalo(desc,info) helem(i) = n_row+i ! desc%loc_to_glob(n_row+i) end do - call desc%indxmap%l2g(helem(1:nh),info) + call desc%indxmap%l2gip(helem(1:nh),info) call desc%indxmap%fnd_owner(helem(1:nh),hproc,info) if (info /= psb_success_) then diff --git a/base/internals/psi_bld_tmpovrl.f90 b/base/internals/psi_bld_tmpovrl.f90 index 0acf632e..71c0b245 100644 --- a/base/internals/psi_bld_tmpovrl.f90 +++ b/base/internals/psi_bld_tmpovrl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_compute_size.f90 b/base/internals/psi_compute_size.f90 index 03f50e25..d0750541 100644 --- a/base/internals/psi_compute_size.f90 +++ b/base/internals/psi_compute_size.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_crea_bnd_elem.f90 b/base/internals/psi_crea_bnd_elem.f90 index f0d9736b..1f8a35cd 100644 --- a/base/internals/psi_crea_bnd_elem.f90 +++ b/base/internals/psi_crea_bnd_elem.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_crea_index.f90 b/base/internals/psi_crea_index.f90 index 941ad6a5..2068d1c3 100644 --- a/base/internals/psi_crea_index.f90 +++ b/base/internals/psi_crea_index.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_crea_ovr_elem.f90 b/base/internals/psi_crea_ovr_elem.f90 index e5c78868..183c10ce 100644 --- a/base/internals/psi_crea_ovr_elem.f90 +++ b/base/internals/psi_crea_ovr_elem.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_cswapdata.F90 b/base/internals/psi_cswapdata.F90 index 7d609e9b..4ada95b3 100644 --- a/base/internals/psi_cswapdata.F90 +++ b/base/internals/psi_cswapdata.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_cswaptran.F90 b/base/internals/psi_cswaptran.F90 index a3e9087f..5627a7ed 100644 --- a/base/internals/psi_cswaptran.F90 +++ b/base/internals/psi_cswaptran.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_desc_impl.f90 b/base/internals/psi_desc_impl.f90 index a26432b3..c9af5733 100644 --- a/base/internals/psi_desc_impl.f90 +++ b/base/internals/psi_desc_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_desc_index.F90 b/base/internals/psi_desc_index.F90 index 8df6a00e..e1bcc454 100644 --- a/base/internals/psi_desc_index.F90 +++ b/base/internals/psi_desc_index.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_dl_check.f90 b/base/internals/psi_dl_check.f90 index 1f90565f..be2b3cd0 100644 --- a/base/internals/psi_dl_check.f90 +++ b/base/internals/psi_dl_check.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_dswapdata.F90 b/base/internals/psi_dswapdata.F90 index 8186846c..fa508c30 100644 --- a/base/internals/psi_dswapdata.F90 +++ b/base/internals/psi_dswapdata.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -1522,6 +1522,7 @@ subroutine psi_dswapidx_vect(iictxt,iicomm,flag,beta,y,idx,totxch,totsnd,totrcv, return contains + subroutine receive_routine(v,recvtype,procSender,tag,communicator, rvhd,info) use iso_c_binding real(c_double), intent(in), target :: v(*) diff --git a/base/internals/psi_dswaptran.F90 b/base/internals/psi_dswaptran.F90 index 4767103c..8866cbc6 100644 --- a/base/internals/psi_dswaptran.F90 +++ b/base/internals/psi_dswaptran.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_exist_ovr_elem.f b/base/internals/psi_exist_ovr_elem.f index 50c42954..f69e9627 100644 --- a/base/internals/psi_exist_ovr_elem.f +++ b/base/internals/psi_exist_ovr_elem.f @@ -1,6 +1,6 @@ C C Parallel Sparse BLAS version 3.0 -C (C) Copyright 2006, 2007, 2008, 2009, 2010 +C (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 C Salvatore Filippone University of Rome Tor Vergata C Alfredo Buttari CNRS-IRIT, Toulouse C diff --git a/base/internals/psi_extrct_dl.F90 b/base/internals/psi_extrct_dl.F90 index 97943f05..0fa750ab 100644 --- a/base/internals/psi_extrct_dl.F90 +++ b/base/internals/psi_extrct_dl.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_fnd_owner.F90 b/base/internals/psi_fnd_owner.F90 index 5ec0bab1..8d5fd5f4 100644 --- a/base/internals/psi_fnd_owner.F90 +++ b/base/internals/psi_fnd_owner.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_idx_cnv.f90 b/base/internals/psi_idx_cnv.f90 index 034115ca..5ab5e448 100644 --- a/base/internals/psi_idx_cnv.f90 +++ b/base/internals/psi_idx_cnv.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -112,7 +112,7 @@ subroutine psi_idx_cnv1(nv,idxin,desc,info,mask,owned) end if endif - call desc%indxmap%g2l(idxin(1:nv),info,mask=mask,owned=owned) + call desc%indxmap%g2lip(idxin(1:nv),info,mask=mask,owned=owned) if (info /= 0) then call psb_errpush(psb_err_from_subroutine_,name,a_err='g2l') @@ -136,7 +136,7 @@ subroutine psi_idx_cnv1(nv,idxin,desc,info,mask,owned) end subroutine psi_idx_cnv1 !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -260,7 +260,7 @@ subroutine psi_idx_cnv2(nv,idxin,idxout,desc,info,mask,owned) end subroutine psi_idx_cnv2 !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_idx_ins_cnv.f90 b/base/internals/psi_idx_ins_cnv.f90 index f48c46dc..f156e0b6 100644 --- a/base/internals/psi_idx_ins_cnv.f90 +++ b/base/internals/psi_idx_ins_cnv.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -48,7 +48,7 @@ ! info - integer. return code. ! mask(:) - logical, optional Only do the conversion for specific indices. ! -subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask) +subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask,lidx) use psi_mod, psb_protect_name => psi_idx_ins_cnv1 use psb_descriptor_type use psb_serial_mod @@ -61,6 +61,7 @@ subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask) type(psb_desc_type), intent(inout) :: desc integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask(:) + integer, intent(in), optional :: lidx(:) integer(psb_ipk_) :: ictxt,mglob, nglob integer(psb_ipk_) :: np, me integer(psb_ipk_) :: nrow,ncol, err_act @@ -82,7 +83,7 @@ subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask) call psb_info(ictxt, me, np) if ((.not.allocated(desc%indxmap)).or.& - & (.not.psb_is_bld_desc(desc))) then + & (.not.desc%is_bld())) then info = psb_err_invalid_cd_state_ call psb_errpush(info,name) goto 9999 @@ -112,7 +113,7 @@ subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask) endif - call desc%indxmap%g2l_ins(idxin(1:nv),info,mask) + call desc%indxmap%g2lip_ins(idxin(1:nv),info,mask=mask,lidx=lidx) if (info /= 0) then call psb_errpush(psb_err_from_subroutine_,name,a_err='g2l_ins') @@ -137,7 +138,7 @@ subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask) end subroutine psi_idx_ins_cnv1 !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -184,7 +185,7 @@ end subroutine psi_idx_ins_cnv1 ! info - integer. return code. ! mask(:) - logical, optional Only do the conversion for specific indices. ! -subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask) +subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask,lidx) use psi_mod, psb_protect_name => psi_idx_ins_cnv2 use psb_descriptor_type use psb_serial_mod @@ -197,6 +198,8 @@ subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask) type(psb_desc_type), intent(inout) :: desc integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask(:) + integer, intent(in), optional :: lidx(:) + integer(psb_ipk_) :: i,ictxt,k,mglob, nglob integer(psb_ipk_) :: np, me, isize integer(psb_ipk_) :: pnt_halo,nrow,ncol, nh, ip, err_act,lip,nxt,lipf @@ -216,8 +219,9 @@ subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask) call psb_info(ictxt, me, np) - if (.not.psb_is_ok_desc(desc)) then - info = psb_err_input_matrix_unassembled_ + if ((.not.allocated(desc%indxmap)).or.& + & (.not.desc%is_bld())) then + info = psb_err_invalid_cd_state_ call psb_errpush(info,name) goto 9999 endif @@ -242,7 +246,7 @@ subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask) end if idxout(1:nv) = idxin(1:nv) - call psi_idx_ins_cnv(nv,idxout,desc,info,mask) + call psi_idx_ins_cnv(nv,idxout,desc,info,mask=mask,lidx=lidx) call psb_erractionrestore(err_act) return @@ -261,7 +265,7 @@ subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask) end subroutine psi_idx_ins_cnv2 !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -307,7 +311,7 @@ end subroutine psi_idx_ins_cnv2 ! info - integer. return code. ! mask - logical, optional Only do the conversion for specific indices. ! -subroutine psi_idx_ins_cnvs2(idxin,idxout,desc,info,mask) +subroutine psi_idx_ins_cnvs2(idxin,idxout,desc,info,mask,lidx) use psi_mod, psb_protect_name => psi_idx_ins_cnvs2 use psb_descriptor_type integer(psb_ipk_), intent(in) :: idxin @@ -315,7 +319,8 @@ subroutine psi_idx_ins_cnvs2(idxin,idxout,desc,info,mask) type(psb_desc_type), intent(inout) :: desc integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask - integer(psb_ipk_) :: iout(1) + integer, intent(in), optional :: lidx + integer(psb_ipk_) :: iout(1),lidxv(1) logical :: mask_(1) if (present(mask)) then @@ -325,14 +330,19 @@ subroutine psi_idx_ins_cnvs2(idxin,idxout,desc,info,mask) end if iout(1) = idxin - call psi_idx_ins_cnv(ione,iout,desc,info,mask_) + if (present(lidx)) then + lidxv(1) = lidx + call psi_idx_ins_cnv(ione,iout,desc,info,mask=mask_,lidx=lidxv) + else + call psi_idx_ins_cnv(ione,iout,desc,info,mask=mask_) + end if idxout = iout(1) return end subroutine psi_idx_ins_cnvs2 !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -378,14 +388,15 @@ end subroutine psi_idx_ins_cnvs2 ! info - integer. return code. ! mask - logical, optional Only do the conversion for specific indices. ! -subroutine psi_idx_ins_cnvs1(idxin,desc,info,mask) +subroutine psi_idx_ins_cnvs1(idxin,desc,info,mask,lidx) use psi_mod, psb_protect_name => psi_idx_ins_cnvs1 use psb_descriptor_type integer(psb_ipk_), intent(inout) :: idxin type(psb_desc_type), intent(inout) :: desc integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask - integer(psb_ipk_) :: iout(1) + integer, intent(in), optional :: lidx + integer(psb_ipk_) :: iout(1),lidxv(1) logical :: mask_(1) if (present(mask)) then @@ -395,7 +406,12 @@ subroutine psi_idx_ins_cnvs1(idxin,desc,info,mask) end if iout(1) = idxin - call psi_idx_ins_cnv(ione,iout,desc,info,mask_) + if (present(lidx)) then + lidxv(1) = lidx + call psi_idx_ins_cnv(ione,iout,desc,info,mask=mask_,lidx=lidxv) + else + call psi_idx_ins_cnv(ione,iout,desc,info,mask_) + end if idxin = iout(1) return diff --git a/base/internals/psi_iswapdata.F90 b/base/internals/psi_iswapdata.F90 index b1c13694..dea6d846 100644 --- a/base/internals/psi_iswapdata.F90 +++ b/base/internals/psi_iswapdata.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -1014,440 +1014,440 @@ subroutine psi_iswapidxv(iictxt,iicomm,flag,beta,y,idx,totxch,totsnd,totrcv,work return end subroutine psi_iswapidxv -!!$subroutine psi_iswapdata_vect(flag,beta,y,desc_a,work,info,data) -!!$ -!!$ use psi_mod, psb_protect_name => psi_iswapdata_vect -!!$ use psb_i_base_vect_mod -!!$ use psb_error_mod -!!$ use psb_descriptor_type -!!$ use psb_penv_mod -!!$#ifdef MPI_MOD -!!$ use mpi -!!$#endif -!!$ implicit none -!!$#ifdef MPI_H -!!$ include 'mpif.h' -!!$#endif -!!$ -!!$ integer(psb_ipk_), intent(in) :: flag -!!$ integer(psb_ipk_), intent(out) :: info -!!$ class(psb_i_base_vect_type) :: y -!!$ integer(psb_ipk_) :: beta -!!$ integer(psb_ipk_), target :: work(:) -!!$ type(psb_desc_type),target :: desc_a -!!$ integer(psb_ipk_), optional :: data -!!$ -!!$ ! locals -!!$ integer(psb_ipk_) :: ictxt, np, me, icomm, idxs, idxr, totxch, data_, err_act -!!$ integer(psb_ipk_), pointer :: d_idx(:) -!!$ character(len=20) :: name -!!$ -!!$ info=psb_success_ -!!$ name='psi_swap_datav' -!!$ call psb_erractionsave(err_act) -!!$ -!!$ ictxt=desc_a%get_context() -!!$ call psb_info(ictxt,me,np) -!!$ if (np == -1) then -!!$ info=psb_err_context_error_ -!!$ call psb_errpush(info,name) -!!$ goto 9999 -!!$ endif -!!$ -!!$ if (.not.psb_is_asb_desc(desc_a)) then -!!$ info=psb_err_invalid_cd_state_ -!!$ call psb_errpush(info,name) -!!$ goto 9999 -!!$ endif -!!$ -!!$ icomm = desc_a%get_mpic() -!!$ -!!$ if(present(data)) then -!!$ data_ = data -!!$ else -!!$ data_ = psb_comm_halo_ -!!$ end if -!!$ -!!$ call desc_a%get_list(data_,d_idx,totxch,idxr,idxs,info) -!!$ if (info /= psb_success_) then -!!$ call psb_errpush(psb_err_internal_error_,name,a_err='psb_cd_get_list') -!!$ goto 9999 -!!$ end if -!!$ -!!$ call psi_swapdata(ictxt,icomm,flag,beta,y,d_idx,totxch,idxs,idxr,work,info) -!!$ if (info /= psb_success_) goto 9999 -!!$ -!!$ call psb_erractionrestore(err_act) -!!$ return -!!$ -!!$9999 continue -!!$ call psb_erractionrestore(err_act) -!!$ if (err_act == psb_act_abort_) then -!!$ call psb_error(ictxt) -!!$ return -!!$ end if -!!$ return -!!$end subroutine psi_iswapdata_vect -!!$ -!!$ -!!$subroutine psi_iswapidx_vect(iictxt,iicomm,flag,beta,y,idx,totxch,totsnd,totrcv,work,info) -!!$ -!!$ use psi_mod, psb_protect_name => psi_iswapidx_vect -!!$ use psb_error_mod -!!$ use psb_descriptor_type -!!$ use psb_penv_mod -!!$ use psb_i_base_vect_mod -!!$#ifdef MPI_MOD -!!$ use mpi -!!$#endif -!!$ implicit none -!!$#ifdef MPI_H -!!$ include 'mpif.h' -!!$#endif -!!$ -!!$ integer(psb_ipk_), intent(in) :: iictxt,iicomm,flag -!!$ integer(psb_ipk_), intent(out) :: info -!!$ class(psb_i_base_vect_type) :: y -!!$ integer(psb_ipk_) :: beta -!!$ integer(psb_ipk_), target :: work(:) -!!$ integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd, totrcv -!!$ -!!$ ! locals -!!$ integer(psb_mpik_) :: ictxt, icomm, np, me,& -!!$ & proc_to_comm, p2ptag, p2pstat(mpi_status_size), iret -!!$ integer(psb_mpik_), allocatable, dimension(:) :: bsdidx, brvidx,& -!!$ & sdsz, rvsz, prcid, rvhd, sdhd -!!$ integer(psb_ipk_) :: nesd, nerv,& -!!$ & err_act, i, idx_pt, totsnd_, totrcv_,& -!!$ & snd_pt, rcv_pt, pnti, n -!!$ integer(psb_ipk_) :: ierr(5) -!!$ logical :: swap_mpi, swap_sync, swap_send, swap_recv,& -!!$ & albf,do_send,do_recv -!!$ logical, parameter :: usersend=.false. -!!$ -!!$ integer(psb_ipk_), pointer, dimension(:) :: sndbuf, rcvbuf -!!$#ifdef HAVE_VOLATILE -!!$ volatile :: sndbuf, rcvbuf -!!$#endif -!!$ character(len=20) :: name -!!$ -!!$ info=psb_success_ -!!$ name='psi_swap_datav' -!!$ call psb_erractionsave(err_act) -!!$ ictxt = iictxt -!!$ icomm = iicomm -!!$ call psb_info(ictxt,me,np) -!!$ if (np == -1) then -!!$ info=psb_err_context_error_ -!!$ call psb_errpush(info,name) -!!$ goto 9999 -!!$ endif -!!$ -!!$ n=1 -!!$ -!!$ swap_mpi = iand(flag,psb_swap_mpi_) /= 0 -!!$ swap_sync = iand(flag,psb_swap_sync_) /= 0 -!!$ swap_send = iand(flag,psb_swap_send_) /= 0 -!!$ swap_recv = iand(flag,psb_swap_recv_) /= 0 -!!$ do_send = swap_mpi .or. swap_sync .or. swap_send -!!$ do_recv = swap_mpi .or. swap_sync .or. swap_recv -!!$ -!!$ totrcv_ = totrcv * n -!!$ totsnd_ = totsnd * n -!!$ -!!$ if (swap_mpi) then -!!$ allocate(sdsz(0:np-1), rvsz(0:np-1), bsdidx(0:np-1),& -!!$ & brvidx(0:np-1), rvhd(0:np-1), sdhd(0:np-1), prcid(0:np-1),& -!!$ & stat=info) -!!$ if(info /= psb_success_) then -!!$ call psb_errpush(psb_err_alloc_dealloc_,name) -!!$ goto 9999 -!!$ end if -!!$ -!!$ rvhd(:) = mpi_request_null -!!$ sdsz(:) = 0 -!!$ rvsz(:) = 0 -!!$ -!!$ ! prepare info for communications -!!$ -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ call psb_get_rank(prcid(proc_to_comm),ictxt,proc_to_comm) -!!$ -!!$ brvidx(proc_to_comm) = rcv_pt -!!$ rvsz(proc_to_comm) = nerv -!!$ -!!$ bsdidx(proc_to_comm) = snd_pt -!!$ sdsz(proc_to_comm) = nesd -!!$ -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ -!!$ end do -!!$ -!!$ else -!!$ allocate(rvhd(totxch),prcid(totxch),stat=info) -!!$ if(info /= psb_success_) then -!!$ call psb_errpush(psb_err_alloc_dealloc_,name) -!!$ goto 9999 -!!$ end if -!!$ end if -!!$ -!!$ -!!$ totrcv_ = max(totrcv_,1) -!!$ totsnd_ = max(totsnd_,1) -!!$ if((totrcv_+totsnd_) < size(work)) then -!!$ sndbuf => work(1:totsnd_) -!!$ rcvbuf => work(totsnd_+1:totsnd_+totrcv_) -!!$ albf=.false. -!!$ else -!!$ allocate(sndbuf(totsnd_),rcvbuf(totrcv_), stat=info) -!!$ if(info /= psb_success_) then -!!$ call psb_errpush(psb_err_alloc_dealloc_,name) -!!$ goto 9999 -!!$ end if -!!$ albf=.true. -!!$ end if -!!$ -!!$ -!!$ if (do_send) then -!!$ -!!$ ! Pack send buffers -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ do i=1, totxch -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ idx_pt = 1+pnti+nerv+psb_n_elem_send_ -!!$ call y%gth(nesd,idx(idx_pt:idx_pt+nesd-1),& -!!$ & sndbuf(snd_pt:snd_pt+nesd-1)) -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ end do -!!$ -!!$ end if -!!$ -!!$ ! Case SWAP_MPI -!!$ if (swap_mpi) then -!!$ -!!$ ! swap elements using mpi_alltoallv -!!$ call mpi_alltoallv(sndbuf,sdsz,bsdidx,& -!!$ & psb_mpi_ipk_integer,rcvbuf,rvsz,& -!!$ & brvidx,psb_mpi_ipk_integer,icomm,iret) -!!$ if(iret /= mpi_success) then -!!$ ierr(1) = iret -!!$ info=psb_err_mpi_error_ -!!$ call psb_errpush(info,name,i_err=ierr) -!!$ goto 9999 -!!$ end if -!!$ -!!$ else if (swap_sync) then -!!$ -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ -!!$ if (proc_to_comm < me) then -!!$ if (nesd>0) call psb_snd(ictxt,& -!!$ & sndbuf(snd_pt:snd_pt+nesd-1), proc_to_comm) -!!$ if (nerv>0) call psb_rcv(ictxt,& -!!$ & rcvbuf(rcv_pt:rcv_pt+nerv-1), proc_to_comm) -!!$ else if (proc_to_comm > me) then -!!$ if (nerv>0) call psb_rcv(ictxt,& -!!$ & rcvbuf(rcv_pt:rcv_pt+nerv-1), proc_to_comm) -!!$ if (nesd>0) call psb_snd(ictxt,& -!!$ & sndbuf(snd_pt:snd_pt+nesd-1), proc_to_comm) -!!$ else if (proc_to_comm == me) then -!!$ if (nesd /= nerv) then -!!$ write(psb_err_unit,*) & -!!$ & 'Fatal error in swapdata: mismatch on self send',& -!!$ & nerv,nesd -!!$ end if -!!$ rcvbuf(rcv_pt:rcv_pt+nerv-1) = sndbuf(snd_pt:snd_pt+nesd-1) -!!$ end if -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ end do -!!$ -!!$ -!!$ else if (swap_send .and. swap_recv) then -!!$ -!!$ ! First I post all the non blocking receives -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ -!!$ call psb_get_rank(prcid(i),ictxt,proc_to_comm) -!!$ if ((nerv>0).and.(proc_to_comm /= me)) then -!!$ p2ptag = psb_int_swap_tag -!!$ call mpi_irecv(rcvbuf(rcv_pt),nerv,& -!!$ & psb_mpi_ipk_integer,prcid(i),& -!!$ & p2ptag, icomm,rvhd(i),iret) -!!$ end if -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ end do -!!$ -!!$ -!!$ ! Then I post all the blocking sends -!!$ if (usersend) call mpi_barrier(icomm,iret) -!!$ -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ -!!$ p2ptag = psb_int_swap_tag -!!$ -!!$ if ((nesd>0).and.(proc_to_comm /= me)) then -!!$ if (usersend) then -!!$ call mpi_rsend(sndbuf(snd_pt),nesd,& -!!$ & psb_mpi_ipk_integer,prcid(i),& -!!$ & p2ptag,icomm,iret) -!!$ else -!!$ call mpi_send(sndbuf(snd_pt),nesd,& -!!$ & psb_mpi_ipk_integer,prcid(i),& -!!$ & p2ptag,icomm,iret) -!!$ end if -!!$ -!!$ if(iret /= mpi_success) then -!!$ ierr(1) = iret -!!$ info=psb_err_mpi_error_ -!!$ call psb_errpush(info,name,i_err=ierr) -!!$ goto 9999 -!!$ end if -!!$ end if -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ end do -!!$ -!!$ -!!$ pnti = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ -!!$ p2ptag = psb_int_swap_tag -!!$ -!!$ if ((proc_to_comm /= me).and.(nerv>0)) then -!!$ call mpi_wait(rvhd(i),p2pstat,iret) -!!$ if(iret /= mpi_success) then -!!$ ierr(1) = iret -!!$ info=psb_err_mpi_error_ -!!$ call psb_errpush(info,name,i_err=ierr) -!!$ goto 9999 -!!$ end if -!!$ else if (proc_to_comm == me) then -!!$ if (nesd /= nerv) then -!!$ write(psb_err_unit,*) & -!!$ & 'Fatal error in swapdata: mismatch on self send',& -!!$ & nerv,nesd -!!$ end if -!!$ rcvbuf(rcv_pt:rcv_pt+nerv-1) = sndbuf(snd_pt:snd_pt+nesd-1) -!!$ end if -!!$ pnti = pnti + nerv + nesd + 3 -!!$ end do -!!$ -!!$ -!!$ else if (swap_send) then -!!$ -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ if (nesd>0) call psb_snd(ictxt,& -!!$ & sndbuf(snd_pt:snd_pt+nesd-1), proc_to_comm) -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ end do -!!$ -!!$ else if (swap_recv) then -!!$ -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ if (nerv>0) call psb_rcv(ictxt,& -!!$ & rcvbuf(rcv_pt:rcv_pt+nerv-1), proc_to_comm) -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ end do -!!$ -!!$ end if -!!$ -!!$ if (do_recv) then -!!$ -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ idx_pt = 1+pnti+psb_n_elem_recv_ -!!$ call y%sct(nerv,idx(idx_pt:idx_pt+nerv-1),& -!!$ & rcvbuf(rcv_pt:rcv_pt+nerv-1),beta) -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ end do -!!$ -!!$ end if -!!$ -!!$ if (swap_mpi) then -!!$ deallocate(sdsz,rvsz,bsdidx,brvidx,rvhd,prcid,sdhd,& -!!$ & stat=info) -!!$ else -!!$ deallocate(rvhd,prcid,stat=info) -!!$ end if -!!$ if(info /= psb_success_) then -!!$ call psb_errpush(psb_err_alloc_dealloc_,name) -!!$ goto 9999 -!!$ end if -!!$ if(albf) deallocate(sndbuf,rcvbuf,stat=info) -!!$ if(info /= psb_success_) then -!!$ call psb_errpush(psb_err_alloc_dealloc_,name) -!!$ goto 9999 -!!$ end if -!!$ -!!$ call psb_erractionrestore(err_act) -!!$ return -!!$ -!!$9999 continue -!!$ call psb_erractionrestore(err_act) -!!$ if (err_act == psb_act_abort_) then -!!$ call psb_error(ictxt) -!!$ return -!!$ end if -!!$ return -!!$end subroutine psi_iswapidx_vect -!!$ +subroutine psi_iswapdata_vect(flag,beta,y,desc_a,work,info,data) + + use psi_mod, psb_protect_name => psi_iswapdata_vect + use psb_i_base_vect_mod + use psb_error_mod + use psb_descriptor_type + use psb_penv_mod +#ifdef MPI_MOD + use mpi +#endif + implicit none +#ifdef MPI_H + include 'mpif.h' +#endif + + integer(psb_ipk_), intent(in) :: flag + integer(psb_ipk_), intent(out) :: info + class(psb_i_base_vect_type) :: y + integer(psb_ipk_) :: beta + integer(psb_ipk_), target :: work(:) + type(psb_desc_type),target :: desc_a + integer(psb_ipk_), optional :: data + + ! locals + integer(psb_ipk_) :: ictxt, np, me, icomm, idxs, idxr, totxch, data_, err_act + integer(psb_ipk_), pointer :: d_idx(:) + character(len=20) :: name + + info=psb_success_ + name='psi_swap_datav' + call psb_erractionsave(err_act) + + ictxt=desc_a%get_context() + call psb_info(ictxt,me,np) + if (np == -1) then + info=psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + endif + + if (.not.psb_is_asb_desc(desc_a)) then + info=psb_err_invalid_cd_state_ + call psb_errpush(info,name) + goto 9999 + endif + + icomm = desc_a%get_mpic() + + if(present(data)) then + data_ = data + else + data_ = psb_comm_halo_ + end if + + call desc_a%get_list(data_,d_idx,totxch,idxr,idxs,info) + if (info /= psb_success_) then + call psb_errpush(psb_err_internal_error_,name,a_err='psb_cd_get_list') + goto 9999 + end if + + call psi_swapdata(ictxt,icomm,flag,beta,y,d_idx,totxch,idxs,idxr,work,info) + if (info /= psb_success_) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + if (err_act == psb_act_abort_) then + call psb_error(ictxt) + return + end if + return +end subroutine psi_iswapdata_vect + + +subroutine psi_iswapidx_vect(iictxt,iicomm,flag,beta,y,idx,totxch,totsnd,totrcv,work,info) + + use psi_mod, psb_protect_name => psi_iswapidx_vect + use psb_error_mod + use psb_descriptor_type + use psb_penv_mod + use psb_i_base_vect_mod +#ifdef MPI_MOD + use mpi +#endif + implicit none +#ifdef MPI_H + include 'mpif.h' +#endif + + integer(psb_ipk_), intent(in) :: iictxt,iicomm,flag + integer(psb_ipk_), intent(out) :: info + class(psb_i_base_vect_type) :: y + integer(psb_ipk_) :: beta + integer(psb_ipk_), target :: work(:) + integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd, totrcv + + ! locals + integer(psb_mpik_) :: ictxt, icomm, np, me,& + & proc_to_comm, p2ptag, p2pstat(mpi_status_size), iret + integer(psb_mpik_), allocatable, dimension(:) :: bsdidx, brvidx,& + & sdsz, rvsz, prcid, rvhd, sdhd + integer(psb_ipk_) :: nesd, nerv,& + & err_act, i, idx_pt, totsnd_, totrcv_,& + & snd_pt, rcv_pt, pnti, n + integer(psb_ipk_) :: ierr(5) + logical :: swap_mpi, swap_sync, swap_send, swap_recv,& + & albf,do_send,do_recv + logical, parameter :: usersend=.false. + + integer(psb_ipk_), pointer, dimension(:) :: sndbuf, rcvbuf +#ifdef HAVE_VOLATILE + volatile :: sndbuf, rcvbuf +#endif + character(len=20) :: name + + info=psb_success_ + name='psi_swap_datav' + call psb_erractionsave(err_act) + ictxt = iictxt + icomm = iicomm + call psb_info(ictxt,me,np) + if (np == -1) then + info=psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + endif + + n=1 + + swap_mpi = iand(flag,psb_swap_mpi_) /= 0 + swap_sync = iand(flag,psb_swap_sync_) /= 0 + swap_send = iand(flag,psb_swap_send_) /= 0 + swap_recv = iand(flag,psb_swap_recv_) /= 0 + do_send = swap_mpi .or. swap_sync .or. swap_send + do_recv = swap_mpi .or. swap_sync .or. swap_recv + + totrcv_ = totrcv * n + totsnd_ = totsnd * n + + if (swap_mpi) then + allocate(sdsz(0:np-1), rvsz(0:np-1), bsdidx(0:np-1),& + & brvidx(0:np-1), rvhd(0:np-1), sdhd(0:np-1), prcid(0:np-1),& + & stat=info) + if(info /= psb_success_) then + call psb_errpush(psb_err_alloc_dealloc_,name) + goto 9999 + end if + + rvhd(:) = mpi_request_null + sdsz(:) = 0 + rvsz(:) = 0 + + ! prepare info for communications + + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + call psb_get_rank(prcid(proc_to_comm),ictxt,proc_to_comm) + + brvidx(proc_to_comm) = rcv_pt + rvsz(proc_to_comm) = nerv + + bsdidx(proc_to_comm) = snd_pt + sdsz(proc_to_comm) = nesd + + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + + end do + + else + allocate(rvhd(totxch),prcid(totxch),stat=info) + if(info /= psb_success_) then + call psb_errpush(psb_err_alloc_dealloc_,name) + goto 9999 + end if + end if + + + totrcv_ = max(totrcv_,1) + totsnd_ = max(totsnd_,1) + if((totrcv_+totsnd_) < size(work)) then + sndbuf => work(1:totsnd_) + rcvbuf => work(totsnd_+1:totsnd_+totrcv_) + albf=.false. + else + allocate(sndbuf(totsnd_),rcvbuf(totrcv_), stat=info) + if(info /= psb_success_) then + call psb_errpush(psb_err_alloc_dealloc_,name) + goto 9999 + end if + albf=.true. + end if + + + if (do_send) then + + ! Pack send buffers + pnti = 1 + snd_pt = 1 + do i=1, totxch + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + idx_pt = 1+pnti+nerv+psb_n_elem_send_ + call y%gth(nesd,idx(idx_pt:idx_pt+nesd-1),& + & sndbuf(snd_pt:snd_pt+nesd-1)) + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + end do + + end if + + ! Case SWAP_MPI + if (swap_mpi) then + + ! swap elements using mpi_alltoallv + call mpi_alltoallv(sndbuf,sdsz,bsdidx,& + & psb_mpi_ipk_integer,rcvbuf,rvsz,& + & brvidx,psb_mpi_ipk_integer,icomm,iret) + if(iret /= mpi_success) then + ierr(1) = iret + info=psb_err_mpi_error_ + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + + else if (swap_sync) then + + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + + if (proc_to_comm < me) then + if (nesd>0) call psb_snd(ictxt,& + & sndbuf(snd_pt:snd_pt+nesd-1), proc_to_comm) + if (nerv>0) call psb_rcv(ictxt,& + & rcvbuf(rcv_pt:rcv_pt+nerv-1), proc_to_comm) + else if (proc_to_comm > me) then + if (nerv>0) call psb_rcv(ictxt,& + & rcvbuf(rcv_pt:rcv_pt+nerv-1), proc_to_comm) + if (nesd>0) call psb_snd(ictxt,& + & sndbuf(snd_pt:snd_pt+nesd-1), proc_to_comm) + else if (proc_to_comm == me) then + if (nesd /= nerv) then + write(psb_err_unit,*) & + & 'Fatal error in swapdata: mismatch on self send',& + & nerv,nesd + end if + rcvbuf(rcv_pt:rcv_pt+nerv-1) = sndbuf(snd_pt:snd_pt+nesd-1) + end if + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + end do + + + else if (swap_send .and. swap_recv) then + + ! First I post all the non blocking receives + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + + call psb_get_rank(prcid(i),ictxt,proc_to_comm) + if ((nerv>0).and.(proc_to_comm /= me)) then + p2ptag = psb_int_swap_tag + call mpi_irecv(rcvbuf(rcv_pt),nerv,& + & psb_mpi_ipk_integer,prcid(i),& + & p2ptag, icomm,rvhd(i),iret) + end if + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + end do + + + ! Then I post all the blocking sends + if (usersend) call mpi_barrier(icomm,iret) + + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + + p2ptag = psb_int_swap_tag + + if ((nesd>0).and.(proc_to_comm /= me)) then + if (usersend) then + call mpi_rsend(sndbuf(snd_pt),nesd,& + & psb_mpi_ipk_integer,prcid(i),& + & p2ptag,icomm,iret) + else + call mpi_send(sndbuf(snd_pt),nesd,& + & psb_mpi_ipk_integer,prcid(i),& + & p2ptag,icomm,iret) + end if + + if(iret /= mpi_success) then + ierr(1) = iret + info=psb_err_mpi_error_ + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + end if + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + end do + + + pnti = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + + p2ptag = psb_int_swap_tag + + if ((proc_to_comm /= me).and.(nerv>0)) then + call mpi_wait(rvhd(i),p2pstat,iret) + if(iret /= mpi_success) then + ierr(1) = iret + info=psb_err_mpi_error_ + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + else if (proc_to_comm == me) then + if (nesd /= nerv) then + write(psb_err_unit,*) & + & 'Fatal error in swapdata: mismatch on self send',& + & nerv,nesd + end if + rcvbuf(rcv_pt:rcv_pt+nerv-1) = sndbuf(snd_pt:snd_pt+nesd-1) + end if + pnti = pnti + nerv + nesd + 3 + end do + + + else if (swap_send) then + + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + if (nesd>0) call psb_snd(ictxt,& + & sndbuf(snd_pt:snd_pt+nesd-1), proc_to_comm) + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + end do + + else if (swap_recv) then + + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + if (nerv>0) call psb_rcv(ictxt,& + & rcvbuf(rcv_pt:rcv_pt+nerv-1), proc_to_comm) + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + end do + + end if + + if (do_recv) then + + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + idx_pt = 1+pnti+psb_n_elem_recv_ + call y%sct(nerv,idx(idx_pt:idx_pt+nerv-1),& + & rcvbuf(rcv_pt:rcv_pt+nerv-1),beta) + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + end do + + end if + + if (swap_mpi) then + deallocate(sdsz,rvsz,bsdidx,brvidx,rvhd,prcid,sdhd,& + & stat=info) + else + deallocate(rvhd,prcid,stat=info) + end if + if(info /= psb_success_) then + call psb_errpush(psb_err_alloc_dealloc_,name) + goto 9999 + end if + if(albf) deallocate(sndbuf,rcvbuf,stat=info) + if(info /= psb_success_) then + call psb_errpush(psb_err_alloc_dealloc_,name) + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + if (err_act == psb_act_abort_) then + call psb_error(ictxt) + return + end if + return +end subroutine psi_iswapidx_vect + diff --git a/base/internals/psi_iswaptran.F90 b/base/internals/psi_iswaptran.F90 index 48ed2a37..e2ee4f67 100644 --- a/base/internals/psi_iswaptran.F90 +++ b/base/internals/psi_iswaptran.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -1041,453 +1041,453 @@ subroutine psi_itranidxv(iictxt,iicomm,flag,beta,y,idx,totxch,totsnd,totrcv,work end subroutine psi_itranidxv -!!$subroutine psi_iswaptran_vect(flag,beta,y,desc_a,work,info,data) -!!$ -!!$ use psi_mod, psb_protect_name => psi_iswaptran_vect -!!$ use psb_error_mod -!!$ use psb_descriptor_type -!!$ use psb_penv_mod -!!$ use psb_i_base_vect_mod -!!$#ifdef MPI_MOD -!!$ use mpi -!!$#endif -!!$ implicit none -!!$#ifdef MPI_H -!!$ include 'mpif.h' -!!$#endif -!!$ -!!$ integer(psb_ipk_), intent(in) :: flag -!!$ integer(psb_ipk_), intent(out) :: info -!!$ class(psb_i_base_vect_type) :: y -!!$ integer(psb_ipk_) :: beta -!!$ integer(psb_ipk_), target :: work(:) -!!$ type(psb_desc_type),target :: desc_a -!!$ integer(psb_ipk_), optional :: data -!!$ -!!$ ! locals -!!$ integer(psb_ipk_) :: ictxt, np, me, icomm, idxs, idxr, totxch, err_act, data_ -!!$ integer(psb_ipk_), pointer :: d_idx(:) -!!$ integer(psb_ipk_) :: ierr(5) -!!$ character(len=20) :: name -!!$ -!!$ info=psb_success_ -!!$ name='psi_swap_tranv' -!!$ call psb_erractionsave(err_act) -!!$ -!!$ ictxt = desc_a%get_context() -!!$ icomm = desc_a%get_mpic() -!!$ call psb_info(ictxt,me,np) -!!$ if (np == -1) then -!!$ info=psb_err_context_error_ -!!$ call psb_errpush(info,name) -!!$ goto 9999 -!!$ endif -!!$ -!!$ if (.not.psb_is_asb_desc(desc_a)) then -!!$ info=psb_err_invalid_cd_state_ -!!$ call psb_errpush(info,name) -!!$ goto 9999 -!!$ endif -!!$ -!!$ if (present(data)) then -!!$ data_ = data -!!$ else -!!$ data_ = psb_comm_halo_ -!!$ end if -!!$ -!!$ call desc_a%get_list(data_,d_idx,totxch,idxr,idxs,info) -!!$ if (info /= psb_success_) then -!!$ call psb_errpush(psb_err_internal_error_,name,a_err='psb_cd_get_list') -!!$ goto 9999 -!!$ end if -!!$ -!!$ call psi_swaptran(ictxt,icomm,flag,beta,y,d_idx,totxch,idxs,idxr,work,info) -!!$ if (info /= psb_success_) goto 9999 -!!$ -!!$ call psb_erractionrestore(err_act) -!!$ return -!!$ -!!$9999 continue -!!$ call psb_erractionrestore(err_act) -!!$ if (err_act == psb_act_abort_) then -!!$ call psb_error(ictxt) -!!$ return -!!$ end if -!!$ return -!!$end subroutine psi_iswaptran_vect -!!$ -!!$ -!!$ -!!$subroutine psi_itranidx_vect(iictxt,iicomm,flag,beta,y,idx,& -!!$ & totxch,totsnd,totrcv,work,info) -!!$ -!!$ use psi_mod, psb_protect_name => psi_itranidx_vect -!!$ use psb_error_mod -!!$ use psb_descriptor_type -!!$ use psb_penv_mod -!!$ use psb_i_base_vect_mod -!!$#ifdef MPI_MOD -!!$ use mpi -!!$#endif -!!$ implicit none -!!$#ifdef MPI_H -!!$ include 'mpif.h' -!!$#endif -!!$ -!!$ integer(psb_ipk_), intent(in) :: iictxt,iicomm,flag -!!$ integer(psb_ipk_), intent(out) :: info -!!$ class(psb_i_base_vect_type) :: y -!!$ integer(psb_ipk_) :: beta -!!$ integer(psb_ipk_), target :: work(:) -!!$ integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd, totrcv -!!$ -!!$ ! locals -!!$ integer(psb_mpik_) :: ictxt, icomm, np, me,& -!!$ & proc_to_comm, p2ptag, p2pstat(mpi_status_size), iret -!!$ integer(psb_mpik_), allocatable, dimension(:) :: bsdidx, brvidx,& -!!$ & sdsz, rvsz, prcid, rvhd, sdhd -!!$ integer(psb_ipk_) :: nesd, nerv,& -!!$ & err_act, i, idx_pt, totsnd_, totrcv_,& -!!$ & snd_pt, rcv_pt, pnti, n -!!$ integer(psb_ipk_) :: ierr(5) -!!$ logical :: swap_mpi, swap_sync, swap_send, swap_recv,& -!!$ & albf,do_send,do_recv -!!$ logical, parameter :: usersend=.false. -!!$ -!!$ integer(psb_ipk_), pointer, dimension(:) :: sndbuf, rcvbuf -!!$#ifdef HAVE_VOLATILE -!!$ volatile :: sndbuf, rcvbuf -!!$#endif -!!$ character(len=20) :: name -!!$ -!!$ info=psb_success_ -!!$ name='psi_swap_tran' -!!$ call psb_erractionsave(err_act) -!!$ ictxt = iictxt -!!$ icomm = iicomm -!!$ -!!$ call psb_info(ictxt,me,np) -!!$ if (np == -1) then -!!$ info=psb_err_context_error_ -!!$ call psb_errpush(info,name) -!!$ goto 9999 -!!$ endif -!!$ -!!$ n=1 -!!$ swap_mpi = iand(flag,psb_swap_mpi_) /= 0 -!!$ swap_sync = iand(flag,psb_swap_sync_) /= 0 -!!$ swap_send = iand(flag,psb_swap_send_) /= 0 -!!$ swap_recv = iand(flag,psb_swap_recv_) /= 0 -!!$ do_send = swap_mpi .or. swap_sync .or. swap_send -!!$ do_recv = swap_mpi .or. swap_sync .or. swap_recv -!!$ -!!$ totrcv_ = totrcv * n -!!$ totsnd_ = totsnd * n -!!$ -!!$ if (swap_mpi) then -!!$ allocate(sdsz(0:np-1), rvsz(0:np-1), bsdidx(0:np-1),& -!!$ & brvidx(0:np-1), rvhd(0:np-1), sdhd(0:np-1), prcid(0:np-1),& -!!$ & stat=info) -!!$ if(info /= psb_success_) then -!!$ call psb_errpush(psb_err_alloc_dealloc_,name) -!!$ goto 9999 -!!$ end if -!!$ -!!$ rvhd(:) = mpi_request_null -!!$ sdsz(:) = 0 -!!$ rvsz(:) = 0 -!!$ -!!$ ! prepare info for communications -!!$ -!!$ -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ call psb_get_rank(prcid(proc_to_comm),ictxt,proc_to_comm) -!!$ -!!$ brvidx(proc_to_comm) = rcv_pt -!!$ rvsz(proc_to_comm) = nerv -!!$ -!!$ bsdidx(proc_to_comm) = snd_pt -!!$ sdsz(proc_to_comm) = nesd -!!$ -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ -!!$ end do -!!$ -!!$ else -!!$ allocate(rvhd(totxch),prcid(totxch),stat=info) -!!$ if(info /= psb_success_) then -!!$ call psb_errpush(psb_err_alloc_dealloc_,name) -!!$ goto 9999 -!!$ end if -!!$ end if -!!$ -!!$ -!!$ totrcv_ = max(totrcv_,1) -!!$ totsnd_ = max(totsnd_,1) -!!$ if((totrcv_+totsnd_) < size(work)) then -!!$ sndbuf => work(1:totsnd_) -!!$ rcvbuf => work(totsnd_+1:totsnd_+totrcv_) -!!$ albf=.false. -!!$ else -!!$ allocate(sndbuf(totsnd_),rcvbuf(totrcv_), stat=info) -!!$ if(info /= psb_success_) then -!!$ call psb_errpush(psb_err_alloc_dealloc_,name) -!!$ goto 9999 -!!$ end if -!!$ albf=.true. -!!$ end if -!!$ -!!$ -!!$ if (do_send) then -!!$ -!!$ ! Pack send buffers -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ idx_pt = 1+pnti+psb_n_elem_recv_ -!!$ -!!$ call y%gth(nerv,idx(idx_pt:idx_pt+nerv-1),& -!!$ & rcvbuf(rcv_pt:rcv_pt+nerv-1)) -!!$ -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ end do -!!$ -!!$ end if -!!$ -!!$ ! Case SWAP_MPI -!!$ if (swap_mpi) then -!!$ -!!$ ! swap elements using mpi_alltoallv -!!$ call mpi_alltoallv(rcvbuf,rvsz,brvidx,& -!!$ & psb_mpi_ipk_integer,& -!!$ & sndbuf,sdsz,bsdidx,psb_mpi_ipk_integer,icomm,iret) -!!$ if(iret /= mpi_success) then -!!$ ierr(1) = iret -!!$ info=psb_err_mpi_error_ -!!$ call psb_errpush(info,name,i_err=ierr) -!!$ goto 9999 -!!$ end if -!!$ -!!$ else if (swap_sync) then -!!$ -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ -!!$ if (proc_to_comm < me) then -!!$ if (nerv>0) call psb_snd(ictxt,& -!!$ & rcvbuf(rcv_pt:rcv_pt+nerv-1), proc_to_comm) -!!$ if (nesd>0) call psb_rcv(ictxt,& -!!$ & sndbuf(snd_pt:snd_pt+nesd-1), proc_to_comm) -!!$ else if (proc_to_comm > me) then -!!$ if (nesd>0) call psb_rcv(ictxt,& -!!$ & sndbuf(snd_pt:snd_pt+nesd-1), proc_to_comm) -!!$ if (nerv>0) call psb_snd(ictxt,& -!!$ & rcvbuf(rcv_pt:rcv_pt+nerv-1), proc_to_comm) -!!$ else if (proc_to_comm == me) then -!!$ if (nesd /= nerv) then -!!$ write(psb_err_unit,*) & -!!$ & 'Fatal error in swaptran: mismatch on self send',& -!!$ & nerv,nesd -!!$ end if -!!$ sndbuf(snd_pt:snd_pt+nesd-1) = rcvbuf(rcv_pt:rcv_pt+nerv-1) -!!$ end if -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ -!!$ end do -!!$ -!!$ -!!$ else if (swap_send .and. swap_recv) then -!!$ -!!$ ! First I post all the non blocking receives -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ call psb_get_rank(prcid(i),ictxt,proc_to_comm) -!!$ if ((nesd>0).and.(proc_to_comm /= me)) then -!!$ p2ptag = psb_int_swap_tag -!!$ call mpi_irecv(sndbuf(snd_pt),nesd,& -!!$ & psb_mpi_ipk_integer,prcid(i),& -!!$ & p2ptag,icomm,rvhd(i),iret) -!!$ end if -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ end do -!!$ -!!$ -!!$ ! Then I post all the blocking sends -!!$ if (usersend) call mpi_barrier(icomm,iret) -!!$ -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ -!!$ if ((nerv>0).and.(proc_to_comm /= me)) then -!!$ p2ptag = psb_int_swap_tag -!!$ if (usersend) then -!!$ call mpi_rsend(rcvbuf(rcv_pt),nerv,& -!!$ & psb_mpi_ipk_integer,prcid(i),& -!!$ & p2ptag, icomm,iret) -!!$ else -!!$ call mpi_send(rcvbuf(rcv_pt),nerv,& -!!$ & psb_mpi_ipk_integer,prcid(i),& -!!$ & p2ptag, icomm,iret) -!!$ end if -!!$ -!!$ if(iret /= mpi_success) then -!!$ ierr(1) = iret -!!$ info=psb_err_mpi_error_ -!!$ call psb_errpush(info,name,i_err=ierr) -!!$ goto 9999 -!!$ end if -!!$ end if -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ -!!$ end do -!!$ -!!$ -!!$ pnti = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ p2ptag = psb_int_swap_tag -!!$ -!!$ if ((proc_to_comm /= me).and.(nesd>0)) then -!!$ call mpi_wait(rvhd(i),p2pstat,iret) -!!$ if(iret /= mpi_success) then -!!$ ierr(1) = iret -!!$ info=psb_err_mpi_error_ -!!$ call psb_errpush(info,name,i_err=ierr) -!!$ goto 9999 -!!$ end if -!!$ else if (proc_to_comm == me) then -!!$ if (nesd /= nerv) then -!!$ write(psb_err_unit,*) & -!!$ & 'Fatal error in swaptran: mismatch on self send', & -!!$ & nerv,nesd -!!$ end if -!!$ sndbuf(snd_pt:snd_pt+nesd-1) = rcvbuf(rcv_pt:rcv_pt+nerv-1) -!!$ end if -!!$ pnti = pnti + nerv + nesd + 3 -!!$ end do -!!$ -!!$ -!!$ else if (swap_send) then -!!$ -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ if (nerv>0) call psb_snd(ictxt,& -!!$ & rcvbuf(rcv_pt:rcv_pt+nerv-1), proc_to_comm) -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ -!!$ end do -!!$ -!!$ else if (swap_recv) then -!!$ -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ if (nesd>0) call psb_rcv(ictxt,& -!!$ & sndbuf(snd_pt:snd_pt+nesd-1), proc_to_comm) -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ -!!$ end do -!!$ -!!$ end if -!!$ -!!$ -!!$ if (do_recv) then -!!$ -!!$ pnti = 1 -!!$ snd_pt = 1 -!!$ rcv_pt = 1 -!!$ do i=1, totxch -!!$ proc_to_comm = idx(pnti+psb_proc_id_) -!!$ nerv = idx(pnti+psb_n_elem_recv_) -!!$ nesd = idx(pnti+nerv+psb_n_elem_send_) -!!$ idx_pt = 1+pnti+nerv+psb_n_elem_send_ -!!$ call y%sct(nesd,idx(idx_pt:idx_pt+nesd-1),& -!!$ & sndbuf(snd_pt:snd_pt+nesd-1),beta) -!!$ rcv_pt = rcv_pt + nerv -!!$ snd_pt = snd_pt + nesd -!!$ pnti = pnti + nerv + nesd + 3 -!!$ end do -!!$ -!!$ end if -!!$ -!!$ -!!$ if (swap_mpi) then -!!$ deallocate(sdsz,rvsz,bsdidx,brvidx,rvhd,prcid,sdhd,& -!!$ & stat=info) -!!$ else -!!$ deallocate(rvhd,prcid,stat=info) -!!$ end if -!!$ if(info /= psb_success_) then -!!$ call psb_errpush(psb_err_alloc_dealloc_,name) -!!$ goto 9999 -!!$ end if -!!$ if(albf) deallocate(sndbuf,rcvbuf,stat=info) -!!$ if(info /= psb_success_) then -!!$ call psb_errpush(psb_err_alloc_dealloc_,name) -!!$ goto 9999 -!!$ end if -!!$ -!!$ call psb_erractionrestore(err_act) -!!$ return -!!$ -!!$9999 continue -!!$ call psb_erractionrestore(err_act) -!!$ if (err_act == psb_act_abort_) then -!!$ call psb_error(ictxt) -!!$ return -!!$ end if -!!$ return -!!$end subroutine psi_itranidx_vect -!!$ -!!$ -!!$ +subroutine psi_iswaptran_vect(flag,beta,y,desc_a,work,info,data) + + use psi_mod, psb_protect_name => psi_iswaptran_vect + use psb_error_mod + use psb_descriptor_type + use psb_penv_mod + use psb_i_base_vect_mod +#ifdef MPI_MOD + use mpi +#endif + implicit none +#ifdef MPI_H + include 'mpif.h' +#endif + + integer(psb_ipk_), intent(in) :: flag + integer(psb_ipk_), intent(out) :: info + class(psb_i_base_vect_type) :: y + integer(psb_ipk_) :: beta + integer(psb_ipk_), target :: work(:) + type(psb_desc_type),target :: desc_a + integer(psb_ipk_), optional :: data + + ! locals + integer(psb_ipk_) :: ictxt, np, me, icomm, idxs, idxr, totxch, err_act, data_ + integer(psb_ipk_), pointer :: d_idx(:) + integer(psb_ipk_) :: ierr(5) + character(len=20) :: name + + info=psb_success_ + name='psi_swap_tranv' + call psb_erractionsave(err_act) + + ictxt = desc_a%get_context() + icomm = desc_a%get_mpic() + call psb_info(ictxt,me,np) + if (np == -1) then + info=psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + endif + + if (.not.psb_is_asb_desc(desc_a)) then + info=psb_err_invalid_cd_state_ + call psb_errpush(info,name) + goto 9999 + endif + + if (present(data)) then + data_ = data + else + data_ = psb_comm_halo_ + end if + + call desc_a%get_list(data_,d_idx,totxch,idxr,idxs,info) + if (info /= psb_success_) then + call psb_errpush(psb_err_internal_error_,name,a_err='psb_cd_get_list') + goto 9999 + end if + + call psi_swaptran(ictxt,icomm,flag,beta,y,d_idx,totxch,idxs,idxr,work,info) + if (info /= psb_success_) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + if (err_act == psb_act_abort_) then + call psb_error(ictxt) + return + end if + return +end subroutine psi_iswaptran_vect + + + +subroutine psi_itranidx_vect(iictxt,iicomm,flag,beta,y,idx,& + & totxch,totsnd,totrcv,work,info) + + use psi_mod, psb_protect_name => psi_itranidx_vect + use psb_error_mod + use psb_descriptor_type + use psb_penv_mod + use psb_i_base_vect_mod +#ifdef MPI_MOD + use mpi +#endif + implicit none +#ifdef MPI_H + include 'mpif.h' +#endif + + integer(psb_ipk_), intent(in) :: iictxt,iicomm,flag + integer(psb_ipk_), intent(out) :: info + class(psb_i_base_vect_type) :: y + integer(psb_ipk_) :: beta + integer(psb_ipk_), target :: work(:) + integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd, totrcv + + ! locals + integer(psb_mpik_) :: ictxt, icomm, np, me,& + & proc_to_comm, p2ptag, p2pstat(mpi_status_size), iret + integer(psb_mpik_), allocatable, dimension(:) :: bsdidx, brvidx,& + & sdsz, rvsz, prcid, rvhd, sdhd + integer(psb_ipk_) :: nesd, nerv,& + & err_act, i, idx_pt, totsnd_, totrcv_,& + & snd_pt, rcv_pt, pnti, n + integer(psb_ipk_) :: ierr(5) + logical :: swap_mpi, swap_sync, swap_send, swap_recv,& + & albf,do_send,do_recv + logical, parameter :: usersend=.false. + + integer(psb_ipk_), pointer, dimension(:) :: sndbuf, rcvbuf +#ifdef HAVE_VOLATILE + volatile :: sndbuf, rcvbuf +#endif + character(len=20) :: name + + info=psb_success_ + name='psi_swap_tran' + call psb_erractionsave(err_act) + ictxt = iictxt + icomm = iicomm + + call psb_info(ictxt,me,np) + if (np == -1) then + info=psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + endif + + n=1 + swap_mpi = iand(flag,psb_swap_mpi_) /= 0 + swap_sync = iand(flag,psb_swap_sync_) /= 0 + swap_send = iand(flag,psb_swap_send_) /= 0 + swap_recv = iand(flag,psb_swap_recv_) /= 0 + do_send = swap_mpi .or. swap_sync .or. swap_send + do_recv = swap_mpi .or. swap_sync .or. swap_recv + + totrcv_ = totrcv * n + totsnd_ = totsnd * n + + if (swap_mpi) then + allocate(sdsz(0:np-1), rvsz(0:np-1), bsdidx(0:np-1),& + & brvidx(0:np-1), rvhd(0:np-1), sdhd(0:np-1), prcid(0:np-1),& + & stat=info) + if(info /= psb_success_) then + call psb_errpush(psb_err_alloc_dealloc_,name) + goto 9999 + end if + + rvhd(:) = mpi_request_null + sdsz(:) = 0 + rvsz(:) = 0 + + ! prepare info for communications + + + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + call psb_get_rank(prcid(proc_to_comm),ictxt,proc_to_comm) + + brvidx(proc_to_comm) = rcv_pt + rvsz(proc_to_comm) = nerv + + bsdidx(proc_to_comm) = snd_pt + sdsz(proc_to_comm) = nesd + + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + + end do + + else + allocate(rvhd(totxch),prcid(totxch),stat=info) + if(info /= psb_success_) then + call psb_errpush(psb_err_alloc_dealloc_,name) + goto 9999 + end if + end if + + + totrcv_ = max(totrcv_,1) + totsnd_ = max(totsnd_,1) + if((totrcv_+totsnd_) < size(work)) then + sndbuf => work(1:totsnd_) + rcvbuf => work(totsnd_+1:totsnd_+totrcv_) + albf=.false. + else + allocate(sndbuf(totsnd_),rcvbuf(totrcv_), stat=info) + if(info /= psb_success_) then + call psb_errpush(psb_err_alloc_dealloc_,name) + goto 9999 + end if + albf=.true. + end if + + + if (do_send) then + + ! Pack send buffers + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + idx_pt = 1+pnti+psb_n_elem_recv_ + + call y%gth(nerv,idx(idx_pt:idx_pt+nerv-1),& + & rcvbuf(rcv_pt:rcv_pt+nerv-1)) + + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + end do + + end if + + ! Case SWAP_MPI + if (swap_mpi) then + + ! swap elements using mpi_alltoallv + call mpi_alltoallv(rcvbuf,rvsz,brvidx,& + & psb_mpi_ipk_integer,& + & sndbuf,sdsz,bsdidx,psb_mpi_ipk_integer,icomm,iret) + if(iret /= mpi_success) then + ierr(1) = iret + info=psb_err_mpi_error_ + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + + else if (swap_sync) then + + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + + if (proc_to_comm < me) then + if (nerv>0) call psb_snd(ictxt,& + & rcvbuf(rcv_pt:rcv_pt+nerv-1), proc_to_comm) + if (nesd>0) call psb_rcv(ictxt,& + & sndbuf(snd_pt:snd_pt+nesd-1), proc_to_comm) + else if (proc_to_comm > me) then + if (nesd>0) call psb_rcv(ictxt,& + & sndbuf(snd_pt:snd_pt+nesd-1), proc_to_comm) + if (nerv>0) call psb_snd(ictxt,& + & rcvbuf(rcv_pt:rcv_pt+nerv-1), proc_to_comm) + else if (proc_to_comm == me) then + if (nesd /= nerv) then + write(psb_err_unit,*) & + & 'Fatal error in swaptran: mismatch on self send',& + & nerv,nesd + end if + sndbuf(snd_pt:snd_pt+nesd-1) = rcvbuf(rcv_pt:rcv_pt+nerv-1) + end if + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + + end do + + + else if (swap_send .and. swap_recv) then + + ! First I post all the non blocking receives + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + call psb_get_rank(prcid(i),ictxt,proc_to_comm) + if ((nesd>0).and.(proc_to_comm /= me)) then + p2ptag = psb_int_swap_tag + call mpi_irecv(sndbuf(snd_pt),nesd,& + & psb_mpi_ipk_integer,prcid(i),& + & p2ptag,icomm,rvhd(i),iret) + end if + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + end do + + + ! Then I post all the blocking sends + if (usersend) call mpi_barrier(icomm,iret) + + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + + if ((nerv>0).and.(proc_to_comm /= me)) then + p2ptag = psb_int_swap_tag + if (usersend) then + call mpi_rsend(rcvbuf(rcv_pt),nerv,& + & psb_mpi_ipk_integer,prcid(i),& + & p2ptag, icomm,iret) + else + call mpi_send(rcvbuf(rcv_pt),nerv,& + & psb_mpi_ipk_integer,prcid(i),& + & p2ptag, icomm,iret) + end if + + if(iret /= mpi_success) then + ierr(1) = iret + info=psb_err_mpi_error_ + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + end if + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + + end do + + + pnti = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + p2ptag = psb_int_swap_tag + + if ((proc_to_comm /= me).and.(nesd>0)) then + call mpi_wait(rvhd(i),p2pstat,iret) + if(iret /= mpi_success) then + ierr(1) = iret + info=psb_err_mpi_error_ + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + else if (proc_to_comm == me) then + if (nesd /= nerv) then + write(psb_err_unit,*) & + & 'Fatal error in swaptran: mismatch on self send', & + & nerv,nesd + end if + sndbuf(snd_pt:snd_pt+nesd-1) = rcvbuf(rcv_pt:rcv_pt+nerv-1) + end if + pnti = pnti + nerv + nesd + 3 + end do + + + else if (swap_send) then + + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + if (nerv>0) call psb_snd(ictxt,& + & rcvbuf(rcv_pt:rcv_pt+nerv-1), proc_to_comm) + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + + end do + + else if (swap_recv) then + + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + if (nesd>0) call psb_rcv(ictxt,& + & sndbuf(snd_pt:snd_pt+nesd-1), proc_to_comm) + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + + end do + + end if + + + if (do_recv) then + + pnti = 1 + snd_pt = 1 + rcv_pt = 1 + do i=1, totxch + proc_to_comm = idx(pnti+psb_proc_id_) + nerv = idx(pnti+psb_n_elem_recv_) + nesd = idx(pnti+nerv+psb_n_elem_send_) + idx_pt = 1+pnti+nerv+psb_n_elem_send_ + call y%sct(nesd,idx(idx_pt:idx_pt+nesd-1),& + & sndbuf(snd_pt:snd_pt+nesd-1),beta) + rcv_pt = rcv_pt + nerv + snd_pt = snd_pt + nesd + pnti = pnti + nerv + nesd + 3 + end do + + end if + + + if (swap_mpi) then + deallocate(sdsz,rvsz,bsdidx,brvidx,rvhd,prcid,sdhd,& + & stat=info) + else + deallocate(rvhd,prcid,stat=info) + end if + if(info /= psb_success_) then + call psb_errpush(psb_err_alloc_dealloc_,name) + goto 9999 + end if + if(albf) deallocate(sndbuf,rcvbuf,stat=info) + if(info /= psb_success_) then + call psb_errpush(psb_err_alloc_dealloc_,name) + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + if (err_act == psb_act_abort_) then + call psb_error(ictxt) + return + end if + return +end subroutine psi_itranidx_vect + + + diff --git a/base/internals/psi_ldsc_pre_halo.f90 b/base/internals/psi_ldsc_pre_halo.f90 index 31cbbaae..eb25b691 100644 --- a/base/internals/psi_ldsc_pre_halo.f90 +++ b/base/internals/psi_ldsc_pre_halo.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_ovrl_restr.f90 b/base/internals/psi_ovrl_restr.f90 index 180bcde2..17106ee7 100644 --- a/base/internals/psi_ovrl_restr.f90 +++ b/base/internals/psi_ovrl_restr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -531,6 +531,51 @@ end subroutine psi_iovrl_restrr2 +subroutine psi_iovrl_restr_vect(x,xs,desc_a,info) + use psi_mod, psi_protect_name => psi_iovrl_restr_vect + use psb_i_base_vect_mod + + implicit none + + class(psb_i_base_vect_type) :: x + integer(psb_ipk_) :: xs(:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + + ! locals + integer(psb_ipk_) :: ictxt, np, me, err_act, i, idx, isz + character(len=20) :: name, ch_err + + name='psi_iovrl_restrr1' + if (psb_get_errstatus() /= 0) return + info = psb_success_ + call psb_erractionsave(err_act) + ictxt = desc_a%get_context() + call psb_info(ictxt, me, np) + if (np == -1) then + info = psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + endif + + isz = size(desc_a%ovrlap_elem,1) + + call x%sct(isz,desc_a%ovrlap_elem(:,1),xs,izero) + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error(ictxt) + return + end if + return +end subroutine psi_iovrl_restr_vect + + subroutine psi_sovrl_restr_vect(x,xs,desc_a,info) use psi_mod, psi_protect_name => psi_sovrl_restr_vect use psb_s_base_vect_mod diff --git a/base/internals/psi_ovrl_save.f90 b/base/internals/psi_ovrl_save.f90 index aeed991f..c0f5c343 100644 --- a/base/internals/psi_ovrl_save.f90 +++ b/base/internals/psi_ovrl_save.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -579,6 +579,57 @@ end subroutine psi_iovrl_saver2 +subroutine psi_iovrl_save_vect(x,xs,desc_a,info) + use psi_mod, psi_protect_name => psi_iovrl_save_vect + use psb_realloc_mod + use psb_i_base_vect_mod + + implicit none + + class(psb_i_base_vect_type) :: x + integer(psb_ipk_), allocatable :: xs(:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + + ! locals + integer(psb_ipk_) :: ictxt, np, me, err_act, i, idx, isz + character(len=20) :: name, ch_err + + name='psi_iovrl_saver1' + if (psb_get_errstatus() /= 0) return + info = psb_success_ + call psb_erractionsave(err_act) + ictxt = desc_a%get_context() + call psb_info(ictxt, me, np) + if (np == -1) then + info = psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + endif + + isz = size(desc_a%ovrlap_elem,1) + call psb_realloc(isz,xs,info) + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + endif + + call x%gth(isz,desc_a%ovrlap_elem(:,1),xs) + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error(ictxt) + return + end if + return +end subroutine psi_iovrl_save_vect + subroutine psi_sovrl_save_vect(x,xs,desc_a,info) use psi_mod, psi_protect_name => psi_sovrl_save_vect use psb_realloc_mod diff --git a/base/internals/psi_ovrl_upd.f90 b/base/internals/psi_ovrl_upd.f90 index d456f41c..074a092b 100644 --- a/base/internals/psi_ovrl_upd.f90 +++ b/base/internals/psi_ovrl_upd.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -748,6 +748,90 @@ subroutine psi_iovrl_updr2(x,desc_a,update,info) end subroutine psi_iovrl_updr2 +subroutine psi_iovrl_upd_vect(x,desc_a,update,info) + use psi_mod, psi_protect_name => psi_iovrl_upd_vect + use psb_realloc_mod + use psb_i_base_vect_mod + + implicit none + + class(psb_i_base_vect_type) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(in) :: update + integer(psb_ipk_), intent(out) :: info + + ! locals + integer(psb_ipk_), allocatable :: xs(:) + integer(psb_ipk_) :: ictxt, np, me, err_act, i, idx, ndm, nx + integer(psb_ipk_) :: ierr(5) + character(len=20) :: name, ch_err + + + name='psi_iovrl_updr1' + if (psb_get_errstatus() /= 0) return + info = psb_success_ + call psb_erractionsave(err_act) + ictxt = desc_a%get_context() + call psb_info(ictxt, me, np) + if (np == -1) then + info = psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + endif + nx = size(desc_a%ovrlap_elem,1) + call psb_realloc(nx,xs,info) + if (info /= psb_success_) then + info = psb_err_alloc_Dealloc_ + call psb_errpush(info,name) + goto 9999 + end if + + if (update /= psb_sum_) then + call x%gth(nx,desc_a%ovrlap_elem(:,1),xs) + ! switch on update type + + select case (update) + case(psb_square_root_) + do i=1,nx + ndm = desc_a%ovrlap_elem(i,2) + xs(i) = xs(i)/sqrt(real(ndm)) + end do + case(psb_avg_) + do i=1,nx + ndm = desc_a%ovrlap_elem(i,2) + xs(i) = xs(i)/real(ndm) + end do + case(psb_setzero_) + do i=1,nx + if (me /= desc_a%ovrlap_elem(i,3))& + & xs(i) = izero + end do + case(psb_sum_) + ! do nothing + + case default + ! wrong value for choice argument + info = psb_err_iarg_invalid_value_ + ierr(1) = 3; ierr(2)=update; + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end select + call x%sct(nx,desc_a%ovrlap_elem(:,1),xs,izero) + end if + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error(ictxt) + return + end if + return +end subroutine psi_iovrl_upd_vect + subroutine psi_sovrl_upd_vect(x,desc_a,update,info) use psi_mod, psi_protect_name => psi_sovrl_upd_vect use psb_realloc_mod diff --git a/base/internals/psi_sort_dl.f90 b/base/internals/psi_sort_dl.f90 index 384d59eb..0094b4e7 100644 --- a/base/internals/psi_sort_dl.f90 +++ b/base/internals/psi_sort_dl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_sswapdata.F90 b/base/internals/psi_sswapdata.F90 index d9f408a3..00b31725 100644 --- a/base/internals/psi_sswapdata.F90 +++ b/base/internals/psi_sswapdata.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_sswaptran.F90 b/base/internals/psi_sswaptran.F90 index 45a31ef6..14a4e245 100644 --- a/base/internals/psi_sswaptran.F90 +++ b/base/internals/psi_sswaptran.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_zswapdata.F90 b/base/internals/psi_zswapdata.F90 index 362431fc..e8a753a4 100644 --- a/base/internals/psi_zswapdata.F90 +++ b/base/internals/psi_zswapdata.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/psi_zswaptran.F90 b/base/internals/psi_zswaptran.F90 index e794e5a5..7c62ec09 100644 --- a/base/internals/psi_zswaptran.F90 +++ b/base/internals/psi_zswaptran.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/internals/sndrcv.c b/base/internals/sndrcv.c index b18142ca..2ddeffac 100644 --- a/base/internals/sndrcv.c +++ b/base/internals/sndrcv.c @@ -1,7 +1,8 @@ #include #include -int receiveRoutine(double * y, int recvtype, int procSender,int tag, int comm, int *handle){ +int receiveRoutine(double * y, int recvtype, int procSender, + int tag, int comm, int *handle){ MPI_Comm co = MPI_Comm_f2c(comm); MPI_Datatype dt = MPI_Type_f2c(recvtype); diff --git a/base/internals/srtlist.f b/base/internals/srtlist.f index 0637578e..c1234718 100644 --- a/base/internals/srtlist.f +++ b/base/internals/srtlist.f @@ -1,6 +1,6 @@ C C Parallel Sparse BLAS version 3.0 -C (C) Copyright 2006, 2007, 2008, 2009, 2010 +C (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 C Salvatore Filippone University of Rome Tor Vergata C Alfredo Buttari CNRS-IRIT, Toulouse C diff --git a/base/modules/Makefile b/base/modules/Makefile index 7b0137fc..0f9ee6fb 100644 --- a/base/modules/Makefile +++ b/base/modules/Makefile @@ -6,13 +6,14 @@ UTIL_MODS = psb_string_mod.o psb_desc_const_mod.o psb_indx_map_mod.o\ psb_gen_block_map_mod.o psb_list_map_mod.o psb_repl_map_mod.o\ psb_glist_map_mod.o psb_hash_map_mod.o \ psb_desc_type.o psb_sort_mod.o psb_serial_mod.o \ - psb_base_tools_mod.o psb_s_tools_mod.o psb_d_tools_mod.o\ + psb_cd_tools_mod.o psb_i_tools_mod.o psb_s_tools_mod.o psb_d_tools_mod.o\ psb_c_tools_mod.o psb_z_tools_mod.o psb_tools_mod.o \ psb_penv_mod.o $(COMMINT) psb_error_impl.o \ psb_base_linmap_mod.o psb_linmap_mod.o \ psb_s_linmap_mod.o psb_d_linmap_mod.o psb_c_linmap_mod.o psb_z_linmap_mod.o \ psb_comm_mod.o psb_i_comm_mod.o psb_s_comm_mod.o psb_d_comm_mod.o\ psb_c_comm_mod.o psb_z_comm_mod.o \ + psb_i_base_vect_mod.o psb_i_vect_mod.o\ psb_d_base_vect_mod.o psb_d_vect_mod.o\ psb_s_base_vect_mod.o psb_s_vect_mod.o\ psb_c_base_vect_mod.o psb_c_vect_mod.o\ @@ -32,7 +33,7 @@ UTIL_MODS = psb_string_mod.o psb_desc_const_mod.o psb_indx_map_mod.o\ MODULES=$(BASIC_MODS) $(UTIL_MODS) -OBJS = error.o psb_base_mod.o $(EXTRA_COBJS) cutil.o +OBJS = error.o psb_base_mod.o $(EXTRA_COBJS) cutil.o LIBDIR=.. CINCLUDES=-I. FINCLUDES=$(FMFLAG)$(LIBDIR) $(FMFLAG). $(FIFLAG). @@ -62,7 +63,7 @@ psb_s_base_mat_mod.o: psb_s_base_vect_mod.o psb_d_base_mat_mod.o: psb_d_base_vect_mod.o psb_c_base_mat_mod.o: psb_c_base_vect_mod.o psb_z_base_mat_mod.o: psb_z_base_vect_mod.o -psb_c_base_vect_mod.o psb_s_base_vect_mod.o psb_d_base_vect_mod.o psb_z_base_vect_mod.o: psi_serial_mod.o psb_realloc_mod.o +psb_i_base_vect_mod.o psb_c_base_vect_mod.o psb_s_base_vect_mod.o psb_d_base_vect_mod.o psb_z_base_vect_mod.o: psi_serial_mod.o psb_realloc_mod.o psb_s_mat_mod.o: psb_s_base_mat_mod.o psb_s_csr_mat_mod.o psb_s_csc_mat_mod.o psb_s_vect_mod.o psb_d_mat_mod.o: psb_d_base_mat_mod.o psb_d_csr_mat_mod.o psb_d_csc_mat_mod.o psb_d_vect_mod.o psb_c_mat_mod.o: psb_c_base_mat_mod.o psb_c_csr_mat_mod.o psb_c_csc_mat_mod.o psb_c_vect_mod.o @@ -75,11 +76,11 @@ psb_mat_mod.o: psb_vect_mod.o psb_s_mat_mod.o psb_d_mat_mod.o psb_c_mat_mod.o ps error.o psb_realloc_mod.o: psb_error_mod.o psb_error_impl.o: psb_penv_mod.o psb_spmat_type.o: psb_string_mod.o psb_sort_mod.o -psi_i_mod.o: psb_desc_type.o -psi_s_mod.o: psb_desc_type.o psb_s_base_vect_mod.o -psi_d_mod.o: psb_desc_type.o psb_d_base_vect_mod.o -psi_c_mod.o: psb_desc_type.o psb_c_base_vect_mod.o -psi_z_mod.o: psb_desc_type.o psb_z_base_vect_mod.o +psi_i_mod.o: psb_desc_type.o psb_i_vect_mod.o +psi_s_mod.o: psb_desc_type.o psb_s_vect_mod.o +psi_d_mod.o: psb_desc_type.o psb_d_vect_mod.o +psi_c_mod.o: psb_desc_type.o psb_c_vect_mod.o +psi_z_mod.o: psb_desc_type.o psb_z_vect_mod.o psi_mod.o: psb_penv_mod.o psb_desc_type.o psi_serial_mod.o psb_serial_mod.o\ psi_i_mod.o psi_s_mod.o psi_d_mod.o psi_c_mod.o psi_z_mod.o psb_desc_type.o: psb_penv_mod.o psb_realloc_mod.o\ @@ -103,13 +104,15 @@ psb_base_linmap_mod.o: psb_desc_type.o psb_serial_mod.o psb_comm_mod.o psb_comm_mod.o: psb_desc_type.o psb_mat_mod.o psb_check_mod.o: psb_desc_type.o psb_serial_mod.o: psb_mat_mod.o psb_string_mod.o psb_sort_mod.o psi_serial_mod.o +psb_i_vect_mod.o: psb_i_base_vect_mod.o psb_s_vect_mod.o: psb_s_base_vect_mod.o psb_d_vect_mod.o: psb_d_base_vect_mod.o psb_c_vect_mod.o: psb_c_base_vect_mod.o psb_z_vect_mod.o: psb_z_base_vect_mod.o -psb_tools_mod.o: psb_base_tools_mod.o psb_s_tools_mod.o psb_d_tools_mod.o\ - psb_c_tools_mod.o psb_z_tools_mod.o -psb_base_tools_mod.o psb_s_tools_mod.o psb_d_tools_mod.o psb_c_tools_mod.o psb_z_tools_mod.o: psb_desc_type.o psi_mod.o psb_mat_mod.o +psb_tools_mod.o: psb_cd_tools_mod.o psb_s_tools_mod.o psb_d_tools_mod.o\ + psb_i_tools_mod.o psb_c_tools_mod.o psb_z_tools_mod.o +psb_cd_tools_mod.o psb_i_tools_mod.o psb_s_tools_mod.o psb_d_tools_mod.o psb_c_tools_mod.o psb_z_tools_mod.o: psb_desc_type.o psi_mod.o psb_mat_mod.o +psb_i_tools_mod.o: psb_i_vect_mod.o psb_s_tools_mod.o: psb_s_vect_mod.o psb_d_tools_mod.o: psb_d_vect_mod.o psb_c_tools_mod.o: psb_c_vect_mod.o @@ -121,9 +124,9 @@ psb_c_psblas_mod.o: psb_c_vect_mod.o psb_c_mat_mod.o psb_z_psblas_mod.o: psb_z_vect_mod.o psb_z_mat_mod.o psb_psblas_mod.o: psb_s_psblas_mod.o psb_c_psblas_mod.o psb_d_psblas_mod.o psb_z_psblas_mod.o psb_s_psblas_mod.o psb_c_psblas_mod.o psb_d_psblas_mod.o psb_z_psblas_mod.o: psb_mat_mod.o psb_desc_type.o -psb_vect_mod.o: psb_d_vect_mod.o psb_s_vect_mod.o psb_c_vect_mod.o psb_z_vect_mod.o +psb_vect_mod.o: psb_i_vect_mod.o psb_d_vect_mod.o psb_s_vect_mod.o psb_c_vect_mod.o psb_z_vect_mod.o psb_comm_mod.o: psb_i_comm_mod.o psb_s_comm_mod.o psb_d_comm_mod.o psb_c_comm_mod.o psb_z_comm_mod.o -psb_i_comm_mod.o: psb_desc_type.o +psb_i_comm_mod.o: psb_i_vect_mod.o psb_desc_type.o psb_s_comm_mod.o: psb_s_vect_mod.o psb_desc_type.o psb_mat_mod.o psb_d_comm_mod.o: psb_d_vect_mod.o psb_desc_type.o psb_mat_mod.o psb_c_comm_mod.o: psb_c_vect_mod.o psb_desc_type.o psb_mat_mod.o diff --git a/base/modules/error.f90 b/base/modules/error.f90 index f41ec718..ad153e8e 100644 --- a/base/modules/error.f90 +++ b/base/modules/error.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_base_linmap_mod.f90 b/base/modules/psb_base_linmap_mod.f90 index b7f3c2a5..6915c6e7 100644 --- a/base/modules/psb_base_linmap_mod.f90 +++ b/base/modules/psb_base_linmap_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -83,38 +83,38 @@ contains end subroutine base_set_kind - function base_is_ok(map) result(this) + function base_is_ok(map) result(res) use psb_descriptor_type implicit none class(psb_base_linmap_type), intent(in) :: map - logical :: this - this = .false. + logical :: res + res = .false. select case(map%get_kind()) case (psb_map_aggr_) if (.not.associated(map%p_desc_X)) return if (.not.associated(map%p_desc_Y)) return - this = map%p_desc_X%is_ok().and.map%p_desc_Y%is_ok() + res = map%p_desc_X%is_ok().and.map%p_desc_Y%is_ok() case(psb_map_gen_linear_) - this = map%desc_X%is_ok().and.map%desc_Y%is_ok() + res = map%desc_X%is_ok().and.map%desc_Y%is_ok() end select end function base_is_ok - function base_is_asb(map) result(this) + function base_is_asb(map) result(res) use psb_descriptor_type implicit none class(psb_base_linmap_type), intent(in) :: map - logical :: this - this = .false. + logical :: res + res = .false. select case(map%get_kind()) case (psb_map_aggr_) if (.not.associated(map%p_desc_X)) return if (.not.associated(map%p_desc_Y)) return - this = map%p_desc_X%is_asb().and.map%p_desc_Y%is_asb() + res = map%p_desc_X%is_asb().and.map%p_desc_Y%is_asb() case(psb_map_gen_linear_) - this = map%desc_X%is_asb().and.map%desc_Y%is_asb() + res = map%desc_X%is_asb().and.map%desc_Y%is_asb() end select end function base_is_asb @@ -140,8 +140,8 @@ contains use psb_descriptor_type use psb_mat_mod, only : psb_move_alloc implicit none - type(psb_base_linmap_type) :: mapin,mapout - integer(psb_ipk_), intent(out) :: info + type(psb_base_linmap_type), intent(inout) :: mapin,mapout + integer(psb_ipk_), intent(out) :: info mapout%kind = mapin%kind call psb_move_alloc(mapin%iaggr,mapout%iaggr,info) diff --git a/base/modules/psb_base_mat_mod.f90 b/base/modules/psb_base_mat_mod.f90 index d328df31..13d8bf84 100644 --- a/base/modules/psb_base_mat_mod.f90 +++ b/base/modules/psb_base_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_base_mod.f90 b/base/modules/psb_base_mod.f90 index 51dc45e0..009dc970 100644 --- a/base/modules/psb_base_mod.f90 +++ b/base/modules/psb_base_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_c_base_mat_mod.f90 b/base/modules/psb_c_base_mat_mod.f90 index 56049a1f..95b28c9a 100644 --- a/base/modules/psb_c_base_mat_mod.f90 +++ b/base/modules/psb_c_base_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_c_base_vect_mod.f90 b/base/modules/psb_c_base_vect_mod.f90 index 8dcfa76a..c84ce97a 100644 --- a/base/modules/psb_c_base_vect_mod.f90 +++ b/base/modules/psb_c_base_vect_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -68,6 +68,7 @@ module psb_c_base_vect_mod procedure, pass(x) :: bld_n => c_base_bld_n generic, public :: bld => bld_x, bld_n procedure, pass(x) :: all => c_base_all + procedure, pass(x) :: mold => c_base_mold ! ! Insert/set. Assembly and free. ! Assembly does almost nothing here, but is important @@ -219,6 +220,18 @@ contains end subroutine c_base_all + subroutine c_base_mold(x, y, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + class(psb_c_base_vect_type), intent(in) :: x + class(psb_c_base_vect_type), intent(out), allocatable :: y + integer(psb_ipk_), intent(out) :: info + + allocate(psb_c_base_vect_type :: y, stat=info) + + end subroutine c_base_mold + ! ! Insert a bunch of values at specified positions. ! diff --git a/base/modules/psb_c_comm_mod.f90 b/base/modules/psb_c_comm_mod.f90 index c3cf0279..bcbd6956 100644 --- a/base/modules/psb_c_comm_mod.f90 +++ b/base/modules/psb_c_comm_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -128,7 +128,7 @@ module psb_c_comm_mod subroutine psb_cgatherm(globx, locx, desc_a, info, root) use psb_descriptor_type complex(psb_spk_), intent(in) :: locx(:,:) - complex(psb_spk_), intent(out) :: globx(:,:) + complex(psb_spk_), intent(out), allocatable :: globx(:,:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root @@ -136,7 +136,7 @@ module psb_c_comm_mod subroutine psb_cgatherv(globx, locx, desc_a, info, root) use psb_descriptor_type complex(psb_spk_), intent(in) :: locx(:) - complex(psb_spk_), intent(out) :: globx(:) + complex(psb_spk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root @@ -145,7 +145,7 @@ module psb_c_comm_mod use psb_descriptor_type use psb_c_vect_mod type(psb_c_vect_type), intent(inout) :: locx - complex(psb_spk_), intent(out) :: globx(:) + complex(psb_spk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root diff --git a/base/modules/psb_c_csc_mat_mod.f90 b/base/modules/psb_c_csc_mat_mod.f90 index 0d4cc78f..7697cea9 100644 --- a/base/modules/psb_c_csc_mat_mod.f90 +++ b/base/modules/psb_c_csc_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -551,14 +551,10 @@ contains class(psb_c_csc_sparse_mat), intent(in) :: a integer(psb_ipk_) :: res - res = 0 + res = -1 if (allocated(a%ia)) then - if (res >= 0) then - res = min(res,size(a%ia)) - else - res = size(a%ia) - end if + res = size(a%ia) end if if (allocated(a%val)) then if (res >= 0) then diff --git a/base/modules/psb_c_csr_mat_mod.f90 b/base/modules/psb_c_csr_mat_mod.f90 index 083a701e..b18c7bdc 100644 --- a/base/modules/psb_c_csr_mat_mod.f90 +++ b/base/modules/psb_c_csr_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -554,14 +554,10 @@ contains class(psb_c_csr_sparse_mat), intent(in) :: a integer(psb_ipk_) :: res - res = 0 + res = -1 if (allocated(a%ja)) then - if (res >= 0) then - res = min(res,size(a%ja)) - else - res = size(a%ja) - end if + res = size(a%ja) end if if (allocated(a%val)) then if (res >= 0) then diff --git a/base/modules/psb_c_linmap_mod.f90 b/base/modules/psb_c_linmap_mod.f90 index ac3aa62e..1e683d45 100644 --- a/base/modules/psb_c_linmap_mod.f90 +++ b/base/modules/psb_c_linmap_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_c_mat_mod.f90 b/base/modules/psb_c_mat_mod.f90 index 03771a06..dbf573d8 100644 --- a/base/modules/psb_c_mat_mod.f90 +++ b/base/modules/psb_c_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_c_psblas_mod.f90 b/base/modules/psb_c_psblas_mod.f90 index ad224e59..cbd7db31 100644 --- a/base/modules/psb_c_psblas_mod.f90 +++ b/base/modules/psb_c_psblas_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_c_tools_mod.f90 b/base/modules/psb_c_tools_mod.f90 index abf7d4a1..db14031a 100644 --- a/base/modules/psb_c_tools_mod.f90 +++ b/base/modules/psb_c_tools_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -167,7 +167,7 @@ Module psb_c_tools_mod interface psb_geins - subroutine psb_cinsi(m,irw,val, x, desc_a,info,dupl) + subroutine psb_cinsi(m,irw,val, x, desc_a,info,dupl,local) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_c_base_vect_type, psb_c_vect_type, & & psb_cspmat_type, psb_c_base_sparse_mat @@ -178,8 +178,9 @@ Module psb_c_tools_mod complex(psb_spk_), intent(in) :: val(:,:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_cinsi - subroutine psb_cinsvi(m, irw,val, x,desc_a,info,dupl) + subroutine psb_cinsvi(m, irw,val, x,desc_a,info,dupl,local) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_c_base_vect_type, psb_c_vect_type, & & psb_cspmat_type, psb_c_base_sparse_mat @@ -190,8 +191,9 @@ Module psb_c_tools_mod complex(psb_spk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_cinsvi - subroutine psb_cins_vect(m,irw,val,x,desc_a,info,dupl) + subroutine psb_cins_vect(m,irw,val,x,desc_a,info,dupl,local) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_c_base_vect_type, psb_c_vect_type, & & psb_cspmat_type, psb_c_base_sparse_mat @@ -202,8 +204,9 @@ Module psb_c_tools_mod complex(psb_spk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_cins_vect - subroutine psb_cins_vect_r2(m,irw,val,x,desc_a,info,dupl) + subroutine psb_cins_vect_r2(m,irw,val,x,desc_a,info,dupl,local) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_c_base_vect_type, psb_c_vect_type, & & psb_cspmat_type, psb_c_base_sparse_mat @@ -214,6 +217,7 @@ Module psb_c_tools_mod complex(psb_spk_), intent(in) :: val(:,:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_cins_vect_r2 end interface @@ -270,7 +274,7 @@ Module psb_c_tools_mod interface psb_spins - subroutine psb_cspins(nz,ia,ja,val,a,desc_a,info,rebuild) + subroutine psb_cspins(nz,ia,ja,val,a,desc_a,info,rebuild,local) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_c_base_vect_type, psb_c_vect_type, & & psb_cspmat_type, psb_c_base_sparse_mat @@ -280,6 +284,7 @@ Module psb_c_tools_mod complex(psb_spk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: rebuild + logical, intent(in), optional :: local end subroutine psb_cspins subroutine psb_cspins_2desc(nz,ia,ja,val,a,desc_ar,desc_ac,info) import :: psb_desc_type, psb_spk_, psb_ipk_, & diff --git a/base/modules/psb_c_vect_mod.f90 b/base/modules/psb_c_vect_mod.F90 similarity index 97% rename from base/modules/psb_c_vect_mod.f90 rename to base/modules/psb_c_vect_mod.F90 index c910cd16..eb7ddeb4 100644 --- a/base/modules/psb_c_vect_mod.f90 +++ b/base/modules/psb_c_vect_mod.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -100,7 +100,11 @@ contains integer(psb_ipk_) :: info if (present(mold)) then +#ifdef HAVE_MOLD allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif else allocate(psb_c_base_vect_type :: x%v,stat=info) endif @@ -117,7 +121,11 @@ contains integer(psb_ipk_) :: info if (present(mold)) then +#ifdef HAVE_MOLD allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif else allocate(psb_c_base_vect_type :: x%v,stat=info) endif @@ -411,7 +419,11 @@ contains integer(psb_ipk_), intent(out) :: info if (present(mold)) then +#ifdef HAVE_MOLD allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif else allocate(psb_c_base_vect_type :: x%v,stat=info) endif @@ -531,7 +543,11 @@ contains complex(psb_spk_), allocatable :: invect(:) integer(psb_ipk_) :: info - allocate(tmp,stat=info,mold=mold) +#ifdef HAVE_MOLD + allocate(tmp,stat=info,mold=mold) +#else + call mold%mold(tmp,info) +#endif call x%v%sync() if (info == psb_success_) call tmp%bld(x%v%v) call x%v%free(info) diff --git a/base/modules/psb_cd_tools_mod.f90 b/base/modules/psb_cd_tools_mod.f90 new file mode 100644 index 00000000..ed7a888a --- /dev/null +++ b/base/modules/psb_cd_tools_mod.f90 @@ -0,0 +1,213 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +module psb_cd_tools_mod + + use psb_const_mod + use psb_descriptor_type + use psb_gen_block_map_mod + use psb_list_map_mod + use psb_glist_map_mod + use psb_hash_map_mod + use psb_repl_map_mod + + interface psb_cd_set_bld + subroutine psb_cd_set_bld(desc,info) + import :: psb_ipk_, psb_desc_type + type(psb_desc_type), intent(inout) :: desc + integer(psb_ipk_) :: info + end subroutine psb_cd_set_bld + end interface + + interface psb_cd_set_ovl_bld + subroutine psb_cd_set_ovl_bld(desc,info) + import :: psb_ipk_, psb_desc_type + type(psb_desc_type), intent(inout) :: desc + integer(psb_ipk_) :: info + end subroutine psb_cd_set_ovl_bld + end interface + + interface psb_cd_reinit + Subroutine psb_cd_reinit(desc,info) + import :: psb_ipk_, psb_desc_type + Implicit None + + ! .. Array Arguments .. + Type(psb_desc_type), Intent(inout) :: desc + integer(psb_ipk_), intent(out) :: info + end Subroutine psb_cd_reinit + end interface + + interface psb_cdcpy + subroutine psb_cdcpy(desc_in, desc_out, info) + import :: psb_ipk_, psb_desc_type + + implicit none + !....parameters... + + type(psb_desc_type), intent(in) :: desc_in + type(psb_desc_type), intent(out) :: desc_out + integer(psb_ipk_), intent(out) :: info + end subroutine psb_cdcpy + end interface + + + interface psb_cdprt + subroutine psb_cdprt(iout,desc_p,glob,short) + import :: psb_ipk_, psb_desc_type + implicit none + type(psb_desc_type), intent(in) :: desc_p + integer(psb_ipk_), intent(in) :: iout + logical, intent(in), optional :: glob,short + end subroutine psb_cdprt + end interface + + interface psb_cdins + subroutine psb_cdinsrc(nz,ia,ja,desc_a,info,ila,jla) + import :: psb_ipk_, psb_desc_type + type(psb_desc_type), intent(inout) :: desc_a + integer(psb_ipk_), intent(in) :: nz,ia(:),ja(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional, intent(out) :: ila(:), jla(:) + end subroutine psb_cdinsrc + subroutine psb_cdinsc(nz,ja,desc,info,jla,mask,lidx) + import :: psb_ipk_, psb_desc_type + type(psb_desc_type), intent(inout) :: desc + integer(psb_ipk_), intent(in) :: nz,ja(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional, intent(out) :: jla(:) + logical, optional, target, intent(in) :: mask(:) + integer(psb_ipk_), intent(in), optional :: lidx(:) + end subroutine psb_cdinsc + end interface + + interface psb_cdbldext + Subroutine psb_cd_lstext(desc_a,in_list,desc_ov,info, mask,extype) + import :: psb_ipk_, psb_desc_type + Implicit None + Type(psb_desc_type), Intent(in), target :: desc_a + integer(psb_ipk_), intent(in) :: in_list(:) + Type(psb_desc_type), Intent(out) :: desc_ov + integer(psb_ipk_), intent(out) :: info + logical, intent(in), optional, target :: mask(:) + integer(psb_ipk_), intent(in),optional :: extype + end Subroutine psb_cd_lstext + end interface + + + interface psb_cdren + subroutine psb_cdren(trans,iperm,desc_a,info) + import :: psb_ipk_, psb_desc_type + type(psb_desc_type), intent(inout) :: desc_a + integer(psb_ipk_), intent(inout) :: iperm(:) + character, intent(in) :: trans + integer(psb_ipk_), intent(out) :: info + end subroutine psb_cdren + end interface + + interface psb_get_overlap + subroutine psb_get_ovrlap(ovrel,desc,info) + import :: psb_ipk_, psb_desc_type + implicit none + integer(psb_ipk_), allocatable, intent(out) :: ovrel(:) + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(out) :: info + end subroutine psb_get_ovrlap + end interface + + interface psb_icdasb + subroutine psb_icdasb(desc,info,ext_hv) + import :: psb_ipk_, psb_desc_type + Type(psb_desc_type), intent(inout) :: desc + integer(psb_ipk_), intent(out) :: info + logical, intent(in),optional :: ext_hv + end subroutine psb_icdasb + end interface + + interface psb_cdall + + subroutine psb_cdall(ictxt, desc, info,mg,ng,parts,vg,vl,flag,nl,repl,& + & globalcheck,lidx) + import :: psb_ipk_, psb_desc_type, psb_parts + implicit None + procedure(psb_parts) :: parts + integer(psb_ipk_), intent(in) :: mg,ng,ictxt, vg(:), vl(:),nl,lidx(:) + integer(psb_ipk_), intent(in) :: flag + logical, intent(in) :: repl, globalcheck + integer(psb_ipk_), intent(out) :: info + type(psb_desc_type), intent(out) :: desc + optional :: mg,ng,parts,vg,vl,flag,nl,repl, globalcheck,lidx + end subroutine psb_cdall + + end interface + + interface psb_cdasb + module procedure psb_cdasb + end interface + + interface psb_get_boundary + module procedure psb_get_boundary + end interface + + interface + subroutine psb_cd_switch_ovl_indxmap(desc,info) + import :: psb_ipk_, psb_desc_type + implicit None + include 'parts.fh' + type(psb_desc_type), intent(inout) :: desc + integer(psb_ipk_), intent(out) :: info + end subroutine psb_cd_switch_ovl_indxmap + end interface + +contains + + subroutine psb_get_boundary(bndel,desc,info) + use psi_mod, only : psi_crea_bnd_elem + implicit none + integer(psb_ipk_), allocatable, intent(out) :: bndel(:) + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(out) :: info + + call psi_crea_bnd_elem(bndel,desc,info) + + end subroutine psb_get_boundary + + subroutine psb_cdasb(desc,info) + + Type(psb_desc_type), intent(inout) :: desc + integer(psb_ipk_), intent(out) :: info + + call psb_icdasb(desc,info,ext_hv=.false.) + end subroutine psb_cdasb + +end module psb_cd_tools_mod + + diff --git a/base/modules/psb_check_mod.f90 b/base/modules/psb_check_mod.f90 index 129dd136..05020847 100644 --- a/base/modules/psb_check_mod.f90 +++ b/base/modules/psb_check_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_comm_mod.f90 b/base/modules/psb_comm_mod.f90 index 4e97acb7..5d3e6b44 100644 --- a/base/modules/psb_comm_mod.f90 +++ b/base/modules/psb_comm_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_const_mod.F90 b/base/modules/psb_const_mod.F90 index 01393549..8d3446f9 100644 --- a/base/modules/psb_const_mod.F90 +++ b/base/modules/psb_const_mod.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -45,22 +45,29 @@ module psb_const_mod integer, parameter :: longndig=12 integer, parameter :: psb_long_int_k_ = selected_int_kind(longndig) ! This is always a 4-byte integer, for MPI-related stuff - integer, parameter :: mpindig=8 - integer, parameter :: psb_mpik_ = selected_int_kind(mpindig) + integer, parameter :: psb_mpik_ = kind(1) ! ! These must be the kind parameter corresponding to MPI_DOUBLE_PRECISION ! and MPI_REAL ! - integer(psb_ipk_), parameter :: psb_dpk_ = kind(1.d0) - integer(psb_ipk_), parameter :: psb_spk_ = kind(1.e0) - integer(psb_ipk_), save :: psb_sizeof_dp, psb_sizeof_sp - integer(psb_ipk_), save :: psb_sizeof_int, psb_sizeof_long_int + integer(psb_mpik_), parameter :: psb_spk_p_ = 6 + integer(psb_mpik_), parameter :: psb_spk_r_ = 37 + integer(psb_mpik_), parameter :: psb_spk_ = selected_real_kind(psb_spk_p_,psb_spk_r_) + integer(psb_mpik_), parameter :: psb_dpk_p_ = 15 + integer(psb_mpik_), parameter :: psb_dpk_r_ = 307 + integer(psb_mpik_), parameter :: psb_dpk_ = selected_real_kind(psb_dpk_p_,psb_dpk_r_) + integer(psb_ipk_), save :: psb_sizeof_dp, psb_sizeof_sp + integer(psb_ipk_), save :: psb_sizeof_int, psb_sizeof_long_int ! ! Integer type identifiers for MPI operations. ! integer(psb_mpik_), save :: psb_mpi_ipk_integer integer(psb_mpik_), save :: psb_mpi_def_integer integer(psb_mpik_), save :: psb_mpi_lng_integer + integer(psb_mpik_), save :: psb_mpi_r_spk_ + integer(psb_mpik_), save :: psb_mpi_r_dpk_ + integer(psb_mpik_), save :: psb_mpi_c_spk_ + integer(psb_mpik_), save :: psb_mpi_c_dpk_ ! ! Version ! @@ -75,14 +82,14 @@ module psb_const_mod integer(psb_ipk_), parameter :: izero=0, ione=1 integer(psb_ipk_), parameter :: itwo=2, ithree=3,mone=-1 integer(psb_ipk_), parameter :: psb_root_=0 - real(psb_spk_), parameter :: szero=0.e0, sone=1.e0 - real(psb_dpk_), parameter :: dzero=0.d0, done=1.d0 - complex(psb_spk_), parameter :: czero=(0.e0,0.0e0) - complex(psb_spk_), parameter :: cone=(1.e0,0.0e0) - complex(psb_dpk_), parameter :: zzero=(0.d0,0.0d0) - complex(psb_dpk_), parameter :: zone=(1.d0,0.0d0) - real(psb_dpk_), parameter :: d_epstol=1.1d-16 ! Unit roundoff. - real(psb_spk_), parameter :: s_epstol=5.e-8 ! Is this right? + real(psb_spk_), parameter :: szero=0.0_psb_spk_, sone=1.0_psb_spk_ + real(psb_dpk_), parameter :: dzero=0.0_psb_dpk_, done=1.0_psb_dpk_ + complex(psb_spk_), parameter :: czero=(0.0_psb_spk_,0.0_psb_spk_) + complex(psb_spk_), parameter :: cone=(1.0_psb_spk_,0.0_psb_spk_) + complex(psb_dpk_), parameter :: zzero=(0.0_psb_dpk_,0.0_psb_dpk_) + complex(psb_dpk_), parameter :: zone=(1.0_psb_dpk_,0.0_psb_dpk_) + real(psb_dpk_), parameter :: d_epstol=1.1e-16_psb_dpk_ ! Unit roundoff. + real(psb_spk_), parameter :: s_epstol=5.e-8_psb_spk_ ! Is this right? character, parameter :: psb_all_='A', psb_topdef_=' ' logical, parameter :: psb_i_is_complex_ = .false. logical, parameter :: psb_s_is_complex_ = .false. diff --git a/base/modules/psb_d_base_mat_mod.f90 b/base/modules/psb_d_base_mat_mod.f90 index 17ec36df..89e31d2c 100644 --- a/base/modules/psb_d_base_mat_mod.f90 +++ b/base/modules/psb_d_base_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_d_base_vect_mod.f90 b/base/modules/psb_d_base_vect_mod.f90 index 82e14eb7..c66a592a 100644 --- a/base/modules/psb_d_base_vect_mod.f90 +++ b/base/modules/psb_d_base_vect_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -68,6 +68,7 @@ module psb_d_base_vect_mod procedure, pass(x) :: bld_n => d_base_bld_n generic, public :: bld => bld_x, bld_n procedure, pass(x) :: all => d_base_all + procedure, pass(x) :: mold => d_base_mold ! ! Insert/set. Assembly and free. ! Assembly does almost nothing here, but is important @@ -219,6 +220,18 @@ contains end subroutine d_base_all + subroutine d_base_mold(x, y, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + class(psb_d_base_vect_type), intent(in) :: x + class(psb_d_base_vect_type), intent(out), allocatable :: y + integer(psb_ipk_), intent(out) :: info + + allocate(psb_d_base_vect_type :: y, stat=info) + + end subroutine d_base_mold + ! ! Insert a bunch of values at specified positions. ! diff --git a/base/modules/psb_d_comm_mod.f90 b/base/modules/psb_d_comm_mod.f90 index 1c0d750d..7854550c 100644 --- a/base/modules/psb_d_comm_mod.f90 +++ b/base/modules/psb_d_comm_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -35,47 +35,47 @@ module psb_d_comm_mod subroutine psb_dovrlm(x,desc_a,info,jx,ik,work,update,mode) use psb_descriptor_type real(psb_dpk_), intent(inout), target :: x(:,:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info real(psb_dpk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,jx,ik,mode + integer(psb_ipk_), intent(in), optional :: update,jx,ik,mode end subroutine psb_dovrlm subroutine psb_dovrlv(x,desc_a,info,work,update,mode) use psb_descriptor_type real(psb_dpk_), intent(inout), target :: x(:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info real(psb_dpk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_dovrlv subroutine psb_dovrl_vect(x,desc_a,info,work,update,mode) use psb_descriptor_type use psb_d_vect_mod - type(psb_d_vect_type), intent(inout) :: x + type(psb_d_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info real(psb_dpk_), intent(inout), optional, target :: work(:) integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_dovrl_vect - end interface + end interface psb_ovrl interface psb_halo subroutine psb_dhalom(x,desc_a,info,alpha,jx,ik,work,tran,mode,data) use psb_descriptor_type - real(psb_dpk_), intent(inout),target :: x(:,:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), intent(in), optional :: alpha + real(psb_dpk_), intent(inout), target :: x(:,:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + real(psb_dpk_), intent(in), optional :: alpha real(psb_dpk_), target, optional, intent(inout) :: work(:) integer(psb_ipk_), intent(in), optional :: mode,jx,ik,data character, intent(in), optional :: tran end subroutine psb_dhalom subroutine psb_dhalov(x,desc_a,info,alpha,work,tran,mode,data) use psb_descriptor_type - real(psb_dpk_), intent(inout) :: x(:) + real(psb_dpk_), intent(inout) :: x(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), intent(in), optional :: alpha + real(psb_dpk_), intent(in), optional :: alpha real(psb_dpk_), target, optional, intent(inout) :: work(:) integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran @@ -91,27 +91,27 @@ module psb_d_comm_mod integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran end subroutine psb_dhalo_vect - end interface + end interface psb_halo interface psb_scatter subroutine psb_dscatterm(globx, locx, desc_a, info, root) use psb_descriptor_type - real(psb_dpk_), intent(out) :: locx(:,:) - real(psb_dpk_), intent(in) :: globx(:,:) + real(psb_dpk_), intent(out) :: locx(:,:) + real(psb_dpk_), intent(in) :: globx(:,:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root end subroutine psb_dscatterm subroutine psb_dscatterv(globx, locx, desc_a, info, root) use psb_descriptor_type - real(psb_dpk_), intent(out) :: locx(:) - real(psb_dpk_), intent(in) :: globx(:) + real(psb_dpk_), intent(out) :: locx(:) + real(psb_dpk_), intent(in) :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root end subroutine psb_dscatterv - end interface + end interface psb_scatter interface psb_gather subroutine psb_dsp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keeploc) @@ -125,31 +125,31 @@ module psb_d_comm_mod integer(psb_ipk_), intent(in), optional :: root,dupl logical, intent(in), optional :: keepnum,keeploc end subroutine psb_dsp_allgather - subroutine psb_dgatherm(globx, locx, desc_a, info, root) + subroutine psb_dgatherm(globx, locx, desc_a, info, root) use psb_descriptor_type - real(psb_dpk_), intent(in) :: locx(:,:) - real(psb_dpk_), intent(out) :: globx(:,:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), intent(in), optional :: root + real(psb_dpk_), intent(in) :: locx(:,:) + real(psb_dpk_), intent(out), allocatable :: globx(:,:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: root end subroutine psb_dgatherm subroutine psb_dgatherv(globx, locx, desc_a, info, root) use psb_descriptor_type - real(psb_dpk_), intent(in) :: locx(:) - real(psb_dpk_), intent(out) :: globx(:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), intent(in), optional :: root + real(psb_dpk_), intent(in) :: locx(:) + real(psb_dpk_), intent(out), allocatable :: globx(:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: root end subroutine psb_dgatherv subroutine psb_dgather_vect(globx, locx, desc_a, info, root) use psb_descriptor_type use psb_d_vect_mod type(psb_d_vect_type), intent(inout) :: locx - real(psb_dpk_), intent(out) :: globx(:) + real(psb_dpk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root end subroutine psb_dgather_vect - end interface - + end interface psb_gather + end module psb_d_comm_mod diff --git a/base/modules/psb_d_csc_mat_mod.f90 b/base/modules/psb_d_csc_mat_mod.f90 index 24444fc4..19a0091e 100644 --- a/base/modules/psb_d_csc_mat_mod.f90 +++ b/base/modules/psb_d_csc_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -551,14 +551,10 @@ contains class(psb_d_csc_sparse_mat), intent(in) :: a integer(psb_ipk_) :: res - res = 0 + res = -1 if (allocated(a%ia)) then - if (res >= 0) then - res = min(res,size(a%ia)) - else - res = size(a%ia) - end if + res = size(a%ia) end if if (allocated(a%val)) then if (res >= 0) then diff --git a/base/modules/psb_d_csr_mat_mod.f90 b/base/modules/psb_d_csr_mat_mod.f90 index 1ddc0b00..b5b5f9f8 100644 --- a/base/modules/psb_d_csr_mat_mod.f90 +++ b/base/modules/psb_d_csr_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -554,14 +554,10 @@ contains class(psb_d_csr_sparse_mat), intent(in) :: a integer(psb_ipk_) :: res - res = 0 + res = -1 if (allocated(a%ja)) then - if (res >= 0) then - res = min(res,size(a%ja)) - else - res = size(a%ja) - end if + res = size(a%ja) end if if (allocated(a%val)) then if (res >= 0) then diff --git a/base/modules/psb_d_linmap_mod.f90 b/base/modules/psb_d_linmap_mod.f90 index 4c0364bc..d48694d6 100644 --- a/base/modules/psb_d_linmap_mod.f90 +++ b/base/modules/psb_d_linmap_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_d_mat_mod.f90 b/base/modules/psb_d_mat_mod.f90 index 9fede830..867e2bf3 100644 --- a/base/modules/psb_d_mat_mod.f90 +++ b/base/modules/psb_d_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_d_psblas_mod.f90 b/base/modules/psb_d_psblas_mod.f90 index 14e91f27..0b6e5ca3 100644 --- a/base/modules/psb_d_psblas_mod.f90 +++ b/base/modules/psb_d_psblas_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_d_tools_mod.f90 b/base/modules/psb_d_tools_mod.f90 index 86faf95d..5a05814f 100644 --- a/base/modules/psb_d_tools_mod.f90 +++ b/base/modules/psb_d_tools_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -167,7 +167,7 @@ Module psb_d_tools_mod interface psb_geins - subroutine psb_dinsi(m,irw,val, x, desc_a,info,dupl) + subroutine psb_dinsi(m,irw,val, x, desc_a,info,dupl,local) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_d_base_vect_type, psb_d_vect_type, & & psb_dspmat_type, psb_d_base_sparse_mat @@ -178,8 +178,9 @@ Module psb_d_tools_mod real(psb_dpk_), intent(in) :: val(:,:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_dinsi - subroutine psb_dinsvi(m, irw,val, x,desc_a,info,dupl) + subroutine psb_dinsvi(m, irw,val, x,desc_a,info,dupl,local) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_d_base_vect_type, psb_d_vect_type, & & psb_dspmat_type, psb_d_base_sparse_mat @@ -190,8 +191,9 @@ Module psb_d_tools_mod real(psb_dpk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_dinsvi - subroutine psb_dins_vect(m,irw,val,x,desc_a,info,dupl) + subroutine psb_dins_vect(m,irw,val,x,desc_a,info,dupl,local) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_d_base_vect_type, psb_d_vect_type, & & psb_dspmat_type, psb_d_base_sparse_mat @@ -202,8 +204,9 @@ Module psb_d_tools_mod real(psb_dpk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_dins_vect - subroutine psb_dins_vect_r2(m,irw,val,x,desc_a,info,dupl) + subroutine psb_dins_vect_r2(m,irw,val,x,desc_a,info,dupl,local) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_d_base_vect_type, psb_d_vect_type, & & psb_dspmat_type, psb_d_base_sparse_mat @@ -214,6 +217,7 @@ Module psb_d_tools_mod real(psb_dpk_), intent(in) :: val(:,:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_dins_vect_r2 end interface @@ -270,7 +274,7 @@ Module psb_d_tools_mod interface psb_spins - subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild) + subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild,local) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_d_base_vect_type, psb_d_vect_type, & & psb_dspmat_type, psb_d_base_sparse_mat @@ -280,6 +284,7 @@ Module psb_d_tools_mod real(psb_dpk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: rebuild + logical, intent(in), optional :: local end subroutine psb_dspins subroutine psb_dspins_2desc(nz,ia,ja,val,a,desc_ar,desc_ac,info) import :: psb_desc_type, psb_dpk_, psb_ipk_, & diff --git a/base/modules/psb_d_vect_mod.f90 b/base/modules/psb_d_vect_mod.F90 similarity index 97% rename from base/modules/psb_d_vect_mod.f90 rename to base/modules/psb_d_vect_mod.F90 index 98f60e66..bfc97f81 100644 --- a/base/modules/psb_d_vect_mod.f90 +++ b/base/modules/psb_d_vect_mod.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -100,7 +100,11 @@ contains integer(psb_ipk_) :: info if (present(mold)) then +#ifdef HAVE_MOLD allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif else allocate(psb_d_base_vect_type :: x%v,stat=info) endif @@ -117,7 +121,11 @@ contains integer(psb_ipk_) :: info if (present(mold)) then +#ifdef HAVE_MOLD allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif else allocate(psb_d_base_vect_type :: x%v,stat=info) endif @@ -411,7 +419,11 @@ contains integer(psb_ipk_), intent(out) :: info if (present(mold)) then +#ifdef HAVE_MOLD allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif else allocate(psb_d_base_vect_type :: x%v,stat=info) endif @@ -531,7 +543,11 @@ contains real(psb_dpk_), allocatable :: invect(:) integer(psb_ipk_) :: info - allocate(tmp,stat=info,mold=mold) +#ifdef HAVE_MOLD + allocate(tmp,stat=info,mold=mold) +#else + call mold%mold(tmp,info) +#endif call x%v%sync() if (info == psb_success_) call tmp%bld(x%v%v) call x%v%free(info) diff --git a/base/modules/psb_desc_const_mod.f90 b/base/modules/psb_desc_const_mod.f90 index ca432ea8..c55d2a4b 100644 --- a/base/modules/psb_desc_const_mod.f90 +++ b/base/modules/psb_desc_const_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_desc_type.f90 b/base/modules/psb_desc_type.f90 index 34aba4e0..bb9cccc9 100644 --- a/base/modules/psb_desc_type.f90 +++ b/base/modules/psb_desc_type.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -199,16 +199,16 @@ module psb_descriptor_type type psb_desc_type - integer(psb_ipk_), allocatable :: halo_index(:) - integer(psb_ipk_), allocatable :: ext_index(:) - integer(psb_ipk_), allocatable :: ovrlap_index(:) - integer(psb_ipk_), allocatable :: ovrlap_elem(:,:) - integer(psb_ipk_), allocatable :: ovr_mst_idx(:) - integer(psb_ipk_), allocatable :: bnd_elem(:) + integer(psb_ipk_), allocatable :: halo_index(:) + integer(psb_ipk_), allocatable :: ext_index(:) + integer(psb_ipk_), allocatable :: ovrlap_index(:) + integer(psb_ipk_), allocatable :: ovrlap_elem(:,:) + integer(psb_ipk_), allocatable :: ovr_mst_idx(:) + integer(psb_ipk_), allocatable :: bnd_elem(:) class(psb_indx_map), allocatable :: indxmap - integer(psb_ipk_), allocatable :: lprm(:) + integer(psb_ipk_), allocatable :: lprm(:) type(psb_desc_type), pointer :: base_desc => null() - integer(psb_ipk_), allocatable :: idx_space(:) + integer(psb_ipk_), allocatable :: idx_space(:) integer, allocatable :: sendtypes(:),recvtypes(:) !Extendable as a matrix of every kind of data contains @@ -229,6 +229,7 @@ module psb_descriptor_type procedure, pass(desc) :: get_list => psb_cd_get_list procedure, pass(desc) :: sizeof => psb_cd_sizeof procedure, pass(desc) :: free => psb_cdfree + procedure, pass(desc) :: destroy => psb_cd_destroy procedure, pass(desc) :: nullify => nullify_desc end type psb_desc_type @@ -627,125 +628,83 @@ contains implicit none !....parameters... class(psb_desc_type), intent(inout) :: desc - integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(out) :: info !...locals.... integer(psb_ipk_) :: ictxt,np,me, err_act character(len=20) :: name - if(psb_get_errstatus() /= 0) return info=psb_success_ call psb_erractionsave(err_act) name = 'psb_cdfree' + call desc%destroy() - ictxt=psb_cd_get_context(desc) - - call psb_info(ictxt, me, np) - ! ....verify blacs grid correctness.. - if (np == -1) then - info = psb_err_context_error_ - call psb_errpush(info,name) - goto 9999 - endif - - - if (.not.allocated(desc%halo_index)) then - info=298 - call psb_errpush(info,name) - goto 9999 - end if + call psb_erractionrestore(err_act) + return - !deallocate halo_index field - deallocate(desc%halo_index,stat=info) - if (info /= psb_success_) then - info=2053 - call psb_errpush(info,name) - goto 9999 - end if +9999 continue + call psb_erractionrestore(err_act) - if (.not.allocated(desc%bnd_elem)) then -!!$ info=296 -!!$ call psb_errpush(info,name) -!!$ goto 9999 -!!$ end if + if (err_act == psb_act_ret_) then + return else - !deallocate halo_index field - deallocate(desc%bnd_elem,stat=info) - if (info /= psb_success_) then - info=2054 - call psb_errpush(info,name) - goto 9999 + if (ictxt == -1) then + call psb_error() + else + call psb_error(ictxt) end if end if + return - if (.not.allocated(desc%ovrlap_index)) then - info=299 - call psb_errpush(info,name) - goto 9999 - end if + end subroutine psb_cdfree - !deallocate ovrlap_index field - deallocate(desc%ovrlap_index,stat=info) - if (info /= psb_success_) then - info=2055 - call psb_errpush(info,name) - goto 9999 - end if + ! + ! Subroutine: psb_cdfree + ! Frees a descriptor data structure. + ! + ! Arguments: + ! desc_a - type(psb_desc_type). The communication descriptor to be freed. + subroutine psb_cd_destroy(desc) + !...free descriptor structure... + use psb_const_mod + use psb_error_mod + use psb_penv_mod + implicit none + !....parameters... + class(psb_desc_type), intent(inout) :: desc + !...locals.... + integer(psb_ipk_) :: info - !deallocate ovrlap_elem field - deallocate(desc%ovrlap_elem,stat=info) - if (info /= psb_success_) then - info=2056 - call psb_errpush(info,name) - goto 9999 - end if - !deallocate ovrlap_index field - deallocate(desc%ovr_mst_idx,stat=info) - if (info /= psb_success_) then - info=2055 - call psb_errpush(info,name) - goto 9999 - end if + if (allocated(desc%halo_index)) & + & deallocate(desc%halo_index,stat=info) + if (allocated(desc%bnd_elem)) & + & deallocate(desc%bnd_elem,stat=info) + + if (allocated(desc%ovrlap_index)) & + & deallocate(desc%ovrlap_index,stat=info) + + if (allocated(desc%ovrlap_elem)) & + & deallocate(desc%ovrlap_elem,stat=info) + if (allocated(desc%ovr_mst_idx)) & + & deallocate(desc%ovr_mst_idx,stat=info) if (allocated(desc%lprm)) & & deallocate(desc%lprm,stat=info) - if (info /= psb_success_) then - info=2057 - call psb_errpush(info,name) - goto 9999 - end if + if (allocated(desc%idx_space)) & + & deallocate(desc%idx_space,stat=info) if (allocated(desc%indxmap)) then call desc%indxmap%free() deallocate(desc%indxmap, stat=info) end if - if (allocated(desc%idx_space)) then - deallocate(desc%idx_space,stat=info) - if (info /= psb_success_) then - info=2056 - call psb_errpush(info,name) - goto 9999 - end if - end if call desc%nullify() - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - - if (err_act == psb_act_ret_) then - return - else - call psb_error(ictxt) - end if return - end subroutine psb_cdfree + end subroutine psb_cd_destroy ! ! Subroutine: psb_cdtransfer ! Transfers data and allocation from in to out; behaves like MOVE_ALLOC, i.e. @@ -782,37 +741,43 @@ contains name = 'psb_cdtransfer' debug_unit = psb_get_debug_unit() debug_level = psb_get_debug_level() - ictxt = psb_cd_get_context(desc_in) - call psb_info(ictxt,me,np) - ! Should not require ictxt to be present: this - ! function might be called even when desc_in is - ! empty. - - if (info == psb_success_) & - & call psb_move_alloc( desc_in%halo_index , desc_out%halo_index , info) - if (info == psb_success_) & - & call psb_move_alloc( desc_in%bnd_elem , desc_out%bnd_elem , info) - if (info == psb_success_) & - & call psb_move_alloc( desc_in%ovrlap_elem , desc_out%ovrlap_elem , info) - if (info == psb_success_) & - & call psb_move_alloc( desc_in%ovrlap_index, desc_out%ovrlap_index , info) - if (info == psb_success_) & - & call psb_move_alloc( desc_in%ovr_mst_idx , desc_out%ovr_mst_idx , info) - if (info == psb_success_) & - & call psb_move_alloc( desc_in%ext_index , desc_out%ext_index , info) - if (info == psb_success_) & - & call psb_move_alloc( desc_in%lprm , desc_out%lprm , info) - if (info == psb_success_) & - & call psb_move_alloc( desc_in%idx_space , desc_out%idx_space , info) - if (info == psb_success_) & - & call move_alloc(desc_in%indxmap, desc_out%indxmap) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name) - goto 9999 - endif - if (debug_level >= psb_debug_ext_) & - & write(debug_unit,*) me,' ',trim(name),': end' + ! + ! Note: this might be called even + ! when desc_in is empty. + ! + if (desc_in%is_valid()) then + ictxt = psb_cd_get_context(desc_in) + call psb_info(ictxt,me,np) + + if (info == psb_success_) & + & call psb_move_alloc( desc_in%halo_index , desc_out%halo_index , info) + if (info == psb_success_) & + & call psb_move_alloc( desc_in%bnd_elem , desc_out%bnd_elem , info) + if (info == psb_success_) & + & call psb_move_alloc( desc_in%ovrlap_elem , desc_out%ovrlap_elem , info) + if (info == psb_success_) & + & call psb_move_alloc( desc_in%ovrlap_index, desc_out%ovrlap_index , info) + if (info == psb_success_) & + & call psb_move_alloc( desc_in%ovr_mst_idx , desc_out%ovr_mst_idx , info) + if (info == psb_success_) & + & call psb_move_alloc( desc_in%ext_index , desc_out%ext_index , info) + if (info == psb_success_) & + & call psb_move_alloc( desc_in%lprm , desc_out%lprm , info) + if (info == psb_success_) & + & call psb_move_alloc( desc_in%idx_space , desc_out%idx_space , info) + if (info == psb_success_) & + & call move_alloc(desc_in%indxmap, desc_out%indxmap) + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name) + goto 9999 + endif + if (debug_level >= psb_debug_ext_) & + & write(debug_unit,*) me,' ',trim(name),': end' + else + call desc_out%free(info) + end if + call desc_in%free(info) call psb_erractionrestore(err_act) return diff --git a/base/modules/psb_error_mod.F90 b/base/modules/psb_error_mod.F90 index fa200a39..914c6a97 100644 --- a/base/modules/psb_error_mod.F90 +++ b/base/modules/psb_error_mod.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_gen_block_map_mod.f90 b/base/modules/psb_gen_block_map_mod.f90 index 415dcde8..b7898d5a 100644 --- a/base/modules/psb_gen_block_map_mod.f90 +++ b/base/modules/psb_gen_block_map_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -144,7 +144,7 @@ contains end if idxv(1) = idx - call idxmap%l2g(idxv,info,owned=owned) + call idxmap%l2gip(idxv,info,owned=owned) idx = idxv(1) end subroutine block_l2gs1 @@ -159,7 +159,7 @@ contains logical, intent(in), optional :: owned idxout = idxin - call idxmap%l2g(idxout,info,mask,owned) + call idxmap%l2gip(idxout,info,mask,owned) end subroutine block_l2gs2 @@ -234,7 +234,7 @@ contains is = size(idxin) im = min(is,size(idxout)) idxout(1:im) = idxin(1:im) - call idxmap%l2g(idxout(1:im),info,mask,owned) + call idxmap%l2gip(idxout(1:im),info,mask,owned) if (is > im) then info = -3 end if @@ -257,7 +257,7 @@ contains end if idxv(1) = idx - call idxmap%g2l(idxv,info,owned=owned) + call idxmap%g2lip(idxv,info,owned=owned) idx = idxv(1) end subroutine block_g2ls1 @@ -272,7 +272,7 @@ contains logical, intent(in), optional :: owned idxout = idxin - call idxmap%g2l(idxout,info,mask,owned) + call idxmap%g2lip(idxout,info,mask,owned) end subroutine block_g2ls2 @@ -399,14 +399,14 @@ contains is = size(idxin) im = min(is,size(idxout)) idxout(1:im) = idxin(1:im) - call idxmap%g2l(idxout(1:im),info,mask,owned) + call idxmap%g2lip(idxout(1:im),info,mask,owned) if (is > im) info = -3 end subroutine block_g2lv2 - subroutine block_g2ls1_ins(idx,idxmap,info,mask) + subroutine block_g2ls1_ins(idx,idxmap,info,mask, lidx) use psb_realloc_mod use psb_sort_mod implicit none @@ -414,34 +414,41 @@ contains integer(psb_ipk_), intent(inout) :: idx integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask + integer, intent(in), optional :: lidx - integer(psb_ipk_) :: idxv(1) + integer(psb_ipk_) :: idxv(1), lidxv(1) info = 0 if (present(mask)) then if (.not.mask) return end if idxv(1) = idx - call idxmap%g2l_ins(idxv,info) + if (present(lidx)) then + lidxv(1) = lidx + call idxmap%g2lip_ins(idxv,info,lidx=lidxv) + else + call idxmap%g2lip_ins(idxv,info) + end if idx = idxv(1) end subroutine block_g2ls1_ins - subroutine block_g2ls2_ins(idxin,idxout,idxmap,info,mask) + subroutine block_g2ls2_ins(idxin,idxout,idxmap,info,mask,lidx) implicit none class(psb_gen_block_map), intent(inout) :: idxmap integer(psb_ipk_), intent(in) :: idxin integer(psb_ipk_), intent(out) :: idxout integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask - + integer, intent(in), optional :: lidx + idxout = idxin - call idxmap%g2l_ins(idxout,info) + call idxmap%g2lip_ins(idxout,info,mask=mask,lidx=lidx) end subroutine block_g2ls2_ins - subroutine block_g2lv1_ins(idx,idxmap,info,mask) + subroutine block_g2lv1_ins(idx,idxmap,info,mask,lidx) use psb_realloc_mod use psb_sort_mod implicit none @@ -449,6 +456,8 @@ contains integer(psb_ipk_), intent(inout) :: idx(:) integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask(:) + integer, intent(in), optional :: lidx(:) + integer(psb_ipk_) :: i, nv, is, ix integer(psb_ipk_) :: ip, lip, nxt @@ -462,6 +471,12 @@ contains return end if end if + if (present(lidx)) then + if (size(lidx) < size(idx)) then + info = -1 + return + end if + end if if (idxmap%is_asb()) then @@ -471,16 +486,61 @@ contains else if (idxmap%is_valid()) then - if (present(mask)) then - do i=1, is - if (mask(i)) then + if (present(lidx)) then + if (present(mask)) then + + do i=1, is + if (mask(i)) then + if ((idxmap%min_glob_row <= idx(i)).and.(idx(i) <= idxmap%max_glob_row)) then + idx(i) = idx(i) - idxmap%min_glob_row + 1 + else if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then + + if (lidx(i) <= idxmap%local_rows) then + info = -5 + return + end if + nxt = lidx(i)-idxmap%local_rows + ip = idx(i) + call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info) + if (info >= 0) then + if (lip == nxt) then + ! We have added one item + call psb_ensure_size(nxt,idxmap%loc_to_glob,info,addsz=laddsz) + if (info /= 0) then + info = -4 + return + end if + idxmap%local_cols = max(lidx(i),idxmap%local_cols) + idxmap%loc_to_glob(nxt) = idx(i) + end if + info = psb_success_ + else + info = -5 + return + end if + idx(i) = lip + idxmap%local_rows + else + idx(i) = -1 + info = -1 + end if + end if + end do + + else if (.not.present(mask)) then + + do i=1, is + if ((idxmap%min_glob_row <= idx(i)).and.(idx(i) <= idxmap%max_glob_row)) then idx(i) = idx(i) - idxmap%min_glob_row + 1 else if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then - nv = idxmap%local_cols-idxmap%local_rows - nxt = nv + 1 + if (lidx(i) <= idxmap%local_rows) then + info = -5 + return + end if + nxt = lidx(i)-idxmap%local_rows ip = idx(i) call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info) + if (info >= 0) then if (lip == nxt) then ! We have added one item @@ -489,7 +549,7 @@ contains info = -4 return end if - idxmap%local_cols = nxt + idxmap%local_rows + idxmap%local_cols = max(lidx(i),idxmap%local_cols) idxmap%loc_to_glob(nxt) = idx(i) end if info = psb_success_ @@ -502,43 +562,80 @@ contains idx(i) = -1 info = -1 end if - end if - end do + end do + end if - else if (.not.present(mask)) then + else if (.not.present(lidx)) then + + if (present(mask)) then + do i=1, is + if (mask(i)) then + if ((idxmap%min_glob_row <= idx(i)).and.(idx(i) <= idxmap%max_glob_row)) then + idx(i) = idx(i) - idxmap%min_glob_row + 1 + else if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then + nv = idxmap%local_cols-idxmap%local_rows + nxt = nv + 1 + ip = idx(i) + call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info) + if (info >= 0) then + if (lip == nxt) then + ! We have added one item + call psb_ensure_size(nxt,idxmap%loc_to_glob,info,addsz=laddsz) + if (info /= 0) then + info = -4 + return + end if + idxmap%local_cols = nxt + idxmap%local_rows + idxmap%loc_to_glob(nxt) = idx(i) + end if + info = psb_success_ + else + info = -5 + return + end if + idx(i) = lip + idxmap%local_rows + else + idx(i) = -1 + info = -1 + end if + end if + end do - do i=1, is + else if (.not.present(mask)) then - if ((idxmap%min_glob_row <= idx(i)).and.(idx(i) <= idxmap%max_glob_row)) then - idx(i) = idx(i) - idxmap%min_glob_row + 1 - else if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then - nv = idxmap%local_cols-idxmap%local_rows - nxt = nv + 1 - ip = idx(i) - call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info) - - if (info >= 0) then - if (lip == nxt) then - ! We have added one item - call psb_ensure_size(nxt,idxmap%loc_to_glob,info,addsz=laddsz) - if (info /= 0) then - info = -4 - return + do i=1, is + + if ((idxmap%min_glob_row <= idx(i)).and.(idx(i) <= idxmap%max_glob_row)) then + idx(i) = idx(i) - idxmap%min_glob_row + 1 + else if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then + nv = idxmap%local_cols-idxmap%local_rows + nxt = nv + 1 + ip = idx(i) + call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info) + + if (info >= 0) then + if (lip == nxt) then + ! We have added one item + call psb_ensure_size(nxt,idxmap%loc_to_glob,info,addsz=laddsz) + if (info /= 0) then + info = -4 + return + end if + idxmap%local_cols = nxt + idxmap%local_rows + idxmap%loc_to_glob(nxt) = idx(i) end if - idxmap%local_cols = nxt + idxmap%local_rows - idxmap%loc_to_glob(nxt) = idx(i) + info = psb_success_ + else + info = -5 + return end if - info = psb_success_ - else - info = -5 - return + idx(i) = lip + idxmap%local_rows + else + idx(i) = -1 + info = -1 end if - idx(i) = lip + idxmap%local_rows - else - idx(i) = -1 - info = -1 - end if - end do + end do + end if end if else @@ -548,19 +645,21 @@ contains end subroutine block_g2lv1_ins - subroutine block_g2lv2_ins(idxin,idxout,idxmap,info,mask) + subroutine block_g2lv2_ins(idxin,idxout,idxmap,info,mask,lidx) implicit none class(psb_gen_block_map), intent(inout) :: idxmap integer(psb_ipk_), intent(in) :: idxin(:) integer(psb_ipk_), intent(out) :: idxout(:) integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask(:) + integer, intent(in), optional :: lidx(:) + integer(psb_ipk_) :: is, im is = size(idxin) im = min(is,size(idxout)) idxout(1:im) = idxin(1:im) - call idxmap%g2l_ins(idxout(1:im),info,mask) + call idxmap%g2lip_ins(idxout(1:im),info,mask=mask,lidx=lidx) if (is > im) then !!$ write(0,*) 'g2lv2_ins err -3' info = -3 diff --git a/base/modules/psb_glist_map_mod.f90 b/base/modules/psb_glist_map_mod.f90 index a71d82fb..ff2b044d 100644 --- a/base/modules/psb_glist_map_mod.f90 +++ b/base/modules/psb_glist_map_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_hash_map_mod.f90 b/base/modules/psb_hash_map_mod.f90 index c1b8acf0..91cfef4c 100644 --- a/base/modules/psb_hash_map_mod.f90 +++ b/base/modules/psb_hash_map_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -167,7 +167,7 @@ contains end if idxv(1) = idx - call idxmap%l2g(idxv,info,owned=owned) + call idxmap%l2gip(idxv,info,owned=owned) idx = idxv(1) end subroutine hash_l2gs1 @@ -182,7 +182,7 @@ contains logical, intent(in), optional :: owned idxout = idxin - call idxmap%l2g(idxout,info,mask,owned) + call idxmap%l2gip(idxout,info,mask,owned) end subroutine hash_l2gs2 @@ -255,7 +255,7 @@ contains is = size(idxin) im = min(is,size(idxout)) idxout(1:im) = idxin(1:im) - call idxmap%l2g(idxout(1:im),info,mask,owned) + call idxmap%l2gip(idxout(1:im),info,mask,owned) if (is > im) then write(0,*) 'l2gv2 err -3' info = -3 @@ -279,7 +279,7 @@ contains end if idxv(1) = idx - call idxmap%g2l(idxv,info,owned=owned) + call idxmap%g2lip(idxv,info,owned=owned) idx = idxv(1) end subroutine hash_g2ls1 @@ -294,7 +294,7 @@ contains logical, intent(in), optional :: owned idxout = idxin - call idxmap%g2l(idxout,info,mask,owned) + call idxmap%g2lip(idxout,info,mask,owned) end subroutine hash_g2ls2 @@ -429,7 +429,7 @@ contains is = size(idxin) im = min(is,size(idxout)) idxout(1:im) = idxin(1:im) - call idxmap%g2l(idxout(1:im),info,mask,owned) + call idxmap%g2lip(idxout(1:im),info,mask,owned) if (is > im) then write(0,*) 'g2lv2 err -3' info = -3 @@ -439,7 +439,7 @@ contains - subroutine hash_g2ls1_ins(idx,idxmap,info,mask) + subroutine hash_g2ls1_ins(idx,idxmap,info,mask,lidx) use psb_realloc_mod use psb_sort_mod implicit none @@ -447,34 +447,43 @@ contains integer(psb_ipk_), intent(inout) :: idx integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask + integer, intent(in), optional :: lidx - integer(psb_ipk_) :: idxv(1) + integer(psb_ipk_) :: idxv(1), lidxv(1) info = 0 if (present(mask)) then if (.not.mask) return end if + idxv(1) = idx - call idxmap%g2l_ins(idxv,info) + if (present(lidx)) then + lidxv(1) = lidx + call idxmap%g2lip_ins(idxv,info,lidx=lidxv) + else + call idxmap%g2lip_ins(idxv,info) + end if idx = idxv(1) end subroutine hash_g2ls1_ins - subroutine hash_g2ls2_ins(idxin,idxout,idxmap,info,mask) + subroutine hash_g2ls2_ins(idxin,idxout,idxmap,info,mask,lidx) implicit none class(psb_hash_map), intent(inout) :: idxmap integer(psb_ipk_), intent(in) :: idxin integer(psb_ipk_), intent(out) :: idxout integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask + integer, intent(in), optional :: lidx + idxout = idxin - call idxmap%g2l_ins(idxout,info,mask=mask) + call idxmap%g2lip_ins(idxout,info,mask=mask,lidx=lidx) end subroutine hash_g2ls2_ins - subroutine hash_g2lv1_ins(idx,idxmap,info,mask) + subroutine hash_g2lv1_ins(idx,idxmap,info,mask,lidx) use psb_error_mod use psb_realloc_mod use psb_sort_mod @@ -483,7 +492,9 @@ contains class(psb_hash_map), intent(inout) :: idxmap integer(psb_ipk_), intent(inout) :: idx(:) integer(psb_ipk_), intent(out) :: info - logical, intent(in), optional :: mask(:) + logical, intent(in), optional :: mask(:) + integer, intent(in), optional :: lidx(:) + integer(psb_ipk_) :: i, is, mglob, ip, lip, nrow, ncol, & & nxt, err_act integer(psb_mpik_) :: ictxt, me, np @@ -504,16 +515,159 @@ contains return end if end if + if (present(lidx)) then + if (size(lidx) < size(idx)) then + info = -1 + return + end if + end if mglob = idxmap%get_gr() nrow = idxmap%get_lr() if (idxmap%is_bld()) then - if (present(mask)) then - do i = 1, is - ncol = idxmap%get_lc() - if (mask(i)) then + if (present(lidx)) then + if (present(mask)) then + do i = 1, is + ncol = idxmap%get_lc() + if (mask(i)) then + ip = idx(i) + if ((ip < 1 ).or.(ip>mglob) ) then + idx(i) = -1 + cycle + endif + call hash_inner_cnv(ip,lip,idxmap%hashvmask,idxmap%hashv,idxmap%glb_lc,ncol) + if (lip < 0) then + nxt = lidx(i) + if (nxt <= nrow) then + idx(i) = -1 + cycle + endif + call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info) + if (info >=0) then + if (nxt == lip) then + ncol = max(ncol,nxt) + call psb_ensure_size(ncol,idxmap%loc_to_glob,info,pad=-ione,addsz=laddsz) + if (info /= psb_success_) then + info=1 + ch_err='psb_ensure_size' + call psb_errpush(psb_err_from_subroutine_ai_,name,& + &a_err=ch_err,i_err=(/info,izero,izero,izero,izero/)) + goto 9999 + end if + idxmap%loc_to_glob(nxt) = ip + call idxmap%set_lc(ncol) + endif + info = psb_success_ + else + ch_err='SearchInsKeyVal' + call psb_errpush(psb_err_from_subroutine_ai_,name,& + & a_err=ch_err,i_err=(/info,izero,izero,izero,izero/)) + goto 9999 + end if + end if + idx(i) = lip + info = psb_success_ + else + idx(i) = -1 + end if + enddo + + else if (.not.present(mask)) then + + do i = 1, is + ncol = idxmap%get_lc() + ip = idx(i) + if ((ip < 1 ).or.(ip>mglob)) then + idx(i) = -1 + cycle + endif + call hash_inner_cnv(ip,lip,idxmap%hashvmask,idxmap%hashv,idxmap%glb_lc,ncol) + if (lip < 0) then + nxt = lidx(i) + if (nxt <= nrow) then + idx(i) = -1 + cycle + endif + call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info) + + if (info >=0) then + if (nxt == lip) then + ncol = max(nxt,ncol) + call psb_ensure_size(ncol,idxmap%loc_to_glob,info,pad=-ione,addsz=laddsz) + if (info /= psb_success_) then + info=1 + ch_err='psb_ensure_size' + call psb_errpush(psb_err_from_subroutine_ai_,name,& + &a_err=ch_err,i_err=(/info,izero,izero,izero,izero/)) + goto 9999 + end if + idxmap%loc_to_glob(nxt) = ip + call idxmap%set_lc(ncol) + endif + info = psb_success_ + else + ch_err='SearchInsKeyVal' + call psb_errpush(psb_err_from_subroutine_ai_,name,& + & a_err=ch_err,i_err=(/info,izero,izero,izero,izero/)) + goto 9999 + end if + end if + idx(i) = lip + info = psb_success_ + enddo + + end if + + else if (.not.present(lidx)) then + + if (present(mask)) then + do i = 1, is + ncol = idxmap%get_lc() + if (mask(i)) then + ip = idx(i) + if ((ip < 1 ).or.(ip>mglob)) then + idx(i) = -1 + cycle + endif + nxt = ncol + 1 + call hash_inner_cnv(ip,lip,idxmap%hashvmask,idxmap%hashv,idxmap%glb_lc,ncol) + if (lip < 0) & + & call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info) + + if (info >=0) then + if (nxt == lip) then + ncol = nxt + call psb_ensure_size(ncol,idxmap%loc_to_glob,info,pad=-ione,addsz=laddsz) + if (info /= psb_success_) then + info=1 + ch_err='psb_ensure_size' + call psb_errpush(psb_err_from_subroutine_ai_,name,& + &a_err=ch_err,i_err=(/info,izero,izero,izero,izero/)) + goto 9999 + end if + idxmap%loc_to_glob(nxt) = ip + call idxmap%set_lc(ncol) + endif + info = psb_success_ + else + ch_err='SearchInsKeyVal' + call psb_errpush(psb_err_from_subroutine_ai_,name,& + & a_err=ch_err,i_err=(/info,izero,izero,izero,izero/)) + goto 9999 + end if + idx(i) = lip + info = psb_success_ + else + idx(i) = -1 + end if + enddo + + else if (.not.present(mask)) then + + do i = 1, is + ncol = idxmap%get_lc() ip = idx(i) if ((ip < 1 ).or.(ip>mglob)) then idx(i) = -1 @@ -547,52 +701,11 @@ contains end if idx(i) = lip info = psb_success_ - else - idx(i) = -1 - end if - enddo - - else - do i = 1, is - ncol = idxmap%get_lc() - ip = idx(i) - if ((ip < 1 ).or.(ip>mglob)) then - idx(i) = -1 - cycle - endif - nxt = ncol + 1 - call hash_inner_cnv(ip,lip,idxmap%hashvmask,idxmap%hashv,idxmap%glb_lc,ncol) - if (lip < 0) & - & call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info) - - if (info >=0) then - if (nxt == lip) then - ncol = nxt - call psb_ensure_size(ncol,idxmap%loc_to_glob,info,pad=-ione,addsz=laddsz) - if (info /= psb_success_) then - info=1 - ch_err='psb_ensure_size' - call psb_errpush(psb_err_from_subroutine_ai_,name,& - &a_err=ch_err,i_err=(/info,izero,izero,izero,izero/)) - goto 9999 - end if - idxmap%loc_to_glob(nxt) = ip - call idxmap%set_lc(ncol) - endif - info = psb_success_ - else - ch_err='SearchInsKeyVal' - call psb_errpush(psb_err_from_subroutine_ai_,name,& - & a_err=ch_err,i_err=(/info,izero,izero,izero,izero/)) - goto 9999 - end if - idx(i) = lip - info = psb_success_ - enddo + enddo + end if end if - else ! Wrong state idx = -1 @@ -613,19 +726,21 @@ contains end subroutine hash_g2lv1_ins - subroutine hash_g2lv2_ins(idxin,idxout,idxmap,info,mask) + subroutine hash_g2lv2_ins(idxin,idxout,idxmap,info,mask,lidx) implicit none class(psb_hash_map), intent(inout) :: idxmap integer(psb_ipk_), intent(in) :: idxin(:) integer(psb_ipk_), intent(out) :: idxout(:) integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask(:) + integer, intent(in), optional :: lidx(:) + integer(psb_ipk_) :: is, im is = size(idxin) im = min(is,size(idxout)) idxout(1:im) = idxin(1:im) - call idxmap%g2l_ins(idxout(1:im),info,mask) + call idxmap%g2lip_ins(idxout(1:im),info,mask=mask,lidx=lidx) if (is > im) then write(0,*) 'g2lv2_ins err -3' info = -3 @@ -646,7 +761,7 @@ contains ! To be implemented integer(psb_mpik_) :: iam, np integer(psb_ipk_) :: i, nlu, nl, m, nrt,int_err(5) - integer(psb_ipk_), allocatable :: vlu(:) + integer(psb_ipk_), allocatable :: vlu(:), ix(:) character(len=20), parameter :: name='hash_map_init_vl' info = 0 @@ -664,7 +779,7 @@ contains call psb_sum(ictxt,nrt) call psb_max(ictxt,m) - allocate(vlu(nl), stat=info) + allocate(vlu(nl), ix(nl), stat=info) if (info /= 0) then info = -1 return @@ -687,16 +802,21 @@ contains & ' Warning: globalcheck=.false., but there is a mismatch' write(psb_err_unit,*) trim(name),& & ' : in the global sizes!',m,nrt - end if - ! - ! Now sort the input items, and check for duplicates - ! (unlikely, but possible) - ! - call psb_msort_unique(vlu,nlu) - if (nlu /= nl) then - write(0,*) 'Warning: duplicates in input' + end if + call psb_msort(vlu,ix) + nlu = 1 + do i=2,nl + if (vlu(i) /= vlu(nlu)) then + nlu = nlu + 1 + vlu(nlu) = vlu(i) + ix(nlu) = ix(i) + end if + end do + call psb_msort(ix(1:nlu),vlu(1:nlu),flag=psb_sort_keep_idx_) + + nlu = nl call hash_init_vlu(idxmap,ictxt,m,nlu,vlu,info) end subroutine hash_init_vl diff --git a/base/modules/psb_hash_mod.f90 b/base/modules/psb_hash_mod.f90 index 649537e3..11f45aea 100644 --- a/base/modules/psb_hash_mod.f90 +++ b/base/modules/psb_hash_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -30,26 +30,28 @@ !!$ !!$ ! -! package: psb_hash_mod -! -! This module implements a very simple minded hash table. -! The hash is based on the idea of open addressing with double hashing; -! the primary hash function h1(K) is simply the remainder modulo 2^N, while -! the secondary hash function is 1 if H1(k) == 0, otherwise IOR((2^N-H1(k)),1) -! (See Knuth: TAOCP, Vol. 3, sec. 6.4) -! These hash functions are not very smart; however they are very simple and fast. -! The intended usage of this hash table is to store indices of halo points, which -! are supposed to be few compared to the internal indices (which are stored elsewhere). -! Therefore, either the table has a very low occupancy, and this scheme will work, -! or we have lots more to worry about in parallel performance than the efficiency -! of this hashing scheme. -! -! ! module psb_hash_mod use psb_const_mod - ! + !> \class psb_hash_mod + !! \brief Simple hash module for storing integer keys. + !! + !! This module implements a very simple minded hash table. + !! The hash is based on the idea of open addressing with double hashing; + !! the primary hash function h1(K) is simply the remainder modulo 2^N, while + !! the secondary hash function is 1 if H1(k) == 0, otherwise IOR((2^N-H1(k)),1) + !! (See Knuth: TAOCP, Vol. 3, sec. 6.4) + !! + !! These hash functions are not very smart; however they are very simple and fast. + !! The intended usage of this hash table is to store indices of halo points, which + !! are supposed to be few compared to the internal indices + !! (which are stored elsewhere). + !! Therefore, either the table has a very low occupancy, and this scheme will work, + !! or we have lots more to worry about in parallel performance than the efficiency + !! of this hashing scheme. + !! + !! ! For us a hash is a Nx2 table. ! Note: we are assuming that the keys are positive numbers. ! Allocatable scalars would be a nice solution... diff --git a/base/modules/psb_i_base_vect_mod.f90 b/base/modules/psb_i_base_vect_mod.f90 new file mode 100644 index 00000000..302b0563 --- /dev/null +++ b/base/modules/psb_i_base_vect_mod.f90 @@ -0,0 +1,820 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +! +! package: psb_i_base_vect_mod +! +! This module contains the definition of the psb_i_base_vect type which +! is a container for dense vectors. +! This is encapsulated instead of being just a simple array to allow for +! more complicated situations, such as GPU programming, where the memory +! area we are interested in is not easily accessible from the host/Fortran +! side. It is also meant to be encapsulated in an outer type, to allow +! runtime switching as per the STATE design pattern, similar to the +! sparse matrix types. +! +! +module psb_i_base_vect_mod + + use psb_const_mod + use psb_error_mod + + + !> \namespace psb_base_mod \class psb_i_base_vect_type + !! The psb_i_base_vect_type + !! defines a middle level integer(psb_ipk_) encapsulated dense vector. + !! The encapsulation is needed, in place of a simple array, to allow + !! for complicated situations, such as GPU programming, where the memory + !! area we are interested in is not easily accessible from the host/Fortran + !! side. It is also meant to be encapsulated in an outer type, to allow + !! runtime switching as per the STATE design pattern, similar to the + !! sparse matrix types. + !! + type psb_i_base_vect_type + integer(psb_ipk_), allocatable :: v(:) + contains + ! + ! Constructors/allocators + ! + procedure, pass(x) :: bld_x => i_base_bld_x + procedure, pass(x) :: bld_n => i_base_bld_n + generic, public :: bld => bld_x, bld_n + procedure, pass(x) :: all => i_base_all + procedure, pass(x) :: mold => i_base_mold + ! + ! Insert/set. Assembly and free. + ! Assembly does almost nothing here, but is important + ! in derived classes. + ! + procedure, pass(x) :: ins => i_base_ins + procedure, pass(x) :: zero => i_base_zero + procedure, pass(x) :: asb => i_base_asb + procedure, pass(x) :: free => i_base_free + ! + ! Sync: centerpiece of handling of external storage. + ! Any derived class having extra storage upon sync + ! will guarantee that both fortran/host side and + ! external side contain the same data. The base + ! version is only a placeholder. + ! + procedure, pass(x) :: sync => i_base_sync + procedure, pass(x) :: is_host => i_base_is_host + procedure, pass(x) :: is_dev => i_base_is_dev + procedure, pass(x) :: is_sync => i_base_is_sync + procedure, pass(x) :: set_host => i_base_set_host + procedure, pass(x) :: set_dev => i_base_set_dev + procedure, pass(x) :: set_sync => i_base_set_sync + + ! + ! Basic info + procedure, pass(x) :: get_nrows => i_base_get_nrows + procedure, pass(x) :: sizeof => i_base_sizeof + ! + ! Set/get data from/to an external array; also + ! overload assignment. + ! + procedure, pass(x) :: get_vect => i_base_get_vect + procedure, pass(x) :: set_scal => i_base_set_scal + procedure, pass(x) :: set_vect => i_base_set_vect + generic, public :: set => set_vect, set_scal + + ! + ! Dot product and AXPBY + ! + procedure, pass(x) :: dot_v => i_base_dot_v + procedure, pass(x) :: dot_a => i_base_dot_a + generic, public :: dot => dot_v, dot_a + procedure, pass(y) :: axpby_v => i_base_axpby_v + procedure, pass(y) :: axpby_a => i_base_axpby_a + generic, public :: axpby => axpby_v, axpby_a + ! + ! Vector by vector multiplication. Need all variants + ! to handle multiple requirements from preconditioners + ! + procedure, pass(y) :: mlt_v => i_base_mlt_v + procedure, pass(y) :: mlt_a => i_base_mlt_a + procedure, pass(z) :: mlt_a_2 => i_base_mlt_a_2 + procedure, pass(z) :: mlt_v_2 => i_base_mlt_v_2 + procedure, pass(z) :: mlt_va => i_base_mlt_va + procedure, pass(z) :: mlt_av => i_base_mlt_av + generic, public :: mlt => mlt_v, mlt_a, mlt_a_2, mlt_v_2, mlt_av, mlt_va + ! + ! Scaling and norms + ! + procedure, pass(x) :: scal => i_base_scal + procedure, pass(x) :: nrm2 => i_base_nrm2 + procedure, pass(x) :: amax => i_base_amax + procedure, pass(x) :: asum => i_base_asum + ! + ! Gather/scatter. These are needed for MPI interfacing. + ! May have to be reworked. + ! + procedure, pass(x) :: gthab => i_base_gthab + procedure, pass(x) :: gthzv => i_base_gthzv + generic, public :: gth => gthab, gthzv + procedure, pass(y) :: sctb => i_base_sctb + generic, public :: sct => sctb + end type psb_i_base_vect_type + + public :: psb_i_base_vect + private :: constructor, size_const + interface psb_i_base_vect + module procedure constructor, size_const + end interface psb_i_base_vect + +contains + + ! + ! Constructors. + ! + + function constructor(x) result(this) + integer(psb_ipk_) :: x(:) + type(psb_i_base_vect_type) :: this + integer(psb_ipk_) :: info + + this%v = x + call this%asb(size(x,kind=psb_ipk_),info) + end function constructor + + + function size_const(n) result(this) + integer(psb_ipk_), intent(in) :: n + type(psb_i_base_vect_type) :: this + integer(psb_ipk_) :: info + + call this%asb(n,info) + + end function size_const + + ! + ! Build from a sample + ! + + subroutine i_base_bld_x(x,this) + use psb_realloc_mod + integer(psb_ipk_), intent(in) :: this(:) + class(psb_i_base_vect_type), intent(inout) :: x + integer(psb_ipk_) :: info + + call psb_realloc(size(this),x%v,info) + if (info /= 0) then + call psb_errpush(psb_err_alloc_dealloc_,'base_vect_bld') + return + end if + x%v(:) = this(:) + + end subroutine i_base_bld_x + + ! + ! Create with size, but no initialization + ! + subroutine i_base_bld_n(x,n) + use psb_realloc_mod + integer(psb_ipk_), intent(in) :: n + class(psb_i_base_vect_type), intent(inout) :: x + integer(psb_ipk_) :: info + + call psb_realloc(n,x%v,info) + call x%asb(n,info) + + end subroutine i_base_bld_n + + subroutine i_base_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_i_base_vect_type), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n,x%v,info) + + end subroutine i_base_all + + subroutine i_base_mold(x, y, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + class(psb_i_base_vect_type), intent(in) :: x + class(psb_i_base_vect_type), intent(out), allocatable :: y + integer(psb_ipk_), intent(out) :: info + + allocate(psb_i_base_vect_type :: y, stat=info) + + end subroutine i_base_mold + + ! + ! Insert a bunch of values at specified positions. + ! + subroutine i_base_ins(n,irl,val,dupl,x,info) + use psi_serial_mod + implicit none + class(psb_i_base_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + integer(psb_ipk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (psb_errstatus_fatal()) return + + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + else if (n > min(size(irl),size(val))) then + info = psb_err_invalid_input_ + + else + select case(dupl) + case(psb_dupl_ovwrt_) + do i = 1, n + !loop over all val's rows + + ! row actual block row + if (irl(i) > 0) then + ! this row belongs to me + ! copy i-th row of block val in x + x%v(irl(i)) = val(i) + end if + enddo + + case(psb_dupl_add_) + + do i = 1, n + !loop over all val's rows + + if (irl(i) > 0) then + ! this row belongs to me + ! copy i-th row of block val in x + x%v(irl(i)) = x%v(irl(i)) + val(i) + end if + enddo + + case default + info = 321 +!!$ call psb_errpush(info,name) +!!$ goto 9999 + end select + end if + if (info /= 0) then + call psb_errpush(info,'base_vect_ins') + return + end if + + end subroutine i_base_ins + + ! + subroutine i_base_zero(x) + use psi_serial_mod + implicit none + class(psb_i_base_vect_type), intent(inout) :: x + + if (allocated(x%v)) x%v=izero + + end subroutine i_base_zero + + + ! + ! Assembly. + ! For derived classes: after this the vector + ! storage is supposed to be in sync. + ! + + subroutine i_base_asb(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_i_base_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + if (x%get_nrows() < n) & + & call psb_realloc(n,x%v,info) + if (info /= 0) & + & call psb_errpush(psb_err_alloc_dealloc_,'vect_asb') + + end subroutine i_base_asb + + + subroutine i_base_free(x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + class(psb_i_base_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (allocated(x%v)) deallocate(x%v, stat=info) + if (info /= 0) call & + & psb_errpush(psb_err_alloc_dealloc_,'vect_free') + + end subroutine i_base_free + + + + ! + ! The base version of SYNC & friends does nothing, it's just + ! a placeholder. + ! + subroutine i_base_sync(x) + implicit none + class(psb_i_base_vect_type), intent(inout) :: x + + end subroutine i_base_sync + + + subroutine i_base_set_host(x) + implicit none + class(psb_i_base_vect_type), intent(inout) :: x + + end subroutine i_base_set_host + + subroutine i_base_set_dev(x) + implicit none + class(psb_i_base_vect_type), intent(inout) :: x + + end subroutine i_base_set_dev + + subroutine i_base_set_sync(x) + implicit none + class(psb_i_base_vect_type), intent(inout) :: x + + end subroutine i_base_set_sync + + function i_base_is_dev(x) result(res) + implicit none + class(psb_i_base_vect_type), intent(in) :: x + logical :: res + + res = .false. + end function i_base_is_dev + + function i_base_is_host(x) result(res) + implicit none + class(psb_i_base_vect_type), intent(in) :: x + logical :: res + + res = .true. + end function i_base_is_host + + function i_base_is_sync(x) result(res) + implicit none + class(psb_i_base_vect_type), intent(in) :: x + logical :: res + + res = .true. + end function i_base_is_sync + + + ! + ! Size info. + ! + + function i_base_get_nrows(x) result(res) + implicit none + class(psb_i_base_vect_type), intent(in) :: x + integer(psb_ipk_) :: res + + res = 0 + if (allocated(x%v)) res = size(x%v) + + end function i_base_get_nrows + + function i_base_sizeof(x) result(res) + implicit none + class(psb_i_base_vect_type), intent(in) :: x + integer(psb_long_int_k_) :: res + + ! Force 8-byte integers. + res = (1_psb_long_int_k_ * psb_sizeof_int) * x%get_nrows() + + end function i_base_sizeof + + + ! + ! Two versions of extracting an array: one of them + ! overload the assignment. + ! + + function i_base_get_vect(x) result(res) + class(psb_i_base_vect_type), intent(inout) :: x + integer(psb_ipk_), allocatable :: res(:) + integer(psb_ipk_) :: info + + if (.not.allocated(x%v)) return + call x%sync() + allocate(res(x%get_nrows()),stat=info) + if (info /= 0) then + call psb_errpush(psb_err_alloc_dealloc_,'base_get_vect') + return + end if + res(:) = x%v(:) + end function i_base_get_vect + + ! + ! Reset all values + ! + subroutine i_base_set_scal(x,val) + class(psb_i_base_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: val + + integer(psb_ipk_) :: info + x%v = val + + end subroutine i_base_set_scal + + subroutine i_base_set_vect(x,val) + class(psb_i_base_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: val(:) + integer(psb_ipk_) :: nr + integer(psb_ipk_) :: info + + if (allocated(x%v)) then + nr = min(size(x%v),size(val)) + x%v(1:nr) = val(1:nr) + else + x%v = val + end if + + end subroutine i_base_set_vect + + ! + ! Dot products + ! + function i_base_dot_v(n,x,y) result(res) + implicit none + class(psb_i_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_) :: res + integer(psb_ipk_), external :: idot + + res = izero + ! + ! Note: this is the base implementation. + ! When we get here, we are sure that X is of + ! TYPE psb_i_base_vect. + ! If Y is not, throw the burden on it, implicitly + ! calling dot_a + ! + select type(yy => y) + type is (psb_i_base_vect_type) + res = idot(n,x%v,1,y%v,1) + class default + res = y%dot(n,x%v) + end select + + end function i_base_dot_v + + ! + ! Base workhorse is good old BLAS1 + ! + function i_base_dot_a(n,x,y) result(res) + implicit none + class(psb_i_base_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_) :: res + integer(psb_ipk_), external :: idot + + res = idot(n,y,1,x%v,1) + + end function i_base_dot_a + + ! + ! AXPBY is invoked via Y, hence the structure below. + ! + subroutine i_base_axpby_v(m,alpha, x, beta, y, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_i_base_vect_type), intent(inout) :: x + class(psb_i_base_vect_type), intent(inout) :: y + integer(psb_ipk_), intent (in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + + select type(xx => x) + type is (psb_i_base_vect_type) + call psb_geaxpby(m,alpha,x%v,beta,y%v,info) + class default + call y%axpby(m,alpha,x%v,beta,info) + end select + + end subroutine i_base_axpby_v + + subroutine i_base_axpby_a(m,alpha, x, beta, y, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + integer(psb_ipk_), intent(in) :: x(:) + class(psb_i_base_vect_type), intent(inout) :: y + integer(psb_ipk_), intent (in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + + call psb_geaxpby(m,alpha,x,beta,y%v,info) + + end subroutine i_base_axpby_a + + + ! + ! Multiple variants of two operations: + ! Simple multiplication Y(:) = X(:)*Y(:) + ! blas-like: Z(:) = alpha*X(:)*Y(:)+beta*Z(:) + ! + ! Variants expanded according to the dynamic type + ! of the involved entities + ! + + subroutine i_base_mlt_v(x, y, info) + use psi_serial_mod + implicit none + class(psb_i_base_vect_type), intent(inout) :: x + class(psb_i_base_vect_type), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + select type(xx => x) + type is (psb_i_base_vect_type) + n = min(size(y%v), size(xx%v)) + do i=1, n + y%v(i) = y%v(i)*xx%v(i) + end do + class default + call y%mlt(x%v,info) + end select + + end subroutine i_base_mlt_v + + subroutine i_base_mlt_a(x, y, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: x(:) + class(psb_i_base_vect_type), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + n = min(size(y%v), size(x)) + do i=1, n + y%v(i) = y%v(i)*x(i) + end do + + end subroutine i_base_mlt_a + + + subroutine i_base_mlt_a_2(alpha,x,y,beta,z,info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: alpha,beta + integer(psb_ipk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: x(:) + class(psb_i_base_vect_type), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + n = min(size(z%v), size(x), size(y)) +!!$ write(0,*) 'Mlt_a_2: ',n + if (alpha == izero) then + if (beta == ione) then + return + else + do i=1, n + z%v(i) = beta*z%v(i) + end do + end if + else + if (alpha == ione) then + if (beta == izero) then + do i=1, n + z%v(i) = y(i)*x(i) + end do + else if (beta == ione) then + do i=1, n + z%v(i) = z%v(i) + y(i)*x(i) + end do + else + do i=1, n + z%v(i) = beta*z%v(i) + y(i)*x(i) + end do + end if + else if (alpha == -ione) then + if (beta == izero) then + do i=1, n + z%v(i) = -y(i)*x(i) + end do + else if (beta == ione) then + do i=1, n + z%v(i) = z%v(i) - y(i)*x(i) + end do + else + do i=1, n + z%v(i) = beta*z%v(i) - y(i)*x(i) + end do + end if + else + if (beta == izero) then + do i=1, n + z%v(i) = alpha*y(i)*x(i) + end do + else if (beta == ione) then + do i=1, n + z%v(i) = z%v(i) + alpha*y(i)*x(i) + end do + else + do i=1, n + z%v(i) = beta*z%v(i) + alpha*y(i)*x(i) + end do + end if + end if + end if + end subroutine i_base_mlt_a_2 + + subroutine i_base_mlt_v_2(alpha,x,y,beta,z,info,conjgx,conjgy) + use psi_serial_mod + use psb_string_mod + implicit none + integer(psb_ipk_), intent(in) :: alpha,beta + class(psb_i_base_vect_type), intent(inout) :: x + class(psb_i_base_vect_type), intent(inout) :: y + class(psb_i_base_vect_type), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + integer(psb_ipk_) :: i, n + logical :: conjgx_, conjgy_ + + info = 0 + if (.not.psb_i_is_complex_) then + call z%mlt(alpha,x%v,y%v,beta,info) + else + conjgx_=.false. + if (present(conjgx)) conjgx_ = (psb_toupper(conjgx)=='C') + conjgy_=.false. + if (present(conjgy)) conjgy_ = (psb_toupper(conjgy)=='C') + if (conjgx_) x%v=(x%v) + if (conjgy_) y%v=(y%v) + call z%mlt(alpha,x%v,y%v,beta,info) + if (conjgx_) x%v=(x%v) + if (conjgy_) y%v=(y%v) + end if + end subroutine i_base_mlt_v_2 + + subroutine i_base_mlt_av(alpha,x,y,beta,z,info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: alpha,beta + integer(psb_ipk_), intent(in) :: x(:) + class(psb_i_base_vect_type), intent(inout) :: y + class(psb_i_base_vect_type), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + + call z%mlt(alpha,x,y%v,beta,info) + + end subroutine i_base_mlt_av + + subroutine i_base_mlt_va(alpha,x,y,beta,z,info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: alpha,beta + integer(psb_ipk_), intent(in) :: y(:) + class(psb_i_base_vect_type), intent(inout) :: x + class(psb_i_base_vect_type), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + + call z%mlt(alpha,y,x,beta,info) + + end subroutine i_base_mlt_va + + + ! + ! Simple scaling + ! + + subroutine i_base_scal(alpha, x) + use psi_serial_mod + implicit none + class(psb_i_base_vect_type), intent(inout) :: x + integer(psb_ipk_), intent (in) :: alpha + + if (allocated(x%v)) x%v = alpha*x%v + + end subroutine i_base_scal + + ! + ! Norms 1, 2 and infinity + ! + + function i_base_nrm2(n,x) result(res) + implicit none + class(psb_i_base_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_) :: res + integer(psb_ipk_), external :: inrm2 + + res = inrm2(n,x%v,1) + + end function i_base_nrm2 + + function i_base_amax(n,x) result(res) + implicit none + class(psb_i_base_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_) :: res + + res = maxval(abs(x%v(1:n))) + + end function i_base_amax + + function i_base_asum(n,x) result(res) + implicit none + class(psb_i_base_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_) :: res + + res = sum(abs(x%v(1:n))) + + end function i_base_asum + + + ! + ! Gather: Y = beta * Y + alpha * X(IDX(:)) + ! + + subroutine i_base_gthab(n,idx,alpha,x,beta,y) + use psi_serial_mod + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: alpha, beta, y(:) + class(psb_i_base_vect_type) :: x + + call x%sync() + call psi_gth(n,idx,alpha,x%v,beta,y) + + end subroutine i_base_gthab + ! + ! shortcut alpha=1 beta=0 + ! + subroutine i_base_gthzv(n,idx,x,y) + use psi_serial_mod + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: y(:) + class(psb_i_base_vect_type) :: x + + call x%sync() + call psi_gth(n,idx,x%v,y) + + end subroutine i_base_gthzv + + ! + ! Scatter: + ! Y(IDX(:)) = beta*Y(IDX(:)) + X(:) + ! + + subroutine i_base_sctb(n,idx,x,beta,y) + use psi_serial_mod + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: beta, x(:) + class(psb_i_base_vect_type) :: y + + call y%sync() + call psi_sct(n,idx,x,beta,y%v) + call y%set_host() + + end subroutine i_base_sctb + +end module psb_i_base_vect_mod diff --git a/base/modules/psb_i_comm_mod.f90 b/base/modules/psb_i_comm_mod.f90 index 5ed30a0e..92b96820 100644 --- a/base/modules/psb_i_comm_mod.f90 +++ b/base/modules/psb_i_comm_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -34,82 +34,122 @@ module psb_i_comm_mod interface psb_ovrl subroutine psb_iovrlm(x,desc_a,info,jx,ik,work,update,mode) use psb_descriptor_type - integer(psb_ipk_), intent(inout), target :: x(:,:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,jx,ik,mode + integer(psb_ipk_), intent(inout), target :: x(:,:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(inout), optional, target :: work(:) + integer(psb_ipk_), intent(in), optional :: update,jx,ik,mode end subroutine psb_iovrlm subroutine psb_iovrlv(x,desc_a,info,work,update,mode) use psb_descriptor_type - integer(psb_ipk_), intent(inout), target :: x(:) + integer(psb_ipk_), intent(inout), target :: x(:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(inout), optional, target :: work(:) + integer(psb_ipk_), intent(in), optional :: update,mode + end subroutine psb_iovrlv + subroutine psb_iovrl_vect(x,desc_a,info,work,update,mode) + use psb_descriptor_type + use psb_i_vect_mod + type(psb_i_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(inout), optional, target :: work(:) integer(psb_ipk_), intent(in), optional :: update,mode - end subroutine psb_iovrlv - end interface + end subroutine psb_iovrl_vect + end interface psb_ovrl interface psb_halo subroutine psb_ihalom(x,desc_a,info,alpha,jx,ik,work,tran,mode,data) use psb_descriptor_type - integer(psb_ipk_), intent(inout), target :: x(:,:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), intent(in), optional :: alpha - integer(psb_ipk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,jx,ik,data - character, intent(in), optional :: tran + integer(psb_ipk_), intent(inout), target :: x(:,:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: alpha + integer(psb_ipk_), target, optional, intent(inout) :: work(:) + integer(psb_ipk_), intent(in), optional :: mode,jx,ik,data + character, intent(in), optional :: tran end subroutine psb_ihalom subroutine psb_ihalov(x,desc_a,info,alpha,work,tran,mode,data) use psb_descriptor_type - integer(psb_ipk_), intent(inout) :: x(:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), intent(in), optional :: alpha - integer(psb_ipk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + integer(psb_ipk_), intent(inout) :: x(:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: alpha + integer(psb_ipk_), target, optional, intent(inout) :: work(:) + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran end subroutine psb_ihalov - end interface + subroutine psb_ihalo_vect(x,desc_a,info,alpha,work,tran,mode,data) + use psb_descriptor_type + use psb_i_vect_mod + type(psb_i_vect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: alpha + integer(psb_ipk_), target, optional, intent(inout) :: work(:) + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran + end subroutine psb_ihalo_vect + end interface psb_halo interface psb_scatter subroutine psb_iscatterm(globx, locx, desc_a, info, root) use psb_descriptor_type - integer(psb_ipk_), intent(out) :: locx(:,:) - integer(psb_ipk_), intent(in) :: globx(:,:) + integer(psb_ipk_), intent(out) :: locx(:,:) + integer(psb_ipk_), intent(in) :: globx(:,:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root end subroutine psb_iscatterm subroutine psb_iscatterv(globx, locx, desc_a, info, root) use psb_descriptor_type - integer(psb_ipk_), intent(out) :: locx(:) - integer(psb_ipk_), intent(in) :: globx(:) + integer(psb_ipk_), intent(out) :: locx(:) + integer(psb_ipk_), intent(in) :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root end subroutine psb_iscatterv - end interface + end interface psb_scatter interface psb_gather - subroutine psb_igatherm(globx, locx, desc_a, info, root) +!!$ subroutine psb_isp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keeploc) +! !$ use psb_descriptor_type +! !$ use psb_mat_mod +! !$ implicit none +! !$ type(psb_ispmat_type), intent(inout) :: loca +! !$ type(psb_ispmat_type), intent(out) :: globa +! !$ type(psb_desc_type), intent(in) :: desc_a +! !$ integer(psb_ipk_), intent(out) :: info +! !$ integer(psb_ipk_), intent(in), optional :: root,dupl +! !$ logical, intent(in), optional :: keepnum,keeploc +! !$ end subroutine psb_isp_allgather + subroutine psb_igatherm(globx, locx, desc_a, info, root) use psb_descriptor_type - integer(psb_ipk_), intent(in) :: locx(:,:) - integer(psb_ipk_), intent(out) :: globx(:,:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), intent(in), optional :: root + integer(psb_ipk_), intent(in) :: locx(:,:) + integer(psb_ipk_), intent(out), allocatable :: globx(:,:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: root end subroutine psb_igatherm subroutine psb_igatherv(globx, locx, desc_a, info, root) use psb_descriptor_type - integer(psb_ipk_), intent(in) :: locx(:) - integer(psb_ipk_), intent(out) :: globx(:) + integer(psb_ipk_), intent(in) :: locx(:) + integer(psb_ipk_), intent(out), allocatable :: globx(:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: root + end subroutine psb_igatherv + subroutine psb_igather_vect(globx, locx, desc_a, info, root) + use psb_descriptor_type + use psb_i_vect_mod + type(psb_i_vect_type), intent(inout) :: locx + integer(psb_ipk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root - end subroutine psb_igatherv - end interface - + end subroutine psb_igather_vect + end interface psb_gather + end module psb_i_comm_mod diff --git a/base/modules/psb_base_tools_mod.f90 b/base/modules/psb_i_tools_mod.f90 similarity index 63% rename from base/modules/psb_base_tools_mod.f90 rename to base/modules/psb_i_tools_mod.f90 index 939acf12..0bc878c5 100644 --- a/base/modules/psb_base_tools_mod.f90 +++ b/base/modules/psb_i_tools_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -29,9 +29,9 @@ !!$ POSSIBILITY OF SUCH DAMAGE. !!$ !!$ -module psb_iv_tools_mod - use psb_const_mod - use psb_descriptor_type +module psb_i_tools_mod + use psb_descriptor_type, only : psb_desc_type, psb_ipk_, psb_success_ + use psb_i_vect_mod, only : psb_i_base_vect_type, psb_i_vect_type interface psb_geall @@ -49,6 +49,14 @@ module psb_iv_tools_mod integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: n end subroutine psb_iallocv + subroutine psb_ialloc_vect(x, desc_a,info,n) + import :: psb_desc_type, psb_ipk_, & + & psb_i_base_vect_type, psb_i_vect_type + type(psb_i_vect_type), intent(out) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), optional, intent(in) :: n + end subroutine psb_ialloc_vect end interface @@ -65,6 +73,15 @@ module psb_iv_tools_mod integer(psb_ipk_), allocatable, intent(inout) :: x(:) integer(psb_ipk_), intent(out) :: info end subroutine psb_iasbv + subroutine psb_iasb_vect(x, desc_a, info,mold, scratch) + import :: psb_desc_type, psb_ipk_, & + & psb_i_base_vect_type, psb_i_vect_type + type(psb_desc_type), intent(in) :: desc_a + type(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + class(psb_i_base_vect_type), intent(in), optional :: mold + logical, intent(in), optional :: scratch + end subroutine psb_iasb_vect end interface @@ -81,10 +98,17 @@ module psb_iv_tools_mod type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info end subroutine psb_ifreev + subroutine psb_ifree_vect(x, desc_a, info) + import :: psb_desc_type, psb_ipk_, & + & psb_i_base_vect_type, psb_i_vect_type + type(psb_desc_type), intent(in) :: desc_a + type(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + end subroutine psb_ifree_vect end interface interface psb_geins - subroutine psb_iinsi(m,irw,val, x,desc_a,info,dupl) + subroutine psb_iinsi(m,irw,val, x,desc_a,info,dupl,local) import :: psb_ipk_, psb_desc_type integer(psb_ipk_), intent(in) :: m type(psb_desc_type), intent(in) :: desc_a @@ -93,8 +117,9 @@ module psb_iv_tools_mod integer(psb_ipk_), intent(in) :: val(:,:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_iinsi - subroutine psb_iinsvi(m, irw,val, x,desc_a,info,dupl) + subroutine psb_iinsvi(m, irw,val, x,desc_a,info,dupl,local) import :: psb_ipk_, psb_desc_type integer(psb_ipk_), intent(in) :: m type(psb_desc_type), intent(in) :: desc_a @@ -103,7 +128,20 @@ module psb_iv_tools_mod integer(psb_ipk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_iinsvi + subroutine psb_iins_vect(m,irw,val,x,desc_a,info,dupl,local) + import :: psb_desc_type, psb_ipk_, & + & psb_i_base_vect_type, psb_i_vect_type + integer(psb_ipk_), intent(in) :: m + type(psb_desc_type), intent(in) :: desc_a + type(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: irw(:) + integer(psb_ipk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local + end subroutine psb_iins_vect end interface @@ -289,199 +327,5 @@ contains res = (lx>0) end subroutine psb_local_index_v -end module psb_iv_tools_mod - -module psb_cd_if_tools_mod - - use psb_const_mod - use psb_descriptor_type - use psb_gen_block_map_mod - use psb_list_map_mod - use psb_glist_map_mod - use psb_hash_map_mod - use psb_repl_map_mod - - interface psb_cd_set_bld - subroutine psb_cd_set_bld(desc,info) - import :: psb_ipk_, psb_desc_type - type(psb_desc_type), intent(inout) :: desc - integer(psb_ipk_) :: info - end subroutine psb_cd_set_bld - end interface - - interface psb_cd_set_ovl_bld - subroutine psb_cd_set_ovl_bld(desc,info) - import :: psb_ipk_, psb_desc_type - type(psb_desc_type), intent(inout) :: desc - integer(psb_ipk_) :: info - end subroutine psb_cd_set_ovl_bld - end interface - - interface psb_cd_reinit - Subroutine psb_cd_reinit(desc,info) - import :: psb_ipk_, psb_desc_type - Implicit None - - ! .. Array Arguments .. - Type(psb_desc_type), Intent(inout) :: desc - integer(psb_ipk_), intent(out) :: info - end Subroutine psb_cd_reinit - end interface - - interface psb_cdcpy - subroutine psb_cdcpy(desc_in, desc_out, info) - import :: psb_ipk_, psb_desc_type - - implicit none - !....parameters... - - type(psb_desc_type), intent(in) :: desc_in - type(psb_desc_type), intent(out) :: desc_out - integer(psb_ipk_), intent(out) :: info - end subroutine psb_cdcpy - end interface - - - interface psb_cdprt - subroutine psb_cdprt(iout,desc_p,glob,short) - import :: psb_ipk_, psb_desc_type - implicit none - type(psb_desc_type), intent(in) :: desc_p - integer(psb_ipk_), intent(in) :: iout - logical, intent(in), optional :: glob,short - end subroutine psb_cdprt - end interface - - interface psb_cdins - subroutine psb_cdinsrc(nz,ia,ja,desc_a,info,ila,jla) - import :: psb_ipk_, psb_desc_type - type(psb_desc_type), intent(inout) :: desc_a - integer(psb_ipk_), intent(in) :: nz,ia(:),ja(:) - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), optional, intent(out) :: ila(:), jla(:) - end subroutine psb_cdinsrc - subroutine psb_cdinsc(nz,ja,desc,info,jla,mask) - import :: psb_ipk_, psb_desc_type - type(psb_desc_type), intent(inout) :: desc - integer(psb_ipk_), intent(in) :: nz,ja(:) - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), optional, intent(out) :: jla(:) - logical, optional, target, intent(in) :: mask(:) - end subroutine psb_cdinsc - end interface - - interface psb_cdbldext - Subroutine psb_cd_lstext(desc_a,in_list,desc_ov,info, mask,extype) - import :: psb_ipk_, psb_desc_type - Implicit None - Type(psb_desc_type), Intent(in), target :: desc_a - integer(psb_ipk_), intent(in) :: in_list(:) - Type(psb_desc_type), Intent(out) :: desc_ov - integer(psb_ipk_), intent(out) :: info - logical, intent(in), optional, target :: mask(:) - integer(psb_ipk_), intent(in),optional :: extype - end Subroutine psb_cd_lstext - end interface - - - interface psb_cdren - subroutine psb_cdren(trans,iperm,desc_a,info) - import :: psb_ipk_, psb_desc_type - type(psb_desc_type), intent(inout) :: desc_a - integer(psb_ipk_), intent(inout) :: iperm(:) - character, intent(in) :: trans - integer(psb_ipk_), intent(out) :: info - end subroutine psb_cdren - end interface - - interface psb_get_overlap - subroutine psb_get_ovrlap(ovrel,desc,info) - import :: psb_ipk_, psb_desc_type - implicit none - integer(psb_ipk_), allocatable, intent(out) :: ovrel(:) - type(psb_desc_type), intent(in) :: desc - integer(psb_ipk_), intent(out) :: info - end subroutine psb_get_ovrlap - end interface - - interface psb_icdasb - subroutine psb_icdasb(desc,info,ext_hv) - import :: psb_ipk_, psb_desc_type - Type(psb_desc_type), intent(inout) :: desc - integer(psb_ipk_), intent(out) :: info - logical, intent(in),optional :: ext_hv - end subroutine psb_icdasb - end interface +end module psb_i_tools_mod -end module psb_cd_if_tools_mod - -module psb_cd_tools_mod - - use psb_const_mod - use psb_cd_if_tools_mod - - interface psb_cdall - - subroutine psb_cdall(ictxt, desc, info,mg,ng,parts,vg,vl,flag,nl,repl, globalcheck) - import :: psb_ipk_, psb_desc_type, psb_parts - implicit None - procedure(psb_parts) :: parts - integer(psb_ipk_), intent(in) :: mg,ng,ictxt, vg(:), vl(:),nl - integer(psb_ipk_), intent(in) :: flag - logical, intent(in) :: repl, globalcheck - integer(psb_ipk_), intent(out) :: info - type(psb_desc_type), intent(out) :: desc - - optional :: mg,ng,parts,vg,vl,flag,nl,repl, globalcheck - end subroutine psb_cdall - - end interface - - interface psb_cdasb - module procedure psb_cdasb - end interface - - interface psb_get_boundary - module procedure psb_get_boundary - end interface - - interface - subroutine psb_cd_switch_ovl_indxmap(desc,info) - import :: psb_ipk_, psb_desc_type - implicit None - include 'parts.fh' - type(psb_desc_type), intent(inout) :: desc - integer(psb_ipk_), intent(out) :: info - end subroutine psb_cd_switch_ovl_indxmap - end interface - -contains - - subroutine psb_get_boundary(bndel,desc,info) - use psi_mod, only : psi_crea_bnd_elem - implicit none - integer(psb_ipk_), allocatable, intent(out) :: bndel(:) - type(psb_desc_type), intent(in) :: desc - integer(psb_ipk_), intent(out) :: info - - call psi_crea_bnd_elem(bndel,desc,info) - - end subroutine psb_get_boundary - - subroutine psb_cdasb(desc,info) - - Type(psb_desc_type), intent(inout) :: desc - integer(psb_ipk_), intent(out) :: info - - call psb_icdasb(desc,info,ext_hv=.false.) - end subroutine psb_cdasb - -end module psb_cd_tools_mod - - -module psb_base_tools_mod - use psb_iv_tools_mod - use psb_cd_tools_mod - -end module psb_base_tools_mod - diff --git a/base/modules/psb_i_vect_mod.F90 b/base/modules/psb_i_vect_mod.F90 new file mode 100644 index 00000000..885af03e --- /dev/null +++ b/base/modules/psb_i_vect_mod.F90 @@ -0,0 +1,558 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +! +! package: psb_i_vect_mod +! +! This module contains the definition of the psb_i_vect type which +! is the outer container for dense vectors. +! Therefore all methods simply invoke the corresponding methods of the +! inner component. +! +module psb_i_vect_mod + + use psb_i_base_vect_mod + + type psb_i_vect_type + class(psb_i_base_vect_type), allocatable :: v + contains + procedure, pass(x) :: get_nrows => i_vect_get_nrows + procedure, pass(x) :: sizeof => i_vect_sizeof + procedure, pass(x) :: dot_v => i_vect_dot_v + procedure, pass(x) :: dot_a => i_vect_dot_a + generic, public :: dot => dot_v, dot_a + procedure, pass(y) :: axpby_v => i_vect_axpby_v + procedure, pass(y) :: axpby_a => i_vect_axpby_a + generic, public :: axpby => axpby_v, axpby_a + procedure, pass(y) :: mlt_v => i_vect_mlt_v + procedure, pass(y) :: mlt_a => i_vect_mlt_a + procedure, pass(z) :: mlt_a_2 => i_vect_mlt_a_2 + procedure, pass(z) :: mlt_v_2 => i_vect_mlt_v_2 + procedure, pass(z) :: mlt_va => i_vect_mlt_va + procedure, pass(z) :: mlt_av => i_vect_mlt_av + generic, public :: mlt => mlt_v, mlt_a, mlt_a_2,& + & mlt_v_2, mlt_av, mlt_va + procedure, pass(x) :: scal => i_vect_scal + procedure, pass(x) :: nrm2 => i_vect_nrm2 + procedure, pass(x) :: amax => i_vect_amax + procedure, pass(x) :: asum => i_vect_asum + procedure, pass(x) :: all => i_vect_all + procedure, pass(x) :: zero => i_vect_zero + procedure, pass(x) :: asb => i_vect_asb + procedure, pass(x) :: sync => i_vect_sync + procedure, pass(x) :: gthab => i_vect_gthab + procedure, pass(x) :: gthzv => i_vect_gthzv + generic, public :: gth => gthab, gthzv + procedure, pass(y) :: sctb => i_vect_sctb + generic, public :: sct => sctb + procedure, pass(x) :: free => i_vect_free + procedure, pass(x) :: ins => i_vect_ins + procedure, pass(x) :: bld_x => i_vect_bld_x + procedure, pass(x) :: bld_n => i_vect_bld_n + generic, public :: bld => bld_x, bld_n + procedure, pass(x) :: get_vect => i_vect_get_vect + procedure, pass(x) :: cnv => i_vect_cnv + procedure, pass(x) :: set_scal => i_vect_set_scal + procedure, pass(x) :: set_vect => i_vect_set_vect + generic, public :: set => set_vect, set_scal + end type psb_i_vect_type + + public :: psb_i_vect + private :: constructor, size_const + interface psb_i_vect + module procedure constructor, size_const + end interface psb_i_vect + +contains + + subroutine i_vect_bld_x(x,invect,mold) + integer(psb_ipk_), intent(in) :: invect(:) + class(psb_i_vect_type), intent(out) :: x + class(psb_i_base_vect_type), intent(in), optional :: mold + integer(psb_ipk_) :: info + + if (present(mold)) then +#ifdef HAVE_MOLD + allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif + else + allocate(psb_i_base_vect_type :: x%v,stat=info) + endif + + if (info == psb_success_) call x%v%bld(invect) + + end subroutine i_vect_bld_x + + + subroutine i_vect_bld_n(x,n,mold) + integer(psb_ipk_), intent(in) :: n + class(psb_i_vect_type), intent(out) :: x + class(psb_i_base_vect_type), intent(in), optional :: mold + integer(psb_ipk_) :: info + + if (present(mold)) then +#ifdef HAVE_MOLD + allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif + else + allocate(psb_i_base_vect_type :: x%v,stat=info) + endif + if (info == psb_success_) call x%v%bld(n) + + end subroutine i_vect_bld_n + + function i_vect_get_vect(x) result(res) + class(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), allocatable :: res(:) + integer(psb_ipk_) :: info + + if (allocated(x%v)) then + res = x%v%get_vect() + end if + end function i_vect_get_vect + + subroutine i_vect_set_scal(x,val) + class(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: val + + integer(psb_ipk_) :: info + if (allocated(x%v)) call x%v%set(val) + + end subroutine i_vect_set_scal + + subroutine i_vect_set_vect(x,val) + class(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: val(:) + + integer(psb_ipk_) :: info + if (allocated(x%v)) call x%v%set(val) + + end subroutine i_vect_set_vect + + + function constructor(x) result(this) + integer(psb_ipk_) :: x(:) + type(psb_i_vect_type) :: this + integer(psb_ipk_) :: info + + allocate(psb_i_base_vect_type :: this%v, stat=info) + + if (info == 0) call this%v%bld(x) + + call this%asb(size(x,kind=psb_ipk_),info) + + end function constructor + + + function size_const(n) result(this) + integer(psb_ipk_), intent(in) :: n + type(psb_i_vect_type) :: this + integer(psb_ipk_) :: info + + allocate(psb_i_base_vect_type :: this%v, stat=info) + call this%asb(n,info) + + end function size_const + + function i_vect_get_nrows(x) result(res) + implicit none + class(psb_i_vect_type), intent(in) :: x + integer(psb_ipk_) :: res + res = 0 + if (allocated(x%v)) res = x%v%get_nrows() + end function i_vect_get_nrows + + function i_vect_sizeof(x) result(res) + implicit none + class(psb_i_vect_type), intent(in) :: x + integer(psb_long_int_k_) :: res + res = 0 + if (allocated(x%v)) res = x%v%sizeof() + end function i_vect_sizeof + + function i_vect_dot_v(n,x,y) result(res) + implicit none + class(psb_i_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_) :: res + + res = izero + if (allocated(x%v).and.allocated(y%v)) & + & res = x%v%dot(n,y%v) + + end function i_vect_dot_v + + function i_vect_dot_a(n,x,y) result(res) + implicit none + class(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_) :: res + + res = izero + if (allocated(x%v)) & + & res = x%v%dot(n,y) + + end function i_vect_dot_a + + subroutine i_vect_axpby_v(m,alpha, x, beta, y, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_i_vect_type), intent(inout) :: x + class(psb_i_vect_type), intent(inout) :: y + integer(psb_ipk_), intent (in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + + if (allocated(x%v).and.allocated(y%v)) then + call y%v%axpby(m,alpha,x%v,beta,info) + else + info = psb_err_invalid_vect_state_ + end if + + end subroutine i_vect_axpby_v + + subroutine i_vect_axpby_a(m,alpha, x, beta, y, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + integer(psb_ipk_), intent(in) :: x(:) + class(psb_i_vect_type), intent(inout) :: y + integer(psb_ipk_), intent (in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + + if (allocated(y%v)) & + & call y%v%axpby(m,alpha,x,beta,info) + + end subroutine i_vect_axpby_a + + + subroutine i_vect_mlt_v(x, y, info) + use psi_serial_mod + implicit none + class(psb_i_vect_type), intent(inout) :: x + class(psb_i_vect_type), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (allocated(x%v).and.allocated(y%v)) & + & call y%v%mlt(x%v,info) + + end subroutine i_vect_mlt_v + + subroutine i_vect_mlt_a(x, y, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: x(:) + class(psb_i_vect_type), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + + info = 0 + if (allocated(y%v)) & + & call y%v%mlt(x,info) + + end subroutine i_vect_mlt_a + + + subroutine i_vect_mlt_a_2(alpha,x,y,beta,z,info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: alpha,beta + integer(psb_ipk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: x(:) + class(psb_i_vect_type), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (allocated(z%v)) & + & call z%v%mlt(alpha,x,y,beta,info) + + end subroutine i_vect_mlt_a_2 + + subroutine i_vect_mlt_v_2(alpha,x,y,beta,z,info,conjgx,conjgy) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: alpha,beta + class(psb_i_vect_type), intent(inout) :: x + class(psb_i_vect_type), intent(inout) :: y + class(psb_i_vect_type), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + + integer(psb_ipk_) :: i, n + + info = 0 + if (allocated(x%v).and.allocated(y%v).and.& + & allocated(z%v)) & + & call z%v%mlt(alpha,x%v,y%v,beta,info,conjgx,conjgy) + + end subroutine i_vect_mlt_v_2 + + subroutine i_vect_mlt_av(alpha,x,y,beta,z,info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: alpha,beta + integer(psb_ipk_), intent(in) :: x(:) + class(psb_i_vect_type), intent(inout) :: y + class(psb_i_vect_type), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (allocated(z%v).and.allocated(y%v)) & + & call z%v%mlt(alpha,x,y%v,beta,info) + + end subroutine i_vect_mlt_av + + subroutine i_vect_mlt_va(alpha,x,y,beta,z,info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: alpha,beta + integer(psb_ipk_), intent(in) :: y(:) + class(psb_i_vect_type), intent(inout) :: x + class(psb_i_vect_type), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + + if (allocated(z%v).and.allocated(x%v)) & + & call z%v%mlt(alpha,x%v,y,beta,info) + + end subroutine i_vect_mlt_va + + subroutine i_vect_scal(alpha, x) + use psi_serial_mod + implicit none + class(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent (in) :: alpha + + if (allocated(x%v)) call x%v%scal(alpha) + + end subroutine i_vect_scal + + + function i_vect_nrm2(n,x) result(res) + implicit none + class(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_) :: res + + if (allocated(x%v)) then + res = x%v%nrm2(n) + else + res = izero + end if + + end function i_vect_nrm2 + + function i_vect_amax(n,x) result(res) + implicit none + class(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_) :: res + + if (allocated(x%v)) then + res = x%v%amax(n) + else + res = izero + end if + + end function i_vect_amax + + function i_vect_asum(n,x) result(res) + implicit none + class(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_) :: res + + if (allocated(x%v)) then + res = x%v%asum(n) + else + res = izero + end if + + end function i_vect_asum + + subroutine i_vect_all(n, x, info, mold) + + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_i_vect_type), intent(out) :: x + class(psb_i_base_vect_type), intent(in), optional :: mold + integer(psb_ipk_), intent(out) :: info + + if (present(mold)) then +#ifdef HAVE_MOLD + allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif + else + allocate(psb_i_base_vect_type :: x%v,stat=info) + endif + if (info == 0) then + call x%v%all(n,info) + else + info = psb_err_alloc_dealloc_ + end if + + end subroutine i_vect_all + + subroutine i_vect_zero(x) + use psi_serial_mod + implicit none + class(psb_i_vect_type), intent(inout) :: x + + if (allocated(x%v)) call x%v%zero() + + end subroutine i_vect_zero + + subroutine i_vect_asb(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + if (allocated(x%v)) & + & call x%v%asb(n,info) + + end subroutine i_vect_asb + + subroutine i_vect_sync(x) + implicit none + class(psb_i_vect_type), intent(inout) :: x + + if (allocated(x%v)) & + & call x%v%sync() + + end subroutine i_vect_sync + + subroutine i_vect_gthab(n,idx,alpha,x,beta,y) + use psi_serial_mod + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: alpha, beta, y(:) + class(psb_i_vect_type) :: x + + if (allocated(x%v)) & + & call x%v%gth(n,idx,alpha,beta,y) + + end subroutine i_vect_gthab + + subroutine i_vect_gthzv(n,idx,x,y) + use psi_serial_mod + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: y(:) + class(psb_i_vect_type) :: x + + if (allocated(x%v)) & + & call x%v%gth(n,idx,y) + + end subroutine i_vect_gthzv + + subroutine i_vect_sctb(n,idx,x,beta,y) + use psi_serial_mod + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: beta, x(:) + class(psb_i_vect_type) :: y + + if (allocated(y%v)) & + & call y%v%sct(n,idx,x,beta) + + end subroutine i_vect_sctb + + subroutine i_vect_free(x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + class(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (allocated(x%v)) then + call x%v%free(info) + if (info == 0) deallocate(x%v,stat=info) + end if + + end subroutine i_vect_free + + subroutine i_vect_ins(n,irl,val,dupl,x,info) + use psi_serial_mod + implicit none + class(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + integer(psb_ipk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + return + end if + + call x%v%ins(n,irl,val,dupl,info) + + end subroutine i_vect_ins + + + subroutine i_vect_cnv(x,mold) + class(psb_i_vect_type), intent(inout) :: x + class(psb_i_base_vect_type), intent(in) :: mold + class(psb_i_base_vect_type), allocatable :: tmp + integer(psb_ipk_), allocatable :: invect(:) + integer(psb_ipk_) :: info + +#ifdef HAVE_MOLD + allocate(tmp,stat=info,mold=mold) +#else + call mold%mold(tmp,info) +#endif + call x%v%sync() + if (info == psb_success_) call tmp%bld(x%v%v) + call x%v%free(info) + call move_alloc(tmp,x%v) + + end subroutine i_vect_cnv + +end module psb_i_vect_mod diff --git a/base/modules/psb_indx_map_mod.f90 b/base/modules/psb_indx_map_mod.f90 index 06fdb588..9f5a8773 100644 --- a/base/modules/psb_indx_map_mod.f90 +++ b/base/modules/psb_indx_map_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -163,20 +163,22 @@ module psb_indx_map_mod procedure, pass(idxmap) :: l2gs2 => base_l2gs2 procedure, pass(idxmap) :: l2gv1 => base_l2gv1 procedure, pass(idxmap) :: l2gv2 => base_l2gv2 - generic, public :: l2g => l2gs1, l2gs2, l2gv1, l2gv2 + generic, public :: l2g => l2gs2, l2gv2 + generic, public :: l2gip => l2gs1, l2gv1 procedure, pass(idxmap) :: g2ls1 => base_g2ls1 procedure, pass(idxmap) :: g2ls2 => base_g2ls2 procedure, pass(idxmap) :: g2lv1 => base_g2lv1 procedure, pass(idxmap) :: g2lv2 => base_g2lv2 - generic, public :: g2l => g2ls1, g2ls2, g2lv1, g2lv2 + generic, public :: g2l => g2ls2, g2lv2 + generic, public :: g2lip => g2ls1, g2lv1 procedure, pass(idxmap) :: g2ls1_ins => base_g2ls1_ins procedure, pass(idxmap) :: g2ls2_ins => base_g2ls2_ins procedure, pass(idxmap) :: g2lv1_ins => base_g2lv1_ins procedure, pass(idxmap) :: g2lv2_ins => base_g2lv2_ins - generic, public :: g2l_ins => g2ls1_ins, g2ls2_ins,& - & g2lv1_ins, g2lv2_ins + generic, public :: g2l_ins => g2ls2_ins, g2lv2_ins + generic, public :: g2lip_ins => g2ls1_ins, g2lv1_ins procedure, pass(idxmap) :: fnd_owner => psb_indx_map_fnd_owner procedure, pass(idxmap) :: init_vl => base_init_vl @@ -659,13 +661,14 @@ contains - subroutine base_g2ls1_ins(idx,idxmap,info,mask) + subroutine base_g2ls1_ins(idx,idxmap,info,mask, lidx) use psb_error_mod implicit none class(psb_indx_map), intent(inout) :: idxmap integer(psb_ipk_), intent(inout) :: idx integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask + integer(psb_ipk_), intent(in), optional :: lidx integer(psb_ipk_) :: err_act character(len=20) :: name='base_g2l_ins' logical, parameter :: debug=.false. @@ -684,7 +687,7 @@ contains end subroutine base_g2ls1_ins - subroutine base_g2ls2_ins(idxin,idxout,idxmap,info,mask) + subroutine base_g2ls2_ins(idxin,idxout,idxmap,info,mask, lidx) use psb_error_mod implicit none class(psb_indx_map), intent(inout) :: idxmap @@ -692,6 +695,7 @@ contains integer(psb_ipk_), intent(out) :: idxout integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask + integer(psb_ipk_), intent(in), optional :: lidx integer(psb_ipk_) :: err_act character(len=20) :: name='base_g2l_ins' @@ -712,13 +716,14 @@ contains end subroutine base_g2ls2_ins - subroutine base_g2lv1_ins(idx,idxmap,info,mask) + subroutine base_g2lv1_ins(idx,idxmap,info,mask, lidx) use psb_error_mod implicit none class(psb_indx_map), intent(inout) :: idxmap integer(psb_ipk_), intent(inout) :: idx(:) integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask(:) + integer(psb_ipk_), intent(in), optional :: lidx(:) integer(psb_ipk_) :: err_act character(len=20) :: name='base_g2l_ins' @@ -738,7 +743,7 @@ contains end subroutine base_g2lv1_ins - subroutine base_g2lv2_ins(idxin,idxout,idxmap,info,mask) + subroutine base_g2lv2_ins(idxin,idxout,idxmap,info,mask,lidx) use psb_error_mod implicit none class(psb_indx_map), intent(inout) :: idxmap @@ -746,6 +751,8 @@ contains integer(psb_ipk_), intent(out) :: idxout(:) integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask(:) + integer(psb_ipk_), intent(in), optional :: lidx(:) + integer(psb_ipk_) :: err_act character(len=20) :: name='base_g2l_ins' logical, parameter :: debug=.false. diff --git a/base/modules/psb_ip_reord_mod.f90 b/base/modules/psb_ip_reord_mod.f90 index 74787345..9722689e 100644 --- a/base/modules/psb_ip_reord_mod.f90 +++ b/base/modules/psb_ip_reord_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_linmap_mod.f90 b/base/modules/psb_linmap_mod.f90 index 5bb14538..4f4c3b9f 100644 --- a/base/modules/psb_linmap_mod.f90 +++ b/base/modules/psb_linmap_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -38,8 +38,6 @@ module psb_linmap_mod use psb_const_mod -!!$ use psb_descriptor_type -!!$ use psb_linmap_type_mod use psb_s_linmap_mod use psb_d_linmap_mod use psb_c_linmap_mod diff --git a/base/modules/psb_list_map_mod.f90 b/base/modules/psb_list_map_mod.f90 index 8074af8d..edbb07c8 100644 --- a/base/modules/psb_list_map_mod.f90 +++ b/base/modules/psb_list_map_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -133,7 +133,7 @@ contains end if idxv(1) = idx - call idxmap%l2g(idxv,info,owned=owned) + call idxmap%l2gip(idxv,info,owned=owned) idx = idxv(1) end subroutine list_l2gs1 @@ -148,7 +148,7 @@ contains logical, intent(in), optional :: owned idxout = idxin - call idxmap%l2g(idxout,info,mask,owned) + call idxmap%l2gip(idxout,info,mask,owned) end subroutine list_l2gs2 @@ -221,7 +221,7 @@ contains is = size(idxin) im = min(is,size(idxout)) idxout(1:im) = idxin(1:im) - call idxmap%l2g(idxout(1:im),info,mask,owned) + call idxmap%l2gip(idxout(1:im),info,mask,owned) if (is > im) info = -3 end subroutine list_l2gv2 @@ -242,7 +242,7 @@ contains end if idxv(1) = idx - call idxmap%g2l(idxv,info,owned=owned) + call idxmap%g2lip(idxv,info,owned=owned) idx = idxv(1) end subroutine list_g2ls1 @@ -257,7 +257,7 @@ contains logical, intent(in), optional :: owned idxout = idxin - call idxmap%g2l(idxout,info,mask,owned) + call idxmap%g2lip(idxout,info,mask,owned) end subroutine list_g2ls2 @@ -342,14 +342,14 @@ contains is = size(idxin) im = min(is,size(idxout)) idxout(1:im) = idxin(1:im) - call idxmap%g2l(idxout(1:im),info,mask,owned) + call idxmap%g2lip(idxout(1:im),info,mask,owned) if (is > im) info = -3 end subroutine list_g2lv2 - subroutine list_g2ls1_ins(idx,idxmap,info,mask) + subroutine list_g2ls1_ins(idx,idxmap,info,mask,lidx) use psb_realloc_mod use psb_sort_mod implicit none @@ -357,34 +357,42 @@ contains integer(psb_ipk_), intent(inout) :: idx integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask - - integer(psb_ipk_) :: idxv(1) + integer, intent(in), optional :: lidx + + integer(psb_ipk_) :: idxv(1), lidxv(1) info = 0 if (present(mask)) then if (.not.mask) return end if idxv(1) = idx - call idxmap%g2l_ins(idxv,info) + if (present(lidx)) then + lidxv(1) = lidx + call idxmap%g2lip_ins(idxv,info,lidx=lidxv) + else + call idxmap%g2lip_ins(idxv,info) + end if + idx = idxv(1) end subroutine list_g2ls1_ins - subroutine list_g2ls2_ins(idxin,idxout,idxmap,info,mask) + subroutine list_g2ls2_ins(idxin,idxout,idxmap,info,mask,lidx) implicit none class(psb_list_map), intent(inout) :: idxmap integer(psb_ipk_), intent(in) :: idxin integer(psb_ipk_), intent(out) :: idxout integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask - + integer, intent(in), optional :: lidx + idxout = idxin - call idxmap%g2l_ins(idxout,info,mask=mask) + call idxmap%g2lip_ins(idxout,info,mask=mask,lidx=lidx) end subroutine list_g2ls2_ins - subroutine list_g2lv1_ins(idx,idxmap,info,mask) + subroutine list_g2lv1_ins(idx,idxmap,info,mask,lidx) use psb_realloc_mod use psb_sort_mod implicit none @@ -392,7 +400,9 @@ contains integer(psb_ipk_), intent(inout) :: idx(:) integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask(:) - integer(psb_ipk_) :: i, is, ix + integer, intent(in), optional :: lidx(:) + + integer(psb_ipk_) :: i, is, ix, lix info = 0 is = size(idx) @@ -403,6 +413,12 @@ contains return end if end if + if (present(lidx)) then + if (size(lidx) < size(idx)) then + info = -1 + return + end if + end if if (idxmap%is_asb()) then @@ -412,50 +428,100 @@ contains else if (idxmap%is_valid()) then - if (present(mask)) then - do i=1, is - if (mask(i)) then + if (present(lidx)) then + if (present(mask)) then + do i=1, is + if (mask(i)) then + if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then + ix = idxmap%glob_to_loc(idx(i)) + if (ix < 0) then + ix = lidx(i) + call psb_ensure_size(ix,idxmap%loc_to_glob,info,addsz=laddsz) + if ((ix <= idxmap%local_rows).or.(info /= 0)) then + info = -4 + return + end if + idxmap%local_cols = max(ix,idxmap%local_cols) + idxmap%loc_to_glob(ix) = idx(i) + idxmap%glob_to_loc(idx(i)) = ix + end if + idx(i) = ix + else + idx(i) = -1 + end if + end if + end do + + else if (.not.present(mask)) then + + do i=1, is if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then ix = idxmap%glob_to_loc(idx(i)) if (ix < 0) then - ix = idxmap%local_cols + 1 + ix = lidx(i) call psb_ensure_size(ix,idxmap%loc_to_glob,info,addsz=laddsz) - if (info /= 0) then + if ((ix <= idxmap%local_rows).or.(info /= 0)) then info = -4 return end if - idxmap%local_cols = ix - idxmap%loc_to_glob(ix) = idx(i) + idxmap%local_cols = max(ix,idxmap%local_cols) + idxmap%loc_to_glob(ix) = idx(i) idxmap%glob_to_loc(idx(i)) = ix end if idx(i) = ix else idx(i) = -1 end if - end if - end do + end do + end if - else if (.not.present(mask)) then + else if (.not.present(lidx)) then + + if (present(mask)) then + do i=1, is + if (mask(i)) then + if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then + ix = idxmap%glob_to_loc(idx(i)) + if (ix < 0) then + ix = idxmap%local_cols + 1 + call psb_ensure_size(ix,idxmap%loc_to_glob,info,addsz=laddsz) + if (info /= 0) then + info = -4 + return + end if + idxmap%local_cols = ix + idxmap%loc_to_glob(ix) = idx(i) + idxmap%glob_to_loc(idx(i)) = ix + end if + idx(i) = ix + else + idx(i) = -1 + end if + end if + end do - do i=1, is - if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then - ix = idxmap%glob_to_loc(idx(i)) - if (ix < 0) then - ix = idxmap%local_cols + 1 - call psb_ensure_size(ix,idxmap%loc_to_glob,info,addsz=laddsz) - if (info /= 0) then - info = -4 - return + else if (.not.present(mask)) then + + do i=1, is + if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then + ix = idxmap%glob_to_loc(idx(i)) + if (ix < 0) then + ix = idxmap%local_cols + 1 + call psb_ensure_size(ix,idxmap%loc_to_glob,info,addsz=laddsz) + if (info /= 0) then + info = -4 + return + end if + idxmap%local_cols = ix + idxmap%loc_to_glob(ix) = idx(i) + idxmap%glob_to_loc(idx(i)) = ix end if - idxmap%local_cols = ix - idxmap%loc_to_glob(ix) = idx(i) - idxmap%glob_to_loc(idx(i)) = ix + idx(i) = ix + else + idx(i) = -1 end if - idx(i) = ix - else - idx(i) = -1 - end if - end do + end do + end if end if else @@ -465,83 +531,29 @@ contains end subroutine list_g2lv1_ins - subroutine list_g2lv2_ins(idxin,idxout,idxmap,info,mask) + subroutine list_g2lv2_ins(idxin,idxout,idxmap,info,mask,lidx) implicit none class(psb_list_map), intent(inout) :: idxmap integer(psb_ipk_), intent(in) :: idxin(:) integer(psb_ipk_), intent(out) :: idxout(:) integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask(:) + integer, intent(in), optional :: lidx(:) + integer(psb_ipk_) :: is, im is = size(idxin) im = min(is,size(idxout)) idxout(1:im) = idxin(1:im) - call idxmap%g2l_ins(idxout(1:im),info,mask) + call idxmap%g2lip_ins(idxout(1:im),info,mask=mask,lidx=lidx) if (is > im) info = -3 end subroutine list_g2lv2_ins -!!$ -!!$ subroutine list_initvg(idxmap,vg,ictxt,info) -!!$ use psb_penv_mod -!!$ use psb_error_mod -!!$ implicit none -!!$ class(psb_list_map), intent(inout) :: idxmap -!!$ integer(psb_ipk_), intent(in) :: ictxt, vg(:) -!!$ integer(psb_ipk_), intent(out) :: info -!!$ ! To be implemented -!!$ integer(psb_ipk_) :: iam, np, i, j, n, nl -!!$ -!!$ -!!$ info = 0 -!!$ call psb_info(ictxt,iam,np) -!!$ if (np < 0) then -!!$ write(psb_err_unit,*) 'Invalid ictxt:',ictxt -!!$ info = -1 -!!$ return -!!$ end if -!!$ n = size(vg) -!!$ -!!$ idxmap%global_rows = n -!!$ idxmap%global_cols = n -!!$ -!!$ allocate(idxmap%loc_to_glob(n),idxmap%glob_to_loc(n),& -!!$ & stat=info) -!!$ if (info /= 0) then -!!$ info = -2 -!!$ return -!!$ end if -!!$ -!!$ idxmap%ictxt = ictxt -!!$ idxmap%state = psb_desc_bld_ -!!$ call psb_get_mpicomm(ictxt,idxmap%mpic) -!!$ -!!$ nl = 0 -!!$ do i=1, n -!!$ if ((vg(i) > np-1).or.(vg(i) < 0)) then -!!$ info=psb_err_partfunc_wrong_pid_ -!!$ exit -!!$ end if -!!$ if (vg(i) == iam) then -!!$ ! this point belongs to me -!!$ nl = nl + 1 -!!$ idxmap%glob_to_loc(i) = nl -!!$ idxmap%loc_to_glob(nl) = i -!!$ else -!!$ idxmap%glob_to_loc(i) = -(np+vg(i)+1) -!!$ end if -!!$ end do -!!$ -!!$ call idxmap%set_lr(nl) -!!$ call idxmap%set_lc(nl) -!!$ -!!$ end subroutine list_initvg -!!$ - - subroutine list_initvl(idxmap,ictxt,vL,info) + + subroutine list_initvl(idxmap,ictxt,vl,info) use psb_penv_mod use psb_error_mod implicit none diff --git a/base/modules/psb_psblas_mod.f90 b/base/modules/psb_psblas_mod.f90 index b7ccdd36..5dca0df6 100644 --- a/base/modules/psb_psblas_mod.f90 +++ b/base/modules/psb_psblas_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_realloc_mod.F90 b/base/modules/psb_realloc_mod.F90 index ee6c5396..eb4efbc5 100644 --- a/base/modules/psb_realloc_mod.F90 +++ b/base/modules/psb_realloc_mod.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_repl_map_mod.f90 b/base/modules/psb_repl_map_mod.f90 index 7a646fd0..27f90b2f 100644 --- a/base/modules/psb_repl_map_mod.f90 +++ b/base/modules/psb_repl_map_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -117,7 +117,7 @@ contains end if idxv(1) = idx - call idxmap%l2g(idxv,info,owned=owned) + call idxmap%l2gip(idxv,info,owned=owned) idx = idxv(1) end subroutine repl_l2gs1 @@ -132,7 +132,7 @@ contains logical, intent(in), optional :: owned idxout = idxin - call idxmap%l2g(idxout,info,mask,owned) + call idxmap%l2gip(idxout,info,mask,owned) end subroutine repl_l2gs2 @@ -199,7 +199,7 @@ contains is = size(idxin) im = min(is,size(idxout)) idxout(1:im) = idxin(1:im) - call idxmap%l2g(idxout(1:im),info,mask,owned) + call idxmap%l2gip(idxout(1:im),info,mask,owned) if (is > im) info = -3 end subroutine repl_l2gv2 @@ -220,7 +220,7 @@ contains end if idxv(1) = idx - call idxmap%g2l(idxv,info,owned=owned) + call idxmap%g2lip(idxv,info,owned=owned) idx = idxv(1) end subroutine repl_g2ls1 @@ -235,7 +235,7 @@ contains logical, intent(in), optional :: owned idxout = idxin - call idxmap%g2l(idxout,info,mask,owned) + call idxmap%g2lip(idxout,info,mask,owned) end subroutine repl_g2ls2 @@ -335,14 +335,14 @@ contains is = size(idxin) im = min(is,size(idxout)) idxout(1:im) = idxin(1:im) - call idxmap%g2l(idxout(1:im),info,mask,owned) + call idxmap%g2lip(idxout(1:im),info,mask,owned) if (is > im) info = -3 end subroutine repl_g2lv2 - subroutine repl_g2ls1_ins(idx,idxmap,info,mask) + subroutine repl_g2ls1_ins(idx,idxmap,info,mask, lidx) use psb_realloc_mod use psb_sort_mod implicit none @@ -350,34 +350,41 @@ contains integer(psb_ipk_), intent(inout) :: idx integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask - - integer(psb_ipk_) :: idxv(1) + integer, intent(in), optional :: lidx + + integer(psb_ipk_) :: idxv(1),lidxv(1) info = 0 if (present(mask)) then if (.not.mask) return end if idxv(1) = idx - call idxmap%g2l_ins(idxv,info) + if (present(lidx)) then + lidxv(1) = lidx + call idxmap%g2lip_ins(idxv,info,lidx=lidxv) + else + call idxmap%g2lip_ins(idxv,info) + end if idx = idxv(1) end subroutine repl_g2ls1_ins - subroutine repl_g2ls2_ins(idxin,idxout,idxmap,info,mask) + subroutine repl_g2ls2_ins(idxin,idxout,idxmap,info,mask,lidx) implicit none class(psb_repl_map), intent(inout) :: idxmap integer(psb_ipk_), intent(in) :: idxin integer(psb_ipk_), intent(out) :: idxout integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask + integer, intent(in), optional :: lidx idxout = idxin - call idxmap%g2l_ins(idxout,info,mask=mask) + call idxmap%g2lip_ins(idxout,info,mask=mask,lidx=lidx) end subroutine repl_g2ls2_ins - subroutine repl_g2lv1_ins(idx,idxmap,info,mask) + subroutine repl_g2lv1_ins(idx,idxmap,info,mask,lidx) use psb_realloc_mod use psb_sort_mod implicit none @@ -385,6 +392,8 @@ contains integer(psb_ipk_), intent(inout) :: idx(:) integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask(:) + integer, intent(in), optional :: lidx(:) + integer(psb_ipk_) :: i, is info = 0 @@ -396,6 +405,12 @@ contains return end if end if + if (present(lidx)) then + if (size(lidx) < size(idx)) then + info = -1 + return + end if + end if if (idxmap%is_asb()) then @@ -404,29 +419,50 @@ contains info = -1 else if (idxmap%is_valid()) then + if (present(lidx)) then + if (present(mask)) then + do i=1, is + if (mask(i)) then + if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then + ! do nothing + else + idx(i) = -1 + end if + end if + end do - if (present(mask)) then - do i=1, is - if (mask(i)) then + else if (.not.present(mask)) then + + do i=1, is if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then ! do nothing else idx(i) = -1 end if - end if - end do - - else if (.not.present(mask)) then + end do + end if + else if (.not.present(lidx)) then + if (present(mask)) then + do i=1, is + if (mask(i)) then + if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then + ! do nothing + else + idx(i) = -1 + end if + end if + end do - do i=1, is - if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then - ! do nothing - else - idx(i) = -1 - end if - end do + else if (.not.present(mask)) then + do i=1, is + if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then + ! do nothing + else + idx(i) = -1 + end if + end do + end if end if - else idx = -1 info = -1 @@ -434,19 +470,21 @@ contains end subroutine repl_g2lv1_ins - subroutine repl_g2lv2_ins(idxin,idxout,idxmap,info,mask) + subroutine repl_g2lv2_ins(idxin,idxout,idxmap,info,mask,lidx) implicit none class(psb_repl_map), intent(inout) :: idxmap integer(psb_ipk_), intent(in) :: idxin(:) integer(psb_ipk_), intent(out) :: idxout(:) integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask(:) + integer, intent(in), optional :: lidx(:) + integer(psb_ipk_) :: is, im is = size(idxin) im = min(is,size(idxout)) idxout(1:im) = idxin(1:im) - call idxmap%g2l_ins(idxout(1:im),info,mask) + call idxmap%g2lip_ins(idxout(1:im),info,mask=mask,lidx=lidx) if (is > im) info = -3 end subroutine repl_g2lv2_ins diff --git a/base/modules/psb_s_base_mat_mod.f90 b/base/modules/psb_s_base_mat_mod.f90 index 81b90e69..f612f231 100644 --- a/base/modules/psb_s_base_mat_mod.f90 +++ b/base/modules/psb_s_base_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_s_base_vect_mod.f90 b/base/modules/psb_s_base_vect_mod.f90 index 095a7765..a16e6252 100644 --- a/base/modules/psb_s_base_vect_mod.f90 +++ b/base/modules/psb_s_base_vect_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -68,6 +68,7 @@ module psb_s_base_vect_mod procedure, pass(x) :: bld_n => s_base_bld_n generic, public :: bld => bld_x, bld_n procedure, pass(x) :: all => s_base_all + procedure, pass(x) :: mold => s_base_mold ! ! Insert/set. Assembly and free. ! Assembly does almost nothing here, but is important @@ -219,6 +220,18 @@ contains end subroutine s_base_all + subroutine s_base_mold(x, y, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + class(psb_s_base_vect_type), intent(in) :: x + class(psb_s_base_vect_type), intent(out), allocatable :: y + integer(psb_ipk_), intent(out) :: info + + allocate(psb_s_base_vect_type :: y, stat=info) + + end subroutine s_base_mold + ! ! Insert a bunch of values at specified positions. ! diff --git a/base/modules/psb_s_comm_mod.f90 b/base/modules/psb_s_comm_mod.f90 index e9f7897e..dac2385c 100644 --- a/base/modules/psb_s_comm_mod.f90 +++ b/base/modules/psb_s_comm_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -35,47 +35,47 @@ module psb_s_comm_mod subroutine psb_sovrlm(x,desc_a,info,jx,ik,work,update,mode) use psb_descriptor_type real(psb_spk_), intent(inout), target :: x(:,:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info real(psb_spk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,jx,ik,mode + integer(psb_ipk_), intent(in), optional :: update,jx,ik,mode end subroutine psb_sovrlm subroutine psb_sovrlv(x,desc_a,info,work,update,mode) use psb_descriptor_type real(psb_spk_), intent(inout), target :: x(:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info real(psb_spk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_sovrlv subroutine psb_sovrl_vect(x,desc_a,info,work,update,mode) use psb_descriptor_type use psb_s_vect_mod - type(psb_s_vect_type), intent(inout) :: x + type(psb_s_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info real(psb_spk_), intent(inout), optional, target :: work(:) integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_sovrl_vect - end interface + end interface psb_ovrl interface psb_halo subroutine psb_shalom(x,desc_a,info,alpha,jx,ik,work,tran,mode,data) use psb_descriptor_type - real(psb_spk_), intent(inout),target :: x(:,:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_spk_), intent(in), optional :: alpha + real(psb_spk_), intent(inout), target :: x(:,:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + real(psb_spk_), intent(in), optional :: alpha real(psb_spk_), target, optional, intent(inout) :: work(:) integer(psb_ipk_), intent(in), optional :: mode,jx,ik,data character, intent(in), optional :: tran end subroutine psb_shalom subroutine psb_shalov(x,desc_a,info,alpha,work,tran,mode,data) use psb_descriptor_type - real(psb_spk_), intent(inout) :: x(:) + real(psb_spk_), intent(inout) :: x(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info - real(psb_spk_), intent(in), optional :: alpha + real(psb_spk_), intent(in), optional :: alpha real(psb_spk_), target, optional, intent(inout) :: work(:) integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran @@ -91,27 +91,27 @@ module psb_s_comm_mod integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran end subroutine psb_shalo_vect - end interface + end interface psb_halo interface psb_scatter subroutine psb_sscatterm(globx, locx, desc_a, info, root) use psb_descriptor_type - real(psb_spk_), intent(out) :: locx(:,:) - real(psb_spk_), intent(in) :: globx(:,:) + real(psb_spk_), intent(out) :: locx(:,:) + real(psb_spk_), intent(in) :: globx(:,:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root end subroutine psb_sscatterm subroutine psb_sscatterv(globx, locx, desc_a, info, root) use psb_descriptor_type - real(psb_spk_), intent(out) :: locx(:) - real(psb_spk_), intent(in) :: globx(:) + real(psb_spk_), intent(out) :: locx(:) + real(psb_spk_), intent(in) :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root end subroutine psb_sscatterv - end interface + end interface psb_scatter interface psb_gather subroutine psb_ssp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keeploc) @@ -125,31 +125,31 @@ module psb_s_comm_mod integer(psb_ipk_), intent(in), optional :: root,dupl logical, intent(in), optional :: keepnum,keeploc end subroutine psb_ssp_allgather - subroutine psb_sgatherm(globx, locx, desc_a, info, root) + subroutine psb_sgatherm(globx, locx, desc_a, info, root) use psb_descriptor_type - real(psb_spk_), intent(in) :: locx(:,:) - real(psb_spk_), intent(out) :: globx(:,:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), intent(in), optional :: root + real(psb_spk_), intent(in) :: locx(:,:) + real(psb_spk_), intent(out), allocatable :: globx(:,:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: root end subroutine psb_sgatherm subroutine psb_sgatherv(globx, locx, desc_a, info, root) use psb_descriptor_type - real(psb_spk_), intent(in) :: locx(:) - real(psb_spk_), intent(out) :: globx(:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), intent(in), optional :: root + real(psb_spk_), intent(in) :: locx(:) + real(psb_spk_), intent(out), allocatable :: globx(:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: root end subroutine psb_sgatherv subroutine psb_sgather_vect(globx, locx, desc_a, info, root) use psb_descriptor_type use psb_s_vect_mod type(psb_s_vect_type), intent(inout) :: locx - real(psb_spk_), intent(out) :: globx(:) + real(psb_spk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root end subroutine psb_sgather_vect - end interface + end interface psb_gather end module psb_s_comm_mod diff --git a/base/modules/psb_s_csc_mat_mod.f90 b/base/modules/psb_s_csc_mat_mod.f90 index 79ddf4e8..64ed686a 100644 --- a/base/modules/psb_s_csc_mat_mod.f90 +++ b/base/modules/psb_s_csc_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -551,14 +551,10 @@ contains class(psb_s_csc_sparse_mat), intent(in) :: a integer(psb_ipk_) :: res - res = 0 + res = -1 if (allocated(a%ia)) then - if (res >= 0) then - res = min(res,size(a%ia)) - else - res = size(a%ia) - end if + res = size(a%ia) end if if (allocated(a%val)) then if (res >= 0) then diff --git a/base/modules/psb_s_csr_mat_mod.f90 b/base/modules/psb_s_csr_mat_mod.f90 index f293989e..fd1274d1 100644 --- a/base/modules/psb_s_csr_mat_mod.f90 +++ b/base/modules/psb_s_csr_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -554,14 +554,10 @@ contains class(psb_s_csr_sparse_mat), intent(in) :: a integer(psb_ipk_) :: res - res = 0 + res = -1 if (allocated(a%ja)) then - if (res >= 0) then - res = min(res,size(a%ja)) - else - res = size(a%ja) - end if + res = size(a%ja) end if if (allocated(a%val)) then if (res >= 0) then diff --git a/base/modules/psb_s_linmap_mod.f90 b/base/modules/psb_s_linmap_mod.f90 index e95b7c10..10312b5e 100644 --- a/base/modules/psb_s_linmap_mod.f90 +++ b/base/modules/psb_s_linmap_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_s_mat_mod.f90 b/base/modules/psb_s_mat_mod.f90 index 7d0a4885..5b20e55a 100644 --- a/base/modules/psb_s_mat_mod.f90 +++ b/base/modules/psb_s_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_s_psblas_mod.f90 b/base/modules/psb_s_psblas_mod.f90 index 5a638de4..a0148ad6 100644 --- a/base/modules/psb_s_psblas_mod.f90 +++ b/base/modules/psb_s_psblas_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_s_tools_mod.f90 b/base/modules/psb_s_tools_mod.f90 index 599ac14f..e051e3c6 100644 --- a/base/modules/psb_s_tools_mod.f90 +++ b/base/modules/psb_s_tools_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -167,7 +167,7 @@ Module psb_s_tools_mod interface psb_geins - subroutine psb_sinsi(m,irw,val, x, desc_a,info,dupl) + subroutine psb_sinsi(m,irw,val, x, desc_a,info,dupl,local) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_s_base_vect_type, psb_s_vect_type, & & psb_sspmat_type, psb_s_base_sparse_mat @@ -178,8 +178,9 @@ Module psb_s_tools_mod real(psb_spk_), intent(in) :: val(:,:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_sinsi - subroutine psb_sinsvi(m, irw,val, x,desc_a,info,dupl) + subroutine psb_sinsvi(m, irw,val, x,desc_a,info,dupl,local) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_s_base_vect_type, psb_s_vect_type, & & psb_sspmat_type, psb_s_base_sparse_mat @@ -190,8 +191,9 @@ Module psb_s_tools_mod real(psb_spk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_sinsvi - subroutine psb_sins_vect(m,irw,val,x,desc_a,info,dupl) + subroutine psb_sins_vect(m,irw,val,x,desc_a,info,dupl,local) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_s_base_vect_type, psb_s_vect_type, & & psb_sspmat_type, psb_s_base_sparse_mat @@ -202,8 +204,9 @@ Module psb_s_tools_mod real(psb_spk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_sins_vect - subroutine psb_sins_vect_r2(m,irw,val,x,desc_a,info,dupl) + subroutine psb_sins_vect_r2(m,irw,val,x,desc_a,info,dupl,local) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_s_base_vect_type, psb_s_vect_type, & & psb_sspmat_type, psb_s_base_sparse_mat @@ -214,6 +217,7 @@ Module psb_s_tools_mod real(psb_spk_), intent(in) :: val(:,:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_sins_vect_r2 end interface @@ -270,7 +274,7 @@ Module psb_s_tools_mod interface psb_spins - subroutine psb_sspins(nz,ia,ja,val,a,desc_a,info,rebuild) + subroutine psb_sspins(nz,ia,ja,val,a,desc_a,info,rebuild,local) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_s_base_vect_type, psb_s_vect_type, & & psb_sspmat_type, psb_s_base_sparse_mat @@ -280,6 +284,7 @@ Module psb_s_tools_mod real(psb_spk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: rebuild + logical, intent(in), optional :: local end subroutine psb_sspins subroutine psb_sspins_2desc(nz,ia,ja,val,a,desc_ar,desc_ac,info) import :: psb_desc_type, psb_spk_, psb_ipk_, & diff --git a/base/modules/psb_s_vect_mod.f90 b/base/modules/psb_s_vect_mod.F90 similarity index 97% rename from base/modules/psb_s_vect_mod.f90 rename to base/modules/psb_s_vect_mod.F90 index c89392c6..98e140d0 100644 --- a/base/modules/psb_s_vect_mod.f90 +++ b/base/modules/psb_s_vect_mod.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -100,7 +100,11 @@ contains integer(psb_ipk_) :: info if (present(mold)) then +#ifdef HAVE_MOLD allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif else allocate(psb_s_base_vect_type :: x%v,stat=info) endif @@ -117,7 +121,11 @@ contains integer(psb_ipk_) :: info if (present(mold)) then +#ifdef HAVE_MOLD allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif else allocate(psb_s_base_vect_type :: x%v,stat=info) endif @@ -411,7 +419,11 @@ contains integer(psb_ipk_), intent(out) :: info if (present(mold)) then +#ifdef HAVE_MOLD allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif else allocate(psb_s_base_vect_type :: x%v,stat=info) endif @@ -531,7 +543,11 @@ contains real(psb_spk_), allocatable :: invect(:) integer(psb_ipk_) :: info - allocate(tmp,stat=info,mold=mold) +#ifdef HAVE_MOLD + allocate(tmp,stat=info,mold=mold) +#else + call mold%mold(tmp,info) +#endif call x%v%sync() if (info == psb_success_) call tmp%bld(x%v%v) call x%v%free(info) diff --git a/base/modules/psb_serial_mod.f90 b/base/modules/psb_serial_mod.f90 index 2d7776c4..8b5d0f42 100644 --- a/base/modules/psb_serial_mod.f90 +++ b/base/modules/psb_serial_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_sort_mod.f90 b/base/modules/psb_sort_mod.f90 index f50f12c1..45665473 100644 --- a/base/modules/psb_sort_mod.f90 +++ b/base/modules/psb_sort_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_string_mod.f90 b/base/modules/psb_string_mod.f90 index bdc43d91..cda4dd0d 100644 --- a/base/modules/psb_string_mod.f90 +++ b/base/modules/psb_string_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_tools_mod.f90 b/base/modules/psb_tools_mod.f90 index 8b7a7520..37d860c5 100644 --- a/base/modules/psb_tools_mod.f90 +++ b/base/modules/psb_tools_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -30,7 +30,8 @@ !!$ !!$ module psb_tools_mod - use psb_base_tools_mod + use psb_cd_tools_mod + use psb_i_tools_mod use psb_s_tools_mod use psb_d_tools_mod use psb_c_tools_mod diff --git a/base/modules/psb_vect_mod.f90 b/base/modules/psb_vect_mod.f90 index 31b35744..77f1f65b 100644 --- a/base/modules/psb_vect_mod.f90 +++ b/base/modules/psb_vect_mod.f90 @@ -1,4 +1,5 @@ module psb_vect_mod + use psb_i_vect_mod use psb_s_vect_mod use psb_d_vect_mod use psb_c_vect_mod diff --git a/base/modules/psb_z_base_mat_mod.f90 b/base/modules/psb_z_base_mat_mod.f90 index 4ed514fb..1d672ebd 100644 --- a/base/modules/psb_z_base_mat_mod.f90 +++ b/base/modules/psb_z_base_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_z_base_vect_mod.f90 b/base/modules/psb_z_base_vect_mod.f90 index bee27854..c65d2dac 100644 --- a/base/modules/psb_z_base_vect_mod.f90 +++ b/base/modules/psb_z_base_vect_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -68,6 +68,7 @@ module psb_z_base_vect_mod procedure, pass(x) :: bld_n => z_base_bld_n generic, public :: bld => bld_x, bld_n procedure, pass(x) :: all => z_base_all + procedure, pass(x) :: mold => z_base_mold ! ! Insert/set. Assembly and free. ! Assembly does almost nothing here, but is important @@ -219,6 +220,18 @@ contains end subroutine z_base_all + subroutine z_base_mold(x, y, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + class(psb_z_base_vect_type), intent(in) :: x + class(psb_z_base_vect_type), intent(out), allocatable :: y + integer(psb_ipk_), intent(out) :: info + + allocate(psb_z_base_vect_type :: y, stat=info) + + end subroutine z_base_mold + ! ! Insert a bunch of values at specified positions. ! diff --git a/base/modules/psb_z_comm_mod.f90 b/base/modules/psb_z_comm_mod.f90 index 80453a95..338c9a9a 100644 --- a/base/modules/psb_z_comm_mod.f90 +++ b/base/modules/psb_z_comm_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -111,7 +111,7 @@ module psb_z_comm_mod integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root end subroutine psb_zscatterv - end interface + end interface psb_scatter interface psb_gather subroutine psb_zsp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keeploc) @@ -125,10 +125,10 @@ module psb_z_comm_mod integer(psb_ipk_), intent(in), optional :: root,dupl logical, intent(in), optional :: keepnum,keeploc end subroutine psb_zsp_allgather - subroutine psb_zgatherm(globx, locx, desc_a, info, root) + subroutine psb_zgatherm(globx, locx, desc_a, info, root) use psb_descriptor_type complex(psb_dpk_), intent(in) :: locx(:,:) - complex(psb_dpk_), intent(out) :: globx(:,:) + complex(psb_dpk_), intent(out), allocatable :: globx(:,:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root @@ -136,7 +136,7 @@ module psb_z_comm_mod subroutine psb_zgatherv(globx, locx, desc_a, info, root) use psb_descriptor_type complex(psb_dpk_), intent(in) :: locx(:) - complex(psb_dpk_), intent(out) :: globx(:) + complex(psb_dpk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root @@ -145,7 +145,7 @@ module psb_z_comm_mod use psb_descriptor_type use psb_z_vect_mod type(psb_z_vect_type), intent(inout) :: locx - complex(psb_dpk_), intent(out) :: globx(:) + complex(psb_dpk_), intent(out), allocatable :: globx(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(in), optional :: root diff --git a/base/modules/psb_z_csc_mat_mod.f90 b/base/modules/psb_z_csc_mat_mod.f90 index 5d195067..77e217b0 100644 --- a/base/modules/psb_z_csc_mat_mod.f90 +++ b/base/modules/psb_z_csc_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -551,14 +551,10 @@ contains class(psb_z_csc_sparse_mat), intent(in) :: a integer(psb_ipk_) :: res - res = 0 + res = -1 if (allocated(a%ia)) then - if (res >= 0) then - res = min(res,size(a%ia)) - else - res = size(a%ia) - end if + res = size(a%ia) end if if (allocated(a%val)) then if (res >= 0) then diff --git a/base/modules/psb_z_csr_mat_mod.f90 b/base/modules/psb_z_csr_mat_mod.f90 index 84ce8553..e2b82bf4 100644 --- a/base/modules/psb_z_csr_mat_mod.f90 +++ b/base/modules/psb_z_csr_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -554,14 +554,10 @@ contains class(psb_z_csr_sparse_mat), intent(in) :: a integer(psb_ipk_) :: res - res = 0 + res = -1 if (allocated(a%ja)) then - if (res >= 0) then - res = min(res,size(a%ja)) - else - res = size(a%ja) - end if + res = size(a%ja) end if if (allocated(a%val)) then if (res >= 0) then diff --git a/base/modules/psb_z_linmap_mod.f90 b/base/modules/psb_z_linmap_mod.f90 index 26d26013..a4bf5c51 100644 --- a/base/modules/psb_z_linmap_mod.f90 +++ b/base/modules/psb_z_linmap_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_z_mat_mod.f90 b/base/modules/psb_z_mat_mod.f90 index c873dd3c..db0025c1 100644 --- a/base/modules/psb_z_mat_mod.f90 +++ b/base/modules/psb_z_mat_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_z_psblas_mod.f90 b/base/modules/psb_z_psblas_mod.f90 index bbe39700..436fe63d 100644 --- a/base/modules/psb_z_psblas_mod.f90 +++ b/base/modules/psb_z_psblas_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psb_z_tools_mod.f90 b/base/modules/psb_z_tools_mod.f90 index 078e2927..8379f403 100644 --- a/base/modules/psb_z_tools_mod.f90 +++ b/base/modules/psb_z_tools_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -167,7 +167,7 @@ Module psb_z_tools_mod interface psb_geins - subroutine psb_zinsi(m,irw,val, x, desc_a,info,dupl) + subroutine psb_zinsi(m,irw,val, x, desc_a,info,dupl,local) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_z_base_vect_type, psb_z_vect_type, & & psb_zspmat_type, psb_z_base_sparse_mat @@ -178,8 +178,9 @@ Module psb_z_tools_mod complex(psb_dpk_), intent(in) :: val(:,:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_zinsi - subroutine psb_zinsvi(m, irw,val, x,desc_a,info,dupl) + subroutine psb_zinsvi(m, irw,val, x,desc_a,info,dupl,local) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_z_base_vect_type, psb_z_vect_type, & & psb_zspmat_type, psb_z_base_sparse_mat @@ -190,8 +191,9 @@ Module psb_z_tools_mod complex(psb_dpk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_zinsvi - subroutine psb_zins_vect(m,irw,val,x,desc_a,info,dupl) + subroutine psb_zins_vect(m,irw,val,x,desc_a,info,dupl,local) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_z_base_vect_type, psb_z_vect_type, & & psb_zspmat_type, psb_z_base_sparse_mat @@ -202,8 +204,9 @@ Module psb_z_tools_mod complex(psb_dpk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_zins_vect - subroutine psb_zins_vect_r2(m,irw,val,x,desc_a,info,dupl) + subroutine psb_zins_vect_r2(m,irw,val,x,desc_a,info,dupl,local) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_z_base_vect_type, psb_z_vect_type, & & psb_zspmat_type, psb_z_base_sparse_mat @@ -214,6 +217,7 @@ Module psb_z_tools_mod complex(psb_dpk_), intent(in) :: val(:,:) integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local end subroutine psb_zins_vect_r2 end interface @@ -270,7 +274,7 @@ Module psb_z_tools_mod interface psb_spins - subroutine psb_zspins(nz,ia,ja,val,a,desc_a,info,rebuild) + subroutine psb_zspins(nz,ia,ja,val,a,desc_a,info,rebuild,local) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_z_base_vect_type, psb_z_vect_type, & & psb_zspmat_type, psb_z_base_sparse_mat @@ -280,6 +284,7 @@ Module psb_z_tools_mod complex(psb_dpk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: rebuild + logical, intent(in), optional :: local end subroutine psb_zspins subroutine psb_zspins_2desc(nz,ia,ja,val,a,desc_ar,desc_ac,info) import :: psb_desc_type, psb_dpk_, psb_ipk_, & diff --git a/base/modules/psb_z_vect_mod.f90 b/base/modules/psb_z_vect_mod.F90 similarity index 97% rename from base/modules/psb_z_vect_mod.f90 rename to base/modules/psb_z_vect_mod.F90 index 546aab04..754bdb8c 100644 --- a/base/modules/psb_z_vect_mod.f90 +++ b/base/modules/psb_z_vect_mod.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -100,7 +100,11 @@ contains integer(psb_ipk_) :: info if (present(mold)) then +#ifdef HAVE_MOLD allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif else allocate(psb_z_base_vect_type :: x%v,stat=info) endif @@ -117,7 +121,11 @@ contains integer(psb_ipk_) :: info if (present(mold)) then +#ifdef HAVE_MOLD allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif else allocate(psb_z_base_vect_type :: x%v,stat=info) endif @@ -411,7 +419,11 @@ contains integer(psb_ipk_), intent(out) :: info if (present(mold)) then +#ifdef HAVE_MOLD allocate(x%v,stat=info,mold=mold) +#else + call mold%mold(x%v,info) +#endif else allocate(psb_z_base_vect_type :: x%v,stat=info) endif @@ -531,7 +543,11 @@ contains complex(psb_dpk_), allocatable :: invect(:) integer(psb_ipk_) :: info - allocate(tmp,stat=info,mold=mold) +#ifdef HAVE_MOLD + allocate(tmp,stat=info,mold=mold) +#else + call mold%mold(tmp,info) +#endif call x%v%sync() if (info == psb_success_) call tmp%bld(x%v%v) call x%v%free(info) diff --git a/base/modules/psi_bcast_mod.F90 b/base/modules/psi_bcast_mod.F90 index 70682884..0faabf27 100644 --- a/base/modules/psi_bcast_mod.F90 +++ b/base/modules/psi_bcast_mod.F90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psi_bcast_mod diff --git a/base/modules/psi_c_mod.f90 b/base/modules/psi_c_mod.f90 index 8dff4ebf..5bedb8da 100644 --- a/base/modules/psi_c_mod.f90 +++ b/base/modules/psi_c_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psi_comm_buffers_mod.F90 b/base/modules/psi_comm_buffers_mod.F90 index c51466dd..eaa7541a 100644 --- a/base/modules/psi_comm_buffers_mod.F90 +++ b/base/modules/psi_comm_buffers_mod.F90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ #if defined(SERIAL_MPI) ! Provide a fake mpi module just to keep the compiler(s) happy. module mpi @@ -5,15 +36,15 @@ module mpi integer(psb_mpik_), parameter :: mpi_success = 0 integer(psb_mpik_), parameter :: mpi_request_null = 0 integer(psb_mpik_), parameter :: mpi_status_size = 1 - integer(psb_mpik_), parameter :: psb_mpi_def_integer = 1 - integer(psb_mpik_), parameter :: psb_mpi_lng_integer = 2 + integer(psb_mpik_), parameter :: mpi_integer = 1 + integer(psb_mpik_), parameter :: mpi_integer8 = 2 integer(psb_mpik_), parameter :: mpi_real = 3 integer(psb_mpik_), parameter :: mpi_double_precision = 4 integer(psb_mpik_), parameter :: mpi_complex = 5 integer(psb_mpik_), parameter :: mpi_double_complex = 6 integer(psb_mpik_), parameter :: mpi_character = 7 integer(psb_mpik_), parameter :: mpi_logical = 8 - integer(psb_mpik_), parameter :: psb_mpi_def_integer2 = 9 + integer(psb_mpik_), parameter :: mpi_integer2 = 9 integer(psb_mpik_), parameter :: mpi_comm_null = -1 integer(psb_mpik_), parameter :: mpi_comm_world = 1 diff --git a/base/modules/psi_d_mod.f90 b/base/modules/psi_d_mod.f90 index 20d07fed..a30e1979 100644 --- a/base/modules/psi_d_mod.f90 +++ b/base/modules/psi_d_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psi_i_mod.f90 b/base/modules/psi_i_mod.f90 index 0f4c4733..4bc9ca8c 100644 --- a/base/modules/psi_i_mod.f90 +++ b/base/modules/psi_i_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -31,6 +31,7 @@ !!$ module psi_i_mod use psb_descriptor_type, only : psb_desc_type, psb_ipk_, psb_mpik_ + use psb_i_vect_mod, only : psb_i_base_vect_type interface subroutine psi_compute_size(desc_data,& @@ -117,7 +118,7 @@ module psi_i_mod type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(out) :: info end subroutine psi_fnd_owner - end interface psi_fnd_owner + end interface interface psi_ldsc_pre_halo subroutine psi_ldsc_pre_halo(desc,ext_hv,info) @@ -126,7 +127,7 @@ module psi_i_mod logical, intent(in) :: ext_hv integer(psb_ipk_), intent(out) :: info end subroutine psi_ldsc_pre_halo - end interface psi_ldsc_pre_halo + end interface interface psi_bld_tmphalo subroutine psi_bld_tmphalo(desc,info) @@ -134,7 +135,7 @@ module psi_i_mod type(psb_desc_type), intent(inout) :: desc integer(psb_ipk_), intent(out) :: info end subroutine psi_bld_tmphalo - end interface psi_bld_tmphalo + end interface interface psi_bld_tmpovrl @@ -144,7 +145,7 @@ module psi_i_mod type(psb_desc_type), intent(inout) :: desc integer(psb_ipk_), intent(out) :: info end subroutine psi_bld_tmpovrl - end interface psi_bld_tmpovrl + end interface interface psi_idx_cnv @@ -183,41 +184,45 @@ module psi_i_mod logical, intent(in), optional :: mask logical, intent(in), optional :: owned end subroutine psi_idx_cnvs1 - end interface psi_idx_cnv + end interface interface psi_idx_ins_cnv - subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask) + subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask,lidx) import :: psb_desc_type, psb_ipk_ integer(psb_ipk_), intent(in) :: nv integer(psb_ipk_), intent(inout) :: idxin(:) type(psb_desc_type), intent(inout) :: desc integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask(:) + integer, intent(in), optional :: lidx(:) end subroutine psi_idx_ins_cnv1 - subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask) + subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask,lidx) import :: psb_desc_type, psb_ipk_ integer(psb_ipk_), intent(in) :: nv, idxin(:) integer(psb_ipk_), intent(out) :: idxout(:) type(psb_desc_type), intent(inout) :: desc integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask(:) + integer, intent(in), optional :: lidx(:) end subroutine psi_idx_ins_cnv2 - subroutine psi_idx_ins_cnvs2(idxin,idxout,desc,info,mask) + subroutine psi_idx_ins_cnvs2(idxin,idxout,desc,info,mask,lidx) import :: psb_desc_type, psb_ipk_ integer(psb_ipk_), intent(in) :: idxin integer(psb_ipk_), intent(out) :: idxout type(psb_desc_type), intent(inout) :: desc integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask + integer, intent(in), optional :: lidx end subroutine psi_idx_ins_cnvs2 - subroutine psi_idx_ins_cnvs1(idxin,desc,info,mask) + subroutine psi_idx_ins_cnvs1(idxin,desc,info,mask,lidx) import :: psb_desc_type, psb_ipk_ integer(psb_ipk_), intent(inout) :: idxin type(psb_desc_type), intent(inout) :: desc integer(psb_ipk_), intent(out) :: info logical, intent(in), optional :: mask + integer, intent(in), optional :: lidx end subroutine psi_idx_ins_cnvs1 - end interface psi_idx_ins_cnv + end interface interface psi_cnv_dsc subroutine psi_cnv_dsc(halo_in,ovrlap_in,ext_in,cdesc, info) @@ -226,7 +231,7 @@ module psi_i_mod type(psb_desc_type), intent(inout) :: cdesc integer(psb_ipk_), intent(out) :: info end subroutine psi_cnv_dsc - end interface psi_cnv_dsc + end interface interface psi_renum_index subroutine psi_renum_index(iperm,idx,info) @@ -235,7 +240,7 @@ module psi_i_mod integer(psb_ipk_), intent(in) :: iperm(:) integer(psb_ipk_), intent(inout) :: idx(:) end subroutine psi_renum_index - end interface psi_renum_index + end interface interface psi_inner_cnv subroutine psi_inner_cnvs(x,hashmask,hashv,glb_lc) @@ -262,7 +267,7 @@ module psi_i_mod integer(psb_ipk_), intent(in) :: x(:) integer(psb_ipk_), intent(out) :: y(:) end subroutine psi_inner_cnv2 - end interface psi_inner_cnv + end interface interface subroutine psi_bld_ovr_mst(me,ovrlap_elem,mst_idx,info) @@ -293,6 +298,16 @@ module psi_i_mod type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_iswapdatav + subroutine psi_iswapdata_vect(flag,beta,y,desc_a,work,info,data) + import :: psb_desc_type, psb_ipk_, psb_i_base_vect_type + integer(psb_ipk_), intent(in) :: flag + integer(psb_ipk_), intent(out) :: info + class(psb_i_base_vect_type) :: y + integer(psb_ipk_) :: beta + integer(psb_ipk_),target :: work(:) + type(psb_desc_type), target :: desc_a + integer(psb_ipk_), optional :: data + end subroutine psi_iswapdata_vect subroutine psi_iswapidxm(ictxt,icomm,flag,n,beta,y,idx,& & totxch,totsnd,totrcv,work,info) import :: psb_desc_type, psb_ipk_ @@ -311,7 +326,17 @@ module psi_i_mod integer(psb_ipk_),target :: work(:) integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv end subroutine psi_iswapidxv - end interface psi_swapdata + subroutine psi_iswapidx_vect(ictxt,icomm,flag,beta,y,idx,& + & totxch,totsnd,totrcv,work,info) + import :: psb_desc_type, psb_ipk_, psb_i_base_vect_type + integer(psb_ipk_), intent(in) :: ictxt,icomm,flag + integer(psb_ipk_), intent(out) :: info + class(psb_i_base_vect_type) :: y + integer(psb_ipk_) :: beta + integer(psb_ipk_),target :: work(:) + integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv + end subroutine psi_iswapidx_vect + end interface interface psi_swaptran @@ -333,6 +358,16 @@ module psi_i_mod type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_iswaptranv + subroutine psi_iswaptran_vect(flag,beta,y,desc_a,work,info,data) + import :: psb_desc_type, psb_ipk_, psb_i_base_vect_type + integer(psb_ipk_), intent(in) :: flag + integer(psb_ipk_), intent(out) :: info + class(psb_i_base_vect_type) :: y + integer(psb_ipk_) :: beta + integer(psb_ipk_),target :: work(:) + type(psb_desc_type), target :: desc_a + integer(psb_ipk_), optional :: data + end subroutine psi_iswaptran_vect subroutine psi_itranidxm(ictxt,icomm,flag,n,beta,y,idx,& & totxch,totsnd,totrcv,work,info) import :: psb_desc_type, psb_ipk_ @@ -351,7 +386,17 @@ module psi_i_mod integer(psb_ipk_), target :: work(:) integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv end subroutine psi_itranidxv - end interface psi_swaptran + subroutine psi_itranidx_vect(ictxt,icomm,flag,beta,y,idx,& + & totxch,totsnd,totrcv,work,info) + import :: psb_desc_type, psb_ipk_, psb_i_base_vect_type + integer(psb_ipk_), intent(in) :: ictxt,icomm,flag + integer(psb_ipk_), intent(out) :: info + class(psb_i_base_vect_type) :: y + integer(psb_ipk_) :: beta + integer(psb_ipk_),target :: work(:) + integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv + end subroutine psi_itranidx_vect + end interface interface psi_ovrl_upd subroutine psi_iovrl_updr1(x,desc_a,update,info) @@ -368,7 +413,14 @@ module psi_i_mod integer(psb_ipk_), intent(in) :: update integer(psb_ipk_), intent(out) :: info end subroutine psi_iovrl_updr2 - end interface psi_ovrl_upd + subroutine psi_iovrl_upd_vect(x,desc_a,update,info) + import :: psb_desc_type, psb_ipk_, psb_i_base_vect_type + class(psb_i_base_vect_type) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(in) :: update + integer(psb_ipk_), intent(out) :: info + end subroutine psi_iovrl_upd_vect + end interface interface psi_ovrl_save subroutine psi_iovrl_saver1(x,xs,desc_a,info) @@ -385,7 +437,14 @@ module psi_i_mod type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info end subroutine psi_iovrl_saver2 - end interface psi_ovrl_save + subroutine psi_iovrl_save_vect(x,xs,desc_a,info) + import :: psb_desc_type, psb_ipk_, psb_i_base_vect_type + class(psb_i_base_vect_type) :: x + integer(psb_ipk_), allocatable :: xs(:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + end subroutine psi_iovrl_save_vect + end interface interface psi_ovrl_restore subroutine psi_iovrl_restrr1(x,xs,desc_a,info) @@ -402,7 +461,14 @@ module psi_i_mod type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info end subroutine psi_iovrl_restrr2 - end interface psi_ovrl_restore + subroutine psi_iovrl_restr_vect(x,xs,desc_a,info) + import :: psb_desc_type, psb_ipk_, psb_i_base_vect_type + class(psb_i_base_vect_type) :: x + integer(psb_ipk_) :: xs(:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + end subroutine psi_iovrl_restr_vect + end interface end module psi_i_mod diff --git a/base/modules/psi_mod.f90 b/base/modules/psi_mod.f90 index c52f1f5d..a4e579be 100644 --- a/base/modules/psi_mod.f90 +++ b/base/modules/psi_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psi_p2p_mod.F90 b/base/modules/psi_p2p_mod.F90 index e5c6db2b..e81b6f5a 100644 --- a/base/modules/psi_p2p_mod.F90 +++ b/base/modules/psi_p2p_mod.F90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psi_p2p_mod use psi_penv_mod diff --git a/base/modules/psi_penv_mod.F90 b/base/modules/psi_penv_mod.F90 index bc877a4c..4468f08b 100644 --- a/base/modules/psi_penv_mod.F90 +++ b/base/modules/psi_penv_mod.F90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psi_penv_mod use psb_const_mod use psi_comm_buffers_mod, only : psb_buffer_queue @@ -109,7 +140,17 @@ contains include 'mpif.h' #endif integer(psb_mpik_) :: info - + + info = 0 +#if 0 + if (info == 0) call mpi_type_create_f90_integer(psb_ipk_, psb_mpi_ipk_integer ,info) + if (info == 0) call mpi_type_create_f90_integer(psb_mpik_, psb_mpi_def_integer ,info) + if (info == 0) call mpi_type_create_f90_integer(psb_long_int_k_, psb_mpi_lng_integer ,info) + if (info == 0) call mpi_type_create_f90_real(psb_spk_p_,psb_spk_r_, psb_mpi_r_spk_,info) + if (info == 0) call mpi_type_create_f90_real(psb_dpk_p_,psb_dpk_r_, psb_mpi_r_dpk_,info) + if (info == 0) call mpi_type_create_f90_complex(psb_spk_p_,psb_spk_r_, psb_mpi_c_spk_,info) + if (info == 0) call mpi_type_create_f90_complex(psb_dpk_p_,psb_dpk_r_, psb_mpi_c_dpk_,info) +#else info = 0 #if defined(LONG_INTEGERS) psb_mpi_ipk_integer = mpi_integer8 @@ -118,7 +159,11 @@ contains #endif psb_mpi_def_integer = mpi_integer psb_mpi_lng_integer = mpi_integer8 - + psb_mpi_r_spk_ = mpi_real + psb_mpi_r_dpk_ = mpi_double_precision + psb_mpi_c_spk_ = mpi_complex + psb_mpi_c_dpk_ = mpi_double_complex +#endif #if defined(SERIAL_MPI) #else diff --git a/base/modules/psi_reduce_mod.F90 b/base/modules/psi_reduce_mod.F90 index 676d74d2..582bca26 100644 --- a/base/modules/psi_reduce_mod.F90 +++ b/base/modules/psi_reduce_mod.F90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psi_reduce_mod use psi_penv_mod interface psb_max diff --git a/base/modules/psi_s_mod.f90 b/base/modules/psi_s_mod.f90 index 6bd5bf44..418a9b9b 100644 --- a/base/modules/psi_s_mod.f90 +++ b/base/modules/psi_s_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/modules/psi_serial_mod.f90 b/base/modules/psi_serial_mod.f90 index bb24f51f..a7ceee20 100644 --- a/base/modules/psi_serial_mod.f90 +++ b/base/modules/psi_serial_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -233,6 +233,22 @@ module psi_serial_mod interface psb_geaxpby + subroutine psi_iaxpbyv(m,alpha, x, beta, y, info) + import :: psb_ipk_, psb_spk_, psb_dpk_ + integer(psb_ipk_), intent(in) :: m + integer(psb_ipk_), intent (in) :: x(:) + integer(psb_ipk_), intent (inout) :: y(:) + integer(psb_ipk_), intent (in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + end subroutine psi_iaxpbyv + subroutine psi_iaxpby(m,n,alpha, x, beta, y, info) + import :: psb_ipk_, psb_spk_, psb_dpk_ + integer(psb_ipk_), intent(in) :: m, n + integer(psb_ipk_), intent (in) :: x(:,:) + integer(psb_ipk_), intent (inout) :: y(:,:) + integer(psb_ipk_), intent (in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + end subroutine psi_iaxpby subroutine psi_saxpbyv(m,alpha, x, beta, y, info) import :: psb_ipk_, psb_spk_, psb_dpk_ integer(psb_ipk_), intent(in) :: m diff --git a/base/modules/psi_z_mod.f90 b/base/modules/psi_z_mod.f90 index d13acf03..2fa26c2f 100644 --- a/base/modules/psi_z_mod.f90 +++ b/base/modules/psi_z_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_camax.f90 b/base/psblas/psb_camax.f90 index e7c42592..3fb4a747 100644 --- a/base/psblas/psb_camax.f90 +++ b/base/psblas/psb_camax.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -127,7 +127,7 @@ end function psb_camax !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -326,7 +326,7 @@ end function psb_camax_vect !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -445,7 +445,7 @@ end subroutine psb_camaxvs !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_casum.f90 b/base/psblas/psb_casum.f90 index 96d166d3..39cfe1c9 100644 --- a/base/psblas/psb_casum.f90 +++ b/base/psblas/psb_casum.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -212,7 +212,7 @@ end function psb_casum_vect !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -335,7 +335,7 @@ end function psb_casumv !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_caxpby.f90 b/base/psblas/psb_caxpby.f90 index d18b2130..fe5ac0cc 100644 --- a/base/psblas/psb_caxpby.f90 +++ b/base/psblas/psb_caxpby.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -245,7 +245,7 @@ end subroutine psb_caxpby !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_cdot.f90 b/base/psblas/psb_cdot.f90 index 65ca3540..cd096cd6 100644 --- a/base/psblas/psb_cdot.f90 +++ b/base/psblas/psb_cdot.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -253,7 +253,7 @@ end function psb_cdot !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -382,7 +382,7 @@ end function psb_cdotv !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -510,7 +510,7 @@ end subroutine psb_cdotvs !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_cnrm2.f90 b/base/psblas/psb_cnrm2.f90 index b33d6e3c..ffaa7cac 100644 --- a/base/psblas/psb_cnrm2.f90 +++ b/base/psblas/psb_cnrm2.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -133,7 +133,7 @@ end function psb_cnrm2 !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -347,7 +347,7 @@ end function psb_cnrm2_vect !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_cnrmi.f90 b/base/psblas/psb_cnrmi.f90 index b2c1009a..b2cff521 100644 --- a/base/psblas/psb_cnrmi.f90 +++ b/base/psblas/psb_cnrmi.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_cspmm.f90 b/base/psblas/psb_cspmm.f90 index f9591c95..c2b60e0d 100644 --- a/base/psblas/psb_cspmm.f90 +++ b/base/psblas/psb_cspmm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -363,7 +363,7 @@ end subroutine psb_cspmm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_cspnrm1.f90 b/base/psblas/psb_cspnrm1.f90 index b4b3927a..34db575b 100644 --- a/base/psblas/psb_cspnrm1.f90 +++ b/base/psblas/psb_cspnrm1.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_cspsm.f90 b/base/psblas/psb_cspsm.f90 index 5e5acdf1..1dc3c511 100644 --- a/base/psblas/psb_cspsm.f90 +++ b/base/psblas/psb_cspsm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -288,7 +288,7 @@ end subroutine psb_cspsm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_damax.f90 b/base/psblas/psb_damax.f90 index 8acafde0..a9422246 100644 --- a/base/psblas/psb_damax.f90 +++ b/base/psblas/psb_damax.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -127,7 +127,7 @@ end function psb_damax !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -326,7 +326,7 @@ end function psb_damax_vect !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -445,7 +445,7 @@ end subroutine psb_damaxvs !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_dasum.f90 b/base/psblas/psb_dasum.f90 index 17510eee..b254414d 100644 --- a/base/psblas/psb_dasum.f90 +++ b/base/psblas/psb_dasum.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -212,7 +212,7 @@ end function psb_dasum_vect !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -335,7 +335,7 @@ end function psb_dasumv !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_daxpby.f90 b/base/psblas/psb_daxpby.f90 index 2bdceb86..1f68b765 100644 --- a/base/psblas/psb_daxpby.f90 +++ b/base/psblas/psb_daxpby.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -245,7 +245,7 @@ end subroutine psb_daxpby !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_ddot.f90 b/base/psblas/psb_ddot.f90 index f6ba8ee2..f45ddab4 100644 --- a/base/psblas/psb_ddot.f90 +++ b/base/psblas/psb_ddot.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -253,7 +253,7 @@ end function psb_ddot !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -382,7 +382,7 @@ end function psb_ddotv !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -510,7 +510,7 @@ end subroutine psb_ddotvs !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_dnrm2.f90 b/base/psblas/psb_dnrm2.f90 index 2c42def8..d2b7c116 100644 --- a/base/psblas/psb_dnrm2.f90 +++ b/base/psblas/psb_dnrm2.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -108,7 +108,7 @@ function psb_dnrm2(x, desc_a, info, jx) result(res) idx = desc_a%ovrlap_elem(i,1) ndm = desc_a%ovrlap_elem(i,2) dd = real(ndm-1)/real(ndm) - res = res * sqrt(sone - dd*(abs(x(idx,jjx))/res)**2) + res = res * sqrt(done - dd*(abs(x(idx,jjx))/res)**2) end do else res = dzero @@ -133,7 +133,7 @@ end function psb_dnrm2 !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -232,7 +232,7 @@ function psb_dnrm2v(x, desc_a, info) result(res) idx = desc_a%ovrlap_elem(i,1) ndm = desc_a%ovrlap_elem(i,2) dd = real(ndm-1)/real(ndm) - res = res * sqrt(sone - dd*(abs(x(idx))/res)**2) + res = res * sqrt(done - dd*(abs(x(idx))/res)**2) end do else res = dzero @@ -347,7 +347,7 @@ end function psb_dnrm2_vect !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -448,7 +448,7 @@ subroutine psb_dnrm2vs(res, x, desc_a, info) idx = desc_a%ovrlap_elem(i,1) ndm = desc_a%ovrlap_elem(i,2) dd = real(ndm-1)/real(ndm) - res = res * sqrt(sone - dd*(abs(x(idx))/res)**2) + res = res * sqrt(done - dd*(abs(x(idx))/res)**2) end do else res = dzero diff --git a/base/psblas/psb_dnrmi.f90 b/base/psblas/psb_dnrmi.f90 index 433b2be1..1cd3f48a 100644 --- a/base/psblas/psb_dnrmi.f90 +++ b/base/psblas/psb_dnrmi.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_dspmm.f90 b/base/psblas/psb_dspmm.f90 index 7567c98a..c8ca91a3 100644 --- a/base/psblas/psb_dspmm.f90 +++ b/base/psblas/psb_dspmm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -363,7 +363,7 @@ end subroutine psb_dspmm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_dspnrm1.f90 b/base/psblas/psb_dspnrm1.f90 index e958595b..f96a0730 100644 --- a/base/psblas/psb_dspnrm1.f90 +++ b/base/psblas/psb_dspnrm1.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_dspsm.f90 b/base/psblas/psb_dspsm.f90 index b7ba2764..361d8d5d 100644 --- a/base/psblas/psb_dspsm.f90 +++ b/base/psblas/psb_dspsm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -288,7 +288,7 @@ end subroutine psb_dspsm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_samax.f90 b/base/psblas/psb_samax.f90 index aa87e0af..62f15e88 100644 --- a/base/psblas/psb_samax.f90 +++ b/base/psblas/psb_samax.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -127,7 +127,7 @@ end function psb_samax !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -326,7 +326,7 @@ end function psb_samax_vect !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -445,7 +445,7 @@ end subroutine psb_samaxvs !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_sasum.f90 b/base/psblas/psb_sasum.f90 index b8ce8653..2eb2fa37 100644 --- a/base/psblas/psb_sasum.f90 +++ b/base/psblas/psb_sasum.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -212,7 +212,7 @@ end function psb_sasum_vect !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -335,7 +335,7 @@ end function psb_sasumv !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_saxpby.f90 b/base/psblas/psb_saxpby.f90 index e39d5213..a9d06f08 100644 --- a/base/psblas/psb_saxpby.f90 +++ b/base/psblas/psb_saxpby.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -245,7 +245,7 @@ end subroutine psb_saxpby !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_sdot.f90 b/base/psblas/psb_sdot.f90 index d2ba0884..c6d05771 100644 --- a/base/psblas/psb_sdot.f90 +++ b/base/psblas/psb_sdot.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -253,7 +253,7 @@ end function psb_sdot !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -382,7 +382,7 @@ end function psb_sdotv !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -510,7 +510,7 @@ end subroutine psb_sdotvs !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_snrm2.f90 b/base/psblas/psb_snrm2.f90 index 88dfe72b..55cd0271 100644 --- a/base/psblas/psb_snrm2.f90 +++ b/base/psblas/psb_snrm2.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -133,7 +133,7 @@ end function psb_snrm2 !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -347,7 +347,7 @@ end function psb_snrm2_vect !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_snrmi.f90 b/base/psblas/psb_snrmi.f90 index 70ff62c2..3aa15308 100644 --- a/base/psblas/psb_snrmi.f90 +++ b/base/psblas/psb_snrmi.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_sspmm.f90 b/base/psblas/psb_sspmm.f90 index d81c917d..38612f23 100644 --- a/base/psblas/psb_sspmm.f90 +++ b/base/psblas/psb_sspmm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -363,7 +363,7 @@ end subroutine psb_sspmm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_sspnrm1.f90 b/base/psblas/psb_sspnrm1.f90 index 971144ae..062a1a14 100644 --- a/base/psblas/psb_sspnrm1.f90 +++ b/base/psblas/psb_sspnrm1.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_sspsm.f90 b/base/psblas/psb_sspsm.f90 index 769f83ca..48615868 100644 --- a/base/psblas/psb_sspsm.f90 +++ b/base/psblas/psb_sspsm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -288,7 +288,7 @@ end subroutine psb_sspsm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_sxdot.f90 b/base/psblas/psb_sxdot.f90 index 98f88fa1..999e5fd4 100644 --- a/base/psblas/psb_sxdot.f90 +++ b/base/psblas/psb_sxdot.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -160,7 +160,7 @@ end function psb_sxdot !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -317,7 +317,7 @@ end function sxdot !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -449,7 +449,7 @@ end subroutine psb_sxdotvs !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_zamax.f90 b/base/psblas/psb_zamax.f90 index d564cda0..5ac858ec 100644 --- a/base/psblas/psb_zamax.f90 +++ b/base/psblas/psb_zamax.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -127,7 +127,7 @@ end function psb_zamax !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -326,7 +326,7 @@ end function psb_zamax_vect !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -445,7 +445,7 @@ end subroutine psb_zamaxvs !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_zasum.f90 b/base/psblas/psb_zasum.f90 index 24c2b666..0dddf960 100644 --- a/base/psblas/psb_zasum.f90 +++ b/base/psblas/psb_zasum.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -212,7 +212,7 @@ end function psb_zasum_vect !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -335,7 +335,7 @@ end function psb_zasumv !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_zaxpby.f90 b/base/psblas/psb_zaxpby.f90 index 5d41e7b0..1152a6be 100644 --- a/base/psblas/psb_zaxpby.f90 +++ b/base/psblas/psb_zaxpby.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -245,7 +245,7 @@ end subroutine psb_zaxpby !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_zdot.f90 b/base/psblas/psb_zdot.f90 index 129dd8b1..ce5dd899 100644 --- a/base/psblas/psb_zdot.f90 +++ b/base/psblas/psb_zdot.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -253,7 +253,7 @@ end function psb_zdot !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -382,7 +382,7 @@ end function psb_zdotv !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -510,7 +510,7 @@ end subroutine psb_zdotvs !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_znrm2.f90 b/base/psblas/psb_znrm2.f90 index d786db29..c056ed69 100644 --- a/base/psblas/psb_znrm2.f90 +++ b/base/psblas/psb_znrm2.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -108,7 +108,7 @@ function psb_znrm2(x, desc_a, info, jx) result(res) idx = desc_a%ovrlap_elem(i,1) ndm = desc_a%ovrlap_elem(i,2) dd = real(ndm-1)/real(ndm) - res = res * sqrt(sone - dd*(abs(x(idx,jjx))/res)**2) + res = res * sqrt(done - dd*(abs(x(idx,jjx))/res)**2) end do else res = dzero @@ -133,7 +133,7 @@ end function psb_znrm2 !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -232,7 +232,7 @@ function psb_znrm2v(x, desc_a, info) result(res) idx = desc_a%ovrlap_elem(i,1) ndm = desc_a%ovrlap_elem(i,2) dd = real(ndm-1)/real(ndm) - res = res * sqrt(sone - dd*(abs(x(idx))/res)**2) + res = res * sqrt(done - dd*(abs(x(idx))/res)**2) end do else res = dzero @@ -347,7 +347,7 @@ end function psb_znrm2_vect !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -448,7 +448,7 @@ subroutine psb_znrm2vs(res, x, desc_a, info) idx = desc_a%ovrlap_elem(i,1) ndm = desc_a%ovrlap_elem(i,2) dd = real(ndm-1)/real(ndm) - res = res * sqrt(sone - dd*(abs(x(idx))/res)**2) + res = res * sqrt(done - dd*(abs(x(idx))/res)**2) end do else res = dzero diff --git a/base/psblas/psb_znrmi.f90 b/base/psblas/psb_znrmi.f90 index 498cdd27..16a908bf 100644 --- a/base/psblas/psb_znrmi.f90 +++ b/base/psblas/psb_znrmi.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_zspmm.f90 b/base/psblas/psb_zspmm.f90 index 1447c1a3..b08b0d2e 100644 --- a/base/psblas/psb_zspmm.f90 +++ b/base/psblas/psb_zspmm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -363,7 +363,7 @@ end subroutine psb_zspmm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_zspnrm1.f90 b/base/psblas/psb_zspnrm1.f90 index 9c0e817e..e1d34d80 100644 --- a/base/psblas/psb_zspnrm1.f90 +++ b/base/psblas/psb_zspnrm1.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/psblas/psb_zspsm.f90 b/base/psblas/psb_zspsm.f90 index ae539db9..6ee091b2 100644 --- a/base/psblas/psb_zspsm.f90 +++ b/base/psblas/psb_zspsm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -288,7 +288,7 @@ end subroutine psb_zspsm !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/Makefile b/base/serial/aux/Makefile index f5a20800..134a5782 100644 --- a/base/serial/aux/Makefile +++ b/base/serial/aux/Makefile @@ -4,7 +4,7 @@ include ../../../Make.inc # FOBJS = isr.o isrx.o iasr.o iasrx.o msort_up.o msort_dw.o\ - imsr.o imsrx.o imsru.o\ + imsr.o imsrx.o imsru.o idot.o inrm2.o\ dsr.o dsrx.o dasr.o dasrx.o dmsr.o dmsrx.o dmsort_up.o dmsort_dw.o \ ssr.o ssrx.o sasr.o sasrx.o smsr.o smsrx.o smsort_up.o smsort_dw.o \ clcmp_mod.o clsr.o clsrx.o \ diff --git a/base/serial/aux/cacmp_mod.f90 b/base/serial/aux/cacmp_mod.f90 index 9c72cd5d..54058966 100644 --- a/base/serial/aux/cacmp_mod.f90 +++ b/base/serial/aux/cacmp_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/calcmp_mod.f90 b/base/serial/aux/calcmp_mod.f90 index 8498b4bb..c1a2ffeb 100644 --- a/base/serial/aux/calcmp_mod.f90 +++ b/base/serial/aux/calcmp_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/calsr.f90 b/base/serial/aux/calsr.f90 index e9dc7cfe..6b8b6b6c 100644 --- a/base/serial/aux/calsr.f90 +++ b/base/serial/aux/calsr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/calsrx.f90 b/base/serial/aux/calsrx.f90 index 57340d9a..c0724028 100644 --- a/base/serial/aux/calsrx.f90 +++ b/base/serial/aux/calsrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/camsr.f90 b/base/serial/aux/camsr.f90 index b2b788b7..63b48e13 100644 --- a/base/serial/aux/camsr.f90 +++ b/base/serial/aux/camsr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/camsrx.f90 b/base/serial/aux/camsrx.f90 index f0d69652..631d341f 100644 --- a/base/serial/aux/camsrx.f90 +++ b/base/serial/aux/camsrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/casr.f90 b/base/serial/aux/casr.f90 index 18b36811..36b600d6 100644 --- a/base/serial/aux/casr.f90 +++ b/base/serial/aux/casr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/casrx.f90 b/base/serial/aux/casrx.f90 index 30bdf5fc..405c3a8b 100644 --- a/base/serial/aux/casrx.f90 +++ b/base/serial/aux/casrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/clcmp_mod.f90 b/base/serial/aux/clcmp_mod.f90 index cc336137..4cf201cf 100644 --- a/base/serial/aux/clcmp_mod.f90 +++ b/base/serial/aux/clcmp_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/clsr.f90 b/base/serial/aux/clsr.f90 index d8622b72..037a4b12 100644 --- a/base/serial/aux/clsr.f90 +++ b/base/serial/aux/clsr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/clsrx.f90 b/base/serial/aux/clsrx.f90 index 16ff26ae..89551475 100644 --- a/base/serial/aux/clsrx.f90 +++ b/base/serial/aux/clsrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/dasr.f90 b/base/serial/aux/dasr.f90 index e4757671..b6897b2f 100644 --- a/base/serial/aux/dasr.f90 +++ b/base/serial/aux/dasr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/dasrx.f90 b/base/serial/aux/dasrx.f90 index d9d96aa4..bcca46ca 100644 --- a/base/serial/aux/dasrx.f90 +++ b/base/serial/aux/dasrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/dmsr.f90 b/base/serial/aux/dmsr.f90 index 04d64a44..290ad451 100644 --- a/base/serial/aux/dmsr.f90 +++ b/base/serial/aux/dmsr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/dmsrx.f90 b/base/serial/aux/dmsrx.f90 index ed5ca133..dbdd6199 100644 --- a/base/serial/aux/dmsrx.f90 +++ b/base/serial/aux/dmsrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/dsr.f90 b/base/serial/aux/dsr.f90 index 92f17f10..b9536fc1 100644 --- a/base/serial/aux/dsr.f90 +++ b/base/serial/aux/dsr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/dsrx.f90 b/base/serial/aux/dsrx.f90 index 02f582cf..6097e83d 100644 --- a/base/serial/aux/dsrx.f90 +++ b/base/serial/aux/dsrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/iasr.f90 b/base/serial/aux/iasr.f90 index dd45383b..b4a9e006 100644 --- a/base/serial/aux/iasr.f90 +++ b/base/serial/aux/iasr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/iasrx.f90 b/base/serial/aux/iasrx.f90 index 9fc3ad5d..15d3dd3e 100644 --- a/base/serial/aux/iasrx.f90 +++ b/base/serial/aux/iasrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/idot.f90 b/base/serial/aux/idot.f90 new file mode 100644 index 00000000..92d86656 --- /dev/null +++ b/base/serial/aux/idot.f90 @@ -0,0 +1,58 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +! +! idot.f90 +! +! A function formally similar to DDOT but on integers. +! Defined just to have a preprocessed version of vectors. +! +function idot(n,x,incx,y,incy) result(res) + use psb_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: n,incx,incy + integer(psb_ipk_), intent(in) :: x(*), y(*) + integer(psb_ipk_) :: res + + integer(psb_ipk_) :: i, ix, iy + + res = izero + + if ((n<1).or.(incx<1).or.(incy<1)) return + + ix = 1 + iy = 1 + do i=1,n + res = res + x(ix)*y(iy) + ix=ix+incx + iy=iy+incy + end do +end function idot diff --git a/base/serial/aux/imsr.f90 b/base/serial/aux/imsr.f90 index cf6ddcfd..7b3a9599 100644 --- a/base/serial/aux/imsr.f90 +++ b/base/serial/aux/imsr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/imsru.f90 b/base/serial/aux/imsru.f90 index 356f7c93..14e8e1cf 100644 --- a/base/serial/aux/imsru.f90 +++ b/base/serial/aux/imsru.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/imsrx.f90 b/base/serial/aux/imsrx.f90 index 58970783..fa342518 100644 --- a/base/serial/aux/imsrx.f90 +++ b/base/serial/aux/imsrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/inrm2.f90 b/base/serial/aux/inrm2.f90 new file mode 100644 index 00000000..07d4b67b --- /dev/null +++ b/base/serial/aux/inrm2.f90 @@ -0,0 +1,58 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +! +! inrm2.f90 +! +! A function formally similar to DNRM2 but on integers. +! Defined just to have a preprocessed version of vectors. +! Does it make sense?? Better change it to ABS, i.e. nrm1. +! +! +function inrm2(n,x,incx) result(res) + use psb_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: n,incx + integer(psb_ipk_), intent(in) :: x(*) + integer(psb_ipk_) :: res + + integer(psb_ipk_) :: i, ix, iy + + res = izero + + if ((n<1).or.(incx<1)) return + + ix = 1 + do i=1,n + res = res + abs(x(ix)) + ix=ix+incx + end do +end function inrm2 diff --git a/base/serial/aux/isr.f90 b/base/serial/aux/isr.f90 index 40c65ba5..526e7b6c 100644 --- a/base/serial/aux/isr.f90 +++ b/base/serial/aux/isr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/isrx.f90 b/base/serial/aux/isrx.f90 index 5e5ba413..db2c160e 100644 --- a/base/serial/aux/isrx.f90 +++ b/base/serial/aux/isrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/sasr.f90 b/base/serial/aux/sasr.f90 index 43ef7721..56660a1a 100644 --- a/base/serial/aux/sasr.f90 +++ b/base/serial/aux/sasr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/sasrx.f90 b/base/serial/aux/sasrx.f90 index a933eeb5..bfc19a8a 100644 --- a/base/serial/aux/sasrx.f90 +++ b/base/serial/aux/sasrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/smsr.f90 b/base/serial/aux/smsr.f90 index 48235cec..3fdc7f03 100644 --- a/base/serial/aux/smsr.f90 +++ b/base/serial/aux/smsr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/smsrx.f90 b/base/serial/aux/smsrx.f90 index 8b231bbe..0335d811 100644 --- a/base/serial/aux/smsrx.f90 +++ b/base/serial/aux/smsrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/ssr.f90 b/base/serial/aux/ssr.f90 index b45f32b3..03731852 100644 --- a/base/serial/aux/ssr.f90 +++ b/base/serial/aux/ssr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/ssrx.f90 b/base/serial/aux/ssrx.f90 index d202d0fa..823b628d 100644 --- a/base/serial/aux/ssrx.f90 +++ b/base/serial/aux/ssrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/zacmp_mod.f90 b/base/serial/aux/zacmp_mod.f90 index 510ef340..542a1c0a 100644 --- a/base/serial/aux/zacmp_mod.f90 +++ b/base/serial/aux/zacmp_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/zalcmp_mod.f90 b/base/serial/aux/zalcmp_mod.f90 index af99fb20..fadc493a 100644 --- a/base/serial/aux/zalcmp_mod.f90 +++ b/base/serial/aux/zalcmp_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/zalsr.f90 b/base/serial/aux/zalsr.f90 index 6a38f36f..1ece5f3e 100644 --- a/base/serial/aux/zalsr.f90 +++ b/base/serial/aux/zalsr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/zalsrx.f90 b/base/serial/aux/zalsrx.f90 index fc2b75fa..f8e1b7c5 100644 --- a/base/serial/aux/zalsrx.f90 +++ b/base/serial/aux/zalsrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/zamsr.f90 b/base/serial/aux/zamsr.f90 index 46dadc2d..afaa3fd3 100644 --- a/base/serial/aux/zamsr.f90 +++ b/base/serial/aux/zamsr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/zamsrx.f90 b/base/serial/aux/zamsrx.f90 index 92bad495..ad655d9b 100644 --- a/base/serial/aux/zamsrx.f90 +++ b/base/serial/aux/zamsrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/zasr.f90 b/base/serial/aux/zasr.f90 index 1cc52f22..6c2afe8a 100644 --- a/base/serial/aux/zasr.f90 +++ b/base/serial/aux/zasr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/zasrx.f90 b/base/serial/aux/zasrx.f90 index f3b53391..5311bb03 100644 --- a/base/serial/aux/zasrx.f90 +++ b/base/serial/aux/zasrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/zlcmp_mod.f90 b/base/serial/aux/zlcmp_mod.f90 index 590aa753..3c653a25 100644 --- a/base/serial/aux/zlcmp_mod.f90 +++ b/base/serial/aux/zlcmp_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/zlsr.f90 b/base/serial/aux/zlsr.f90 index b0e044fd..89dda4e9 100644 --- a/base/serial/aux/zlsr.f90 +++ b/base/serial/aux/zlsr.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/aux/zlsrx.f90 b/base/serial/aux/zlsrx.f90 index fc886586..9d4bed24 100644 --- a/base/serial/aux/zlsrx.f90 +++ b/base/serial/aux/zlsrx.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/f77/Makefile b/base/serial/f77/Makefile index 5c45a24a..a8ae7e70 100644 --- a/base/serial/f77/Makefile +++ b/base/serial/f77/Makefile @@ -3,7 +3,7 @@ include ../../../Make.inc # # The object files # -FOBJS = daxpby.o saxpby.o \ +FOBJS = iaxpby.o daxpby.o saxpby.o \ caxpby.o zaxpby.o smmp.o diff --git a/base/serial/f77/iaxpby.f b/base/serial/f77/iaxpby.f new file mode 100644 index 00000000..cd917e64 --- /dev/null +++ b/base/serial/f77/iaxpby.f @@ -0,0 +1,198 @@ +C +C Parallel Sparse BLAS version 3.0 +C (C) Copyright 2006, 2007, 2008, 2009, 2010 +C Salvatore Filippone University of Rome Tor Vergata +C Alfredo Buttari CNRS-IRIT, Toulouse +C +C Redistribution and use in source and binary forms, with or without +C modification, are permitted provided that the following conditions +C are met: +C 1. Redistributions of source code must retain the above copyright +C notice, this list of conditions and the following disclaimer. +C 2. Redistributions in binary form must reproduce the above copyright +C notice, this list of conditions, and the following disclaimer in the +C documentation and/or other materials provided with the distribution. +C 3. The name of the PSBLAS group or the names of its contributors may +C not be used to endorse or promote products derived from this +C software without specific written permission. +C +C THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +C ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +C TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +C PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +C BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +C CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +C SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +C INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +C CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +C ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +C POSSIBILITY OF SUCH DAMAGE. +C +C + subroutine iaxpby(m, n, alpha, X, lldx, beta, Y, lldy, info) + use psb_const_mod + integer n, m, lldx, lldy, info + integer(psb_ipk_) X(lldx,*), Y(lldy,*) + integer(psb_ipk_) alpha, beta + integer(psb_ipk_) :: i, j + integer(psb_ipk_) :: int_err(5) + character name*20 + name='saxpby' + + +C +C Error handling +C + info = psb_success_ + if (m.lt.0) then + info=psb_err_iarg_neg_ + int_err(1)=1 + int_err(2)=m + call fcpsb_errpush(info,name,int_err) + goto 9999 + else if (n.lt.0) then + info=psb_err_iarg_neg_ + int_err(1)=1 + int_err(2)=n + call fcpsb_errpush(info,name,int_err) + goto 9999 + else if (lldx.lt.max(1,m)) then + info=psb_err_iarg_not_gtia_ii_ + int_err(1)=5 + int_err(2)=1 + int_err(3)=lldx + int_err(4)=m + call fcpsb_errpush(info,name,int_err) + goto 9999 + else if (lldy.lt.max(1,m)) then + info=psb_err_iarg_not_gtia_ii_ + int_err(1)=8 + int_err(2)=1 + int_err(3)=lldy + int_err(4)=m + call fcpsb_errpush(info,name,int_err) + goto 9999 + endif + + if (alpha.eq.izero) then + if (beta.eq.izero) then + do j=1, n + do i=1,m + y(i,j) = izero + enddo + enddo + else if (beta.eq.ione) then +c$$$ +c$$$ Do nothing! +c$$$ + + else if (beta.eq.-ione) then + do j=1,n + do i=1,m + y(i,j) = - y(i,j) + enddo + enddo + else + do j=1,n + do i=1,m + y(i,j) = beta*y(i,j) + enddo + enddo + endif + + else if (alpha.eq.ione) then + + if (beta.eq.izero) then + do j=1,n + do i=1,m + y(i,j) = x(i,j) + enddo + enddo + else if (beta.eq.ione) then + do j=1,n + do i=1,m + y(i,j) = x(i,j) + y(i,j) + enddo + enddo + + else if (beta.eq.-ione) then + do j=1,n + do i=1,m + y(i,j) = x(i,j) - y(i,j) + enddo + enddo + else + do j=1,n + do i=1,m + y(i,j) = x(i,j) + beta*y(i,j) + enddo + enddo + endif + + else if (alpha.eq.-ione) then + + if (beta.eq.izero) then + do j=1,n + do i=1,m + y(i,j) = -x(i,j) + enddo + enddo + else if (beta.eq.ione) then + do j=1,n + do i=1,m + y(i,j) = -x(i,j) + y(i,j) + enddo + enddo + + else if (beta.eq.-ione) then + do j=1,n + do i=1,m + y(i,j) = -x(i,j) - y(i,j) + enddo + enddo + else + do j=1,n + do i=1,m + y(i,j) = -x(i,j) + beta*y(i,j) + enddo + enddo + endif + + else + + if (beta.eq.izero) then + do j=1,n + do i=1,m + y(i,j) = alpha*x(i,j) + enddo + enddo + else if (beta.eq.ione) then + do j=1,n + do i=1,m + y(i,j) = alpha*x(i,j) + y(i,j) + enddo + enddo + + else if (beta.eq.-ione) then + do j=1,n + do i=1,m + y(i,j) = alpha*x(i,j) - y(i,j) + enddo + enddo + else + do j=1,n + do i=1,m + y(i,j) = alpha*x(i,j) + beta*y(i,j) + enddo + enddo + endif + + endif + + return + + 9999 continue + call fcpsb_serror() + return + + end diff --git a/base/serial/impl/psb_c_base_mat_impl.f90 b/base/serial/impl/psb_c_base_mat_impl.F90 similarity index 92% rename from base/serial/impl/psb_c_base_mat_impl.f90 rename to base/serial/impl/psb_c_base_mat_impl.F90 index 39ee666d..294b7aa9 100644 --- a/base/serial/impl/psb_c_base_mat_impl.f90 +++ b/base/serial/impl/psb_c_base_mat_impl.F90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! == ================================== ! ! @@ -86,9 +117,28 @@ subroutine psb_c_base_cp_to_fmt(a,b,info) ! Default implementation ! info = psb_success_ + call psb_erractionsave(err_act) + call a%cp_to_coo(tmp,info) if (info == psb_success_) call b%mv_from_coo(tmp,info) + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='to/from coo') + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error() + return + end if + return return end subroutine psb_c_base_cp_to_fmt @@ -111,10 +161,29 @@ subroutine psb_c_base_cp_from_fmt(a,b,info) ! ! Default implementation ! - info = psb_success_ + info = psb_success_ + call psb_erractionsave(err_act) + call b%cp_to_coo(tmp,info) if (info == psb_success_) call a%mv_from_coo(tmp,info) + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='to/from coo') + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error() + return + end if return end subroutine psb_c_base_cp_from_fmt @@ -134,15 +203,30 @@ subroutine psb_c_base_mv_to_coo(a,b,info) character(len=20) :: name='to_coo' logical, parameter :: debug=.false. - call psb_get_erraction(err_act) - ! This is the base version. If we get here - ! it means the derived class is incomplete, - ! so we throw an error. - info = psb_err_missing_override_method_ - call psb_errpush(info,name,a_err=a%get_fmt()) - if (err_act /= psb_act_ret_) then + info = psb_success_ + call psb_erractionsave(err_act) + + call a%cp_to_coo(b,info) + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='to coo') + goto 9999 + end if + + call a%free() + + call psb_erractionrestore(err_act) + return + + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then call psb_error() + return end if return @@ -162,15 +246,29 @@ subroutine psb_c_base_mv_from_coo(a,b,info) character(len=20) :: name='from_coo' logical, parameter :: debug=.false. - call psb_get_erraction(err_act) - ! This is the base version. If we get here - ! it means the derived class is incomplete, - ! so we throw an error. - info = psb_err_missing_override_method_ - call psb_errpush(info,name,a_err=a%get_fmt()) + info = psb_success_ + call psb_erractionsave(err_act) + + call a%cp_from_coo(b,info) - if (err_act /= psb_act_ret_) then + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='from coo') + goto 9999 + end if + + call b%free() + + call psb_erractionrestore(err_act) + return + + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then call psb_error() + return end if return @@ -1456,9 +1554,11 @@ subroutine psb_c_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d) call psb_errpush(info,name,i_err=ierr) goto 9999 end if - +#ifdef HAVE_MOLD allocate(tmpv, mold=y,stat=info) - ! allocate(tmp(nac),stat=info) +#else + call y%mold(tmpv,info) +#endif if (info /= psb_success_) info = psb_err_alloc_dealloc_ if (info == psb_success_) call tmpv%mlt(cone,d%v(1:nac),x,czero,info) if (info == psb_success_)& @@ -1481,10 +1581,13 @@ subroutine psb_c_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d) if (beta == czero) then call a%inner_cssm(alpha,x,czero,y,info,trans) if (info == psb_success_) call y%mlt(d%v(1:nar),info) -!!$ if (info == psb_success_) call inner_vscal1(nar,d,y) + else - ! allocate(tmp(nar),stat=info) +#ifdef HAVE_MOLD allocate(tmpv, mold=y,stat=info) +#else + call y%mold(tmpv,info) +#endif if (info /= psb_success_) info = psb_err_alloc_dealloc_ if (info == psb_success_)& & call a%inner_cssm(alpha,x,czero,tmpv,info,trans) @@ -1550,11 +1653,8 @@ subroutine psb_c_base_inner_vect_sv(alpha,a,x,beta,y,info,trans) character(len=20) :: name='c_base_inner_vect_sv' logical, parameter :: debug=.false. - call psb_get_erraction(err_act) - ! This is the base version. If we get here - ! it means the derived class is incomplete, - ! so we throw an error. - info = psb_success_ + info = psb_success_ + call psb_erractionsave(err_act) call a%inner_cssm(alpha,x%v,beta,y%v,info,trans) diff --git a/base/serial/impl/psb_c_coo_impl.f90 b/base/serial/impl/psb_c_coo_impl.f90 index 8906de85..6b000d1b 100644 --- a/base/serial/impl/psb_c_coo_impl.f90 +++ b/base/serial/impl/psb_c_coo_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_c_coo_get_diag(a,d,info) use psb_c_base_mat_mod, psb_protect_name => psb_c_coo_get_diag diff --git a/base/serial/impl/psb_c_csc_impl.f90 b/base/serial/impl/psb_c_csc_impl.f90 index 5cc9a78a..20acfdca 100644 --- a/base/serial/impl/psb_c_csc_impl.f90 +++ b/base/serial/impl/psb_c_csc_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! == =================================== ! diff --git a/base/serial/impl/psb_c_csr_impl.f90 b/base/serial/impl/psb_c_csr_impl.f90 index 0df888a3..b7f4c2b9 100644 --- a/base/serial/impl/psb_c_csr_impl.f90 +++ b/base/serial/impl/psb_c_csr_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! == =================================== ! diff --git a/base/serial/impl/psb_c_mat_impl.F90 b/base/serial/impl/psb_c_mat_impl.F90 index f0e18f93..7832f875 100644 --- a/base/serial/impl/psb_c_mat_impl.F90 +++ b/base/serial/impl/psb_c_mat_impl.F90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! ! c_mat_impl: ! implementation of the outer matrix methods. diff --git a/base/serial/impl/psb_d_base_mat_impl.f90 b/base/serial/impl/psb_d_base_mat_impl.F90 similarity index 92% rename from base/serial/impl/psb_d_base_mat_impl.f90 rename to base/serial/impl/psb_d_base_mat_impl.F90 index 2fcf60fc..de2bb1ce 100644 --- a/base/serial/impl/psb_d_base_mat_impl.f90 +++ b/base/serial/impl/psb_d_base_mat_impl.F90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! == ================================== ! ! @@ -86,9 +117,28 @@ subroutine psb_d_base_cp_to_fmt(a,b,info) ! Default implementation ! info = psb_success_ + call psb_erractionsave(err_act) + call a%cp_to_coo(tmp,info) if (info == psb_success_) call b%mv_from_coo(tmp,info) + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='to/from coo') + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error() + return + end if + return return end subroutine psb_d_base_cp_to_fmt @@ -111,10 +161,29 @@ subroutine psb_d_base_cp_from_fmt(a,b,info) ! ! Default implementation ! - info = psb_success_ + info = psb_success_ + call psb_erractionsave(err_act) + call b%cp_to_coo(tmp,info) if (info == psb_success_) call a%mv_from_coo(tmp,info) + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='to/from coo') + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error() + return + end if return end subroutine psb_d_base_cp_from_fmt @@ -134,15 +203,30 @@ subroutine psb_d_base_mv_to_coo(a,b,info) character(len=20) :: name='to_coo' logical, parameter :: debug=.false. - call psb_get_erraction(err_act) - ! This is the base version. If we get here - ! it means the derived class is incomplete, - ! so we throw an error. - info = psb_err_missing_override_method_ - call psb_errpush(info,name,a_err=a%get_fmt()) - if (err_act /= psb_act_ret_) then + info = psb_success_ + call psb_erractionsave(err_act) + + call a%cp_to_coo(b,info) + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='to coo') + goto 9999 + end if + + call a%free() + + call psb_erractionrestore(err_act) + return + + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then call psb_error() + return end if return @@ -162,15 +246,29 @@ subroutine psb_d_base_mv_from_coo(a,b,info) character(len=20) :: name='from_coo' logical, parameter :: debug=.false. - call psb_get_erraction(err_act) - ! This is the base version. If we get here - ! it means the derived class is incomplete, - ! so we throw an error. - info = psb_err_missing_override_method_ - call psb_errpush(info,name,a_err=a%get_fmt()) + info = psb_success_ + call psb_erractionsave(err_act) + + call a%cp_from_coo(b,info) - if (err_act /= psb_act_ret_) then + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='from coo') + goto 9999 + end if + + call b%free() + + call psb_erractionrestore(err_act) + return + + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then call psb_error() + return end if return @@ -1456,9 +1554,11 @@ subroutine psb_d_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d) call psb_errpush(info,name,i_err=ierr) goto 9999 end if - +#ifdef HAVE_MOLD allocate(tmpv, mold=y,stat=info) - ! allocate(tmp(nac),stat=info) +#else + call y%mold(tmpv,info) +#endif if (info /= psb_success_) info = psb_err_alloc_dealloc_ if (info == psb_success_) call tmpv%mlt(done,d%v(1:nac),x,dzero,info) if (info == psb_success_)& @@ -1481,10 +1581,13 @@ subroutine psb_d_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d) if (beta == dzero) then call a%inner_cssm(alpha,x,dzero,y,info,trans) if (info == psb_success_) call y%mlt(d%v(1:nar),info) -!!$ if (info == psb_success_) call inner_vscal1(nar,d,y) + else - ! allocate(tmp(nar),stat=info) +#ifdef HAVE_MOLD allocate(tmpv, mold=y,stat=info) +#else + call y%mold(tmpv,info) +#endif if (info /= psb_success_) info = psb_err_alloc_dealloc_ if (info == psb_success_)& & call a%inner_cssm(alpha,x,dzero,tmpv,info,trans) @@ -1550,11 +1653,8 @@ subroutine psb_d_base_inner_vect_sv(alpha,a,x,beta,y,info,trans) character(len=20) :: name='d_base_inner_vect_sv' logical, parameter :: debug=.false. - call psb_get_erraction(err_act) - ! This is the base version. If we get here - ! it means the derived class is incomplete, - ! so we throw an error. - info = psb_success_ + info = psb_success_ + call psb_erractionsave(err_act) call a%inner_cssm(alpha,x%v,beta,y%v,info,trans) diff --git a/base/serial/impl/psb_d_coo_impl.f90 b/base/serial/impl/psb_d_coo_impl.f90 index 45b58405..35f84b51 100644 --- a/base/serial/impl/psb_d_coo_impl.f90 +++ b/base/serial/impl/psb_d_coo_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_d_coo_get_diag(a,d,info) use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_get_diag diff --git a/base/serial/impl/psb_d_csc_impl.f90 b/base/serial/impl/psb_d_csc_impl.f90 index cd540e96..c1660e7f 100644 --- a/base/serial/impl/psb_d_csc_impl.f90 +++ b/base/serial/impl/psb_d_csc_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! == =================================== ! diff --git a/base/serial/impl/psb_d_csr_impl.f90 b/base/serial/impl/psb_d_csr_impl.f90 index b8a380af..e91523aa 100644 --- a/base/serial/impl/psb_d_csr_impl.f90 +++ b/base/serial/impl/psb_d_csr_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! == =================================== ! diff --git a/base/serial/impl/psb_d_mat_impl.F90 b/base/serial/impl/psb_d_mat_impl.F90 index 5732cc07..909556d0 100644 --- a/base/serial/impl/psb_d_mat_impl.F90 +++ b/base/serial/impl/psb_d_mat_impl.F90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! ! d_mat_impl: ! implementation of the outer matrix methods. diff --git a/base/serial/impl/psb_s_base_mat_impl.f90 b/base/serial/impl/psb_s_base_mat_impl.F90 similarity index 92% rename from base/serial/impl/psb_s_base_mat_impl.f90 rename to base/serial/impl/psb_s_base_mat_impl.F90 index daa6f494..7e0cfc98 100644 --- a/base/serial/impl/psb_s_base_mat_impl.f90 +++ b/base/serial/impl/psb_s_base_mat_impl.F90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! == ================================== ! ! @@ -86,9 +117,28 @@ subroutine psb_s_base_cp_to_fmt(a,b,info) ! Default implementation ! info = psb_success_ + call psb_erractionsave(err_act) + call a%cp_to_coo(tmp,info) if (info == psb_success_) call b%mv_from_coo(tmp,info) + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='to/from coo') + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error() + return + end if + return return end subroutine psb_s_base_cp_to_fmt @@ -111,10 +161,29 @@ subroutine psb_s_base_cp_from_fmt(a,b,info) ! ! Default implementation ! - info = psb_success_ + info = psb_success_ + call psb_erractionsave(err_act) + call b%cp_to_coo(tmp,info) if (info == psb_success_) call a%mv_from_coo(tmp,info) + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='to/from coo') + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error() + return + end if return end subroutine psb_s_base_cp_from_fmt @@ -134,15 +203,30 @@ subroutine psb_s_base_mv_to_coo(a,b,info) character(len=20) :: name='to_coo' logical, parameter :: debug=.false. - call psb_get_erraction(err_act) - ! This is the base version. If we get here - ! it means the derived class is incomplete, - ! so we throw an error. - info = psb_err_missing_override_method_ - call psb_errpush(info,name,a_err=a%get_fmt()) - if (err_act /= psb_act_ret_) then + info = psb_success_ + call psb_erractionsave(err_act) + + call a%cp_to_coo(b,info) + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='to coo') + goto 9999 + end if + + call a%free() + + call psb_erractionrestore(err_act) + return + + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then call psb_error() + return end if return @@ -162,15 +246,29 @@ subroutine psb_s_base_mv_from_coo(a,b,info) character(len=20) :: name='from_coo' logical, parameter :: debug=.false. - call psb_get_erraction(err_act) - ! This is the base version. If we get here - ! it means the derived class is incomplete, - ! so we throw an error. - info = psb_err_missing_override_method_ - call psb_errpush(info,name,a_err=a%get_fmt()) + info = psb_success_ + call psb_erractionsave(err_act) + + call a%cp_from_coo(b,info) - if (err_act /= psb_act_ret_) then + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='from coo') + goto 9999 + end if + + call b%free() + + call psb_erractionrestore(err_act) + return + + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then call psb_error() + return end if return @@ -1456,9 +1554,11 @@ subroutine psb_s_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d) call psb_errpush(info,name,i_err=ierr) goto 9999 end if - +#ifdef HAVE_MOLD allocate(tmpv, mold=y,stat=info) - ! allocate(tmp(nac),stat=info) +#else + call y%mold(tmpv,info) +#endif if (info /= psb_success_) info = psb_err_alloc_dealloc_ if (info == psb_success_) call tmpv%mlt(sone,d%v(1:nac),x,szero,info) if (info == psb_success_)& @@ -1481,10 +1581,13 @@ subroutine psb_s_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d) if (beta == szero) then call a%inner_cssm(alpha,x,szero,y,info,trans) if (info == psb_success_) call y%mlt(d%v(1:nar),info) -!!$ if (info == psb_success_) call inner_vscal1(nar,d,y) + else - ! allocate(tmp(nar),stat=info) +#ifdef HAVE_MOLD allocate(tmpv, mold=y,stat=info) +#else + call y%mold(tmpv,info) +#endif if (info /= psb_success_) info = psb_err_alloc_dealloc_ if (info == psb_success_)& & call a%inner_cssm(alpha,x,szero,tmpv,info,trans) @@ -1550,11 +1653,8 @@ subroutine psb_s_base_inner_vect_sv(alpha,a,x,beta,y,info,trans) character(len=20) :: name='s_base_inner_vect_sv' logical, parameter :: debug=.false. - call psb_get_erraction(err_act) - ! This is the base version. If we get here - ! it means the derived class is incomplete, - ! so we throw an error. - info = psb_success_ + info = psb_success_ + call psb_erractionsave(err_act) call a%inner_cssm(alpha,x%v,beta,y%v,info,trans) diff --git a/base/serial/impl/psb_s_coo_impl.f90 b/base/serial/impl/psb_s_coo_impl.f90 index f3f98e6f..72c1ff14 100644 --- a/base/serial/impl/psb_s_coo_impl.f90 +++ b/base/serial/impl/psb_s_coo_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_s_coo_get_diag(a,d,info) use psb_s_base_mat_mod, psb_protect_name => psb_s_coo_get_diag diff --git a/base/serial/impl/psb_s_csc_impl.f90 b/base/serial/impl/psb_s_csc_impl.f90 index b515640d..70a78109 100644 --- a/base/serial/impl/psb_s_csc_impl.f90 +++ b/base/serial/impl/psb_s_csc_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! == =================================== ! diff --git a/base/serial/impl/psb_s_csr_impl.f90 b/base/serial/impl/psb_s_csr_impl.f90 index 7c1cc80e..ac59ce55 100644 --- a/base/serial/impl/psb_s_csr_impl.f90 +++ b/base/serial/impl/psb_s_csr_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! == =================================== ! diff --git a/base/serial/impl/psb_s_mat_impl.F90 b/base/serial/impl/psb_s_mat_impl.F90 index d5d2b03a..0d2401d9 100644 --- a/base/serial/impl/psb_s_mat_impl.F90 +++ b/base/serial/impl/psb_s_mat_impl.F90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! ! s_mat_impl: ! implementation of the outer matrix methods. diff --git a/base/serial/impl/psb_z_base_mat_impl.f90 b/base/serial/impl/psb_z_base_mat_impl.F90 similarity index 92% rename from base/serial/impl/psb_z_base_mat_impl.f90 rename to base/serial/impl/psb_z_base_mat_impl.F90 index 99acecea..fb9f80d4 100644 --- a/base/serial/impl/psb_z_base_mat_impl.f90 +++ b/base/serial/impl/psb_z_base_mat_impl.F90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! == ================================== ! ! @@ -86,9 +117,28 @@ subroutine psb_z_base_cp_to_fmt(a,b,info) ! Default implementation ! info = psb_success_ + call psb_erractionsave(err_act) + call a%cp_to_coo(tmp,info) if (info == psb_success_) call b%mv_from_coo(tmp,info) + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='to/from coo') + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error() + return + end if + return return end subroutine psb_z_base_cp_to_fmt @@ -111,10 +161,29 @@ subroutine psb_z_base_cp_from_fmt(a,b,info) ! ! Default implementation ! - info = psb_success_ + info = psb_success_ + call psb_erractionsave(err_act) + call b%cp_to_coo(tmp,info) if (info == psb_success_) call a%mv_from_coo(tmp,info) + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='to/from coo') + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error() + return + end if return end subroutine psb_z_base_cp_from_fmt @@ -134,15 +203,30 @@ subroutine psb_z_base_mv_to_coo(a,b,info) character(len=20) :: name='to_coo' logical, parameter :: debug=.false. - call psb_get_erraction(err_act) - ! This is the base version. If we get here - ! it means the derived class is incomplete, - ! so we throw an error. - info = psb_err_missing_override_method_ - call psb_errpush(info,name,a_err=a%get_fmt()) - if (err_act /= psb_act_ret_) then + info = psb_success_ + call psb_erractionsave(err_act) + + call a%cp_to_coo(b,info) + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='to coo') + goto 9999 + end if + + call a%free() + + call psb_erractionrestore(err_act) + return + + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then call psb_error() + return end if return @@ -162,15 +246,29 @@ subroutine psb_z_base_mv_from_coo(a,b,info) character(len=20) :: name='from_coo' logical, parameter :: debug=.false. - call psb_get_erraction(err_act) - ! This is the base version. If we get here - ! it means the derived class is incomplete, - ! so we throw an error. - info = psb_err_missing_override_method_ - call psb_errpush(info,name,a_err=a%get_fmt()) + info = psb_success_ + call psb_erractionsave(err_act) + + call a%cp_from_coo(b,info) - if (err_act /= psb_act_ret_) then + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name, a_err='from coo') + goto 9999 + end if + + call b%free() + + call psb_erractionrestore(err_act) + return + + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then call psb_error() + return end if return @@ -1456,9 +1554,11 @@ subroutine psb_z_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d) call psb_errpush(info,name,i_err=ierr) goto 9999 end if - +#ifdef HAVE_MOLD allocate(tmpv, mold=y,stat=info) - ! allocate(tmp(nac),stat=info) +#else + call y%mold(tmpv,info) +#endif if (info /= psb_success_) info = psb_err_alloc_dealloc_ if (info == psb_success_) call tmpv%mlt(zone,d%v(1:nac),x,zzero,info) if (info == psb_success_)& @@ -1481,10 +1581,13 @@ subroutine psb_z_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d) if (beta == zzero) then call a%inner_cssm(alpha,x,zzero,y,info,trans) if (info == psb_success_) call y%mlt(d%v(1:nar),info) -!!$ if (info == psb_success_) call inner_vscal1(nar,d,y) + else - ! allocate(tmp(nar),stat=info) +#ifdef HAVE_MOLD allocate(tmpv, mold=y,stat=info) +#else + call y%mold(tmpv,info) +#endif if (info /= psb_success_) info = psb_err_alloc_dealloc_ if (info == psb_success_)& & call a%inner_cssm(alpha,x,zzero,tmpv,info,trans) @@ -1550,11 +1653,8 @@ subroutine psb_z_base_inner_vect_sv(alpha,a,x,beta,y,info,trans) character(len=20) :: name='z_base_inner_vect_sv' logical, parameter :: debug=.false. - call psb_get_erraction(err_act) - ! This is the base version. If we get here - ! it means the derived class is incomplete, - ! so we throw an error. - info = psb_success_ + info = psb_success_ + call psb_erractionsave(err_act) call a%inner_cssm(alpha,x%v,beta,y%v,info,trans) diff --git a/base/serial/impl/psb_z_coo_impl.f90 b/base/serial/impl/psb_z_coo_impl.f90 index b605d855..4505db30 100644 --- a/base/serial/impl/psb_z_coo_impl.f90 +++ b/base/serial/impl/psb_z_coo_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_z_coo_get_diag(a,d,info) use psb_z_base_mat_mod, psb_protect_name => psb_z_coo_get_diag diff --git a/base/serial/impl/psb_z_csc_impl.f90 b/base/serial/impl/psb_z_csc_impl.f90 index 33b64d84..1c6d1638 100644 --- a/base/serial/impl/psb_z_csc_impl.f90 +++ b/base/serial/impl/psb_z_csc_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! == =================================== ! diff --git a/base/serial/impl/psb_z_csr_impl.f90 b/base/serial/impl/psb_z_csr_impl.f90 index 9f8b8843..f0606683 100644 --- a/base/serial/impl/psb_z_csr_impl.f90 +++ b/base/serial/impl/psb_z_csr_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! == =================================== ! diff --git a/base/serial/impl/psb_z_mat_impl.F90 b/base/serial/impl/psb_z_mat_impl.F90 index 9e1763f7..bdd413f2 100644 --- a/base/serial/impl/psb_z_mat_impl.F90 +++ b/base/serial/impl/psb_z_mat_impl.F90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ ! ! z_mat_impl: ! implementation of the outer matrix methods. diff --git a/base/serial/psb_camax_s.f90 b/base/serial/psb_camax_s.f90 index 6db76e6b..49c6c907 100644 --- a/base/serial/psb_camax_s.f90 +++ b/base/serial/psb_camax_s.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_casum_s.f90 b/base/serial/psb_casum_s.f90 index 0ef2fe1c..b0845649 100644 --- a/base/serial/psb_casum_s.f90 +++ b/base/serial/psb_casum_s.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_cnumbmm.f90 b/base/serial/psb_cnumbmm.f90 index c644b110..0c358071 100644 --- a/base/serial/psb_cnumbmm.f90 +++ b/base/serial/psb_cnumbmm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_crwextd.f90 b/base/serial/psb_crwextd.f90 index 5baf1df9..c64e36a7 100644 --- a/base/serial/psb_crwextd.f90 +++ b/base/serial/psb_crwextd.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_csymbmm.f90 b/base/serial/psb_csymbmm.f90 index 155bf45f..cdfee9f7 100644 --- a/base/serial/psb_csymbmm.f90 +++ b/base/serial/psb_csymbmm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_damax_s.f90 b/base/serial/psb_damax_s.f90 index f50bef01..2d69eccd 100644 --- a/base/serial/psb_damax_s.f90 +++ b/base/serial/psb_damax_s.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_dasum_s.f90 b/base/serial/psb_dasum_s.f90 index 42b075b1..bcac418f 100644 --- a/base/serial/psb_dasum_s.f90 +++ b/base/serial/psb_dasum_s.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_dnumbmm.f90 b/base/serial/psb_dnumbmm.f90 index 3d6c7058..1b286499 100644 --- a/base/serial/psb_dnumbmm.f90 +++ b/base/serial/psb_dnumbmm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_drwextd.f90 b/base/serial/psb_drwextd.f90 index c5b17684..740558d6 100644 --- a/base/serial/psb_drwextd.f90 +++ b/base/serial/psb_drwextd.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_dsymbmm.f90 b/base/serial/psb_dsymbmm.f90 index 53960542..b8e57e0a 100644 --- a/base/serial/psb_dsymbmm.f90 +++ b/base/serial/psb_dsymbmm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_lsame.f90 b/base/serial/psb_lsame.f90 index c7bf91f1..6aac7318 100644 --- a/base/serial/psb_lsame.f90 +++ b/base/serial/psb_lsame.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_samax_s.f90 b/base/serial/psb_samax_s.f90 index 5aa8278e..1519b30f 100644 --- a/base/serial/psb_samax_s.f90 +++ b/base/serial/psb_samax_s.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_sasum_s.f90 b/base/serial/psb_sasum_s.f90 index 8497bf59..1391d8f0 100644 --- a/base/serial/psb_sasum_s.f90 +++ b/base/serial/psb_sasum_s.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_snumbmm.f90 b/base/serial/psb_snumbmm.f90 index 4af9f72e..77e5593a 100644 --- a/base/serial/psb_snumbmm.f90 +++ b/base/serial/psb_snumbmm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_sort_impl.f90 b/base/serial/psb_sort_impl.f90 index 1616b7f2..50873d80 100644 --- a/base/serial/psb_sort_impl.f90 +++ b/base/serial/psb_sort_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_srwextd.f90 b/base/serial/psb_srwextd.f90 index 34f56ec4..b729a28c 100644 --- a/base/serial/psb_srwextd.f90 +++ b/base/serial/psb_srwextd.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_ssymbmm.f90 b/base/serial/psb_ssymbmm.f90 index fa87f43a..58c642a2 100644 --- a/base/serial/psb_ssymbmm.f90 +++ b/base/serial/psb_ssymbmm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_zamax_s.f90 b/base/serial/psb_zamax_s.f90 index eea70b2c..fbaeb860 100644 --- a/base/serial/psb_zamax_s.f90 +++ b/base/serial/psb_zamax_s.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_zasum_s.f90 b/base/serial/psb_zasum_s.f90 index 2288dc8d..f2e5b3b9 100644 --- a/base/serial/psb_zasum_s.f90 +++ b/base/serial/psb_zasum_s.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_znumbmm.f90 b/base/serial/psb_znumbmm.f90 index 91c13132..6a377478 100644 --- a/base/serial/psb_znumbmm.f90 +++ b/base/serial/psb_znumbmm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_zrwextd.f90 b/base/serial/psb_zrwextd.f90 index d077c79a..fd9abed0 100644 --- a/base/serial/psb_zrwextd.f90 +++ b/base/serial/psb_zrwextd.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psb_zsymbmm.f90 b/base/serial/psb_zsymbmm.f90 index 3fde5b80..6a2a4e3c 100644 --- a/base/serial/psb_zsymbmm.f90 +++ b/base/serial/psb_zsymbmm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/serial/psi_serial_impl.f90 b/base/serial/psi_serial_impl.f90 index 6de95b7a..d091cb34 100644 --- a/base/serial/psi_serial_impl.f90 +++ b/base/serial/psi_serial_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -845,6 +845,124 @@ subroutine psi_zsctv(n,idx,x,beta,y) end subroutine psi_zsctv +subroutine psi_iaxpbyv(m,alpha, x, beta, y, info) + use psb_const_mod + use psb_error_mod + implicit none + + integer(psb_ipk_), intent(in) :: m + integer(psb_ipk_), intent (in) :: x(:) + integer(psb_ipk_), intent (inout) :: y(:) + integer(psb_ipk_), intent (in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + integer(psb_ipk_) :: lx, ly + integer(psb_ipk_) :: ierr(5) + character(len=20) :: name, ch_err + + name='psb_geaxpby' + if(psb_get_errstatus() /= 0) return + info=psb_success_ + call psb_erractionsave(err_act) + + if (m < 0) then + info = psb_err_iarg_neg_ + ierr(1) = 1; ierr(2) = m + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + lx = size(x,1) + ly = size(y,1) + if (lx < m) then + info = psb_err_input_asize_small_i_ + ierr(1) = 3; ierr(2) = m + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + if (ly < m) then + info = psb_err_input_asize_small_i_ + ierr(1) = 5; ierr(2) = m + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + + if (m>0) call iaxpby(m,ione,alpha,x,lx,beta,y,ly,info) + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error() + return + end if + return + +end subroutine psi_iaxpbyv +subroutine psi_iaxpby(m,n,alpha, x, beta, y, info) + use psb_const_mod + use psb_error_mod + implicit none + integer(psb_ipk_), intent(in) :: m, n + integer(psb_ipk_), intent (in) :: x(:,:) + integer(psb_ipk_), intent (inout) :: y(:,:) + integer(psb_ipk_), intent (in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + integer(psb_ipk_) :: lx, ly + integer(psb_ipk_) :: ierr(5) + character(len=20) :: name, ch_err + + name='psb_geaxpby' + if(psb_get_errstatus() /= 0) return + info=psb_success_ + call psb_erractionsave(err_act) + + if (m < 0) then + info = psb_err_iarg_neg_ + ierr(1) = 1; ierr(2) = m + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + if (n < 0) then + info = psb_err_iarg_neg_ + ierr(1) = 2; ierr(2) = n + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + lx = size(x,1) + ly = size(y,1) + if (lx < m) then + info = psb_err_input_asize_small_i_ + ierr(1) = 4; ierr(2) = m + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + if (ly < m) then + info = psb_err_input_asize_small_i_ + ierr(1) = 6; ierr(2) = m + call psb_errpush(info,name,i_err=ierr) + goto 9999 + end if + + if ((m>0).and.(n>0)) & + & call iaxpby(m,n,alpha,x,lx,beta,y,ly,info) + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_abort_) then + call psb_error() + return + end if + return + +end subroutine psi_iaxpby + subroutine psi_saxpbyv(m,alpha, x, beta, y, info) use psb_const_mod use psb_error_mod diff --git a/base/tools/psb_c_map.f90 b/base/tools/psb_c_map.f90 index ef674326..dd7159dc 100644 --- a/base/tools/psb_c_map.f90 +++ b/base/tools/psb_c_map.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_callc.f90 b/base/tools/psb_callc.f90 index 11774057..407a0817 100644 --- a/base/tools/psb_callc.f90 +++ b/base/tools/psb_callc.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -137,7 +137,7 @@ end subroutine psb_calloc !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_casb.f90 b/base/tools/psb_casb.f90 index 69067935..bf6b2bfd 100644 --- a/base/tools/psb_casb.f90 +++ b/base/tools/psb_casb.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -135,7 +135,7 @@ end subroutine psb_casb !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_ccdbldext.F90 b/base/tools/psb_ccdbldext.F90 index b351b4a8..9f571e18 100644 --- a/base/tools/psb_ccdbldext.F90 +++ b/base/tools/psb_ccdbldext.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cd_inloc.f90 b/base/tools/psb_cd_inloc.f90 index 4ba05c37..da55bd82 100644 --- a/base/tools/psb_cd_inloc.f90 +++ b/base/tools/psb_cd_inloc.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -41,7 +41,7 @@ ! ictxt - integer. The communication context. ! desc - type(psb_desc_type). The communication descriptor. ! info - integer. Eventually returns an error code -subroutine psb_cd_inloc(v, ictxt, desc, info, globalcheck) +subroutine psb_cd_inloc(v, ictxt, desc, info, globalcheck,idx) use psb_base_mod use psi_mod use psb_repl_map_mod @@ -53,15 +53,16 @@ subroutine psb_cd_inloc(v, ictxt, desc, info, globalcheck) integer(psb_ipk_), intent(out) :: info type(psb_desc_type), intent(out) :: desc logical, intent(in), optional :: globalcheck + integer(psb_ipk_), intent(in), optional :: idx(:) !locals integer(psb_ipk_) :: i,j,np,me,loc_row,err,& & loc_col,nprocs,n, k,glx,nlu,& - & idx, flag_, err_act,m, novrl, norphan,& + & flag_, err_act,m, novrl, norphan,& & npr_ov, itmpov, i_pnt, nrt integer(psb_ipk_) :: int_err(5),exch(3) integer(psb_ipk_), allocatable :: temp_ovrlap(:), tmpgidx(:,:), vl(:),& - & nov(:), ov_idx(:,:) + & nov(:), ov_idx(:,:), ix(:) integer(psb_ipk_) :: debug_level, debug_unit integer(psb_mpik_) :: iictxt logical :: check_, islarge @@ -139,7 +140,7 @@ subroutine psb_cd_inloc(v, ictxt, desc, info, globalcheck) islarge = psb_cd_choose_large_state(ictxt,m) - allocate(vl(loc_row),stat=info) + allocate(vl(loc_row),ix(loc_row),stat=info) if (info /= psb_success_) then info=psb_err_alloc_dealloc_ call psb_errpush(info,name,i_err=int_err) @@ -224,16 +225,31 @@ subroutine psb_cd_inloc(v, ictxt, desc, info, globalcheck) goto 9999 end if - ! - ! Now sort the input items, and check for duplicates - ! (unlikely, but possible) - ! - call psb_msort_unique(vl,nlu) - if (loc_row /= nlu) then - info = psb_err_dupl_cd_vl - call psb_errpush(info,name) - goto 9999 + ! Sort, eliminate duplicates, then + ! scramble back into original position. + ix(1) = -1 + if (present(idx)) then + if (size(idx) >= loc_row) then + do i=1, loc_row + ix(i) = idx(i) + end do + end if + end if + if (idx(1) == -1) then + do i=1, loc_row + ix(i) = i + end do end if + call psb_msort(vl,ix,flag=psb_sort_keep_idx_) + nlu = 1 + do i=2,loc_row + if (vl(i) /= vl(nlu)) then + nlu = nlu + 1 + vl(nlu) = vl(i) + ix(nlu) = ix(i) + end if + end do + call psb_msort(ix(1:nlu),vl(1:nlu),flag=psb_sort_keep_idx_) call psb_nullify_desc(desc) @@ -355,7 +371,7 @@ subroutine psb_cd_inloc(v, ictxt, desc, info, globalcheck) call psi_bld_tmpovrl(temp_ovrlap,desc,info) - if (info == psb_success_) deallocate(temp_ovrlap,vl,stat=info) + if (info == psb_success_) deallocate(temp_ovrlap,vl,ix,stat=info) if ((info == psb_success_).and.(allocated(tmpgidx)))& & deallocate(tmpgidx,stat=info) if ((info == psb_success_) .and.(allocated(ov_idx))) & diff --git a/base/tools/psb_cd_lstext.f90 b/base/tools/psb_cd_lstext.f90 index bd71b7d9..ce00eff5 100644 --- a/base/tools/psb_cd_lstext.f90 +++ b/base/tools/psb_cd_lstext.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cd_reinit.f90 b/base/tools/psb_cd_reinit.f90 index 5b34943e..3a508fb3 100644 --- a/base/tools/psb_cd_reinit.f90 +++ b/base/tools/psb_cd_reinit.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cd_set_bld.f90 b/base/tools/psb_cd_set_bld.f90 index 52c90567..71bcd7a6 100644 --- a/base/tools/psb_cd_set_bld.f90 +++ b/base/tools/psb_cd_set_bld.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cd_switch_ovl_indxmap.f90 b/base/tools/psb_cd_switch_ovl_indxmap.f90 index b6bb7706..3862c5dc 100644 --- a/base/tools/psb_cd_switch_ovl_indxmap.f90 +++ b/base/tools/psb_cd_switch_ovl_indxmap.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -79,7 +79,7 @@ Subroutine psb_cd_switch_ovl_indxmap(desc,info) do i=1,n_col vl(i) = i end do - call desc%indxmap%l2g(vl(1:n_col),info) + call desc%indxmap%l2gip(vl(1:n_col),info) if (info /= psb_success_) then ierr(1)=info @@ -101,7 +101,7 @@ Subroutine psb_cd_switch_ovl_indxmap(desc,info) & call desc%indxmap%init(iictxt,vl(1:n_row),info) if (info == psb_success_) call psb_cd_set_bld(desc,info) if (info == psb_success_) & - & call desc%indxmap%g2l_ins(vl(n_row+1:n_col),info) + & call desc%indxmap%g2lip_ins(vl(n_row+1:n_col),info) if (info /= psb_success_) then ierr(1) = info call psb_errpush(psb_err_from_subroutine_ai_,name,& diff --git a/base/tools/psb_cdall.f90 b/base/tools/psb_cdall.f90 index 7adc3d98..1d2ae373 100644 --- a/base/tools/psb_cdall.f90 +++ b/base/tools/psb_cdall.f90 @@ -1,20 +1,20 @@ -subroutine psb_cdall(ictxt, desc, info,mg,ng,parts,vg,vl,flag,nl,repl, globalcheck) +subroutine psb_cdall(ictxt, desc, info,mg,ng,parts,vg,vl,flag,nl,repl, globalcheck,lidx) use psb_descriptor_type use psb_serial_mod use psb_const_mod use psb_error_mod use psb_penv_mod - use psb_base_tools_mod, psb_protect_name => psb_cdall + use psb_cd_tools_mod, psb_protect_name => psb_cdall use psi_mod implicit None procedure(psb_parts) :: parts - integer(psb_ipk_), intent(in) :: mg,ng,ictxt, vg(:), vl(:),nl + integer(psb_ipk_), intent(in) :: mg,ng,ictxt, vg(:), vl(:),nl,lidx(:) integer(psb_ipk_), intent(in) :: flag logical, intent(in) :: repl, globalcheck integer(psb_ipk_), intent(out) :: info type(psb_desc_type), intent(out) :: desc - optional :: mg,ng,parts,vg,vl,flag,nl,repl, globalcheck + optional :: mg,ng,parts,vg,vl,flag,nl,repl, globalcheck,lidx interface subroutine psb_cdals(m, n, parts, ictxt, desc, info) @@ -31,13 +31,14 @@ subroutine psb_cdall(ictxt, desc, info,mg,ng,parts,vg,vl,flag,nl,repl, globalche integer(psb_ipk_), intent(out) :: info Type(psb_desc_type), intent(out) :: desc end subroutine psb_cdalv - subroutine psb_cd_inloc(v, ictxt, desc, info, globalcheck) + subroutine psb_cd_inloc(v, ictxt, desc, info, globalcheck,idx) use psb_descriptor_type implicit None integer(psb_ipk_), intent(in) :: ictxt, v(:) integer(psb_ipk_), intent(out) :: info type(psb_desc_type), intent(out) :: desc logical, intent(in), optional :: globalcheck + integer(psb_ipk_), intent(in), optional :: idx(:) end subroutine psb_cd_inloc subroutine psb_cdrep(m, ictxt, desc,info) use psb_descriptor_type @@ -125,7 +126,7 @@ subroutine psb_cdall(ictxt, desc, info,mg,ng,parts,vg,vl,flag,nl,repl, globalche nnv = size(vl) end if - call psb_cd_inloc(vl(1:nnv),ictxt,desc,info, globalcheck=globalcheck) + call psb_cd_inloc(vl(1:nnv),ictxt,desc,info, globalcheck=globalcheck,idx=lidx) else if (present(nl)) then diff --git a/base/tools/psb_cdals.f90 b/base/tools/psb_cdals.f90 index 1fb2c394..69b2cc68 100644 --- a/base/tools/psb_cdals.f90 +++ b/base/tools/psb_cdals.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cdalv.f90 b/base/tools/psb_cdalv.f90 index 4f887f14..293da348 100644 --- a/base/tools/psb_cdalv.f90 +++ b/base/tools/psb_cdalv.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cdcpy.F90 b/base/tools/psb_cdcpy.F90 index af0bb3e2..2ef1a2ff 100644 --- a/base/tools/psb_cdcpy.F90 +++ b/base/tools/psb_cdcpy.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cdins.f90 b/base/tools/psb_cdins.f90 index 6e154ddc..f71452d0 100644 --- a/base/tools/psb_cdins.f90 +++ b/base/tools/psb_cdins.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -162,22 +162,25 @@ end subroutine psb_cdinsrc ! Arguments: ! nz - integer. The number of points to insert. ! ja(:) - integer The column indices of the points. -! desc - type(psb_desc_type). The communication descriptor +! desc - type(psb_desc_type). The communication descriptor ! info - integer. Return code. -! jla(:) - integer(psb_ipk_), optional The col indices in local numbering +! jla(:) - integer(psb_ipk_), optional The col indices in local numbering ! mask(:) - logical, optional, target +! lidx(:) - integer(psb_ipk_), optional User-defined local col indices ! -subroutine psb_cdinsc(nz,ja,desc,info,jla,mask) +subroutine psb_cdinsc(nz,ja,desc,info,jla,mask,lidx) use psb_base_mod, psb_protect_name => psb_cdinsc use psi_mod implicit none !....PARAMETERS... - Type(psb_desc_type), intent(inout) :: desc - integer(psb_ipk_), intent(in) :: nz,ja(:) - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), optional, intent(out) :: jla(:) - logical, optional, target, intent(in) :: mask(:) + Type(psb_desc_type), intent(inout) :: desc + integer(psb_ipk_), intent(in) :: nz,ja(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional, intent(out) :: jla(:) + logical, optional, target, intent(in) :: mask(:) + integer(psb_ipk_), intent(in), optional :: lidx(:) + !LOCALS..... @@ -230,6 +233,13 @@ subroutine psb_cdinsc(nz,ja,desc,info,jla,mask) goto 9999 end if end if + if (present(lidx)) then + if (size(lidx) < nz) then + info = 1111 + call psb_errpush(info,name) + goto 9999 + end if + end if if (present(mask)) then if (size(mask) < nz) then info = 1111 @@ -244,7 +254,7 @@ subroutine psb_cdinsc(nz,ja,desc,info,jla,mask) end if if (present(jla)) then - call psi_idx_ins_cnv(nz,ja,jla,desc,info,mask=mask_) + call psi_idx_ins_cnv(nz,ja,jla,desc,info,mask=mask_,lidx=lidx) else allocate(jla_(nz),stat=info) if (info /= psb_success_) then @@ -252,7 +262,7 @@ subroutine psb_cdinsc(nz,ja,desc,info,jla,mask) call psb_errpush(info,name) goto 9999 end if - call psi_idx_ins_cnv(nz,ja,jla_,desc,info,mask=mask_) + call psi_idx_ins_cnv(nz,ja,jla_,desc,info,mask=mask_,lidx=lidx) deallocate(jla_) end if diff --git a/base/tools/psb_cdprt.f90 b/base/tools/psb_cdprt.f90 index a50bf760..d2aea5e9 100644 --- a/base/tools/psb_cdprt.f90 +++ b/base/tools/psb_cdprt.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cdren.f90 b/base/tools/psb_cdren.f90 index 22e2c6a3..1a6db589 100644 --- a/base/tools/psb_cdren.f90 +++ b/base/tools/psb_cdren.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cdrep.f90 b/base/tools/psb_cdrep.f90 index 563735b7..18382bb6 100644 --- a/base/tools/psb_cdrep.f90 +++ b/base/tools/psb_cdrep.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cfree.f90 b/base/tools/psb_cfree.f90 index fd09d444..5defa0c5 100644 --- a/base/tools/psb_cfree.f90 +++ b/base/tools/psb_cfree.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cins.f90 b/base/tools/psb_cins.f90 index 5139e704..6adc6b6a 100644 --- a/base/tools/psb_cins.f90 +++ b/base/tools/psb_cins.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -45,7 +45,7 @@ ! dupl - integer What to do with duplicates: ! psb_dupl_ovwrt_ overwrite ! psb_dupl_add_ add -subroutine psb_cinsvi(m, irw, val, x, desc_a, info, dupl) +subroutine psb_cinsvi(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_cinsvi use psi_mod implicit none @@ -63,12 +63,14 @@ subroutine psb_cinsvi(m, irw, val, x, desc_a, info, dupl) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np, me, dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if(psb_get_errstatus() /= 0) return @@ -128,9 +130,17 @@ subroutine psb_cinsvi(m, irw, val, x, desc_a, info, dupl) else dupl_ = psb_dupl_ovwrt_ endif + if (present(local)) then + local_ = local + else + local_ = .false. + endif - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) - + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if select case(dupl_) case(psb_dupl_ovwrt_) do i = 1, m @@ -179,7 +189,7 @@ subroutine psb_cinsvi(m, irw, val, x, desc_a, info, dupl) end subroutine psb_cinsvi -subroutine psb_cins_vect(m, irw, val, x, desc_a, info, dupl) +subroutine psb_cins_vect(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_cins_vect use psi_mod implicit none @@ -196,12 +206,14 @@ subroutine psb_cins_vect(m, irw, val, x, desc_a, info, dupl) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np, me, dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if (psb_errstatus_fatal()) return @@ -264,9 +276,17 @@ subroutine psb_cins_vect(m, irw, val, x, desc_a, info, dupl) else dupl_ = psb_dupl_ovwrt_ endif + if (present(local)) then + local_ = local + else + local_ = .false. + endif - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) - + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if call x%ins(m,irl,val,dupl_,info) if (info /= 0) then call psb_errpush(info,name) @@ -289,7 +309,7 @@ subroutine psb_cins_vect(m, irw, val, x, desc_a, info, dupl) end subroutine psb_cins_vect -subroutine psb_cins_vect_r2(m, irw, val, x, desc_a, info, dupl) +subroutine psb_cins_vect_r2(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_cins_vect_r2 use psi_mod implicit none @@ -306,12 +326,14 @@ subroutine psb_cins_vect_r2(m, irw, val, x, desc_a, info, dupl) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,& & loc_rows,loc_cols,mglob,err_act, int_err(5), n integer(psb_ipk_) :: np, me, dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if (psb_errstatus_fatal()) return @@ -374,8 +396,18 @@ subroutine psb_cins_vect_r2(m, irw, val, x, desc_a, info, dupl) else dupl_ = psb_dupl_ovwrt_ endif + if (present(local)) then + local_ = local + else + local_ = .false. + endif - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if + do i=1,n if (.not.allocated(x(i)%v)) info = psb_err_invalid_vect_state_ if (info == 0) call x(i)%ins(m,irl,val(:,i),dupl_,info) @@ -406,7 +438,7 @@ end subroutine psb_cins_vect_r2 !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -451,7 +483,7 @@ end subroutine psb_cins_vect_r2 ! dupl - integer What to do with duplicates: ! psb_dupl_ovwrt_ overwrite ! psb_dupl_add_ add -subroutine psb_cinsi(m, irw, val, x, desc_a, info, dupl) +subroutine psb_cinsi(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_cinsi use psi_mod implicit none @@ -469,12 +501,14 @@ subroutine psb_cinsi(m, irw, val, x, desc_a, info, dupl) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,loc_row,j,n,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np,me,dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if(psb_get_errstatus() /= 0) return @@ -536,9 +570,18 @@ subroutine psb_cinsi(m, irw, val, x, desc_a, info, dupl) call psb_errpush(info,name) goto 9999 endif - - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + if (present(local)) then + local_ = local + else + local_ = .false. + endif + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if + select case(dupl_) case(psb_dupl_ovwrt_) do i = 1, m diff --git a/base/tools/psb_cspalloc.f90 b/base/tools/psb_cspalloc.f90 index 3e9be245..ee5e3bbd 100644 --- a/base/tools/psb_cspalloc.f90 +++ b/base/tools/psb_cspalloc.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cspasb.f90 b/base/tools/psb_cspasb.f90 index 70cc6d19..526bc6a2 100644 --- a/base/tools/psb_cspasb.f90 +++ b/base/tools/psb_cspasb.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cspfree.f90 b/base/tools/psb_cspfree.f90 index d1ed177d..89c34516 100644 --- a/base/tools/psb_cspfree.f90 +++ b/base/tools/psb_cspfree.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_csphalo.F90 b/base/tools/psb_csphalo.F90 index c741aa35..a25e326c 100644 --- a/base/tools/psb_csphalo.F90 +++ b/base/tools/psb_csphalo.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_cspins.f90 b/base/tools/psb_cspins.f90 index 58c6e526..bebfde5d 100644 --- a/base/tools/psb_cspins.f90 +++ b/base/tools/psb_cspins.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -48,7 +48,7 @@ ! rebuild - logical Allows to reopen a matrix under ! certain circumstances. ! -subroutine psb_cspins(nz,ia,ja,val,a,desc_a,info,rebuild) +subroutine psb_cspins(nz,ia,ja,val,a,desc_a,info,rebuild,local) use psb_base_mod, psb_protect_name => psb_cspins use psi_mod implicit none @@ -59,14 +59,14 @@ subroutine psb_cspins(nz,ia,ja,val,a,desc_a,info,rebuild) integer(psb_ipk_), intent(in) :: nz,ia(:),ja(:) complex(psb_spk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info - logical, intent(in), optional :: rebuild + logical, intent(in), optional :: rebuild, local !locals..... integer(psb_ipk_) :: nrow, err_act, ncol, spstate integer(psb_ipk_) :: ictxt,np,me logical, parameter :: debug=.false. integer(psb_ipk_), parameter :: relocsz=200 - logical :: rebuild_ + logical :: rebuild_, local_ integer(psb_ipk_), allocatable :: ila(:),jla(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -113,8 +113,19 @@ subroutine psb_cspins(nz,ia,ja,val,a,desc_a,info,rebuild) rebuild_ = .false. endif - if (psb_is_bld_desc(desc_a)) then + if (present(local)) then + local_ = local + else + local_ = .false. + endif + if (desc_a%is_bld()) then + + if (local_) then + info = psb_err_invalid_a_and_cd_state_ + call psb_errpush(info,name) + goto 9999 + else allocate(ila(nz),jla(nz),stat=info) if (info /= psb_success_) then ierr(1) = info @@ -145,10 +156,20 @@ subroutine psb_cspins(nz,ia,ja,val,a,desc_a,info,rebuild) call psb_errpush(info,name) goto 9999 end if + endif - - else if (psb_is_asb_desc(desc_a)) then + else if (desc_a%is_asb()) then + nrow = desc_a%get_local_rows() + ncol = desc_a%get_local_cols() + if (local_) then + call a%csput(nz,ia,ja,val,ione,nrow,ione,ncol,info) + if (info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='a%csput') + goto 9999 + end if + else allocate(ila(nz),jla(nz),stat=info) if (info /= psb_success_) then ierr(1) = info @@ -161,8 +182,6 @@ subroutine psb_cspins(nz,ia,ja,val,a,desc_a,info,rebuild) jla(1:nz) = ja(1:nz) call psb_glob_to_loc(ila(1:nz),desc_a,info,iact='I') call psb_glob_to_loc(jla(1:nz),desc_a,info,iact='I') - nrow = desc_a%get_local_rows() - ncol = desc_a%get_local_cols() call a%csput(nz,ila,jla,val,ione,nrow,ione,ncol,info) if (info /= psb_success_) then @@ -170,7 +189,7 @@ subroutine psb_cspins(nz,ia,ja,val,a,desc_a,info,rebuild) call psb_errpush(info,name,a_err='a%csput') goto 9999 end if - + end if else info = psb_err_invalid_cd_state_ call psb_errpush(info,name) diff --git a/base/tools/psb_csprn.f90 b/base/tools/psb_csprn.f90 index 45229bed..d1a1e63c 100644 --- a/base/tools/psb_csprn.f90 +++ b/base/tools/psb_csprn.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_d_map.f90 b/base/tools/psb_d_map.f90 index 8fa2b95d..254db7d9 100644 --- a/base/tools/psb_d_map.f90 +++ b/base/tools/psb_d_map.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_dallc.f90 b/base/tools/psb_dallc.f90 index 280177a6..ac90bf27 100644 --- a/base/tools/psb_dallc.f90 +++ b/base/tools/psb_dallc.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -137,7 +137,7 @@ end subroutine psb_dalloc !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_dasb.f90 b/base/tools/psb_dasb.f90 index 0461ebd1..49f06e95 100644 --- a/base/tools/psb_dasb.f90 +++ b/base/tools/psb_dasb.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -135,7 +135,7 @@ end subroutine psb_dasb !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_dcdbldext.F90 b/base/tools/psb_dcdbldext.F90 index b869cb21..beb10d2f 100644 --- a/base/tools/psb_dcdbldext.F90 +++ b/base/tools/psb_dcdbldext.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_dfree.f90 b/base/tools/psb_dfree.f90 index fe924109..23f2455d 100644 --- a/base/tools/psb_dfree.f90 +++ b/base/tools/psb_dfree.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_dins.f90 b/base/tools/psb_dins.f90 index 9f1b879f..004e8c51 100644 --- a/base/tools/psb_dins.f90 +++ b/base/tools/psb_dins.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -38,36 +38,39 @@ ! m - integer. Number of rows of submatrix belonging to ! val to be inserted. ! irw(:) - integer Row indices of rows of val (global numbering) -! val(:) - real The source dense submatrix. -! x(:) - real The destination dense matrix. +! val(:) - real The source dense submatrix. +! x(:) - real The destination dense matrix. ! desc_a - type(psb_desc_type). The communication descriptor. ! info - integer. return code ! dupl - integer What to do with duplicates: ! psb_dupl_ovwrt_ overwrite ! psb_dupl_add_ add -subroutine psb_dinsvi(m, irw, val, x, desc_a, info, dupl) +subroutine psb_dinsvi(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_dinsvi use psi_mod implicit none ! m rows number of submatrix belonging to val to be inserted + ! ix x global-row corresponding to position at which val submatrix ! must be inserted !....parameters... integer(psb_ipk_), intent(in) :: m integer(psb_ipk_), intent(in) :: irw(:) - real(psb_dpk_), intent(in) :: val(:) - real(psb_dpk_), intent(inout) :: x(:) + real(psb_dpk_), intent(in) :: val(:) + real(psb_dpk_),intent(inout) :: x(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np, me, dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if(psb_get_errstatus() /= 0) return @@ -81,7 +84,7 @@ subroutine psb_dinsvi(m, irw, val, x, desc_a, info, dupl) return end if - ictxt = desc_a%get_context() + ictxt=desc_a%get_context() call psb_info(ictxt, me, np) if (np == -1) then @@ -110,27 +113,34 @@ subroutine psb_dinsvi(m, irw, val, x, desc_a, info, dupl) goto 9999 endif - if (m == 0) return + if (m == 0) return loc_rows = desc_a%get_local_rows() loc_cols = desc_a%get_local_cols() mglob = desc_a%get_global_rows() - allocate(irl(m),stat=info) if (info /= psb_success_) then info = psb_err_alloc_dealloc_ call psb_errpush(info,name) goto 9999 endif - + if (present(dupl)) then dupl_ = dupl else dupl_ = psb_dupl_ovwrt_ endif + if (present(local)) then + local_ = local + else + local_ = .false. + endif - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) - + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if select case(dupl_) case(psb_dupl_ovwrt_) do i = 1, m @@ -150,8 +160,8 @@ subroutine psb_dinsvi(m, irw, val, x, desc_a, info, dupl) !loop over all val's rows if (irl(i) > 0) then - ! this row belongs to me - ! copy i-th row of block val in x + ! this row belongs to me + ! copy i-th row of block val in x x(irl(i)) = x(irl(i)) + val(i) end if enddo @@ -178,7 +188,8 @@ subroutine psb_dinsvi(m, irw, val, x, desc_a, info, dupl) end subroutine psb_dinsvi -subroutine psb_dins_vect(m, irw, val, x, desc_a, info, dupl) + +subroutine psb_dins_vect(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_dins_vect use psi_mod implicit none @@ -190,17 +201,19 @@ subroutine psb_dins_vect(m, irw, val, x, desc_a, info, dupl) !....parameters... integer(psb_ipk_), intent(in) :: m integer(psb_ipk_), intent(in) :: irw(:) - real(psb_dpk_), intent(in) :: val(:) + real(psb_dpk_), intent(in) :: val(:) type(psb_d_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np, me, dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if (psb_errstatus_fatal()) return @@ -263,9 +276,17 @@ subroutine psb_dins_vect(m, irw, val, x, desc_a, info, dupl) else dupl_ = psb_dupl_ovwrt_ endif + if (present(local)) then + local_ = local + else + local_ = .false. + endif - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) - + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if call x%ins(m,irl,val,dupl_,info) if (info /= 0) then call psb_errpush(info,name) @@ -288,7 +309,7 @@ subroutine psb_dins_vect(m, irw, val, x, desc_a, info, dupl) end subroutine psb_dins_vect -subroutine psb_dins_vect_r2(m, irw, val, x, desc_a, info, dupl) +subroutine psb_dins_vect_r2(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_dins_vect_r2 use psi_mod implicit none @@ -300,17 +321,19 @@ subroutine psb_dins_vect_r2(m, irw, val, x, desc_a, info, dupl) !....parameters... integer(psb_ipk_), intent(in) :: m integer(psb_ipk_), intent(in) :: irw(:) - real(psb_dpk_), intent(in) :: val(:,:) + real(psb_dpk_), intent(in) :: val(:,:) type(psb_d_vect_type), intent(inout) :: x(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,& & loc_rows,loc_cols,mglob,err_act, int_err(5), n integer(psb_ipk_) :: np, me, dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if (psb_errstatus_fatal()) return @@ -373,8 +396,18 @@ subroutine psb_dins_vect_r2(m, irw, val, x, desc_a, info, dupl) else dupl_ = psb_dupl_ovwrt_ endif + if (present(local)) then + local_ = local + else + local_ = .false. + endif - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if + do i=1,n if (.not.allocated(x(i)%v)) info = psb_err_invalid_vect_state_ if (info == 0) call x(i)%ins(m,irl,val(:,i),dupl_,info) @@ -402,9 +435,10 @@ subroutine psb_dins_vect_r2(m, irw, val, x, desc_a, info, dupl) end subroutine psb_dins_vect_r2 + !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -439,17 +473,17 @@ end subroutine psb_dins_vect_r2 ! Row indices not belonging to the current process are silently discarded. ! ! Arguments: -! m - integer. Number of rows of submatrix belonging to +! m - integer. Number of rows of submatrix belonging to ! val to be inserted. ! irw(:) - integer Row indices of rows of val (global numbering) -! val(:,:) - real The source dense submatrix. -! x(:,:) - real The destination dense matrix. +! val(:,:) - real The source dense submatrix. +! x(:,:) - real The destination dense matrix. ! desc_a - type(psb_desc_type). The communication descriptor. ! info - integer. return code ! dupl - integer What to do with duplicates: ! psb_dupl_ovwrt_ overwrite ! psb_dupl_add_ add -subroutine psb_dinsi(m, irw, val, x, desc_a, info, dupl) +subroutine psb_dinsi(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_dinsi use psi_mod implicit none @@ -460,34 +494,35 @@ subroutine psb_dinsi(m, irw, val, x, desc_a, info, dupl) ! must be inserted !....parameters... - integer(psb_ipk_), intent(in) :: m - integer(psb_ipk_), intent(in) :: irw(:) - real(psb_dpk_), intent(in) :: val(:,:) - real(psb_dpk_), intent(inout) :: x(:,:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), optional, intent(in) :: dupl + integer(psb_ipk_), intent(in) :: m + integer(psb_ipk_), intent(in) :: irw(:) + real(psb_dpk_), intent(in) :: val(:,:) + real(psb_dpk_),intent(inout) :: x(:,:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,loc_row,j,n,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np,me,dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name + if(psb_get_errstatus() /= 0) return info=psb_success_ - if (psb_errstatus_fatal()) return call psb_erractionsave(err_act) name = 'psb_dinsi' - if (.not.desc_a%is_ok()) then - info = psb_err_input_matrix_unassembled_ - int_err(1) = desc_a%get_dectype() - call psb_errpush(info,name,int_err) - goto 9999 + if (.not.psb_is_ok_desc(desc_a)) then + int_err(1)=3110 + call psb_errpush(info,name) + return end if - ictxt = desc_a%get_context() + ictxt=desc_a%get_context() call psb_info(ictxt, me, np) if (np == -1) then @@ -503,6 +538,11 @@ subroutine psb_dinsi(m, irw, val, x, desc_a, info, dupl) int_err(2) = m call psb_errpush(info,name,int_err) goto 9999 + else if (.not.psb_is_ok_desc(desc_a)) then + info = psb_err_input_matrix_unassembled_ + int_err(1) = desc_a%get_dectype() + call psb_errpush(info,name,int_err) + goto 9999 else if (size(x, dim=1) < desc_a%get_local_rows()) then info = 310 int_err(1) = 5 @@ -530,8 +570,17 @@ subroutine psb_dinsi(m, irw, val, x, desc_a, info, dupl) call psb_errpush(info,name) goto 9999 endif - - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + if (present(local)) then + local_ = local + else + local_ = .false. + endif + + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if select case(dupl_) case(psb_dupl_ovwrt_) diff --git a/base/tools/psb_dspalloc.f90 b/base/tools/psb_dspalloc.f90 index 6d274e5a..6833aa0f 100644 --- a/base/tools/psb_dspalloc.f90 +++ b/base/tools/psb_dspalloc.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_dspasb.f90 b/base/tools/psb_dspasb.f90 index c18669bb..f91ac45e 100644 --- a/base/tools/psb_dspasb.f90 +++ b/base/tools/psb_dspasb.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_dspfree.f90 b/base/tools/psb_dspfree.f90 index b58a370f..0183da4a 100644 --- a/base/tools/psb_dspfree.f90 +++ b/base/tools/psb_dspfree.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_dsphalo.F90 b/base/tools/psb_dsphalo.F90 index c2cc28dd..47f91216 100644 --- a/base/tools/psb_dsphalo.F90 +++ b/base/tools/psb_dsphalo.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_dspins.f90 b/base/tools/psb_dspins.f90 index 6bf819e9..e67dd23e 100644 --- a/base/tools/psb_dspins.f90 +++ b/base/tools/psb_dspins.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -48,7 +48,7 @@ ! rebuild - logical Allows to reopen a matrix under ! certain circumstances. ! -subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild) +subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild,local) use psb_base_mod, psb_protect_name => psb_dspins use psi_mod implicit none @@ -59,14 +59,14 @@ subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild) integer(psb_ipk_), intent(in) :: nz,ia(:),ja(:) real(psb_dpk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info - logical, intent(in), optional :: rebuild + logical, intent(in), optional :: rebuild, local !locals..... integer(psb_ipk_) :: nrow, err_act, ncol, spstate integer(psb_ipk_) :: ictxt,np,me logical, parameter :: debug=.false. integer(psb_ipk_), parameter :: relocsz=200 - logical :: rebuild_ + logical :: rebuild_, local_ integer(psb_ipk_), allocatable :: ila(:),jla(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -113,8 +113,19 @@ subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild) rebuild_ = .false. endif - if (psb_is_bld_desc(desc_a)) then + if (present(local)) then + local_ = local + else + local_ = .false. + endif + if (desc_a%is_bld()) then + + if (local_) then + info = psb_err_invalid_a_and_cd_state_ + call psb_errpush(info,name) + goto 9999 + else allocate(ila(nz),jla(nz),stat=info) if (info /= psb_success_) then ierr(1) = info @@ -145,10 +156,20 @@ subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild) call psb_errpush(info,name) goto 9999 end if + endif - - else if (psb_is_asb_desc(desc_a)) then + else if (desc_a%is_asb()) then + nrow = desc_a%get_local_rows() + ncol = desc_a%get_local_cols() + if (local_) then + call a%csput(nz,ia,ja,val,ione,nrow,ione,ncol,info) + if (info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='a%csput') + goto 9999 + end if + else allocate(ila(nz),jla(nz),stat=info) if (info /= psb_success_) then ierr(1) = info @@ -161,8 +182,6 @@ subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild) jla(1:nz) = ja(1:nz) call psb_glob_to_loc(ila(1:nz),desc_a,info,iact='I') call psb_glob_to_loc(jla(1:nz),desc_a,info,iact='I') - nrow = desc_a%get_local_rows() - ncol = desc_a%get_local_cols() call a%csput(nz,ila,jla,val,ione,nrow,ione,ncol,info) if (info /= psb_success_) then @@ -170,7 +189,7 @@ subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild) call psb_errpush(info,name,a_err='a%csput') goto 9999 end if - + end if else info = psb_err_invalid_cd_state_ call psb_errpush(info,name) diff --git a/base/tools/psb_dsprn.f90 b/base/tools/psb_dsprn.f90 index d5dedb7d..983eaa98 100644 --- a/base/tools/psb_dsprn.f90 +++ b/base/tools/psb_dsprn.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_get_overlap.f90 b/base/tools/psb_get_overlap.f90 index d6607e83..d797be33 100644 --- a/base/tools/psb_get_overlap.f90 +++ b/base/tools/psb_get_overlap.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_glob_to_loc.f90 b/base/tools/psb_glob_to_loc.f90 index 19fb0331..4758ce1d 100644 --- a/base/tools/psb_glob_to_loc.f90 +++ b/base/tools/psb_glob_to_loc.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -121,7 +121,7 @@ end subroutine psb_glob_to_loc2 !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_ialloc.f90 b/base/tools/psb_ialloc.f90 index d3137f6e..abae122c 100644 --- a/base/tools/psb_ialloc.f90 +++ b/base/tools/psb_ialloc.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -137,7 +137,7 @@ end subroutine psb_ialloc !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -250,3 +250,81 @@ subroutine psb_iallocv(x, desc_a, info,n) end subroutine psb_iallocv + +subroutine psb_ialloc_vect(x, desc_a,info,n) + use psb_base_mod, psb_protect_name => psb_ialloc_vect + use psi_mod + implicit none + + !....parameters... + type(psb_i_vect_type), intent(out) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), optional, intent(in) :: n + + !locals + integer(psb_ipk_) :: np,me,nr,i,err_act + integer(psb_ipk_) :: ictxt, int_err(5) + integer(psb_ipk_) :: debug_level, debug_unit + character(len=20) :: name + + info=psb_success_ + if (psb_errstatus_fatal()) return + name='psb_geall' + call psb_erractionsave(err_act) + debug_unit = psb_get_debug_unit() + debug_level = psb_get_debug_level() + + ictxt=desc_a%get_context() + + call psb_info(ictxt, me, np) + ! ....verify blacs grid correctness.. + if (np == -1) then + info = psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + endif + + !... check m and n parameters.... + if (.not.desc_a%is_ok()) then + info = psb_err_invalid_cd_state_ + call psb_errpush(info,name) + goto 9999 + end if + + ! As this is a rank-1 array, optional parameter N is actually ignored. + + !....allocate x ..... + if (psb_is_asb_desc(desc_a).or.psb_is_upd_desc(desc_a)) then + nr = max(1,desc_a%get_local_cols()) + else if (psb_is_bld_desc(desc_a)) then + nr = max(1,desc_a%get_local_rows()) + else + info = psb_err_internal_error_ + call psb_errpush(info,name,int_err,a_err='Invalid desc_a') + goto 9999 + endif + + allocate(psb_i_base_vect_type :: x%v, stat=info) + if (info == 0) call x%all(nr,info) + if (psb_errstatus_fatal()) then + info=psb_err_alloc_request_ + int_err(1)=nr + call psb_errpush(info,name,int_err,a_err='integer(psb_ipk_)') + goto 9999 + endif + call x%zero() + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + if (err_act == psb_act_abort_) then + call psb_error(ictxt) + return + end if + return + +end subroutine psb_ialloc_vect + diff --git a/base/tools/psb_iasb.f90 b/base/tools/psb_iasb.f90 index bc7f8c08..c05cb8b4 100644 --- a/base/tools/psb_iasb.f90 +++ b/base/tools/psb_iasb.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -136,7 +136,7 @@ end subroutine psb_iasb !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -251,3 +251,82 @@ subroutine psb_iasbv(x, desc_a, info) end subroutine psb_iasbv + +subroutine psb_iasb_vect(x, desc_a, info, mold, scratch) + use psb_base_mod, psb_protect_name => psb_iasb_vect + implicit none + + type(psb_desc_type), intent(in) :: desc_a + type(psb_i_vect_type), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + class(psb_i_base_vect_type), intent(in), optional :: mold + logical, intent(in), optional :: scratch + + ! local variables + integer(psb_ipk_) :: ictxt,np,me + integer(psb_ipk_) :: int_err(5), i1sz,nrow,ncol, err_act + logical :: scratch_ + integer(psb_ipk_) :: debug_level, debug_unit + character(len=20) :: name,ch_err + + info = psb_success_ + if (psb_errstatus_fatal()) return + + int_err(1) = 0 + name = 'psb_igeasb_v' + + ictxt = desc_a%get_context() + debug_unit = psb_get_debug_unit() + debug_level = psb_get_debug_level() + + scratch_ = .false. + if (present(scratch)) scratch_ = scratch + call psb_info(ictxt, me, np) + + ! ....verify blacs grid correctness.. + if (np == -1) then + info = psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + else if (.not.desc_a%is_ok()) then + info = psb_err_invalid_cd_state_ + call psb_errpush(info,name) + goto 9999 + end if + + nrow = desc_a%get_local_rows() + ncol = desc_a%get_local_cols() + if (debug_level >= psb_debug_ext_) & + & write(debug_unit,*) me,' ',trim(name),': sizes: ',nrow,ncol + + if (scratch_) then + call x%free(info) + call x%bld(ncol,mold=mold) + else + call x%asb(ncol,info) + ! ..update halo elements.. + call psb_halo(x,desc_a,info) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='psb_halo') + goto 9999 + end if + if (present(mold)) then + call x%cnv(mold) + end if + end if + if (debug_level >= psb_debug_ext_) & + & write(debug_unit,*) me,' ',trim(name),': end' + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + if (err_act == psb_act_abort_) then + call psb_error(ictxt) + return + end if + return + +end subroutine psb_iasb_vect diff --git a/base/tools/psb_icdasb.F90 b/base/tools/psb_icdasb.F90 index 75597103..1056612c 100644 --- a/base/tools/psb_icdasb.F90 +++ b/base/tools/psb_icdasb.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_ifree.f90 b/base/tools/psb_ifree.f90 index 0fc448eb..50c651ad 100644 --- a/base/tools/psb_ifree.f90 +++ b/base/tools/psb_ifree.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -104,7 +104,7 @@ end subroutine psb_ifree !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -198,3 +198,63 @@ subroutine psb_ifreev(x, desc_a,info) return end subroutine psb_ifreev + + +subroutine psb_ifree_vect(x, desc_a, info) + use psb_base_mod, psb_protect_name => psb_ifree_vect + implicit none + !....parameters... + type(psb_i_vect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + !...locals.... + integer(psb_ipk_) :: ictxt,np,me,err_act + character(len=20) :: name + + + info=psb_success_ + if (psb_errstatus_fatal()) return + call psb_erractionsave(err_act) + name='psb_ifreev' + + if (.not.desc_a%is_ok()) then + info = psb_err_invalid_cd_state_ + call psb_errpush(info,name) + goto 9999 + end if + ictxt = desc_a%get_context() + + call psb_info(ictxt, me, np) + if (np == -1) then + info = psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + endif + + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + + + call x%free(info) + + if (info /= psb_no_err_) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + endif + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + if (err_act == psb_act_abort_) then + call psb_error(ictxt) + return + end if + return + +end subroutine psb_ifree_vect + diff --git a/base/tools/psb_iins.f90 b/base/tools/psb_iins.f90 index dbc567d2..297b0c3d 100644 --- a/base/tools/psb_iins.f90 +++ b/base/tools/psb_iins.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -45,7 +45,7 @@ ! dupl - integer What to do with duplicates: ! psb_dupl_ovwrt_ overwrite ! psb_dupl_add_ add -subroutine psb_iinsvi(m, irw, val, x, desc_a, info, dupl) +subroutine psb_iinsvi(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_iinsvi use psi_mod implicit none @@ -62,12 +62,14 @@ subroutine psb_iinsvi(m, irw, val, x, desc_a, info, dupl) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np, me, dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if(psb_get_errstatus() /= 0) return @@ -127,9 +129,17 @@ subroutine psb_iinsvi(m, irw, val, x, desc_a, info, dupl) else dupl_ = psb_dupl_ovwrt_ endif - - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + if (present(local)) then + local_ = local + else + local_ = .false. + endif + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if select case(dupl_) case(psb_dupl_ovwrt_) do i = 1, m @@ -180,7 +190,7 @@ end subroutine psb_iinsvi !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -225,7 +235,7 @@ end subroutine psb_iinsvi ! dupl - integer What to do with duplicates: ! psb_dupl_ovwrt_ overwrite ! psb_dupl_add_ add -subroutine psb_iinsi(m, irw, val, x, desc_a, info, dupl) +subroutine psb_iinsi(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_iinsi use psi_mod implicit none @@ -243,12 +253,14 @@ subroutine psb_iinsi(m, irw, val, x, desc_a, info, dupl) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,loc_row,j,n,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np,me,dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if(psb_get_errstatus() /= 0) return @@ -310,8 +322,18 @@ subroutine psb_iinsi(m, irw, val, x, desc_a, info, dupl) call psb_errpush(info,name) goto 9999 endif - - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + + if (present(local)) then + local_ = local + else + local_ = .false. + endif + + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if select case(dupl_) case(psb_dupl_ovwrt_) @@ -366,3 +388,126 @@ subroutine psb_iinsi(m, irw, val, x, desc_a, info, dupl) return end subroutine psb_iinsi + + + +subroutine psb_iins_vect(m, irw, val, x, desc_a, info, dupl,local) + use psb_base_mod, psb_protect_name => psb_iins_vect + use psi_mod + implicit none + + ! m rows number of submatrix belonging to val to be inserted + ! ix x global-row corresponding to position at which val submatrix + ! must be inserted + + !....parameters... + integer(psb_ipk_), intent(in) :: m + integer(psb_ipk_), intent(in) :: irw(:) + integer(psb_ipk_), intent(in) :: val(:) + type(psb_i_vect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local + + !locals..... + integer(psb_ipk_) :: ictxt,i,& + & loc_rows,loc_cols,mglob,err_act, int_err(5) + integer(psb_ipk_) :: np, me, dupl_ + integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ + character(len=20) :: name + + if (psb_errstatus_fatal()) return + info=psb_success_ + call psb_erractionsave(err_act) + name = 'psb_iinsvi' + + if (.not.desc_a%is_ok()) then + info = psb_err_invalid_cd_state_ + call psb_errpush(info,name) + goto 9999 + end if + + ictxt = desc_a%get_context() + + call psb_info(ictxt, me, np) + if (np == -1) then + info = psb_err_context_error_ + call psb_errpush(info,name) + goto 9999 + endif + + !... check parameters.... + if (m < 0) then + info = psb_err_iarg_neg_ + int_err(1) = 1 + int_err(2) = m + call psb_errpush(info,name,int_err) + goto 9999 + else if (x%get_nrows() < desc_a%get_local_rows()) then + info = 310 + int_err(1) = 5 + int_err(2) = 4 + call psb_errpush(info,name,int_err) + goto 9999 + endif + + if (m == 0) return + loc_rows = desc_a%get_local_rows() + loc_cols = desc_a%get_local_cols() + mglob = desc_a%get_global_rows() + + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + + + + allocate(irl(m),stat=info) + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + endif + + if (present(dupl)) then + dupl_ = dupl + else + dupl_ = psb_dupl_ovwrt_ + endif + if (present(local)) then + local_ = local + else + local_ = .false. + endif + + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if + call x%ins(m,irl,val,dupl_,info) + if (info /= 0) then + call psb_errpush(info,name) + goto 9999 + end if + deallocate(irl) + + call psb_erractionrestore(err_act) + return + +9999 continue + call psb_erractionrestore(err_act) + + if (err_act == psb_act_ret_) then + return + else + call psb_error(ictxt) + end if + return + +end subroutine psb_iins_vect + diff --git a/base/tools/psb_loc_to_glob.f90 b/base/tools/psb_loc_to_glob.f90 index 598b62b0..857f04e4 100644 --- a/base/tools/psb_loc_to_glob.f90 +++ b/base/tools/psb_loc_to_glob.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -108,7 +108,7 @@ end subroutine psb_loc_to_glob2 !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -179,7 +179,7 @@ subroutine psb_loc_to_glob(x,desc_a,info,iact) endif act = psb_toupper(act) - call desc_a%indxmap%l2g(x,info) + call desc_a%indxmap%l2gip(x,info) if (info /= psb_success_) then select case(act) diff --git a/base/tools/psb_s_map.f90 b/base/tools/psb_s_map.f90 index 4760bb05..d75ffa62 100644 --- a/base/tools/psb_s_map.f90 +++ b/base/tools/psb_s_map.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_sallc.f90 b/base/tools/psb_sallc.f90 index 2ce09e02..59b9bd55 100644 --- a/base/tools/psb_sallc.f90 +++ b/base/tools/psb_sallc.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -137,7 +137,7 @@ end subroutine psb_salloc !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_sasb.f90 b/base/tools/psb_sasb.f90 index 915a963a..11279bc3 100644 --- a/base/tools/psb_sasb.f90 +++ b/base/tools/psb_sasb.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -135,7 +135,7 @@ end subroutine psb_sasb !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_scdbldext.F90 b/base/tools/psb_scdbldext.F90 index 6bfd63ce..1a4e00b4 100644 --- a/base/tools/psb_scdbldext.F90 +++ b/base/tools/psb_scdbldext.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_sfree.f90 b/base/tools/psb_sfree.f90 index a9419c7a..fd4fa70d 100644 --- a/base/tools/psb_sfree.f90 +++ b/base/tools/psb_sfree.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_sins.f90 b/base/tools/psb_sins.f90 index 79d4fdc1..c0a5565e 100644 --- a/base/tools/psb_sins.f90 +++ b/base/tools/psb_sins.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -38,36 +38,39 @@ ! m - integer. Number of rows of submatrix belonging to ! val to be inserted. ! irw(:) - integer Row indices of rows of val (global numbering) -! val(:) - real The source dense submatrix. -! x(:) - real The destination dense matrix. +! val(:) - real The source dense submatrix. +! x(:) - real The destination dense matrix. ! desc_a - type(psb_desc_type). The communication descriptor. ! info - integer. return code ! dupl - integer What to do with duplicates: ! psb_dupl_ovwrt_ overwrite ! psb_dupl_add_ add -subroutine psb_sinsvi(m, irw, val, x, desc_a, info, dupl) +subroutine psb_sinsvi(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_sinsvi use psi_mod implicit none ! m rows number of submatrix belonging to val to be inserted + ! ix x global-row corresponding to position at which val submatrix ! must be inserted !....parameters... integer(psb_ipk_), intent(in) :: m integer(psb_ipk_), intent(in) :: irw(:) - real(psb_spk_), intent(in) :: val(:) - real(psb_spk_), intent(inout) :: x(:) + real(psb_spk_), intent(in) :: val(:) + real(psb_spk_),intent(inout) :: x(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np, me, dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if(psb_get_errstatus() /= 0) return @@ -81,7 +84,7 @@ subroutine psb_sinsvi(m, irw, val, x, desc_a, info, dupl) return end if - ictxt = desc_a%get_context() + ictxt=desc_a%get_context() call psb_info(ictxt, me, np) if (np == -1) then @@ -110,27 +113,34 @@ subroutine psb_sinsvi(m, irw, val, x, desc_a, info, dupl) goto 9999 endif - if (m == 0) return + if (m == 0) return loc_rows = desc_a%get_local_rows() loc_cols = desc_a%get_local_cols() mglob = desc_a%get_global_rows() - allocate(irl(m),stat=info) if (info /= psb_success_) then info = psb_err_alloc_dealloc_ call psb_errpush(info,name) goto 9999 endif - + if (present(dupl)) then dupl_ = dupl else dupl_ = psb_dupl_ovwrt_ endif + if (present(local)) then + local_ = local + else + local_ = .false. + endif - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) - + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if select case(dupl_) case(psb_dupl_ovwrt_) do i = 1, m @@ -150,8 +160,8 @@ subroutine psb_sinsvi(m, irw, val, x, desc_a, info, dupl) !loop over all val's rows if (irl(i) > 0) then - ! this row belongs to me - ! copy i-th row of block val in x + ! this row belongs to me + ! copy i-th row of block val in x x(irl(i)) = x(irl(i)) + val(i) end if enddo @@ -178,7 +188,8 @@ subroutine psb_sinsvi(m, irw, val, x, desc_a, info, dupl) end subroutine psb_sinsvi -subroutine psb_sins_vect(m, irw, val, x, desc_a, info, dupl) + +subroutine psb_sins_vect(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_sins_vect use psi_mod implicit none @@ -190,17 +201,19 @@ subroutine psb_sins_vect(m, irw, val, x, desc_a, info, dupl) !....parameters... integer(psb_ipk_), intent(in) :: m integer(psb_ipk_), intent(in) :: irw(:) - real(psb_spk_), intent(in) :: val(:) + real(psb_spk_), intent(in) :: val(:) type(psb_s_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np, me, dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if (psb_errstatus_fatal()) return @@ -263,9 +276,17 @@ subroutine psb_sins_vect(m, irw, val, x, desc_a, info, dupl) else dupl_ = psb_dupl_ovwrt_ endif + if (present(local)) then + local_ = local + else + local_ = .false. + endif - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) - + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if call x%ins(m,irl,val,dupl_,info) if (info /= 0) then call psb_errpush(info,name) @@ -288,7 +309,7 @@ subroutine psb_sins_vect(m, irw, val, x, desc_a, info, dupl) end subroutine psb_sins_vect -subroutine psb_sins_vect_r2(m, irw, val, x, desc_a, info, dupl) +subroutine psb_sins_vect_r2(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_sins_vect_r2 use psi_mod implicit none @@ -300,17 +321,19 @@ subroutine psb_sins_vect_r2(m, irw, val, x, desc_a, info, dupl) !....parameters... integer(psb_ipk_), intent(in) :: m integer(psb_ipk_), intent(in) :: irw(:) - real(psb_spk_), intent(in) :: val(:,:) + real(psb_spk_), intent(in) :: val(:,:) type(psb_s_vect_type), intent(inout) :: x(:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,& & loc_rows,loc_cols,mglob,err_act, int_err(5), n integer(psb_ipk_) :: np, me, dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if (psb_errstatus_fatal()) return @@ -373,8 +396,18 @@ subroutine psb_sins_vect_r2(m, irw, val, x, desc_a, info, dupl) else dupl_ = psb_dupl_ovwrt_ endif + if (present(local)) then + local_ = local + else + local_ = .false. + endif - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if + do i=1,n if (.not.allocated(x(i)%v)) info = psb_err_invalid_vect_state_ if (info == 0) call x(i)%ins(m,irl,val(:,i),dupl_,info) @@ -402,9 +435,10 @@ subroutine psb_sins_vect_r2(m, irw, val, x, desc_a, info, dupl) end subroutine psb_sins_vect_r2 + !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -433,23 +467,23 @@ end subroutine psb_sins_vect_r2 !!$ POSSIBILITY OF SUCH DAMAGE. !!$ !!$ -! Subroutine: psb_dinsi +! Subroutine: psb_sinsi ! Insert dense submatrix to dense matrix. Note: the row indices in IRW ! are assumed to be in global numbering and are converted on the fly. ! Row indices not belonging to the current process are silently discarded. ! ! Arguments: -! m - integer. Number of rows of submatrix belonging to +! m - integer. Number of rows of submatrix belonging to ! val to be inserted. ! irw(:) - integer Row indices of rows of val (global numbering) -! val(:,:) - real The source dense submatrix. -! x(:,:) - real The destination dense matrix. +! val(:,:) - real The source dense submatrix. +! x(:,:) - real The destination dense matrix. ! desc_a - type(psb_desc_type). The communication descriptor. ! info - integer. return code ! dupl - integer What to do with duplicates: ! psb_dupl_ovwrt_ overwrite ! psb_dupl_add_ add -subroutine psb_sinsi(m, irw, val, x, desc_a, info, dupl) +subroutine psb_sinsi(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_sinsi use psi_mod implicit none @@ -462,17 +496,19 @@ subroutine psb_sinsi(m, irw, val, x, desc_a, info, dupl) !....parameters... integer(psb_ipk_), intent(in) :: m integer(psb_ipk_), intent(in) :: irw(:) - real(psb_spk_), intent(in) :: val(:,:) - real(psb_spk_), intent(inout) :: x(:,:) + real(psb_spk_), intent(in) :: val(:,:) + real(psb_spk_),intent(inout) :: x(:,:) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,loc_row,j,n,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np,me,dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if(psb_get_errstatus() /= 0) return @@ -480,14 +516,13 @@ subroutine psb_sinsi(m, irw, val, x, desc_a, info, dupl) call psb_erractionsave(err_act) name = 'psb_sinsi' - if (.not.desc_a%is_ok()) then - info = psb_err_input_matrix_unassembled_ - int_err(1) = desc_a%get_dectype() - call psb_errpush(info,name,int_err) - goto 9999 + if (.not.psb_is_ok_desc(desc_a)) then + int_err(1)=3110 + call psb_errpush(info,name) + return end if - ictxt = desc_a%get_context() + ictxt=desc_a%get_context() call psb_info(ictxt, me, np) if (np == -1) then @@ -503,6 +538,11 @@ subroutine psb_sinsi(m, irw, val, x, desc_a, info, dupl) int_err(2) = m call psb_errpush(info,name,int_err) goto 9999 + else if (.not.psb_is_ok_desc(desc_a)) then + info = psb_err_input_matrix_unassembled_ + int_err(1) = desc_a%get_dectype() + call psb_errpush(info,name,int_err) + goto 9999 else if (size(x, dim=1) < desc_a%get_local_rows()) then info = 310 int_err(1) = 5 @@ -530,9 +570,18 @@ subroutine psb_sinsi(m, irw, val, x, desc_a, info, dupl) call psb_errpush(info,name) goto 9999 endif - - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + if (present(local)) then + local_ = local + else + local_ = .false. + endif + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if + select case(dupl_) case(psb_dupl_ovwrt_) do i = 1, m diff --git a/base/tools/psb_sspalloc.f90 b/base/tools/psb_sspalloc.f90 index f6b0ec3d..08452f78 100644 --- a/base/tools/psb_sspalloc.f90 +++ b/base/tools/psb_sspalloc.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_sspasb.f90 b/base/tools/psb_sspasb.f90 index b495dfdb..2e624a92 100644 --- a/base/tools/psb_sspasb.f90 +++ b/base/tools/psb_sspasb.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_sspfree.f90 b/base/tools/psb_sspfree.f90 index 064dfa2a..6ae537bc 100644 --- a/base/tools/psb_sspfree.f90 +++ b/base/tools/psb_sspfree.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_ssphalo.F90 b/base/tools/psb_ssphalo.F90 index a2c38321..e26db24e 100644 --- a/base/tools/psb_ssphalo.F90 +++ b/base/tools/psb_ssphalo.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_sspins.f90 b/base/tools/psb_sspins.f90 index 1bd8330f..0e84325a 100644 --- a/base/tools/psb_sspins.f90 +++ b/base/tools/psb_sspins.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -48,7 +48,7 @@ ! rebuild - logical Allows to reopen a matrix under ! certain circumstances. ! -subroutine psb_sspins(nz,ia,ja,val,a,desc_a,info,rebuild) +subroutine psb_sspins(nz,ia,ja,val,a,desc_a,info,rebuild,local) use psb_base_mod, psb_protect_name => psb_sspins use psi_mod implicit none @@ -59,14 +59,14 @@ subroutine psb_sspins(nz,ia,ja,val,a,desc_a,info,rebuild) integer(psb_ipk_), intent(in) :: nz,ia(:),ja(:) real(psb_spk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info - logical, intent(in), optional :: rebuild + logical, intent(in), optional :: rebuild, local !locals..... integer(psb_ipk_) :: nrow, err_act, ncol, spstate integer(psb_ipk_) :: ictxt,np,me logical, parameter :: debug=.false. integer(psb_ipk_), parameter :: relocsz=200 - logical :: rebuild_ + logical :: rebuild_, local_ integer(psb_ipk_), allocatable :: ila(:),jla(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -113,8 +113,19 @@ subroutine psb_sspins(nz,ia,ja,val,a,desc_a,info,rebuild) rebuild_ = .false. endif - if (psb_is_bld_desc(desc_a)) then + if (present(local)) then + local_ = local + else + local_ = .false. + endif + if (desc_a%is_bld()) then + + if (local_) then + info = psb_err_invalid_a_and_cd_state_ + call psb_errpush(info,name) + goto 9999 + else allocate(ila(nz),jla(nz),stat=info) if (info /= psb_success_) then ierr(1) = info @@ -145,10 +156,20 @@ subroutine psb_sspins(nz,ia,ja,val,a,desc_a,info,rebuild) call psb_errpush(info,name) goto 9999 end if + endif - - else if (psb_is_asb_desc(desc_a)) then + else if (desc_a%is_asb()) then + nrow = desc_a%get_local_rows() + ncol = desc_a%get_local_cols() + if (local_) then + call a%csput(nz,ia,ja,val,ione,nrow,ione,ncol,info) + if (info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='a%csput') + goto 9999 + end if + else allocate(ila(nz),jla(nz),stat=info) if (info /= psb_success_) then ierr(1) = info @@ -161,8 +182,6 @@ subroutine psb_sspins(nz,ia,ja,val,a,desc_a,info,rebuild) jla(1:nz) = ja(1:nz) call psb_glob_to_loc(ila(1:nz),desc_a,info,iact='I') call psb_glob_to_loc(jla(1:nz),desc_a,info,iact='I') - nrow = desc_a%get_local_rows() - ncol = desc_a%get_local_cols() call a%csput(nz,ila,jla,val,ione,nrow,ione,ncol,info) if (info /= psb_success_) then @@ -170,7 +189,7 @@ subroutine psb_sspins(nz,ia,ja,val,a,desc_a,info,rebuild) call psb_errpush(info,name,a_err='a%csput') goto 9999 end if - + end if else info = psb_err_invalid_cd_state_ call psb_errpush(info,name) diff --git a/base/tools/psb_ssprn.f90 b/base/tools/psb_ssprn.f90 index 6d82f2e1..2cce675e 100644 --- a/base/tools/psb_ssprn.f90 +++ b/base/tools/psb_ssprn.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_z_map.f90 b/base/tools/psb_z_map.f90 index 951f8d89..8a5d5f57 100644 --- a/base/tools/psb_z_map.f90 +++ b/base/tools/psb_z_map.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_zallc.f90 b/base/tools/psb_zallc.f90 index ed076bf4..928b129c 100644 --- a/base/tools/psb_zallc.f90 +++ b/base/tools/psb_zallc.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -137,7 +137,7 @@ end subroutine psb_zalloc !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_zasb.f90 b/base/tools/psb_zasb.f90 index 4be0befb..4329d82e 100644 --- a/base/tools/psb_zasb.f90 +++ b/base/tools/psb_zasb.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -134,7 +134,7 @@ end subroutine psb_zasb !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_zcdbldext.F90 b/base/tools/psb_zcdbldext.F90 index c8026a45..cb377a82 100644 --- a/base/tools/psb_zcdbldext.F90 +++ b/base/tools/psb_zcdbldext.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_zfree.f90 b/base/tools/psb_zfree.f90 index 157cbe22..f61107a9 100644 --- a/base/tools/psb_zfree.f90 +++ b/base/tools/psb_zfree.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_zins.f90 b/base/tools/psb_zins.f90 index 610a1d63..4209937e 100644 --- a/base/tools/psb_zins.f90 +++ b/base/tools/psb_zins.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -45,7 +45,7 @@ ! dupl - integer What to do with duplicates: ! psb_dupl_ovwrt_ overwrite ! psb_dupl_add_ add -subroutine psb_zinsvi(m, irw, val, x, desc_a, info, dupl) +subroutine psb_zinsvi(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_zinsvi use psi_mod implicit none @@ -63,12 +63,14 @@ subroutine psb_zinsvi(m, irw, val, x, desc_a, info, dupl) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np, me, dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if(psb_get_errstatus() /= 0) return @@ -122,15 +124,23 @@ subroutine psb_zinsvi(m, irw, val, x, desc_a, info, dupl) call psb_errpush(info,name) goto 9999 endif - + if (present(dupl)) then dupl_ = dupl else dupl_ = psb_dupl_ovwrt_ endif - - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + if (present(local)) then + local_ = local + else + local_ = .false. + endif + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if select case(dupl_) case(psb_dupl_ovwrt_) do i = 1, m @@ -150,8 +160,8 @@ subroutine psb_zinsvi(m, irw, val, x, desc_a, info, dupl) !loop over all val's rows if (irl(i) > 0) then - ! this row belongs to me - ! copy i-th row of block val in x + ! this row belongs to me + ! copy i-th row of block val in x x(irl(i)) = x(irl(i)) + val(i) end if enddo @@ -178,7 +188,8 @@ subroutine psb_zinsvi(m, irw, val, x, desc_a, info, dupl) end subroutine psb_zinsvi -subroutine psb_zins_vect(m, irw, val, x, desc_a, info, dupl) + +subroutine psb_zins_vect(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_zins_vect use psi_mod implicit none @@ -195,12 +206,14 @@ subroutine psb_zins_vect(m, irw, val, x, desc_a, info, dupl) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np, me, dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if (psb_errstatus_fatal()) return @@ -263,9 +276,17 @@ subroutine psb_zins_vect(m, irw, val, x, desc_a, info, dupl) else dupl_ = psb_dupl_ovwrt_ endif + if (present(local)) then + local_ = local + else + local_ = .false. + endif - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) - + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if call x%ins(m,irl,val,dupl_,info) if (info /= 0) then call psb_errpush(info,name) @@ -288,7 +309,7 @@ subroutine psb_zins_vect(m, irw, val, x, desc_a, info, dupl) end subroutine psb_zins_vect -subroutine psb_zins_vect_r2(m, irw, val, x, desc_a, info, dupl) +subroutine psb_zins_vect_r2(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_zins_vect_r2 use psi_mod implicit none @@ -305,12 +326,14 @@ subroutine psb_zins_vect_r2(m, irw, val, x, desc_a, info, dupl) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,& & loc_rows,loc_cols,mglob,err_act, int_err(5), n integer(psb_ipk_) :: np, me, dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if (psb_errstatus_fatal()) return @@ -373,8 +396,18 @@ subroutine psb_zins_vect_r2(m, irw, val, x, desc_a, info, dupl) else dupl_ = psb_dupl_ovwrt_ endif + if (present(local)) then + local_ = local + else + local_ = .false. + endif - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if + do i=1,n if (.not.allocated(x(i)%v)) info = psb_err_invalid_vect_state_ if (info == 0) call x(i)%ins(m,irl,val(:,i),dupl_,info) @@ -405,7 +438,7 @@ end subroutine psb_zins_vect_r2 !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -450,7 +483,7 @@ end subroutine psb_zins_vect_r2 ! dupl - integer What to do with duplicates: ! psb_dupl_ovwrt_ overwrite ! psb_dupl_add_ add -subroutine psb_zinsi(m, irw, val, x, desc_a, info, dupl) +subroutine psb_zinsi(m, irw, val, x, desc_a, info, dupl,local) use psb_base_mod, psb_protect_name => psb_zinsi use psi_mod implicit none @@ -468,12 +501,14 @@ subroutine psb_zinsi(m, irw, val, x, desc_a, info, dupl) type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), optional, intent(in) :: dupl + logical, intent(in), optional :: local !locals..... integer(psb_ipk_) :: ictxt,i,loc_row,j,n,& & loc_rows,loc_cols,mglob,err_act, int_err(5) integer(psb_ipk_) :: np,me,dupl_ integer(psb_ipk_), allocatable :: irl(:) + logical :: local_ character(len=20) :: name if(psb_get_errstatus() /= 0) return @@ -535,9 +570,18 @@ subroutine psb_zinsi(m, irw, val, x, desc_a, info, dupl) call psb_errpush(info,name) goto 9999 endif - - call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + if (present(local)) then + local_ = local + else + local_ = .false. + endif + if (local_) then + irl(1:m) = irw(1:m) + else + call psi_idx_cnv(m,irw,irl,desc_a,info,owned=.true.) + end if + select case(dupl_) case(psb_dupl_ovwrt_) do i = 1, m diff --git a/base/tools/psb_zspalloc.f90 b/base/tools/psb_zspalloc.f90 index 1ad3a320..5c9b8a08 100644 --- a/base/tools/psb_zspalloc.f90 +++ b/base/tools/psb_zspalloc.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_zspasb.f90 b/base/tools/psb_zspasb.f90 index 28c33fd0..45a8f0d9 100644 --- a/base/tools/psb_zspasb.f90 +++ b/base/tools/psb_zspasb.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_zspfree.f90 b/base/tools/psb_zspfree.f90 index c90550bc..b50717ff 100644 --- a/base/tools/psb_zspfree.f90 +++ b/base/tools/psb_zspfree.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_zsphalo.F90 b/base/tools/psb_zsphalo.F90 index dd48585a..2491dca6 100644 --- a/base/tools/psb_zsphalo.F90 +++ b/base/tools/psb_zsphalo.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/base/tools/psb_zspins.f90 b/base/tools/psb_zspins.f90 index 9b022850..ba68b481 100644 --- a/base/tools/psb_zspins.f90 +++ b/base/tools/psb_zspins.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -48,7 +48,7 @@ ! rebuild - logical Allows to reopen a matrix under ! certain circumstances. ! -subroutine psb_zspins(nz,ia,ja,val,a,desc_a,info,rebuild) +subroutine psb_zspins(nz,ia,ja,val,a,desc_a,info,rebuild,local) use psb_base_mod, psb_protect_name => psb_zspins use psi_mod implicit none @@ -59,14 +59,14 @@ subroutine psb_zspins(nz,ia,ja,val,a,desc_a,info,rebuild) integer(psb_ipk_), intent(in) :: nz,ia(:),ja(:) complex(psb_dpk_), intent(in) :: val(:) integer(psb_ipk_), intent(out) :: info - logical, intent(in), optional :: rebuild + logical, intent(in), optional :: rebuild, local !locals..... integer(psb_ipk_) :: nrow, err_act, ncol, spstate integer(psb_ipk_) :: ictxt,np,me logical, parameter :: debug=.false. integer(psb_ipk_), parameter :: relocsz=200 - logical :: rebuild_ + logical :: rebuild_, local_ integer(psb_ipk_), allocatable :: ila(:),jla(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -113,8 +113,19 @@ subroutine psb_zspins(nz,ia,ja,val,a,desc_a,info,rebuild) rebuild_ = .false. endif - if (psb_is_bld_desc(desc_a)) then + if (present(local)) then + local_ = local + else + local_ = .false. + endif + if (desc_a%is_bld()) then + + if (local_) then + info = psb_err_invalid_a_and_cd_state_ + call psb_errpush(info,name) + goto 9999 + else allocate(ila(nz),jla(nz),stat=info) if (info /= psb_success_) then ierr(1) = info @@ -145,10 +156,20 @@ subroutine psb_zspins(nz,ia,ja,val,a,desc_a,info,rebuild) call psb_errpush(info,name) goto 9999 end if + endif - - else if (psb_is_asb_desc(desc_a)) then + else if (desc_a%is_asb()) then + nrow = desc_a%get_local_rows() + ncol = desc_a%get_local_cols() + if (local_) then + call a%csput(nz,ia,ja,val,ione,nrow,ione,ncol,info) + if (info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='a%csput') + goto 9999 + end if + else allocate(ila(nz),jla(nz),stat=info) if (info /= psb_success_) then ierr(1) = info @@ -161,8 +182,6 @@ subroutine psb_zspins(nz,ia,ja,val,a,desc_a,info,rebuild) jla(1:nz) = ja(1:nz) call psb_glob_to_loc(ila(1:nz),desc_a,info,iact='I') call psb_glob_to_loc(jla(1:nz),desc_a,info,iact='I') - nrow = desc_a%get_local_rows() - ncol = desc_a%get_local_cols() call a%csput(nz,ila,jla,val,ione,nrow,ione,ncol,info) if (info /= psb_success_) then @@ -170,7 +189,7 @@ subroutine psb_zspins(nz,ia,ja,val,a,desc_a,info,rebuild) call psb_errpush(info,name,a_err='a%csput') goto 9999 end if - + end if else info = psb_err_invalid_cd_state_ call psb_errpush(info,name) diff --git a/base/tools/psb_zsprn.f90 b/base/tools/psb_zsprn.f90 index 15500155..95584e47 100644 --- a/base/tools/psb_zsprn.f90 +++ b/base/tools/psb_zsprn.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/config/pac.m4 b/config/pac.m4 index 9884a9de..410d8bea 100644 --- a/config/pac.m4 +++ b/config/pac.m4 @@ -340,7 +340,7 @@ dnl @author Salvatore Filippone dnl AC_DEFUN([PAC_ARG_SERIAL_MPI], [ -AC_MSG_CHECKING([whether we want serial (fake) mpi]) +AC_MSG_CHECKING([whether we want serial mpi stubs]) AC_ARG_ENABLE(serial, AC_HELP_STRING([--enable-serial], [Specify whether to enable a fake mpi library to run in serial mode. ]), @@ -1057,7 +1057,9 @@ dnl @category InstalledPackages dnl @author Steven G. Johnson dnl @version 2001-12-13 dnl @license GPLWithACException +dnl dnl modified by salvatore.filippone@uniroma2.it +dnl dnl shifted check for ESSL as it was generating erroneous results on dnl AIX SP5. dnl Modified with new name to handle Fortran compilers (such as NAG) @@ -1067,7 +1069,7 @@ dnl would fail even when linking in the compiler's library) AC_DEFUN([PAC_BLAS], [ AC_PREREQ(2.50) -AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS]) +dnl AC_REQUIRE([AC_FC_LIBRARY_LDFLAGS]) pac_blas_ok=no AC_ARG_WITH(blas, @@ -1080,21 +1082,20 @@ case $with_blas in esac # Get fortran linker names of BLAS functions to check for. -AC_F77_FUNC(sgemm) -AC_F77_FUNC(dgemm) +#AC_FC_FUNC(sgemm) +#AC_FC_FUNC(dgemm) pac_blas_save_LIBS="$LIBS" -LIBS="$LIBS $FLIBS" +#LIBS="$LIBS $FLIBS" +AC_LANG([Fortran]) # First, check BLAS_LIBS environment variable if test $pac_blas_ok = no; then if test "x$BLAS_LIBS" != x; then save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $LIBS" - AC_LANG([Fortran]) AC_MSG_CHECKING([for sgemm in $BLAS_LIBS]) AC_TRY_LINK_FUNC(sgemm, [pac_blas_ok=yes], [BLAS_LIBS=""]) AC_MSG_RESULT($pac_blas_ok) - AC_LANG([C]) LIBS="$save_LIBS" fi fi @@ -1102,6 +1103,7 @@ fi # BLAS in ATLAS library? (http://math-atlas.sourceforge.net/) if test $pac_blas_ok = no; then + AC_LANG([C]) AC_CHECK_LIB(atlas, ATL_xerbla, [AC_LANG([Fortran]) AC_CHECK_LIB(f77blas, sgemm, @@ -1111,7 +1113,6 @@ if test $pac_blas_ok = no; then BLAS_LIBS="-lcblas -lf77blas -latlas"], [], [-lf77blas -latlas])], [], [-latlas])]) - AC_LANG([C]) fi @@ -1124,17 +1125,16 @@ if test $pac_blas_ok = no; then [pac_blas_ok=yes; BLAS_LIBS="-lsgemm -ldgemm -lblas"], [], [-lblas])], [], [-lblas])]) - AC_LANG([C]) fi # BLAS in Alpha CXML library? if test $pac_blas_ok = no; then - AC_CHECK_LIB(cxml, $sgemm, [pac_blas_ok=yes;BLAS_LIBS="-lcxml"]) + AC_CHECK_LIB(cxml, sgemm, [pac_blas_ok=yes;BLAS_LIBS="-lcxml"]) fi # BLAS in Alpha DXML library? (now called CXML, see above) if test $pac_blas_ok = no; then - AC_CHECK_LIB(dxml, $sgemm, [pac_blas_ok=yes;BLAS_LIBS="-ldxml"]) + AC_CHECK_LIB(dxml, sgemm, [pac_blas_ok=yes;BLAS_LIBS="-ldxml"]) fi @@ -1142,7 +1142,7 @@ fi if test $pac_blas_ok = no; then if test "x$GCC" != xyes; then # only works with Sun CC AC_CHECK_LIB(sunmath, acosp, - [AC_CHECK_LIB(sunperf, $sgemm, + [AC_CHECK_LIB(sunperf, sgemm, [BLAS_LIBS="-xlic_lib=sunperf -lsunmath" pac_blas_ok=yes],[],[-lsunmath])]) @@ -1151,7 +1151,7 @@ fi # BLAS in SCSL library? (SGI/Cray Scientific Library) if test $pac_blas_ok = no; then - AC_CHECK_LIB(scs, $sgemm, [pac_blas_ok=yes; BLAS_LIBS="-lscs"]) + AC_CHECK_LIB(scs, sgemm, [pac_blas_ok=yes; BLAS_LIBS="-lscs"]) fi # BLAS in SGIMATH library? @@ -1163,15 +1163,15 @@ fi # BLAS in IBM ESSL library? (requires generic BLAS lib, too) if test $pac_blas_ok = no; then AC_CHECK_LIB(blas, $sgemm, - [AC_CHECK_LIB(essl, $sgemm, + [AC_CHECK_LIB(essl, sgemm, [pac_blas_ok=yes; BLAS_LIBS="-lessl -lblas"], [], [-lblas $FLIBS])]) fi # BLAS linked to by default? (happens on some supercomputers) if test $pac_blas_ok = no; then save_LIBS="$LIBS"; LIBS="$LIBS" - AC_TRY_LINK_FUNC($sgemm, [pac_blas_ok=yes], [BLAS_LIBS=""]) -dnl AC_CHECK_FUNC($sgemm, [pac_blas_ok=yes]) + AC_TRY_LINK_FUNC(sgemm, [pac_blas_ok=yes], [BLAS_LIBS=""]) +dnl AC_CHECK_FUNC(sgemm, [pac_blas_ok=yes]) LIBS="$save_LIBS" fi @@ -1179,10 +1179,6 @@ fi if test $pac_blas_ok = no; then AC_LANG([Fortran]) AC_CHECK_LIB(blas, sgemm, [pac_blas_ok=yes; BLAS_LIBS="-lblas"]) - AC_LANG([C]) - if test $pac_blas_ok = no; then - AC_CHECK_LIB(blas, $sgemm, [pac_blas_ok=yes; BLAS_LIBS="-lblas"]) - fi fi AC_SUBST(BLAS_LIBS) @@ -1256,7 +1252,7 @@ case $with_lapack in esac # Get fortran linker name of LAPACK function to check for. -AC_F77_FUNC(cheev) +#AC_FC_FUNC(cheev) # We cannot use LAPACK if BLAS is not found if test "x$pac_blas_ok" != xyes; then diff --git a/configure b/configure index 6efc2d91..624f3f93 100755 --- a/configure +++ b/configure @@ -1,24 +1,20 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for PSBLAS 3.0. +# Generated by GNU Autoconf 2.63 for PSBLAS 3.0. # # Report bugs to . # -# # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. -# -# +# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which @@ -26,15 +22,23 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; esac + fi + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + as_nl=' ' export as_nl @@ -42,13 +46,7 @@ export as_nl as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else @@ -59,7 +57,7 @@ else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; - case $arg in #( + case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; @@ -82,6 +80,13 @@ if test "${PATH_SEPARATOR+set}" != set; then } fi +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + # IFS # We need space, tab and new line, in precisely that order. Quoting is @@ -91,16 +96,15 @@ fi IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( +case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done IFS=$as_save_IFS ;; @@ -112,16 +116,12 @@ if test "x$as_myself" = x; then fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 + { (exit 1); exit 1; } fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' @@ -133,256 +133,7 @@ export LC_ALL LANGUAGE=C export LANGUAGE -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: salvatore.filippone@uniroma2.it about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - +# Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -396,12 +147,8 @@ else as_basename=false fi -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi +# Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ @@ -421,127 +168,415 @@ $as_echo X/"$0" | } s/.*/./; q'` -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits +# CDPATH. +$as_unset CDPATH - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 } -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file +exitcode=0 +if as_func_success; then + : else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null + exitcode=1 + echo as_func_success failed. fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' +if as_func_ret_success; then + : else - test -d ./-p && rmdir ./-p - as_mkdir_p=false + exitcode=1 + echo as_func_ret_success failed. fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' + exitcode=1 + echo positional parameters were not saved. fi -as_executable_p=$as_test_x -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +test \$exitcode = 0) || { (exit 1); exit 1; } -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS -test -n "$DJDIR" || exec 7<&0 &1 + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell bug-autoconf@gnu.org about your system, + echo including any error possibly output before this message. + echo This can help us improve future autoconf versions. + echo Configuration will now proceed without shell functions. +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` @@ -556,6 +591,7 @@ cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='PSBLAS' @@ -563,7 +599,6 @@ PACKAGE_TARNAME='psblas' PACKAGE_VERSION='3.0' PACKAGE_STRING='PSBLAS 3.0' PACKAGE_BUGREPORT='salvatore.filippone@uniroma2.it' -PACKAGE_URL='' ac_unique_file="base/modules/psb_base_mod.f90" # Factoring default headers for most tests. @@ -646,7 +681,6 @@ CDEFINES FDEFINES LAPACK_LIBS BLAS_LIBS -FLIBS EGREP GREP CPP @@ -730,7 +764,6 @@ bindir program_transform_name prefix exec_prefix -PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION @@ -840,9 +873,8 @@ do fi case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. @@ -887,7 +919,8 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -913,7 +946,8 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1117,7 +1151,8 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1133,7 +1168,8 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1163,17 +1199,17 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" + -*) { $as_echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; @@ -1182,7 +1218,7 @@ Try \`$0 --help' for more information" $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac @@ -1190,13 +1226,15 @@ done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" + { $as_echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 + { (exit 1); exit 1; }; } ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1219,7 +1257,8 @@ do [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" + { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' @@ -1233,8 +1272,8 @@ target=$target_alias if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 + $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1249,9 +1288,11 @@ test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" + { $as_echo "$as_me: error: working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" + { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } # Find the source files, if location was not specified. @@ -1290,11 +1331,13 @@ else fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" + { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then @@ -1334,7 +1377,7 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages + -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files @@ -1403,25 +1446,25 @@ Optional Features: Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-ccopt additional [CCOPT] flags to be added: will prepend - to [CCOPT] - --with-fcopt additional [FCOPT] flags to be added: will prepend - to [FCOPT] - --with-f90copt additional [F90COPT] flags to be added: will prepend - to [F90COPT] + --with-ccopt additional CCOPT flags to be added: will prepend + to CCOPT + --with-fcopt additional FCOPT flags to be added: will prepend + to FCOPT + --with-f90copt additional F90COPT flags to be added: will prepend + to F90COPT --with-libs List additional link flags here. For example, --with-libs=-lspecial_system_lib or --with-libs=-L/path/to/libs - --with-clibs additional [CLIBS] flags to be added: will prepend - to [CLIBS] - --with-flibs additional [FLIBS] flags to be added: will prepend - to [FLIBS] - --with-library-path additional [LIBRARYPATH] flags to be added: will - prepend to [LIBRARYPATH] - --with-include-path additional [INCLUDEPATH] flags to be added: will - prepend to [INCLUDEPATH] - --with-module-path additional [MODULE_PATH] flags to be added: will - prepend to [MODULE_PATH] + --with-clibs additional CLIBS flags to be added: will prepend + to CLIBS + --with-flibs additional FLIBS flags to be added: will prepend + to FLIBS + --with-library-path additional LIBRARYPATH flags to be added: will + prepend to LIBRARYPATH + --with-include-path additional INCLUDEPATH flags to be added: will + prepend to INCLUDEPATH + --with-module-path additional MODULE_PATH flags to be added: will + prepend to MODULE_PATH --with-blas= use BLAS library --with-lapack= use LAPACK library --with-rsb Specify Recursive Sparse BLAS library linkage info @@ -1448,7 +1491,7 @@ Some influential environment variables: FFLAGS Fortran 77 compiler flags CC C compiler command CFLAGS C compiler flags - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory MPICC MPI C compiler command MPIFC MPI Fortran compiler command @@ -1522,741 +1565,40 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF PSBLAS configure 3.0 -generated by GNU Autoconf 2.68 +generated by GNU Autoconf 2.63 -Copyright (C) 2010 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_fc_try_compile LINENO -# --------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_fc_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_fc_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval +It was created by PSBLAS $as_me 3.0, which was +generated by GNU Autoconf 2.63. Invocation command line was -} # ac_fn_fc_try_compile + $ $0 $@ -# ac_fn_f77_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_f77_try_compile () +_ACEOF +exec 5>>config.log { - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` -} # ac_fn_f77_try_compile - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_fc_try_link LINENO -# ------------------------ -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_fc_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_fc_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_fc_try_link - -# ac_fn_f77_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_f77_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_f77_try_link - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES -# -------------------------------------------- -# Tries to find the compile-time value of EXPR in a program that includes -# INCLUDES, setting VAR accordingly. Returns whether the value could be -# computed -ac_fn_c_compute_int () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=0 ac_mid=0 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid; break -else - as_fn_arith $ac_mid + 1 && ac_lo=$as_val - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=-1 ac_mid=-1 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=$ac_mid; break -else - as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - ac_lo= ac_hi= -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid -else - as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in #(( -?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -'') ac_retval=1 ;; -esac - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (($2) < 0) - { - long int i = longval (); - if (i != ($2)) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ($2)) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - echo >>conftest.val; read $3 &5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ---------------------------------------------- ## -## Report this to salvatore.filippone@uniroma2.it ## -## ---------------------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by PSBLAS $as_me 3.0, which was -generated by GNU Autoconf 2.68. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` @@ -2273,8 +1615,8 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done + $as_echo "PATH: $as_dir" +done IFS=$as_save_IFS } >&5 @@ -2311,9 +1653,9 @@ do ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) - as_fn_append ac_configure_args1 " '$ac_arg'" + ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else @@ -2329,13 +1671,13 @@ do -* ) ac_must_keep_next=true ;; esac fi - as_fn_append ac_configure_args " '$ac_arg'" + ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there @@ -2347,9 +1689,11 @@ trap 'exit_status=$? { echo - $as_echo "## ---------------- ## + cat <<\_ASBOX +## ---------------- ## ## Cache variables. ## -## ---------------- ##" +## ---------------- ## +_ASBOX echo # The following way of writing the cache mishandles newlines in values, ( @@ -2358,13 +1702,13 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; + *) $as_unset $ac_var ;; esac ;; esac done @@ -2383,9 +1727,11 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ) echo - $as_echo "## ----------------- ## + cat <<\_ASBOX +## ----------------- ## ## Output variables. ## -## ----------------- ##" +## ----------------- ## +_ASBOX echo for ac_var in $ac_subst_vars do @@ -2398,9 +1744,11 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + cat <<\_ASBOX +## ------------------- ## ## File substitutions. ## -## ------------------- ##" +## ------------------- ## +_ASBOX echo for ac_var in $ac_subst_files do @@ -2414,9 +1762,11 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; fi if test -s confdefs.h; then - $as_echo "## ----------- ## + cat <<\_ASBOX +## ----------- ## ## confdefs.h. ## -## ----------- ##" +## ----------- ## +_ASBOX echo cat confdefs.h echo @@ -2430,39 +1780,37 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; exit $exit_status ' 0 for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h - # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF + cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF + cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF + cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF @@ -2471,12 +1819,7 @@ _ACEOF ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site @@ -2487,23 +1830,19 @@ fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 + if test -r "$ac_site_file"; then + { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } + . "$ac_site_file" fi done if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; @@ -2511,7 +1850,7 @@ $as_echo "$as_me: loading cache $cache_file" >&6;} esac fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 + { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi @@ -2526,11 +1865,11 @@ for ac_var in $ac_precious_vars; do eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; @@ -2540,17 +1879,17 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 + { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 + { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 + { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 + { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac @@ -2562,20 +1901,43 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 + { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## + + + + + + + + + + + + + + + + + + + + + + + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -2594,7 +1956,7 @@ psblas_cv_version="3.0" # Our custom M4 macros are in the 'config' directory -{ $as_echo "$as_me:${as_lineno-$LINENO}: +{ $as_echo "$as_me:$LINENO: -------------------------------------------------------------------------------- Welcome to the $PACKAGE_NAME $psblas_cv_version configure Script. @@ -2646,7 +2008,9 @@ for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do fi done if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, @@ -2672,10 +2036,10 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : +if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -2683,11 +2047,11 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. @@ -2724,7 +2088,7 @@ case $as_dir/ in #(( ;; esac - done +done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir @@ -2740,7 +2104,7 @@ fi INSTALL=$ac_install_sh fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. @@ -2752,7 +2116,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where to install" >&5 +{ $as_echo "$as_me:$LINENO: checking where to install" >&5 $as_echo_n "checking where to install... " >&6; } case $prefix in \/* ) eval "INSTALL_DIR=$prefix";; @@ -2770,7 +2134,7 @@ case $docsdir in \/* ) eval "INSTALL_DOCSDIR=$docsdir";; * ) eval "INSTALL_DOCSDIR=$INSTALL_DIR/docs";; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL_DIR $INSTALL_INCLUDEDIR $INSTALL_LIBDIR $INSTALL_DOCSDIR" >&5 +{ $as_echo "$as_me:$LINENO: result: $INSTALL_DIR $INSTALL_INCLUDEDIR $INSTALL_LIBDIR $INSTALL_DOCSDIR" >&5 $as_echo "$INSTALL_DIR $INSTALL_INCLUDEDIR $INSTALL_LIBDIR $INSTALL_DOCSDIR" >&6; } # Note that the following line won't save from troubles. @@ -2783,9 +2147,9 @@ if test -n "$ac_tool_prefix"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_FC+:} false; then : +if test "${ac_cv_prog_FC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$FC"; then @@ -2796,24 +2160,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_FC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi FC=$ac_cv_prog_FC if test -n "$FC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5 + { $as_echo "$as_me:$LINENO: result: $FC" >&5 $as_echo "$FC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -2827,9 +2191,9 @@ if test -z "$FC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_FC+:} false; then : +if test "${ac_cv_prog_ac_ct_FC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_FC"; then @@ -2840,24 +2204,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_FC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi ac_ct_FC=$ac_cv_prog_ac_ct_FC if test -n "$ac_ct_FC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5 + { $as_echo "$as_me:$LINENO: result: $ac_ct_FC" >&5 $as_echo "$ac_ct_FC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -2870,7 +2234,7 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac @@ -2880,32 +2244,45 @@ fi # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5 +$as_echo "$as_me:$LINENO: checking for Fortran compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" +{ (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } rm -f a.out -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main end @@ -2915,8 +2292,8 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Fortran compiler works" >&5 -$as_echo_n "checking whether the Fortran compiler works... " >&6; } +{ $as_echo "$as_me:$LINENO: checking for Fortran compiler default output file name" >&5 +$as_echo_n "checking for Fortran compiler default output file name... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: @@ -2932,17 +2309,17 @@ do done rm -f $ac_rmfiles -if { { ac_try="$ac_link_default" +if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -2959,7 +2336,7 @@ do # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -2978,41 +2355,84 @@ test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 + +{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +if test -z "$ac_file"; then + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "Fortran compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ { $as_echo "$as_me:$LINENO: error: Fortran compiler cannot create executables +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: Fortran compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler default output file name" >&5 -$as_echo_n "checking for Fortran compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } + ac_exeext=$ac_cv_exeext +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:$LINENO: checking whether the Fortran compiler works" >&5 +$as_echo_n "checking whether the Fortran compiler works... " >&6; } +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot run Fortran compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot run Fortran compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } + fi + fi +fi +{ $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" +if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -3027,93 +2447,44 @@ for ac_file in conftest.exe conftest conftest.*; do esac done else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } +{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 + +rm -f conftest$ac_cv_exeext +{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -cat > conftest.$ac_ext <<_ACEOF - program main - open(unit=9,file='conftest.out') - close(unit=9) - - end -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run Fortran compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : +if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&6 else - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" +if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -3126,14 +2497,18 @@ else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } +{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } fi + rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT @@ -3141,12 +2516,12 @@ ac_objext=$OBJEXT # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5 +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5 $as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; } -if ${ac_cv_fc_compiler_gnu+:} false; then : +if test "${ac_cv_fc_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me @@ -3154,44 +2529,86 @@ else end _ACEOF -if ac_fn_fc_try_compile "$LINENO"; then : +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else - ac_compiler_gnu=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_fc_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5 $as_echo "$ac_cv_fc_compiler_gnu" >&6; } ac_ext=$ac_save_ext -ac_test_FCFLAGS=${FCFLAGS+set} -ac_save_FCFLAGS=$FCFLAGS +ac_test_FFLAGS=${FCFLAGS+set} +ac_save_FFLAGS=$FCFLAGS FCFLAGS= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5 +{ $as_echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5 $as_echo_n "checking whether $FC accepts -g... " >&6; } -if ${ac_cv_prog_fc_g+:} false; then : +if test "${ac_cv_prog_fc_g+set}" = set; then $as_echo_n "(cached) " >&6 else FCFLAGS=-g -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF -if ac_fn_fc_try_compile "$LINENO"; then : +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_fc_g=yes else - ac_cv_prog_fc_g=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_prog_fc_g=no fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5 $as_echo "$ac_cv_prog_fc_g" >&6; } -if test "$ac_test_FCFLAGS" = set; then - FCFLAGS=$ac_save_FCFLAGS +if test "$ac_test_FFLAGS" = set; then + FCFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_fc_g = yes; then if test "x$ac_cv_fc_compiler_gnu" = xyes; then FCFLAGS="-g -O2" @@ -3221,9 +2638,9 @@ if test -n "$ac_tool_prefix"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_F77+:} false; then : +if test "${ac_cv_prog_F77+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$F77"; then @@ -3234,24 +2651,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5 + { $as_echo "$as_me:$LINENO: result: $F77" >&5 $as_echo "$F77" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -3265,9 +2682,9 @@ if test -z "$F77"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_F77+:} false; then : +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_F77"; then @@ -3278,24 +2695,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_F77="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5 + { $as_echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 $as_echo "$ac_ct_F77" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -3308,7 +2725,7 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac @@ -3318,41 +2735,54 @@ fi # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5 +$as_echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" +{ (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5 +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 $as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } -if ${ac_cv_f77_compiler_gnu+:} false; then : +if test "${ac_cv_f77_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me @@ -3360,41 +2790,83 @@ else end _ACEOF -if ac_fn_f77_try_compile "$LINENO"; then : +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else - ac_compiler_gnu=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 $as_echo "$ac_cv_f77_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5 +{ $as_echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 $as_echo_n "checking whether $F77 accepts -g... " >&6; } -if ${ac_cv_prog_f77_g+:} false; then : +if test "${ac_cv_prog_f77_g+set}" = set; then $as_echo_n "(cached) " >&6 else FFLAGS=-g -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF -if ac_fn_f77_try_compile "$LINENO"; then : +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_f77_g=yes else - ac_cv_prog_f77_g=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_prog_f77_g=no fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 $as_echo "$ac_cv_prog_f77_g" >&6; } if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS @@ -3433,9 +2905,9 @@ if test -n "$ac_tool_prefix"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : +if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then @@ -3446,24 +2918,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -3477,9 +2949,9 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then @@ -3490,24 +2962,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -3520,7 +2992,7 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac @@ -3529,42 +3001,62 @@ esac fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } +{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" +{ (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : +if test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int @@ -3578,16 +3070,37 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else - ac_compiler_gnu=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes @@ -3596,16 +3109,20 @@ else fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : +if test "${ac_cv_prog_cc_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int @@ -3616,11 +3133,35 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int @@ -3631,12 +3172,36 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - ac_c_werror_flag=$ac_save_c_werror_flag + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int @@ -3647,17 +3212,42 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS @@ -3674,14 +3264,18 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : +if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include @@ -3738,9 +3332,32 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi + rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done @@ -3751,19 +3368,17 @@ fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 + { $as_echo "$as_me:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 + { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 + { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac -if test "x$ac_cv_prog_cc_c89" != xno; then : -fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -3775,11 +3390,15 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # Sanity checks, although redundant (useful when debugging this configure.ac)! if test "X$FC" == "X" ; then - as_fn_error $? "Problem : No Fortran compiler specified nor found!" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Problem : No Fortran compiler specified nor found!" >&5 +$as_echo "$as_me: error: Problem : No Fortran compiler specified nor found!" >&2;} + { (exit 1); exit 1; }; } fi if test "X$CC" == "X" ; then - as_fn_error $? "Problem : No C compiler specified nor found!" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Problem : No C compiler specified nor found!" >&5 +$as_echo "$as_me: error: Problem : No C compiler specified nor found!" >&2;} + { (exit 1); exit 1; }; } fi ############################################################################### @@ -3789,10 +3408,10 @@ fi ############################################################################### # First check whether the user required our serial (fake) mpi. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we want serial (fake) mpi" >&5 -$as_echo_n "checking whether we want serial (fake) mpi... " >&6; } +{ $as_echo "$as_me:$LINENO: checking whether we want serial mpi stubs" >&5 +$as_echo_n "checking whether we want serial mpi stubs... " >&6; } # Check whether --enable-serial was given. -if test "${enable_serial+set}" = set; then : +if test "${enable_serial+set}" = set; then enableval=$enable_serial; pac_cv_serial_mpi="yes"; @@ -3800,11 +3419,11 @@ pac_cv_serial_mpi="yes"; fi if test x"$pac_cv_serial_mpi" == x"yes" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes." >&5 + { $as_echo "$as_me:$LINENO: result: yes." >&5 $as_echo "yes." >&6; } else pac_cv_serial_mpi="no"; - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no." >&5 + { $as_echo "$as_me:$LINENO: result: no." >&5 $as_echo "no." >&6; } fi @@ -3829,9 +3448,9 @@ if test "X$MPICC" = "X" ; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MPICC+:} false; then : +if test "${ac_cv_prog_MPICC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$MPICC"; then @@ -3842,24 +3461,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_MPICC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi MPICC=$ac_cv_prog_MPICC if test -n "$MPICC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPICC" >&5 + { $as_echo "$as_me:$LINENO: result: $MPICC" >&5 $as_echo "$MPICC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -3878,9 +3497,9 @@ fi do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MPICC+:} false; then : +if test "${ac_cv_prog_MPICC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$MPICC"; then @@ -3891,24 +3510,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_MPICC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi MPICC=$ac_cv_prog_MPICC if test -n "$MPICC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPICC" >&5 + { $as_echo "$as_me:$LINENO: result: $MPICC" >&5 $as_echo "$MPICC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -3922,23 +3541,111 @@ test -n "$MPICC" || MPICC="$CC" -if test x = x"$MPILIBS"; then - ac_fn_c_check_func "$LINENO" "MPI_Init" "ac_cv_func_MPI_Init" -if test "x$ac_cv_func_MPI_Init" = xyes; then : +if test x = x"$MPILIBS"; then + { $as_echo "$as_me:$LINENO: checking for MPI_Init" >&5 +$as_echo_n "checking for MPI_Init... " >&6; } +if test "${ac_cv_func_MPI_Init+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define MPI_Init to an innocuous variant, in case declares MPI_Init. + For example, HP-UX 11i declares gettimeofday. */ +#define MPI_Init innocuous_MPI_Init + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char MPI_Init (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef MPI_Init + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char MPI_Init (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_MPI_Init || defined __stub___MPI_Init +choke me +#endif + +int +main () +{ +return MPI_Init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_MPI_Init=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_MPI_Init=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_MPI_Init" >&5 +$as_echo "$ac_cv_func_MPI_Init" >&6; } +if test "x$ac_cv_func_MPI_Init" = x""yes; then MPILIBS=" " fi fi if test x = x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpi" >&5 + { $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpi" >&5 $as_echo_n "checking for MPI_Init in -lmpi... " >&6; } -if ${ac_cv_lib_mpi_MPI_Init+:} false; then : +if test "${ac_cv_lib_mpi_MPI_Init+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmpi $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -3956,31 +3663,60 @@ return MPI_Init (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_mpi_MPI_Init=yes else - ac_cv_lib_mpi_MPI_Init=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_mpi_MPI_Init=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpi_MPI_Init" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpi_MPI_Init" >&5 $as_echo "$ac_cv_lib_mpi_MPI_Init" >&6; } -if test "x$ac_cv_lib_mpi_MPI_Init" = xyes; then : +if test "x$ac_cv_lib_mpi_MPI_Init" = x""yes; then MPILIBS="-lmpi" fi fi if test x = x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpich" >&5 + { $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpich" >&5 $as_echo_n "checking for MPI_Init in -lmpich... " >&6; } -if ${ac_cv_lib_mpich_MPI_Init+:} false; then : +if test "${ac_cv_lib_mpich_MPI_Init+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmpich $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -3998,27 +3734,56 @@ return MPI_Init (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_mpich_MPI_Init=yes else - ac_cv_lib_mpich_MPI_Init=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_mpich_MPI_Init=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpich_MPI_Init" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpich_MPI_Init" >&5 $as_echo "$ac_cv_lib_mpich_MPI_Init" >&6; } -if test "x$ac_cv_lib_mpich_MPI_Init" = xyes; then : +if test "x$ac_cv_lib_mpich_MPI_Init" = x""yes; then MPILIBS="-lmpich" fi fi if test x != x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpi.h" >&5 + { $as_echo "$as_me:$LINENO: checking for mpi.h" >&5 $as_echo_n "checking for mpi.h... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int @@ -4029,14 +3794,35 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else - MPILIBS="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + MPILIBS="" + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi @@ -4046,11 +3832,15 @@ CC="$acx_mpi_save_CC" # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x = x"$MPILIBS"; then - as_fn_error $? "Cannot find any suitable MPI implementation for C" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Cannot find any suitable MPI implementation for C" >&5 +$as_echo "$as_me: error: Cannot find any suitable MPI implementation for C" >&2;} + { (exit 1); exit 1; }; } : else -$as_echo "#define HAVE_MPI 1" >>confdefs.h +cat >>confdefs.h <<\_ACEOF +#define HAVE_MPI 1 +_ACEOF : fi @@ -4069,9 +3859,9 @@ if test "X$MPIFC" = "X" ; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MPIFC+:} false; then : +if test "${ac_cv_prog_MPIFC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$MPIFC"; then @@ -4082,24 +3872,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_MPIFC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi MPIFC=$ac_cv_prog_MPIFC if test -n "$MPIFC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPIFC" >&5 + { $as_echo "$as_me:$LINENO: result: $MPIFC" >&5 $as_echo "$MPIFC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -4119,9 +3909,9 @@ fi do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MPIFC+:} false; then : +if test "${ac_cv_prog_MPIFC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$MPIFC"; then @@ -4132,24 +3922,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_MPIFC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi MPIFC=$ac_cv_prog_MPIFC if test -n "$MPIFC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPIFC" >&5 + { $as_echo "$as_me:$LINENO: result: $MPIFC" >&5 $as_echo "$MPIFC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -4164,159 +3954,305 @@ test -n "$MPIFC" || MPIFC="$FC" if test x = x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init" >&5 + { $as_echo "$as_me:$LINENO: checking for MPI_Init" >&5 $as_echo_n "checking for MPI_Init... " >&6; } - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program main call MPI_Init end _ACEOF -if ac_fn_fc_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then MPILIBS=" " - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi if test x = x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lfmpi" >&5 + { $as_echo "$as_me:$LINENO: checking for MPI_Init in -lfmpi" >&5 $as_echo_n "checking for MPI_Init in -lfmpi... " >&6; } -if ${ac_cv_lib_fmpi_MPI_Init+:} false; then : +if test "${ac_cv_lib_fmpi_MPI_Init+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lfmpi $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call MPI_Init end _ACEOF -if ac_fn_fc_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_fmpi_MPI_Init=yes else - ac_cv_lib_fmpi_MPI_Init=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_fmpi_MPI_Init=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fmpi_MPI_Init" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_fmpi_MPI_Init" >&5 $as_echo "$ac_cv_lib_fmpi_MPI_Init" >&6; } -if test "x$ac_cv_lib_fmpi_MPI_Init" = xyes; then : +if test "x$ac_cv_lib_fmpi_MPI_Init" = x""yes; then MPILIBS="-lfmpi" fi fi if test x = x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpichf90" >&5 + { $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpichf90" >&5 $as_echo_n "checking for MPI_Init in -lmpichf90... " >&6; } -if ${ac_cv_lib_mpichf90_MPI_Init+:} false; then : +if test "${ac_cv_lib_mpichf90_MPI_Init+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmpichf90 $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call MPI_Init end _ACEOF -if ac_fn_fc_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_mpichf90_MPI_Init=yes else - ac_cv_lib_mpichf90_MPI_Init=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_mpichf90_MPI_Init=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpichf90_MPI_Init" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpichf90_MPI_Init" >&5 $as_echo "$ac_cv_lib_mpichf90_MPI_Init" >&6; } -if test "x$ac_cv_lib_mpichf90_MPI_Init" = xyes; then : +if test "x$ac_cv_lib_mpichf90_MPI_Init" = x""yes; then MPILIBS="-lmpichf90" fi fi if test x = x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpi" >&5 + { $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpi" >&5 $as_echo_n "checking for MPI_Init in -lmpi... " >&6; } -if ${ac_cv_lib_mpi_MPI_Init+:} false; then : +if test "${ac_cv_lib_mpi_MPI_Init+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmpi $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call MPI_Init end _ACEOF -if ac_fn_fc_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_mpi_MPI_Init=yes else - ac_cv_lib_mpi_MPI_Init=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_mpi_MPI_Init=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpi_MPI_Init" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpi_MPI_Init" >&5 $as_echo "$ac_cv_lib_mpi_MPI_Init" >&6; } -if test "x$ac_cv_lib_mpi_MPI_Init" = xyes; then : +if test "x$ac_cv_lib_mpi_MPI_Init" = x""yes; then MPILIBS="-lmpi" fi fi if test x = x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpich" >&5 + { $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpich" >&5 $as_echo_n "checking for MPI_Init in -lmpich... " >&6; } -if ${ac_cv_lib_mpich_MPI_Init+:} false; then : +if test "${ac_cv_lib_mpich_MPI_Init+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmpich $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call MPI_Init end _ACEOF -if ac_fn_fc_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_mpich_MPI_Init=yes else - ac_cv_lib_mpich_MPI_Init=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_mpich_MPI_Init=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpich_MPI_Init" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpich_MPI_Init" >&5 $as_echo "$ac_cv_lib_mpich_MPI_Init" >&6; } -if test "x$ac_cv_lib_mpich_MPI_Init" = xyes; then : +if test "x$ac_cv_lib_mpich_MPI_Init" = x""yes; then MPILIBS="-lmpich" fi fi if test x != x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpif.h" >&5 + { $as_echo "$as_me:$LINENO: checking for mpif.h" >&5 $as_echo_n "checking for mpif.h... " >&6; } - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program main include 'mpif.h' end _ACEOF -if ac_fn_fc_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else - MPILIBS="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + MPILIBS="" + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi @@ -4326,11 +4262,15 @@ FC="$acx_mpi_save_FC" # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x = x"$MPILIBS"; then - as_fn_error $? "Cannot find any suitable MPI implementation for Fortran" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Cannot find any suitable MPI implementation for Fortran" >&5 +$as_echo "$as_me: error: Cannot find any suitable MPI implementation for Fortran" >&2;} + { (exit 1); exit 1; }; } : else -$as_echo "#define HAVE_MPI 1" >>confdefs.h +cat >>confdefs.h <<\_ACEOF +#define HAVE_MPI 1 +_ACEOF : fi @@ -4347,9 +4287,9 @@ if test "X$MPIF77" = "X" ; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MPIF77+:} false; then : +if test "${ac_cv_prog_MPIF77+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$MPIF77"; then @@ -4360,24 +4300,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_MPIF77="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi MPIF77=$ac_cv_prog_MPIF77 if test -n "$MPIF77"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPIF77" >&5 + { $as_echo "$as_me:$LINENO: result: $MPIF77" >&5 $as_echo "$MPIF77" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -4396,9 +4336,9 @@ fi do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MPIF77+:} false; then : +if test "${ac_cv_prog_MPIF77+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$MPIF77"; then @@ -4409,24 +4349,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_MPIF77="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi MPIF77=$ac_cv_prog_MPIF77 if test -n "$MPIF77"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPIF77" >&5 + { $as_echo "$as_me:$LINENO: result: $MPIF77" >&5 $as_echo "$MPIF77" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -4441,159 +4381,305 @@ test -n "$MPIF77" || MPIF77="$F77" if test x = x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init" >&5 + { $as_echo "$as_me:$LINENO: checking for MPI_Init" >&5 $as_echo_n "checking for MPI_Init... " >&6; } - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program main call MPI_Init end _ACEOF -if ac_fn_f77_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then MPILIBS=" " - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi if test x = x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lfmpi" >&5 + { $as_echo "$as_me:$LINENO: checking for MPI_Init in -lfmpi" >&5 $as_echo_n "checking for MPI_Init in -lfmpi... " >&6; } -if ${ac_cv_lib_fmpi_MPI_Init+:} false; then : +if test "${ac_cv_lib_fmpi_MPI_Init+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lfmpi $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call MPI_Init end _ACEOF -if ac_fn_f77_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_fmpi_MPI_Init=yes else - ac_cv_lib_fmpi_MPI_Init=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_fmpi_MPI_Init=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fmpi_MPI_Init" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_fmpi_MPI_Init" >&5 $as_echo "$ac_cv_lib_fmpi_MPI_Init" >&6; } -if test "x$ac_cv_lib_fmpi_MPI_Init" = xyes; then : +if test "x$ac_cv_lib_fmpi_MPI_Init" = x""yes; then MPILIBS="-lfmpi" fi fi if test x = x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lfmpich" >&5 + { $as_echo "$as_me:$LINENO: checking for MPI_Init in -lfmpich" >&5 $as_echo_n "checking for MPI_Init in -lfmpich... " >&6; } -if ${ac_cv_lib_fmpich_MPI_Init+:} false; then : +if test "${ac_cv_lib_fmpich_MPI_Init+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lfmpich $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call MPI_Init end _ACEOF -if ac_fn_f77_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_fmpich_MPI_Init=yes else - ac_cv_lib_fmpich_MPI_Init=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_fmpich_MPI_Init=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fmpich_MPI_Init" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_fmpich_MPI_Init" >&5 $as_echo "$ac_cv_lib_fmpich_MPI_Init" >&6; } -if test "x$ac_cv_lib_fmpich_MPI_Init" = xyes; then : +if test "x$ac_cv_lib_fmpich_MPI_Init" = x""yes; then MPILIBS="-lfmpich" fi fi if test x = x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpi" >&5 + { $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpi" >&5 $as_echo_n "checking for MPI_Init in -lmpi... " >&6; } -if ${ac_cv_lib_mpi_MPI_Init+:} false; then : +if test "${ac_cv_lib_mpi_MPI_Init+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmpi $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call MPI_Init end _ACEOF -if ac_fn_f77_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_mpi_MPI_Init=yes else - ac_cv_lib_mpi_MPI_Init=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_mpi_MPI_Init=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpi_MPI_Init" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpi_MPI_Init" >&5 $as_echo "$ac_cv_lib_mpi_MPI_Init" >&6; } -if test "x$ac_cv_lib_mpi_MPI_Init" = xyes; then : +if test "x$ac_cv_lib_mpi_MPI_Init" = x""yes; then MPILIBS="-lmpi" fi fi if test x = x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpich" >&5 + { $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpich" >&5 $as_echo_n "checking for MPI_Init in -lmpich... " >&6; } -if ${ac_cv_lib_mpich_MPI_Init+:} false; then : +if test "${ac_cv_lib_mpich_MPI_Init+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmpich $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call MPI_Init end _ACEOF -if ac_fn_f77_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_mpich_MPI_Init=yes else - ac_cv_lib_mpich_MPI_Init=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_mpich_MPI_Init=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpich_MPI_Init" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpich_MPI_Init" >&5 $as_echo "$ac_cv_lib_mpich_MPI_Init" >&6; } -if test "x$ac_cv_lib_mpich_MPI_Init" = xyes; then : +if test "x$ac_cv_lib_mpich_MPI_Init" = x""yes; then MPILIBS="-lmpich" fi fi if test x != x"$MPILIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpif.h" >&5 + { $as_echo "$as_me:$LINENO: checking for mpif.h" >&5 $as_echo_n "checking for mpif.h... " >&6; } - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program main include 'mpif.h' end _ACEOF -if ac_fn_f77_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else - MPILIBS="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + MPILIBS="" + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi @@ -4603,11 +4689,15 @@ F77="$acx_mpi_save_F77" # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x = x"$MPILIBS"; then - as_fn_error $? "Cannot find any suitable MPI implementation for Fortran 77" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Cannot find any suitable MPI implementation for Fortran 77" >&5 +$as_echo "$as_me: error: Cannot find any suitable MPI implementation for Fortran 77" >&2;} + { (exit 1); exit 1; }; } : else -$as_echo "#define HAVE_MPI 1" >>confdefs.h +cat >>confdefs.h <<\_ACEOF +#define HAVE_MPI 1 +_ACEOF : fi @@ -4631,11 +4721,15 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ############################################################################### if test "X$MPIFC" == "X" ; then - as_fn_error $? "Problem : No MPI Fortran compiler specified nor found!" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Problem : No MPI Fortran compiler specified nor found!" >&5 +$as_echo "$as_me: error: Problem : No MPI Fortran compiler specified nor found!" >&2;} + { (exit 1); exit 1; }; } fi if test "X$MPICC" == "X" ; then - as_fn_error $? "Problem : No MPI C compiler specified nor found!" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Problem : No MPI C compiler specified nor found!" >&5 +$as_echo "$as_me: error: Problem : No MPI C compiler specified nor found!" >&2;} + { (exit 1); exit 1; }; } fi ############################################################################### @@ -4643,54 +4737,54 @@ fi ############################################################################### -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether additional CCOPT flags should be added (should be invoked only once)" >&5 +{ $as_echo "$as_me:$LINENO: checking whether additional CCOPT flags should be added (should be invoked only once)" >&5 $as_echo_n "checking whether additional CCOPT flags should be added (should be invoked only once)... " >&6; } # Check whether --with-ccopt was given. -if test "${with_ccopt+set}" = set; then : +if test "${with_ccopt+set}" = set; then withval=$with_ccopt; CCOPT="${withval} ${CCOPT}" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: CCOPT = ${CCOPT}" >&5 +{ $as_echo "$as_me:$LINENO: result: CCOPT = ${CCOPT}" >&5 $as_echo "CCOPT = ${CCOPT}" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether additional FCOPT flags should be added (should be invoked only once)" >&5 +{ $as_echo "$as_me:$LINENO: checking whether additional FCOPT flags should be added (should be invoked only once)" >&5 $as_echo_n "checking whether additional FCOPT flags should be added (should be invoked only once)... " >&6; } # Check whether --with-fcopt was given. -if test "${with_fcopt+set}" = set; then : +if test "${with_fcopt+set}" = set; then withval=$with_fcopt; FCOPT="${withval} ${FCOPT}" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: FCOPT = ${FCOPT}" >&5 +{ $as_echo "$as_me:$LINENO: result: FCOPT = ${FCOPT}" >&5 $as_echo "FCOPT = ${FCOPT}" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether additional F90COPT flags should be added (should be invoked only once)" >&5 +{ $as_echo "$as_me:$LINENO: checking whether additional F90COPT flags should be added (should be invoked only once)" >&5 $as_echo_n "checking whether additional F90COPT flags should be added (should be invoked only once)... " >&6; } # Check whether --with-f90copt was given. -if test "${with_f90copt+set}" = set; then : +if test "${with_f90copt+set}" = set; then withval=$with_f90copt; F90COPT="${withval} ${F90COPT}" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: F90COPT = ${F90COPT}" >&5 +{ $as_echo "$as_me:$LINENO: result: F90COPT = ${F90COPT}" >&5 $as_echo "F90COPT = ${F90COPT}" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -4698,18 +4792,18 @@ fi #PAC_ARG_WITH_FLAGS(ldflags,LDFLAGS) -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether additional libraries are needed" >&5 +{ $as_echo "$as_me:$LINENO: checking whether additional libraries are needed" >&5 $as_echo_n "checking whether additional libraries are needed... " >&6; } # Check whether --with-libs was given. -if test "${with_libs+set}" = set; then : +if test "${with_libs+set}" = set; then withval=$with_libs; LIBS="${withval} ${LIBS}" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: LIBS = ${LIBS}" >&5 +{ $as_echo "$as_me:$LINENO: result: LIBS = ${LIBS}" >&5 $as_echo "LIBS = ${LIBS}" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -4717,36 +4811,36 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether additional CLIBS flags should be added (should be invoked only once)" >&5 +{ $as_echo "$as_me:$LINENO: checking whether additional CLIBS flags should be added (should be invoked only once)" >&5 $as_echo_n "checking whether additional CLIBS flags should be added (should be invoked only once)... " >&6; } # Check whether --with-clibs was given. -if test "${with_clibs+set}" = set; then : +if test "${with_clibs+set}" = set; then withval=$with_clibs; CLIBS="${withval} ${CLIBS}" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: CLIBS = ${CLIBS}" >&5 +{ $as_echo "$as_me:$LINENO: result: CLIBS = ${CLIBS}" >&5 $as_echo "CLIBS = ${CLIBS}" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether additional FLIBS flags should be added (should be invoked only once)" >&5 +{ $as_echo "$as_me:$LINENO: checking whether additional FLIBS flags should be added (should be invoked only once)" >&5 $as_echo_n "checking whether additional FLIBS flags should be added (should be invoked only once)... " >&6; } # Check whether --with-flibs was given. -if test "${with_flibs+set}" = set; then : +if test "${with_flibs+set}" = set; then withval=$with_flibs; FLIBS="${withval} ${FLIBS}" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: FLIBS = ${FLIBS}" >&5 +{ $as_echo "$as_me:$LINENO: result: FLIBS = ${FLIBS}" >&5 $as_echo "FLIBS = ${FLIBS}" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -4754,54 +4848,54 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether additional LIBRARYPATH flags should be added (should be invoked only once)" >&5 +{ $as_echo "$as_me:$LINENO: checking whether additional LIBRARYPATH flags should be added (should be invoked only once)" >&5 $as_echo_n "checking whether additional LIBRARYPATH flags should be added (should be invoked only once)... " >&6; } # Check whether --with-library-path was given. -if test "${with_library_path+set}" = set; then : +if test "${with_library_path+set}" = set; then withval=$with_library_path; LIBRARYPATH="${withval} ${LIBRARYPATH}" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: LIBRARYPATH = ${LIBRARYPATH}" >&5 +{ $as_echo "$as_me:$LINENO: result: LIBRARYPATH = ${LIBRARYPATH}" >&5 $as_echo "LIBRARYPATH = ${LIBRARYPATH}" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether additional INCLUDEPATH flags should be added (should be invoked only once)" >&5 +{ $as_echo "$as_me:$LINENO: checking whether additional INCLUDEPATH flags should be added (should be invoked only once)" >&5 $as_echo_n "checking whether additional INCLUDEPATH flags should be added (should be invoked only once)... " >&6; } # Check whether --with-include-path was given. -if test "${with_include_path+set}" = set; then : +if test "${with_include_path+set}" = set; then withval=$with_include_path; INCLUDEPATH="${withval} ${INCLUDEPATH}" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: INCLUDEPATH = ${INCLUDEPATH}" >&5 +{ $as_echo "$as_me:$LINENO: result: INCLUDEPATH = ${INCLUDEPATH}" >&5 $as_echo "INCLUDEPATH = ${INCLUDEPATH}" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether additional MODULE_PATH flags should be added (should be invoked only once)" >&5 +{ $as_echo "$as_me:$LINENO: checking whether additional MODULE_PATH flags should be added (should be invoked only once)" >&5 $as_echo_n "checking whether additional MODULE_PATH flags should be added (should be invoked only once)... " >&6; } # Check whether --with-module-path was given. -if test "${with_module_path+set}" = set; then : +if test "${with_module_path+set}" = set; then withval=$with_module_path; MODULE_PATH="${withval} ${MODULE_PATH}" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: MODULE_PATH = ${MODULE_PATH}" >&5 +{ $as_echo "$as_me:$LINENO: result: MODULE_PATH = ${MODULE_PATH}" >&5 $as_echo "MODULE_PATH = ${MODULE_PATH}" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -4815,9 +4909,9 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : +if test "${ac_cv_prog_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then @@ -4828,24 +4922,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 + { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -4855,9 +4949,9 @@ if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then @@ -4868,24 +4962,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 + { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -4894,7 +4988,7 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac @@ -4907,7 +5001,7 @@ fi am__api_version='1.11' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 @@ -4918,11 +5012,15 @@ am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; + { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5 +$as_echo "$as_me: error: unsafe absolute working directory name" >&2;} + { (exit 1); exit 1; }; };; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; + { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5 +$as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;} + { (exit 1); exit 1; }; };; esac # Do `set' in a subshell so we don't clobber the current shell's @@ -4944,8 +5042,11 @@ if ( # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } fi test "$2" = conftest.file @@ -4954,10 +5055,13 @@ then # Ok. : else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +$as_echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +{ $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" @@ -4985,7 +5089,7 @@ if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 + { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi @@ -5006,9 +5110,9 @@ if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : +if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then @@ -5019,24 +5123,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 + { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -5046,9 +5150,9 @@ if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then @@ -5059,24 +5163,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 + { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -5085,7 +5189,7 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac @@ -5098,10 +5202,10 @@ fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : + if test "${ac_cv_path_mkdir+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5109,7 +5213,7 @@ for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do + for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( @@ -5121,12 +5225,11 @@ do esac done done - done +done IFS=$as_save_IFS fi - test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else @@ -5134,10 +5237,11 @@ fi # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. + test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" @@ -5150,9 +5254,9 @@ for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : +if test "${ac_cv_prog_AWK+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then @@ -5163,24 +5267,24 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done - done +done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 + { $as_echo "$as_me:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi @@ -5188,11 +5292,11 @@ fi test -n "$AWK" && break done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF @@ -5200,7 +5304,7 @@ SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; @@ -5210,11 +5314,11 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -5240,7 +5344,7 @@ am__doit: .PHONY: am__doit END # If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= @@ -5268,12 +5372,12 @@ if test "$am__include" = "#"; then fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : +if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi @@ -5296,7 +5400,9 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } fi fi @@ -5353,9 +5459,9 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' depcc="$CC" am_compiler_list= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then @@ -5463,7 +5569,7 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type @@ -5502,11 +5608,11 @@ cat > conftest.$ac_ext <&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then rm -rf conftest* psblas_cv_fc="gcc" else @@ -5529,11 +5635,11 @@ cat > conftest.$ac_ext <&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then rm -rf conftest* psblas_cv_fc="cray" else @@ -5574,7 +5680,7 @@ if test x"$psblas_cv_fc" == "x" ; then else psblas_cv_fc="" # unsupported MPI Fortran compiler - { $as_echo "$as_me:${as_lineno-$LINENO}: Unknown Fortran compiler, proceeding with fingers crossed !" >&5 + { $as_echo "$as_me:$LINENO: Unknown Fortran compiler, proceeding with fingers crossed !" >&5 $as_echo "$as_me: Unknown Fortran compiler, proceeding with fingers crossed !" >&6;} fi fi @@ -5582,7 +5688,7 @@ if test "X$psblas_cv_fc" == "Xgcc" ; then ac_exeext='' ac_ext='F' ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking GNU Fortran version at least 4.6" >&5 +{ $as_echo "$as_me:$LINENO: checking GNU Fortran version at least 4.6" >&5 $as_echo_n "checking GNU Fortran version at least 4.6... " >&6; } cat > conftest.$ac_ext < conftest.$ac_ext <&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes." >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes." >&5 $as_echo " yes." >&6; } : else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no." >&5 + { $as_echo "$as_me:$LINENO: result: no." >&5 $as_echo " no." >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - as_fn_error $? "Sorry, we require GNU Fortran 4.6 or later." "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Sorry, we require GNU Fortran 4.6 or later." >&5 +$as_echo "$as_me: error: Sorry, we require GNU Fortran 4.6 or later." >&2;} + { (exit 1); exit 1; }; } fi rm -f conftest* @@ -5634,14 +5742,14 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : + if test "${ac_cv_prog_CPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded @@ -5656,7 +5764,11 @@ do # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include @@ -5665,34 +5777,78 @@ do #endif Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. continue fi -rm -f conftest.err conftest.i conftest.$ac_ext + +rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Passes both tests. ac_preproc_ok=: break fi -rm -f conftest.err conftest.i conftest.$ac_ext + +rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then break fi @@ -5704,7 +5860,7 @@ fi else ac_cv_prog_CPP=$CPP fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +{ $as_echo "$as_me:$LINENO: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes @@ -5715,7 +5871,11 @@ do # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include @@ -5724,40 +5884,87 @@ do #endif Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. continue fi -rm -f conftest.err conftest.i conftest.$ac_ext + +rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Passes both tests. ac_preproc_ok=: break fi -rm -f conftest.err conftest.i conftest.$ac_ext + +rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } +{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } fi ac_ext=c @@ -5767,9 +5974,9 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : +if test "${ac_cv_path_GREP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then @@ -5780,7 +5987,7 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do + for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue @@ -5800,7 +6007,7 @@ case `"$ac_path_GREP" --version 2>&1` in $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val + ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" @@ -5815,24 +6022,26 @@ esac $ac_path_GREP_found && break 3 done done - done +done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : +if test "${ac_cv_path_EGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 @@ -5844,212 +6053,662 @@ else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done +done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" else - ac_cv_path_EGREP=$EGREP + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" fi - fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF +fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : +done + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:$LINENO: checking size of void *" >&5 +$as_echo_n "checking size of void *... " >&6; } +if test "${ac_cv_sizeof_void_p+set}" = set; then $as_echo_n "(cached) " >&6 else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include -#include -#include -#include +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= 0)]; +test_array [0] = 0 + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default int main () { +static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)]; +test_array [0] = 0 ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid; break else - ac_cv_header_stdc=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (void *))) < 0)]; +test_array [0] = 0 + ; + return 0; +} _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= $ac_mid)]; +test_array [0] = 0 + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=$ac_mid; break else - ac_cv_header_stdc=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest* +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= fi -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)]; +test_array [0] = 0 + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid else - ac_cv_header_stdc=no -fi -rm -f conftest* + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr '(' $ac_mid ')' + 1` fi -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_void_p=$ac_lo;; +'') if test "$ac_cv_type_void_p" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (void *) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_void_p=0 + fi ;; +esac else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include +$ac_includes_default +static long int longval () { return (long int) (sizeof (void *)); } +static unsigned long int ulongval () { return (long int) (sizeof (void *)); } +#include #include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (((long int) (sizeof (void *))) < 0) + { + long int i = longval (); + if (i != ((long int) (sizeof (void *)))) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (void *)))) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + + ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 -$as_echo_n "checking size of void *... " >&6; } -if ${ac_cv_sizeof_void_p+:} false; then : - $as_echo_n "(cached) " >&6 +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_void_p=`cat conftest.val` else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -else - if test "$ac_cv_type_void_p" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +( exit $ac_status ) +if test "$ac_cv_type_void_p" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (void *) -See \`config.log' for more details" "$LINENO" 5; } +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (void *) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } else ac_cv_sizeof_void_p=0 fi fi - +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.val fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_void_p" >&5 $as_echo "$ac_cv_sizeof_void_p" >&6; } @@ -6072,12 +6731,12 @@ if test "X$psblas_cv_fc" == X"pg" ; then save_FC=$FC FC=$F77 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran name-mangling scheme" >&5 +{ $as_echo "$as_me:$LINENO: checking for Fortran name-mangling scheme" >&5 $as_echo_n "checking for Fortran name-mangling scheme... " >&6; } -if ${ac_cv_fc_mangling+:} false; then : +if test "${ac_cv_fc_mangling+set}" = set; then $as_echo_n "(cached) " >&6 else - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF subroutine foobar() return end @@ -6085,7 +6744,24 @@ else return end _ACEOF -if ac_fn_fc_try_compile "$LINENO"; then : +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then mv conftest.$ac_objext cfortran_test.$ac_objext ac_save_LIBS=$LIBS @@ -6100,7 +6776,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu for ac_foobar in foobar FOOBAR; do for ac_underscore in "" "_"; do ac_func="$ac_foobar$ac_underscore" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -6118,11 +6798,38 @@ return $ac_func (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_success=yes; break 2 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext done done ac_ext=${ac_fc_srcext-f} @@ -6150,7 +6857,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_success_extra=no for ac_extra in "" "_"; do ac_func="$ac_foo_bar$ac_underscore$ac_extra" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -6168,11 +6879,38 @@ return $ac_func (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_success_extra=yes; break +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext done ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -6181,16 +6919,16 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu if test "$ac_success_extra" = "yes"; then ac_cv_fc_mangling="$ac_case case" - if test -z "$ac_underscore"; then - ac_cv_fc_mangling="$ac_cv_fc_mangling, no underscore" + if test -z "$ac_underscore"; then + ac_cv_fc_mangling="$ac_cv_fc_mangling, no underscore" else - ac_cv_fc_mangling="$ac_cv_fc_mangling, underscore" - fi - if test -z "$ac_extra"; then - ac_cv_fc_mangling="$ac_cv_fc_mangling, no extra underscore" + ac_cv_fc_mangling="$ac_cv_fc_mangling, underscore" + fi + if test -z "$ac_extra"; then + ac_cv_fc_mangling="$ac_cv_fc_mangling, no extra underscore" else - ac_cv_fc_mangling="$ac_cv_fc_mangling, extra underscore" - fi + ac_cv_fc_mangling="$ac_cv_fc_mangling, extra underscore" + fi else ac_cv_fc_mangling="unknown" fi @@ -6202,15 +6940,22 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu rm -rf conftest* rm -f cfortran_test* else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compile a simple Fortran program -See \`config.log' for more details" "$LINENO" 5; } +{ { $as_echo "$as_me:$LINENO: error: cannot compile a simple Fortran program +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compile a simple Fortran program +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_mangling" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_fc_mangling" >&5 $as_echo "$ac_cv_fc_mangling" >&6; } if test "X$psblas_cv_fc" == X"pg" ; then @@ -6228,7 +6973,7 @@ pac_fc_sec_under=${pac_fc_under#*,} pac_fc_sec_under=${pac_fc_sec_under# } pac_fc_under=${pac_fc_under%%,*} pac_fc_under=${pac_fc_under# } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking defines for C/Fortran name interfaces" >&5 +{ $as_echo "$as_me:$LINENO: checking defines for C/Fortran name interfaces" >&5 $as_echo_n "checking defines for C/Fortran name interfaces... " >&6; } if test "x$pac_fc_case" == "xlower case"; then if test "x$pac_fc_under" == "xunderscore"; then @@ -6263,7 +7008,7 @@ else fi CDEFINES="$pac_f_c_names $CDEFINES" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_f_c_names " >&5 +{ $as_echo "$as_me:$LINENO: result: $pac_f_c_names " >&5 $as_echo " $pac_f_c_names " >&6; } ############################################################################### @@ -6309,7 +7054,8 @@ if test "X$FCOPT" == "X" ; then FCOPT="-O3 $FCOPT" elif test "X$psblas_cv_fc" == X"xlf" ; then # XL compiler : consider using -qarch=auto - FCOPT="-O3 -qarch=auto -qfixed -qsuffix=f=f:cpp=F $FCOPT" + FCOPT="-O3 -qarch=auto -qfixed -qsuffix=f=f:cpp=F -qlanglvl=extended $FCOPT" + FCFLAGS="-qhalt=e $FCFLAGS" elif test "X$psblas_cv_fc" == X"ifc" ; then # other compilers .. FCOPT="-O3 $FCOPT" @@ -6343,7 +7089,7 @@ if test "X$F90COPT" == "X" ; then F90COPT="-O3 $F90COPT" elif test "X$psblas_cv_fc" == X"xlf" ; then # XL compiler : consider using -qarch=auto - F90COPT="-O3 -qarch=auto -qsuffix=f=f90:cpp=F90 $F90COPT" + F90COPT="-O3 -qarch=auto -qsuffix=f=f90:cpp=F90 -qlanglvl=extended $F90COPT" elif test "X$psblas_cv_fc" == X"ifc" ; then # other compilers .. F90COPT="-O3 $F90COPT" @@ -6421,9 +7167,9 @@ then else -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking fortran 90 modules extension" >&5 +{ $as_echo "$as_me:$LINENO: checking fortran 90 modules extension" >&5 $as_echo_n "checking fortran 90 modules extension... " >&6; } -if ${ax_cv_f90_modext+:} false; then : +if test "${ax_cv_f90_modext+set}" = set; then $as_echo_n "(cached) " >&6 else ac_ext=${ac_fc_srcext-f} @@ -6437,7 +7183,7 @@ while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do done mkdir tmpdir_$i cd tmpdir_$i -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF module conftest_module contains @@ -6447,7 +7193,24 @@ cat > conftest.$ac_ext <<_ACEOF end module conftest_module _ACEOF -if ac_fn_fc_try_compile "$LINENO"; then : +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ax_cv_f90_modext=`ls | sed -n 's,conftest_module\.,,p'` if test x$ax_cv_f90_modext = x ; then ax_cv_f90_modext=`ls | sed -n 's,CONFTEST_MODULE\.,,p'` @@ -6457,8 +7220,12 @@ if ac_fn_fc_try_compile "$LINENO"; then : fi else - ax_cv_f90_modext=unknown + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ax_cv_f90_modext=unknown fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cd .. rm -fr tmpdir_$i @@ -6470,12 +7237,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_f90_modext" >&5 +{ $as_echo "$as_me:$LINENO: result: $ax_cv_f90_modext" >&5 $as_echo "$ax_cv_f90_modext" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking fortran 90 modules inclusion flag" >&5 +{ $as_echo "$as_me:$LINENO: checking fortran 90 modules inclusion flag" >&5 $as_echo_n "checking fortran 90 modules inclusion flag... " >&6; } -if ${ax_cv_f90_modflag+:} false; then : +if test "${ax_cv_f90_modflag+set}" = set; then $as_echo_n "(cached) " >&6 else ac_ext=${ac_fc_srcext-f} @@ -6489,7 +7256,7 @@ while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do done mkdir tmpdir_$i cd tmpdir_$i -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF module conftest_module contains @@ -6499,9 +7266,32 @@ cat > conftest.$ac_ext <<_ACEOF end module conftest_module _ACEOF -if ac_fn_fc_try_compile "$LINENO"; then : +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cd .. ax_cv_f90_modflag="not found" @@ -6509,7 +7299,7 @@ for ax_flag in "-I " "-M" "-p"; do if test "$ax_cv_f90_modflag" = "not found" ; then ax_save_FCFLAGS="$FCFLAGS" FCFLAGS="$ax_save_FCFLAGS ${ax_flag}tmpdir_$i" - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program conftest_program use conftest_module @@ -6517,16 +7307,41 @@ for ax_flag in "-I " "-M" "-p"; do end program conftest_program _ACEOF -if ac_fn_fc_try_compile "$LINENO"; then : +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ax_cv_f90_modflag="$ax_flag" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext FCFLAGS="$ax_save_FCFLAGS" fi done rm -fr tmpdir_$i if test "$ax_flag" = "not found" ; then - as_fn_error $? "unable to find compiler flag for modules inclusion" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: unable to find compiler flag for modules inclusion" >&5 +$as_echo "$as_me: error: unable to find compiler flag for modules inclusion" >&2;} + { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -6536,7 +7351,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_f90_modflag" >&5 +{ $as_echo "$as_me:$LINENO: result: $ax_cv_f90_modflag" >&5 $as_echo "$ax_cv_f90_modflag" >&6; } MODEXT=".$ax_cv_f90_modext" FMFLAG="${ax_cv_f90_modflag%% *}" @@ -6561,26 +7376,26 @@ else ac_exeext='' ac_ext='f90' ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking MPI Fortran interface" >&5 +{ $as_echo "$as_me:$LINENO: checking MPI Fortran interface" >&5 $as_echo_n "checking MPI Fortran interface... " >&6; } cat > conftest.$ac_ext <&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: use mpi " >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: use mpi " >&5 $as_echo " use mpi " >&6; } rm -rf conftest* FDEFINES="$psblas_cv_define_prepend-DMPI_MOD $FDEFINES" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: include mpif.h " >&5 + { $as_echo "$as_me:$LINENO: result: include mpif.h " >&5 $as_echo " include mpif.h " >&6; } rm -rf conftest* FDEFINES="$psblas_cv_define_prepend-DMPI_H $FDEFINES" @@ -6590,10 +7405,10 @@ rm -f conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we want long (8 bytes) integers" >&5 +{ $as_echo "$as_me:$LINENO: checking whether we want long (8 bytes) integers" >&5 $as_echo_n "checking whether we want long (8 bytes) integers... " >&6; } # Check whether --enable-long-integers was given. -if test "${enable_long_integers+set}" = set; then : +if test "${enable_long_integers+set}" = set; then enableval=$enable_long_integers; pac_cv_long_integers="yes"; @@ -6601,11 +7416,11 @@ pac_cv_long_integers="yes"; fi if test x"$pac_cv_long_integers" == x"yes" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes." >&5 + { $as_echo "$as_me:$LINENO: result: yes." >&5 $as_echo "yes." >&6; } else pac_cv_long_integers="no"; - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no." >&5 + { $as_echo "$as_me:$LINENO: result: no." >&5 $as_echo "no." >&6; } fi @@ -6625,7 +7440,7 @@ fi ac_exeext='' ac_ext='f90' ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran allocatables TR15581" >&5 +{ $as_echo "$as_me:$LINENO: checking support for Fortran allocatables TR15581" >&5 $as_echo_n "checking support for Fortran allocatables TR15581... " >&6; } i=0 while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do @@ -6684,22 +7499,25 @@ program testtr15581 end program testtr15581 EOF -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - as_fn_error $? "Sorry, cannot build PSBLAS without support for TR15581. - Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Sorry, cannot build PSBLAS without support for TR15581. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." >&5 +$as_echo "$as_me: error: Sorry, cannot build PSBLAS without support for TR15581. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." >&2;} + { (exit 1); exit 1; }; } fi cd .. @@ -6708,7 +7526,7 @@ rm -fr tmpdir_$i ac_exeext='' ac_ext='f90' ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran EXTENDS" >&5 +{ $as_echo "$as_me:$LINENO: checking support for Fortran EXTENDS" >&5 $as_echo_n "checking support for Fortran EXTENDS... " >&6; } i=0 while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do @@ -6727,22 +7545,25 @@ program conftest type(bar) :: barvar end program conftest EOF -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - as_fn_error $? "Sorry, cannot build PSBLAS without support for EXTENDS. - Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Sorry, cannot build PSBLAS without support for EXTENDS. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." >&5 +$as_echo "$as_me: error: Sorry, cannot build PSBLAS without support for EXTENDS. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." >&2;} + { (exit 1); exit 1; }; } fi cd .. @@ -6751,7 +7572,7 @@ rm -fr tmpdir_$i ac_exeext='' ac_ext='f90' ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran CLASS TBP" >&5 +{ $as_echo "$as_me:$LINENO: checking support for Fortran CLASS TBP" >&5 $as_echo_n "checking support for Fortran CLASS TBP... " >&6; } i=0 while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do @@ -6789,22 +7610,25 @@ program conftest type(foo) :: foovar end program conftest EOF -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - as_fn_error $? "Sorry, cannot build PSBLAS without support for CLASS and type bound procedures. - Please get a Fortran compiler that supports them, e.g. GNU Fortran 4.6." "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Sorry, cannot build PSBLAS without support for CLASS and type bound procedures. + Please get a Fortran compiler that supports them, e.g. GNU Fortran 4.6." >&5 +$as_echo "$as_me: error: Sorry, cannot build PSBLAS without support for CLASS and type bound procedures. + Please get a Fortran compiler that supports them, e.g. GNU Fortran 4.6." >&2;} + { (exit 1); exit 1; }; } fi cd .. @@ -6813,7 +7637,7 @@ rm -fr tmpdir_$i ac_exeext='' ac_ext='f90' ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran SOURCE= allocation" >&5 +{ $as_echo "$as_me:$LINENO: checking support for Fortran SOURCE= allocation" >&5 $as_echo_n "checking support for Fortran SOURCE= allocation... " >&6; } i=0 while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do @@ -6837,22 +7661,25 @@ program xtt end program xtt EOF -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - as_fn_error $? "Sorry, cannot build PSBLAS without support for SOURCE= allocation. - Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Sorry, cannot build PSBLAS without support for SOURCE= allocation. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." >&5 +$as_echo "$as_me: error: Sorry, cannot build PSBLAS without support for SOURCE= allocation. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." >&2;} + { (exit 1); exit 1; }; } fi cd .. @@ -6861,7 +7688,7 @@ rm -fr tmpdir_$i ac_exeext='' ac_ext='f' ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran MOVE_ALLOC intrinsic" >&5 +{ $as_echo "$as_me:$LINENO: checking for Fortran MOVE_ALLOC intrinsic" >&5 $as_echo_n "checking for Fortran MOVE_ALLOC intrinsic... " >&6; } cat > conftest.$ac_ext < conftest.$ac_ext <&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -rf conftest* FDEFINES="$psblas_cv_define_prepend-DHAVE_MOVE_ALLOC $FDEFINES" else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - as_fn_error $? "Sorry, cannot build PSBLAS without support for MOVE_ALLOC. - Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Sorry, cannot build PSBLAS without support for MOVE_ALLOC. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." >&5 +$as_echo "$as_me: error: Sorry, cannot build PSBLAS without support for MOVE_ALLOC. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." >&2;} + { (exit 1); exit 1; }; } fi rm -f conftest* -# -# Optional features -# - ac_exeext='' ac_ext='f90' ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran VOLATILE" >&5 -$as_echo_n "checking support for Fortran VOLATILE... " >&6; } +{ $as_echo "$as_me:$LINENO: checking support for Fortran ISO_C_BINDING module" >&5 +$as_echo_n "checking support for Fortran ISO_C_BINDING module... " >&6; } i=0 while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do i=`expr $i + 1` @@ -6910,97 +7736,43 @@ mkdir tmpdir_$i cd tmpdir_$i cat > conftest.$ac_ext <&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } - FDEFINES="$psblas_cv_define_prepend-DHAVE_VOLATILE $FDEFINES" + FDEFINES="$psblas_cv_define_prepend-DHAVE_ISO_C_BINDING $FDEFINES" else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 -fi -cd .. -rm -fr tmpdir_$i -ac_exeext='' -ac_ext='f90' -ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran FLUSH statement" >&5 -$as_echo_n "checking support for Fortran FLUSH statement... " >&6; } -i=0 -while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do - i=`expr $i + 1` -done -mkdir tmpdir_$i -cd tmpdir_$i -cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { { $as_echo "$as_me:$LINENO: error: Sorry, cannot build PSBLAS without support for ISO_C_BINDING. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." >&5 +$as_echo "$as_me: error: Sorry, cannot build PSBLAS without support for ISO_C_BINDING. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6." >&2;} + { (exit 1); exit 1; }; } - FDEFINES="$psblas_cv_define_prepend-DHAVE_FLUSH_STMT $FDEFINES" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 fi cd .. rm -fr tmpdir_$i -ac_exeext='' -ac_ext='f90' -ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ISO_FORTRAN_ENV" >&5 -$as_echo_n "checking support for ISO_FORTRAN_ENV... " >&6; } -cat > conftest.$ac_ext <&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - rm -rf conftest* - FDEFINES="$psblas_cv_define_prepend-DHAVE_ISO_FORTRAN_ENV $FDEFINES" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f conftest* +# +# Optional features +# ac_exeext='' ac_ext='f90' ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran ISO_C_BINDING module" >&5 -$as_echo_n "checking support for Fortran ISO_C_BINDING module... " >&6; } +{ $as_echo "$as_me:$LINENO: checking support for Fortran VOLATILE" >&5 +$as_echo_n "checking support for Fortran VOLATILE... " >&6; } i=0 while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do i=`expr $i + 1` @@ -7009,20 +7781,20 @@ mkdir tmpdir_$i cd tmpdir_$i cat > conftest.$ac_ext <&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } - FDEFINES="$psblas_cv_define_prepend-DHAVE_ISO_C_BINDING $FDEFINES" + FDEFINES="$psblas_cv_define_prepend-DHAVE_VOLATILE $FDEFINES" else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 @@ -7030,12 +7802,11 @@ fi cd .. rm -fr tmpdir_$i - ac_exeext='' ac_ext='f90' ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran FINAL" >&5 -$as_echo_n "checking support for Fortran FINAL... " >&6; } +{ $as_echo "$as_me:$LINENO: checking support for Fortran FLUSH statement" >&5 +$as_echo_n "checking support for Fortran FLUSH statement... " >&6; } i=0 while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do i=`expr $i + 1` @@ -7043,93 +7814,64 @@ done mkdir tmpdir_$i cd tmpdir_$i cat > conftest.$ac_ext <&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } - FDEFINES="$psblas_cv_define_prepend-DHAVE_FINAL $FDEFINES" + FDEFINES="$psblas_cv_define_prepend-DHAVE_FLUSH_STMT $FDEFINES" else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi cd .. -rm -fr tmpdir_$i - -ac_exeext='' -ac_ext='f90' -ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran SAME_TYPE_AS" >&5 -$as_echo_n "checking support for Fortran SAME_TYPE_AS... " >&6; } -i=0 -while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do - i=`expr $i + 1` -done -mkdir tmpdir_$i -cd tmpdir_$i -cat > conftest.$ac_ext <&5 +$as_echo_n "checking support for ISO_FORTRAN_ENV... " >&6; } +cat > conftest.$ac_ext <&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } - - FDEFINES="$psblas_cv_define_prepend-DHAVE_SAME_TYPE_AS $FDEFINES" + rm -rf conftest* + FDEFINES="$psblas_cv_define_prepend-DHAVE_ISO_FORTRAN_ENV $FDEFINES" else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi -cd .. -rm -fr tmpdir_$i +rm -f conftest* ac_exeext='' ac_ext='f90' ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran EXTENDS_TYPE_OF" >&5 -$as_echo_n "checking support for Fortran EXTENDS_TYPE_OF... " >&6; } +{ $as_echo "$as_me:$LINENO: checking support for Fortran FINAL" >&5 +$as_echo_n "checking support for Fortran FINAL... " >&6; } i=0 while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do i=`expr $i + 1` @@ -7137,30 +7879,36 @@ done mkdir tmpdir_$i cd tmpdir_$i cat > conftest.$ac_ext <&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } - FDEFINES="$psblas_cv_define_prepend-DHAVE_EXTENDS_TYPE_OF $FDEFINES" + FDEFINES="$psblas_cv_define_prepend-DHAVE_FINAL $FDEFINES" else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 @@ -7171,8 +7919,8 @@ rm -fr tmpdir_$i ac_exeext='' ac_ext='f90' ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran MOLD= allocation" >&5 -$as_echo_n "checking support for Fortran MOLD= allocation... " >&6; } +{ $as_echo "$as_me:$LINENO: checking support for Fortran SAME_TYPE_AS" >&5 +$as_echo_n "checking support for Fortran SAME_TYPE_AS... " >&6; } i=0 while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do i=`expr $i + 1` @@ -7180,32 +7928,32 @@ done mkdir tmpdir_$i cd tmpdir_$i cat > conftest.$ac_ext <&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } - FDEFINES="$psblas_cv_define_prepend-DHAVE_MOLD $FDEFINES" + FDEFINES="$psblas_cv_define_prepend-DHAVE_SAME_TYPE_AS $FDEFINES" else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 @@ -7213,648 +7961,140 @@ fi cd .. rm -fr tmpdir_$i -############################################################################### -# Additional pathname stuff (yes, it is redundant and confusing...) -############################################################################### - -# -I -if test x"$INCLUDEPATH" != "x" ; then - FINCLUDES="$FINCLUDES $INCLUDEPATH" - CINCLUDES="$CINCLUDES $INCLUDEPATH" -fi - -# -L -if test x"$LIBRARYPATH" != "x" ; then - FINCLUDES="$FINCLUDES $LIBRARYPATH" -fi - -# -I -if test x"$MODULE_PATH" != "x" ; then - FINCLUDES="$FINCLUDES $MODULE_PATH" -fi - -############################################################################### -# Parachute rules for ar and ranlib ... (could cause problems) -############################################################################### - -if test "X$AR" == "X" ; then - AR="ar" -fi - -if test "X$RANLIB" == "X" ; then - RANLIB="ranlib" -fi - -# This should be portable -AR="${AR} -cur" - - -############################################################################### -# BLAS library presence checks -############################################################################### - -# Note : The libmkl.a (Intel Math Kernel Library) library could be used, too. -# It is sufficient to specify it as -lmkl in the CLIBS or FLIBS or LIBS -# and specify its path adjusting -L/path in CFLAGS. - -# Right now it is a matter of user's taste when linking custom applications. -# But PSBLAS examples could take advantage of these libraries, too. - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get verbose linking output from $F77" >&5 -$as_echo_n "checking how to get verbose linking output from $F77... " >&6; } -if ${ac_cv_prog_f77_v+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat > conftest.$ac_ext <<_ACEOF - program main - - end -_ACEOF -if ac_fn_f77_try_compile "$LINENO"; then : - ac_cv_prog_f77_v= -# Try some options frequently used verbose output -for ac_verb in -v -verbose --verbose -V -\#\#\#; do - cat > conftest.$ac_ext <<_ACEOF - program main - - end -_ACEOF - -# Compile and link our simple test program by passing a flag (argument -# 1 to this macro) to the Fortran compiler in order to get -# "verbose" output that we can then parse for the Fortran linker -# flags. -ac_save_FFLAGS=$FFLAGS -FFLAGS="$FFLAGS $ac_verb" -eval "set x $ac_link" -shift -$as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5 -# gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH, -# LIBRARY_PATH; skip all such settings. -ac_f77_v_output=`eval $ac_link 5>&1 2>&1 | - sed '/^Driving:/d; /^Configured with:/d; - '"/^[_$as_cr_Letters][_$as_cr_alnum]*=/d"` -$as_echo "$ac_f77_v_output" >&5 -FFLAGS=$ac_save_FFLAGS - -rm -rf conftest* - -# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where -# /foo, /bar, and /baz are search directories for the Fortran linker. -# Here, we change these into -L/foo -L/bar -L/baz (and put it first): -ac_f77_v_output="`echo $ac_f77_v_output | - grep 'LPATH is:' | - sed 's|.*LPATH is\(: *[^ ]*\).*|\1|;s|: */| -L/|g'` $ac_f77_v_output" - -# FIXME: we keep getting bitten by quoted arguments; a more general fix -# that detects unbalanced quotes in FLIBS should be implemented -# and (ugh) tested at some point. -case $ac_f77_v_output in - # If we are using xlf then replace all the commas with spaces. - *xlfentry*) - ac_f77_v_output=`echo $ac_f77_v_output | sed 's/,/ /g'` ;; - - # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted - # $LIBS confuse us, and the libraries appear later in the output anyway). - *mGLOB_options_string*) - ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"-mGLOB[^"]*"/ /g'` ;; - - # Portland Group compiler has singly- or doubly-quoted -cmdline argument - # Singly-quoted arguments were reported for versions 5.2-4 and 6.0-4. - # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2". - *-cmdline\ * | *-ignore\ * | *-def\ *) - ac_f77_v_output=`echo $ac_f77_v_output | sed "\ - s/-cmdline *'[^']*'/ /g; s/-cmdline *\"[^\"]*\"/ /g - s/-ignore *'[^']*'/ /g; s/-ignore *\"[^\"]*\"/ /g - s/-def *'[^']*'/ /g; s/-def *\"[^\"]*\"/ /g"` ;; - - # If we are using Cray Fortran then delete quotes. - *cft90*) - ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"//g'` ;; -esac - - - # look for -l* and *.a constructs in the output - for ac_arg in $ac_f77_v_output; do - case $ac_arg in - [\\/]*.a | ?:[\\/]*.a | -[lLRu]*) - ac_cv_prog_f77_v=$ac_verb - break 2 ;; - esac - done -done -if test -z "$ac_cv_prog_f77_v"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine how to obtain linking information from $F77" >&5 -$as_echo "$as_me: WARNING: cannot determine how to obtain linking information from $F77" >&2;} -fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compilation failed" >&5 -$as_echo "$as_me: WARNING: compilation failed" >&2;} -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_v" >&5 -$as_echo "$ac_cv_prog_f77_v" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 libraries of $F77" >&5 -$as_echo_n "checking for Fortran 77 libraries of $F77... " >&6; } -if ${ac_cv_f77_libs+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$FLIBS" != "x"; then - ac_cv_f77_libs="$FLIBS" # Let the user override the test. -else - -cat > conftest.$ac_ext <<_ACEOF - program main - - end -_ACEOF - -# Compile and link our simple test program by passing a flag (argument -# 1 to this macro) to the Fortran compiler in order to get -# "verbose" output that we can then parse for the Fortran linker -# flags. -ac_save_FFLAGS=$FFLAGS -FFLAGS="$FFLAGS $ac_cv_prog_f77_v" -eval "set x $ac_link" -shift -$as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5 -# gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH, -# LIBRARY_PATH; skip all such settings. -ac_f77_v_output=`eval $ac_link 5>&1 2>&1 | - sed '/^Driving:/d; /^Configured with:/d; - '"/^[_$as_cr_Letters][_$as_cr_alnum]*=/d"` -$as_echo "$ac_f77_v_output" >&5 -FFLAGS=$ac_save_FFLAGS - -rm -rf conftest* - -# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where -# /foo, /bar, and /baz are search directories for the Fortran linker. -# Here, we change these into -L/foo -L/bar -L/baz (and put it first): -ac_f77_v_output="`echo $ac_f77_v_output | - grep 'LPATH is:' | - sed 's|.*LPATH is\(: *[^ ]*\).*|\1|;s|: */| -L/|g'` $ac_f77_v_output" - -# FIXME: we keep getting bitten by quoted arguments; a more general fix -# that detects unbalanced quotes in FLIBS should be implemented -# and (ugh) tested at some point. -case $ac_f77_v_output in - # If we are using xlf then replace all the commas with spaces. - *xlfentry*) - ac_f77_v_output=`echo $ac_f77_v_output | sed 's/,/ /g'` ;; - - # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted - # $LIBS confuse us, and the libraries appear later in the output anyway). - *mGLOB_options_string*) - ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"-mGLOB[^"]*"/ /g'` ;; - - # Portland Group compiler has singly- or doubly-quoted -cmdline argument - # Singly-quoted arguments were reported for versions 5.2-4 and 6.0-4. - # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2". - *-cmdline\ * | *-ignore\ * | *-def\ *) - ac_f77_v_output=`echo $ac_f77_v_output | sed "\ - s/-cmdline *'[^']*'/ /g; s/-cmdline *\"[^\"]*\"/ /g - s/-ignore *'[^']*'/ /g; s/-ignore *\"[^\"]*\"/ /g - s/-def *'[^']*'/ /g; s/-def *\"[^\"]*\"/ /g"` ;; - - # If we are using Cray Fortran then delete quotes. - *cft90*) - ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"//g'` ;; -esac - - - -ac_cv_f77_libs= - -# Save positional arguments (if any) -ac_save_positional="$@" - -set X $ac_f77_v_output -while test $# != 1; do - shift - ac_arg=$1 - case $ac_arg in - [\\/]*.a | ?:[\\/]*.a) - ac_exists=false - for ac_i in $ac_cv_f77_libs; do - if test x"$ac_arg" = x"$ac_i"; then - ac_exists=true - break - fi - done - - if test x"$ac_exists" = xtrue; then : - -else - ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg" -fi - ;; - -bI:*) - ac_exists=false - for ac_i in $ac_cv_f77_libs; do - if test x"$ac_arg" = x"$ac_i"; then - ac_exists=true - break - fi - done - - if test x"$ac_exists" = xtrue; then : - -else - if test "$ac_compiler_gnu" = yes; then - for ac_link_opt in $ac_arg; do - ac_cv_f77_libs="$ac_cv_f77_libs -Xlinker $ac_link_opt" - done -else - ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg" -fi -fi - ;; - # Ignore these flags. - -lang* | -lcrt*.o | -lc | -lgcc* | -lSystem | -libmil | -little \ - |-LANG:=* | -LIST:* | -LNO:* | -link) - ;; - -lkernel32) - test x"$CYGWIN" != xyes && ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg" - ;; - -[LRuYz]) - # These flags, when seen by themselves, take an argument. - # We remove the space between option and argument and re-iterate - # unless we find an empty arg or a new option (starting with -) - case $2 in - "" | -*);; - *) - ac_arg="$ac_arg$2" - shift; shift - set X $ac_arg "$@" - ;; - esac - ;; - -YP,*) - for ac_j in `$as_echo "$ac_arg" | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do - ac_exists=false - for ac_i in $ac_cv_f77_libs; do - if test x"$ac_j" = x"$ac_i"; then - ac_exists=true - break - fi - done - - if test x"$ac_exists" = xtrue; then : - -else - ac_arg="$ac_arg $ac_j" - ac_cv_f77_libs="$ac_cv_f77_libs $ac_j" -fi - done - ;; - -[lLR]*) - ac_exists=false - for ac_i in $ac_cv_f77_libs; do - if test x"$ac_arg" = x"$ac_i"; then - ac_exists=true - break - fi - done - - if test x"$ac_exists" = xtrue; then : - -else - ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg" -fi - ;; - -zallextract*| -zdefaultextract) - ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg" - ;; - # Ignore everything else. - esac -done -# restore positional arguments -set X $ac_save_positional; shift - -# We only consider "LD_RUN_PATH" on Solaris systems. If this is seen, -# then we insist that the "run path" must be an absolute path (i.e. it -# must begin with a "/"). -case `(uname -sr) 2>/dev/null` in - "SunOS 5"*) - ac_ld_run_path=`$as_echo "$ac_f77_v_output" | - sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'` - test "x$ac_ld_run_path" != x && - if test "$ac_compiler_gnu" = yes; then - for ac_link_opt in $ac_ld_run_path; do - ac_cv_f77_libs="$ac_cv_f77_libs -Xlinker $ac_link_opt" - done -else - ac_cv_f77_libs="$ac_cv_f77_libs $ac_ld_run_path" -fi - ;; -esac -fi # test "x$[]_AC_LANG_PREFIX[]LIBS" = "x" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_libs" >&5 -$as_echo "$ac_cv_f77_libs" >&6; } -FLIBS="$ac_cv_f77_libs" - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dummy main to link with Fortran 77 libraries" >&5 -$as_echo_n "checking for dummy main to link with Fortran 77 libraries... " >&6; } -if ${ac_cv_f77_dummy_main+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_f77_dm_save_LIBS=$LIBS - LIBS="$LIBS $FLIBS" - ac_fortran_dm_var=F77_DUMMY_MAIN - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - # First, try linking without a dummy main: - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_fortran_dummy_main=none -else - ac_cv_fortran_dummy_main=unknown -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - - if test $ac_cv_fortran_dummy_main = unknown; then - for ac_func in MAIN__ MAIN_ __main MAIN _MAIN __MAIN main_ main__ _main; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#define $ac_fortran_dm_var $ac_func -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_fortran_dummy_main=$ac_func; break -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done - fi - ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu - ac_cv_f77_dummy_main=$ac_cv_fortran_dummy_main - rm -rf conftest* - LIBS=$ac_f77_dm_save_LIBS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_dummy_main" >&5 -$as_echo "$ac_cv_f77_dummy_main" >&6; } -F77_DUMMY_MAIN=$ac_cv_f77_dummy_main -if test "$F77_DUMMY_MAIN" != unknown; then : - if test $F77_DUMMY_MAIN != none; then - -cat >>confdefs.h <<_ACEOF -#define F77_DUMMY_MAIN $F77_DUMMY_MAIN -_ACEOF - - if test "x$ac_cv_fc_dummy_main" = "x$ac_cv_f77_dummy_main"; then +ac_exeext='' +ac_ext='f90' +ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +{ $as_echo "$as_me:$LINENO: checking support for Fortran EXTENDS_TYPE_OF" >&5 +$as_echo_n "checking support for Fortran EXTENDS_TYPE_OF... " >&6; } +i=0 +while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do + i=`expr $i + 1` +done +mkdir tmpdir_$i +cd tmpdir_$i +cat > conftest.$ac_ext <>confdefs.h + write(*,*) 'nfv1 extends foov? ', extends_type_of(nfv1,foov) +end program xtt +EOF +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } - fi -fi + FDEFINES="$psblas_cv_define_prepend-DHAVE_EXTENDS_TYPE_OF $FDEFINES" else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "linking to Fortran libraries from C fails -See \`config.log' for more details" "$LINENO" 5; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 fi +cd .. +rm -fr tmpdir_$i -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 name-mangling scheme" >&5 -$as_echo_n "checking for Fortran 77 name-mangling scheme... " >&6; } -if ${ac_cv_f77_mangling+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat > conftest.$ac_ext <<_ACEOF - subroutine foobar() - return - end - subroutine foo_bar() - return - end -_ACEOF -if ac_fn_f77_try_compile "$LINENO"; then : - mv conftest.$ac_objext cfortran_test.$ac_objext +ac_exeext='' +ac_ext='f90' +ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +{ $as_echo "$as_me:$LINENO: checking support for Fortran MOLD= allocation" >&5 +$as_echo_n "checking support for Fortran MOLD= allocation... " >&6; } +i=0 +while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do + i=`expr $i + 1` +done +mkdir tmpdir_$i +cd tmpdir_$i +cat > conftest.$ac_ext <conftest.$ac_ext -/* end confdefs.h. */ +end program xtt +EOF +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -#ifdef F77_DUMMY_MAIN + FDEFINES="$psblas_cv_define_prepend-DHAVE_MOLD $FDEFINES" +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +cd .. +rm -fr tmpdir_$i -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } +############################################################################### +# Additional pathname stuff (yes, it is redundant and confusing...) +############################################################################### -#endif -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_success=yes; break 2 +# -I +if test x"$INCLUDEPATH" != "x" ; then + FINCLUDES="$FINCLUDES $INCLUDEPATH" + CINCLUDES="$CINCLUDES $INCLUDEPATH" fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done - done - ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu - if test "$ac_success" = "yes"; then - case $ac_foobar in - foobar) - ac_case=lower - ac_foo_bar=foo_bar - ;; - FOOBAR) - ac_case=upper - ac_foo_bar=FOO_BAR - ;; - esac +# -L +if test x"$LIBRARYPATH" != "x" ; then + FINCLUDES="$FINCLUDES $LIBRARYPATH" +fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - ac_success_extra=no - for ac_extra in "" "_"; do - ac_func="$ac_foo_bar$ac_underscore$ac_extra" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +# -I +if test x"$MODULE_PATH" != "x" ; then + FINCLUDES="$FINCLUDES $MODULE_PATH" +fi -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -#ifdef F77_DUMMY_MAIN +############################################################################### +# Parachute rules for ar and ranlib ... (could cause problems) +############################################################################### -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } +if test "X$AR" == "X" ; then + AR="ar" +fi -#endif -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_success_extra=yes; break +if test "X$RANLIB" == "X" ; then + RANLIB="ranlib" fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done - ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu - if test "$ac_success_extra" = "yes"; then - ac_cv_f77_mangling="$ac_case case" - if test -z "$ac_underscore"; then - ac_cv_f77_mangling="$ac_cv_f77_mangling, no underscore" - else - ac_cv_f77_mangling="$ac_cv_f77_mangling, underscore" - fi - if test -z "$ac_extra"; then - ac_cv_f77_mangling="$ac_cv_f77_mangling, no extra underscore" - else - ac_cv_f77_mangling="$ac_cv_f77_mangling, extra underscore" - fi - else - ac_cv_f77_mangling="unknown" - fi - else - ac_cv_f77_mangling="unknown" - fi +# This should be portable +AR="${AR} -cur" - LIBS=$ac_save_LIBS - rm -rf conftest* - rm -f cfortran_test* -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compile a simple Fortran program -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_mangling" >&5 -$as_echo "$ac_cv_f77_mangling" >&6; } +############################################################################### +# BLAS library presence checks +############################################################################### -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +# Note : The libmkl.a (Intel Math Kernel Library) library could be used, too. +# It is sufficient to specify it as -lmkl in the CLIBS or FLIBS or LIBS +# and specify its path adjusting -L/path in CFLAGS. +# Right now it is a matter of user's taste when linking custom applications. +# But PSBLAS examples could take advantage of these libraries, too. @@ -7862,7 +8102,7 @@ pac_blas_ok=no # Check whether --with-blas was given. -if test "${with_blas+set}" = set; then : +if test "${with_blas+set}" = set; then withval=$with_blas; fi @@ -7874,79 +8114,62 @@ case $with_blas in esac # Get fortran linker names of BLAS functions to check for. -ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu -case $ac_cv_f77_mangling in - upper*) ac_val="SGEMM" ;; - lower*) ac_val="sgemm" ;; - *) ac_val="unknown" ;; -esac -case $ac_cv_f77_mangling in *," underscore"*) ac_val="$ac_val"_ ;; esac - -sgemm="$ac_val" - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu -case $ac_cv_f77_mangling in - upper*) ac_val="DGEMM" ;; - lower*) ac_val="dgemm" ;; - *) ac_val="unknown" ;; -esac -case $ac_cv_f77_mangling in *," underscore"*) ac_val="$ac_val"_ ;; esac - -dgemm="$ac_val" - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - +#AC_FC_FUNC(sgemm) +#AC_FC_FUNC(dgemm) pac_blas_save_LIBS="$LIBS" -LIBS="$LIBS $FLIBS" +#LIBS="$LIBS $FLIBS" +ac_ext=${ac_fc_srcext-f} +ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' +ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_fc_compiler_gnu + # First, check BLAS_LIBS environment variable if test $pac_blas_ok = no; then if test "x$BLAS_LIBS" != x; then save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $LIBS" - ac_ext=${ac_fc_srcext-f} -ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' -ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_fc_compiler_gnu - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sgemm in $BLAS_LIBS" >&5 + { $as_echo "$as_me:$LINENO: checking for sgemm in $BLAS_LIBS" >&5 $as_echo_n "checking for sgemm in $BLAS_LIBS... " >&6; } - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program main call sgemm end _ACEOF -if ac_fn_fc_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then pac_blas_ok=yes else - BLAS_LIBS="" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + BLAS_LIBS="" fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_blas_ok" >&5 -$as_echo "$pac_blas_ok" >&6; } - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:$LINENO: result: $pac_blas_ok" >&5 +$as_echo "$pac_blas_ok" >&6; } LIBS="$save_LIBS" fi fi @@ -7954,14 +8177,24 @@ fi # BLAS in ATLAS library? (http://math-atlas.sourceforge.net/) if test $pac_blas_ok = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ATL_xerbla in -latlas" >&5 + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + { $as_echo "$as_me:$LINENO: checking for ATL_xerbla in -latlas" >&5 $as_echo_n "checking for ATL_xerbla in -latlas... " >&6; } -if ${ac_cv_lib_atlas_ATL_xerbla+:} false; then : +if test "${ac_cv_lib_atlas_ATL_xerbla+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-latlas $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -7971,14 +8204,6 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext extern "C" #endif char ATL_xerbla (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif int main () { @@ -7987,61 +8212,115 @@ return ATL_xerbla (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_atlas_ATL_xerbla=yes else - ac_cv_lib_atlas_ATL_xerbla=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_atlas_ATL_xerbla=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_atlas_ATL_xerbla" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_atlas_ATL_xerbla" >&5 $as_echo "$ac_cv_lib_atlas_ATL_xerbla" >&6; } -if test "x$ac_cv_lib_atlas_ATL_xerbla" = xyes; then : +if test "x$ac_cv_lib_atlas_ATL_xerbla" = x""yes; then ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sgemm in -lf77blas" >&5 + { $as_echo "$as_me:$LINENO: checking for sgemm in -lf77blas" >&5 $as_echo_n "checking for sgemm in -lf77blas... " >&6; } -if ${ac_cv_lib_f77blas_sgemm+:} false; then : +if test "${ac_cv_lib_f77blas_sgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lf77blas -latlas $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call sgemm end _ACEOF -if ac_fn_fc_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_f77blas_sgemm=yes else - ac_cv_lib_f77blas_sgemm=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_f77blas_sgemm=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_f77blas_sgemm" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_f77blas_sgemm" >&5 $as_echo "$ac_cv_lib_f77blas_sgemm" >&6; } -if test "x$ac_cv_lib_f77blas_sgemm" = xyes; then : +if test "x$ac_cv_lib_f77blas_sgemm" = x""yes; then ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cblas_dgemm in -lcblas" >&5 + { $as_echo "$as_me:$LINENO: checking for cblas_dgemm in -lcblas" >&5 $as_echo_n "checking for cblas_dgemm in -lcblas... " >&6; } -if ${ac_cv_lib_cblas_cblas_dgemm+:} false; then : +if test "${ac_cv_lib_cblas_cblas_dgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcblas -lf77blas -latlas $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -8051,14 +8330,6 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext extern "C" #endif char cblas_dgemm (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif int main () { @@ -8067,18 +8338,43 @@ return cblas_dgemm (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_cblas_cblas_dgemm=yes else - ac_cv_lib_cblas_cblas_dgemm=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_cblas_cblas_dgemm=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cblas_cblas_dgemm" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_cblas_cblas_dgemm" >&5 $as_echo "$ac_cv_lib_cblas_cblas_dgemm" >&6; } -if test "x$ac_cv_lib_cblas_cblas_dgemm" = xyes; then : +if test "x$ac_cv_lib_cblas_cblas_dgemm" = x""yes; then pac_blas_ok=yes BLAS_LIBS="-lcblas -lf77blas -latlas" fi @@ -8087,12 +8383,6 @@ fi fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - fi @@ -8103,78 +8393,153 @@ ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sgemm in -lblas" >&5 + { $as_echo "$as_me:$LINENO: checking for sgemm in -lblas" >&5 $as_echo_n "checking for sgemm in -lblas... " >&6; } -if ${ac_cv_lib_blas_sgemm+:} false; then : +if test "${ac_cv_lib_blas_sgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lblas $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call sgemm end _ACEOF -if ac_fn_fc_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_blas_sgemm=yes else - ac_cv_lib_blas_sgemm=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_blas_sgemm=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_blas_sgemm" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_blas_sgemm" >&5 $as_echo "$ac_cv_lib_blas_sgemm" >&6; } -if test "x$ac_cv_lib_blas_sgemm" = xyes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgemm in -ldgemm" >&5 +if test "x$ac_cv_lib_blas_sgemm" = x""yes; then + { $as_echo "$as_me:$LINENO: checking for dgemm in -ldgemm" >&5 $as_echo_n "checking for dgemm in -ldgemm... " >&6; } -if ${ac_cv_lib_dgemm_dgemm+:} false; then : +if test "${ac_cv_lib_dgemm_dgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldgemm -lblas $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call dgemm end _ACEOF -if ac_fn_fc_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_dgemm_dgemm=yes else - ac_cv_lib_dgemm_dgemm=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dgemm_dgemm=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgemm_dgemm" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dgemm_dgemm" >&5 $as_echo "$ac_cv_lib_dgemm_dgemm" >&6; } -if test "x$ac_cv_lib_dgemm_dgemm" = xyes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sgemm in -lsgemm" >&5 +if test "x$ac_cv_lib_dgemm_dgemm" = x""yes; then + { $as_echo "$as_me:$LINENO: checking for sgemm in -lsgemm" >&5 $as_echo_n "checking for sgemm in -lsgemm... " >&6; } -if ${ac_cv_lib_sgemm_sgemm+:} false; then : +if test "${ac_cv_lib_sgemm_sgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsgemm -lblas $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call sgemm end _ACEOF -if ac_fn_fc_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_sgemm_sgemm=yes else - ac_cv_lib_sgemm_sgemm=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_sgemm_sgemm=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sgemm_sgemm" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_sgemm_sgemm" >&5 $as_echo "$ac_cv_lib_sgemm_sgemm" >&6; } -if test "x$ac_cv_lib_sgemm_sgemm" = xyes; then : +if test "x$ac_cv_lib_sgemm_sgemm" = x""yes; then pac_blas_ok=yes; BLAS_LIBS="-lsgemm -ldgemm -lblas" fi @@ -8182,63 +8547,59 @@ fi fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - fi # BLAS in Alpha CXML library? if test $pac_blas_ok = no; then - as_ac_Lib=`$as_echo "ac_cv_lib_cxml_$sgemm" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -lcxml" >&5 -$as_echo_n "checking for $sgemm in -lcxml... " >&6; } -if eval \${$as_ac_Lib+:} false; then : + { $as_echo "$as_me:$LINENO: checking for sgemm in -lcxml" >&5 +$as_echo_n "checking for sgemm in -lcxml... " >&6; } +if test "${ac_cv_lib_cxml_sgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcxml $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $sgemm (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif -int -main () -{ -return $sgemm (); - ; - return 0; -} +cat >conftest.$ac_ext <<_ACEOF + program main + call sgemm + end _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$as_ac_Lib=yes" +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_cxml_sgemm=yes else - eval "$as_ac_Lib=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_cxml_sgemm=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -eval ac_res=\$$as_ac_Lib - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_cxml_sgemm" >&5 +$as_echo "$ac_cv_lib_cxml_sgemm" >&6; } +if test "x$ac_cv_lib_cxml_sgemm" = x""yes; then pac_blas_ok=yes;BLAS_LIBS="-lcxml" fi @@ -8246,53 +8607,55 @@ fi # BLAS in Alpha DXML library? (now called CXML, see above) if test $pac_blas_ok = no; then - as_ac_Lib=`$as_echo "ac_cv_lib_dxml_$sgemm" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -ldxml" >&5 -$as_echo_n "checking for $sgemm in -ldxml... " >&6; } -if eval \${$as_ac_Lib+:} false; then : + { $as_echo "$as_me:$LINENO: checking for sgemm in -ldxml" >&5 +$as_echo_n "checking for sgemm in -ldxml... " >&6; } +if test "${ac_cv_lib_dxml_sgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldxml $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $sgemm (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif -int -main () -{ -return $sgemm (); - ; - return 0; -} +cat >conftest.$ac_ext <<_ACEOF + program main + call sgemm + end _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$as_ac_Lib=yes" +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_dxml_sgemm=yes else - eval "$as_ac_Lib=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dxml_sgemm=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -eval ac_res=\$$as_ac_Lib - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dxml_sgemm" >&5 +$as_echo "$ac_cv_lib_dxml_sgemm" >&6; } +if test "x$ac_cv_lib_dxml_sgemm" = x""yes; then pac_blas_ok=yes;BLAS_LIBS="-ldxml" fi @@ -8302,98 +8665,104 @@ fi # BLAS in Sun Performance library? if test $pac_blas_ok = no; then if test "x$GCC" != xyes; then # only works with Sun CC - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acosp in -lsunmath" >&5 + { $as_echo "$as_me:$LINENO: checking for acosp in -lsunmath" >&5 $as_echo_n "checking for acosp in -lsunmath... " >&6; } -if ${ac_cv_lib_sunmath_acosp+:} false; then : +if test "${ac_cv_lib_sunmath_acosp+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsunmath $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char acosp (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif -int -main () -{ -return acosp (); - ; - return 0; -} +cat >conftest.$ac_ext <<_ACEOF + program main + call acosp + end _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_sunmath_acosp=yes else - ac_cv_lib_sunmath_acosp=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_sunmath_acosp=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sunmath_acosp" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_sunmath_acosp" >&5 $as_echo "$ac_cv_lib_sunmath_acosp" >&6; } -if test "x$ac_cv_lib_sunmath_acosp" = xyes; then : - as_ac_Lib=`$as_echo "ac_cv_lib_sunperf_$sgemm" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -lsunperf" >&5 -$as_echo_n "checking for $sgemm in -lsunperf... " >&6; } -if eval \${$as_ac_Lib+:} false; then : +if test "x$ac_cv_lib_sunmath_acosp" = x""yes; then + { $as_echo "$as_me:$LINENO: checking for sgemm in -lsunperf" >&5 +$as_echo_n "checking for sgemm in -lsunperf... " >&6; } +if test "${ac_cv_lib_sunperf_sgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsunperf -lsunmath $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $sgemm (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif -int -main () -{ -return $sgemm (); - ; - return 0; -} +cat >conftest.$ac_ext <<_ACEOF + program main + call sgemm + end _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$as_ac_Lib=yes" +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_sunperf_sgemm=yes else - eval "$as_ac_Lib=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_sunperf_sgemm=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -eval ac_res=\$$as_ac_Lib - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_sunperf_sgemm" >&5 +$as_echo "$ac_cv_lib_sunperf_sgemm" >&6; } +if test "x$ac_cv_lib_sunperf_sgemm" = x""yes; then BLAS_LIBS="-xlic_lib=sunperf -lsunmath" pac_blas_ok=yes fi @@ -8406,53 +8775,55 @@ fi # BLAS in SCSL library? (SGI/Cray Scientific Library) if test $pac_blas_ok = no; then - as_ac_Lib=`$as_echo "ac_cv_lib_scs_$sgemm" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -lscs" >&5 -$as_echo_n "checking for $sgemm in -lscs... " >&6; } -if eval \${$as_ac_Lib+:} false; then : + { $as_echo "$as_me:$LINENO: checking for sgemm in -lscs" >&5 +$as_echo_n "checking for sgemm in -lscs... " >&6; } +if test "${ac_cv_lib_scs_sgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lscs $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $sgemm (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif -int -main () -{ -return $sgemm (); - ; - return 0; -} +cat >conftest.$ac_ext <<_ACEOF + program main + call sgemm + end _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$as_ac_Lib=yes" +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_scs_sgemm=yes else - eval "$as_ac_Lib=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_scs_sgemm=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -eval ac_res=\$$as_ac_Lib - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_scs_sgemm" >&5 +$as_echo "$ac_cv_lib_scs_sgemm" >&6; } +if test "x$ac_cv_lib_scs_sgemm" = x""yes; then pac_blas_ok=yes; BLAS_LIBS="-lscs" fi @@ -8461,52 +8832,59 @@ fi # BLAS in SGIMATH library? if test $pac_blas_ok = no; then as_ac_Lib=`$as_echo "ac_cv_lib_complib.sgimath_$sgemm" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -lcomplib.sgimath" >&5 +{ $as_echo "$as_me:$LINENO: checking for $sgemm in -lcomplib.sgimath" >&5 $as_echo_n "checking for $sgemm in -lcomplib.sgimath... " >&6; } -if eval \${$as_ac_Lib+:} false; then : +if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcomplib.sgimath $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $sgemm (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif -int -main () -{ -return $sgemm (); - ; - return 0; -} +cat >conftest.$ac_ext <<_ACEOF + program main + call $sgemm + end _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_Lib=yes" else - eval "$as_ac_Lib=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Lib=no" fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -eval ac_res=\$$as_ac_Lib - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +ac_res=`eval 'as_val=${'$as_ac_Lib'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : +as_val=`eval 'as_val=${'$as_ac_Lib'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then pac_blas_ok=yes; BLAS_LIBS="-lcomplib.sgimath" fi @@ -8515,99 +8893,108 @@ fi # BLAS in IBM ESSL library? (requires generic BLAS lib, too) if test $pac_blas_ok = no; then as_ac_Lib=`$as_echo "ac_cv_lib_blas_$sgemm" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -lblas" >&5 +{ $as_echo "$as_me:$LINENO: checking for $sgemm in -lblas" >&5 $as_echo_n "checking for $sgemm in -lblas... " >&6; } -if eval \${$as_ac_Lib+:} false; then : +if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lblas $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $sgemm (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif -int -main () -{ -return $sgemm (); - ; - return 0; -} +cat >conftest.$ac_ext <<_ACEOF + program main + call $sgemm + end _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_Lib=yes" else - eval "$as_ac_Lib=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Lib=no" fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -eval ac_res=\$$as_ac_Lib - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +ac_res=`eval 'as_val=${'$as_ac_Lib'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : - as_ac_Lib=`$as_echo "ac_cv_lib_essl_$sgemm" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -lessl" >&5 -$as_echo_n "checking for $sgemm in -lessl... " >&6; } -if eval \${$as_ac_Lib+:} false; then : +as_val=`eval 'as_val=${'$as_ac_Lib'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + { $as_echo "$as_me:$LINENO: checking for sgemm in -lessl" >&5 +$as_echo_n "checking for sgemm in -lessl... " >&6; } +if test "${ac_cv_lib_essl_sgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lessl -lblas $FLIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $sgemm (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif -int -main () -{ -return $sgemm (); - ; - return 0; -} +cat >conftest.$ac_ext <<_ACEOF + program main + call sgemm + end _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$as_ac_Lib=yes" +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_essl_sgemm=yes else - eval "$as_ac_Lib=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_essl_sgemm=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -eval ac_res=\$$as_ac_Lib - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_essl_sgemm" >&5 +$as_echo "$ac_cv_lib_essl_sgemm" >&6; } +if test "x$ac_cv_lib_essl_sgemm" = x""yes; then pac_blas_ok=yes; BLAS_LIBS="-lessl -lblas" fi @@ -8617,39 +9004,43 @@ fi # BLAS linked to by default? (happens on some supercomputers) if test $pac_blas_ok = no; then save_LIBS="$LIBS"; LIBS="$LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $sgemm (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif -int -main () -{ -return $sgemm (); - ; - return 0; -} + cat >conftest.$ac_ext <<_ACEOF + program main + call sgemm + end _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then pac_blas_ok=yes else - BLAS_LIBS="" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + BLAS_LIBS="" fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" fi @@ -8660,91 +9051,58 @@ ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sgemm in -lblas" >&5 + { $as_echo "$as_me:$LINENO: checking for sgemm in -lblas" >&5 $as_echo_n "checking for sgemm in -lblas... " >&6; } -if ${ac_cv_lib_blas_sgemm+:} false; then : +if test "${ac_cv_lib_blas_sgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lblas $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call sgemm end _ACEOF -if ac_fn_fc_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_blas_sgemm=yes else - ac_cv_lib_blas_sgemm=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_blas_sgemm" >&5 -$as_echo "$ac_cv_lib_blas_sgemm" >&6; } -if test "x$ac_cv_lib_blas_sgemm" = xyes; then : - pac_blas_ok=yes; BLAS_LIBS="-lblas" -fi - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - if test $pac_blas_ok = no; then - as_ac_Lib=`$as_echo "ac_cv_lib_blas_$sgemm" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -lblas" >&5 -$as_echo_n "checking for $sgemm in -lblas... " >&6; } -if eval \${$as_ac_Lib+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lblas $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $sgemm (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -#endif -int -main () -{ -return $sgemm (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$as_ac_Lib=yes" -else - eval "$as_ac_Lib=no" + ac_cv_lib_blas_sgemm=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -eval ac_res=\$$as_ac_Lib - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_blas_sgemm" >&5 +$as_echo "$ac_cv_lib_blas_sgemm" >&6; } +if test "x$ac_cv_lib_blas_sgemm" = x""yes; then pac_blas_ok=yes; BLAS_LIBS="-lblas" fi - fi fi @@ -8754,12 +9112,16 @@ LIBS="$pac_blas_save_LIBS" # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$pac_blas_ok" = xyes; then -$as_echo "#define HAVE_BLAS 1" >>confdefs.h +cat >>confdefs.h <<\_ACEOF +#define HAVE_BLAS 1 +_ACEOF : else pac_blas_ok=no - as_fn_error $? "Cannot find BLAS library, specify a path using --with-blas=DIR/LIB (for example --with-blas=/usr/path/lib/libcxml.a)" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Cannot find BLAS library, specify a path using --with-blas=DIR/LIB (for example --with-blas=/usr/path/lib/libcxml.a)" >&5 +$as_echo "$as_me: error: Cannot find BLAS library, specify a path using --with-blas=DIR/LIB (for example --with-blas=/usr/path/lib/libcxml.a)" >&2;} + { (exit 1); exit 1; }; } fi @@ -8768,7 +9130,7 @@ pac_lapack_ok=no # Check whether --with-lapack was given. -if test "${with_lapack+set}" = set; then : +if test "${with_lapack+set}" = set; then withval=$with_lapack; fi @@ -8780,25 +9142,7 @@ case $with_lapack in esac # Get fortran linker name of LAPACK function to check for. -ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu -case $ac_cv_f77_mangling in - upper*) ac_val="CHEEV" ;; - lower*) ac_val="cheev" ;; - *) ac_val="unknown" ;; -esac -case $ac_cv_f77_mangling in *," underscore"*) ac_val="$ac_val"_ ;; esac - -cheev="$ac_val" - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - +#AC_FC_FUNC(cheev) # We cannot use LAPACK if BLAS is not found if test "x$pac_blas_ok" != xyes; then @@ -8808,7 +9152,7 @@ fi # First, check LAPACK_LIBS environment variable if test "x$LAPACK_LIBS" != x; then save_LIBS="$LIBS"; LIBS="$LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cheev in $LAPACK_LIBS" >&5 + { $as_echo "$as_me:$LINENO: checking for cheev in $LAPACK_LIBS" >&5 $as_echo_n "checking for cheev in $LAPACK_LIBS... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -8820,16 +9164,16 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu call cheev end EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then pac_lapack_ok=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 @@ -8850,7 +9194,7 @@ fi # LAPACK linked to by default? (is sometimes included in BLAS lib) if test $pac_lapack_ok = no; then save_LIBS="$LIBS"; LIBS="$LIBS $BLAS_LIBS $FLIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cheev in default libs" >&5 + { $as_echo "$as_me:$LINENO: checking for cheev in default libs" >&5 $as_echo_n "checking for cheev in default libs... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -8862,16 +9206,16 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu call cheev end EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then pac_lapack_ok=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 @@ -8896,31 +9240,59 @@ ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest ac_compiler_gnu=$ac_cv_fc_compiler_gnu as_ac_Lib=`$as_echo "ac_cv_lib_$lapack''_cheev" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cheev in -l$lapack" >&5 +{ $as_echo "$as_me:$LINENO: checking for cheev in -l$lapack" >&5 $as_echo_n "checking for cheev in -l$lapack... " >&6; } -if eval \${$as_ac_Lib+:} false; then : +if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$lapack $FLIBS $LIBS" -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call cheev end _ACEOF -if ac_fn_fc_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_Lib=yes" else - eval "$as_ac_Lib=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Lib=no" fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -eval ac_res=\$$as_ac_Lib - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +ac_res=`eval 'as_val=${'$as_ac_Lib'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : +as_val=`eval 'as_val=${'$as_ac_Lib'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then pac_lapack_ok=yes; LAPACK_LIBS="-l$lapack" fi @@ -8945,6 +9317,12 @@ else fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + ############################################################################### @@ -8962,16 +9340,16 @@ fi #fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gnumake" >&5 +{ $as_echo "$as_me:$LINENO: checking for gnumake" >&5 $as_echo_n "checking for gnumake... " >&6; } MAKE=${MAKE:-make} if $MAKE --version 2>&1 | grep -e"GNU Make" >/dev/null; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } psblas_make_gnumake='yes' else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } psblas_make_gnumake='no' fi @@ -8991,7 +9369,7 @@ fi # Check whether --with-rsb was given. -if test "${with_rsb+set}" = set; then : +if test "${with_rsb+set}" = set; then withval=$with_rsb; if test x"$withval" = xno; then want_rsb_libs= ; else if test x"$withval" = xyes ; then want_rsb_libs=yes ; else want_rsb_libs="$withval" ; fi ; fi else @@ -9016,7 +9394,7 @@ LIBS="$RSB_LIBS ${LIBS}" # Check whether --with-metis was given. -if test "${with_metis+set}" = set; then : +if test "${with_metis+set}" = set; then withval=$with_metis; psblas_cv_metis="$withval" else psblas_cv_metis='' @@ -9025,15 +9403,18 @@ fi if test "x$psblas_cv_metis" != "x" ; then - as_ac_Lib=`$as_echo "ac_cv_lib_"m"''_METIS_PartGraphRecursive" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for METIS_PartGraphRecursive in -l\"m\"" >&5 + { $as_echo "$as_me:$LINENO: checking for METIS_PartGraphRecursive in -l\"m\"" >&5 $as_echo_n "checking for METIS_PartGraphRecursive in -l\"m\"... " >&6; } -if eval \${$as_ac_Lib+:} false; then : +if test "${ac_cv_lib__m__METIS_PartGraphRecursive+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l"m" "$psblas_cv_metis" $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -9043,14 +9424,6 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext extern "C" #endif char METIS_PartGraphRecursive (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif int main () { @@ -9059,19 +9432,43 @@ return METIS_PartGraphRecursive (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$as_ac_Lib=yes" +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib__m__METIS_PartGraphRecursive=yes else - eval "$as_ac_Lib=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib__m__METIS_PartGraphRecursive=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -eval ac_res=\$$as_ac_Lib - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib__m__METIS_PartGraphRecursive" >&5 +$as_echo "$ac_cv_lib__m__METIS_PartGraphRecursive" >&6; } +if test "x$ac_cv_lib__m__METIS_PartGraphRecursive" = x""yes; then psblas_cv_have_metis=yes; METIS_LIBS="$psblas_cv_metis" else psblas_cv_have_metis=no @@ -9080,14 +9477,18 @@ fi else save_LIBS="$LIBS"; LIBS="-lm $LIBS"; - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for METIS_PartGraphRecursive in -lmetis" >&5 + { $as_echo "$as_me:$LINENO: checking for METIS_PartGraphRecursive in -lmetis" >&5 $as_echo_n "checking for METIS_PartGraphRecursive in -lmetis... " >&6; } -if ${ac_cv_lib_metis_METIS_PartGraphRecursive+:} false; then : +if test "${ac_cv_lib_metis_METIS_PartGraphRecursive+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmetis $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -9097,14 +9498,6 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext extern "C" #endif char METIS_PartGraphRecursive (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif int main () { @@ -9113,18 +9506,43 @@ return METIS_PartGraphRecursive (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_metis_METIS_PartGraphRecursive=yes else - ac_cv_lib_metis_METIS_PartGraphRecursive=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_metis_METIS_PartGraphRecursive=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_metis_METIS_PartGraphRecursive" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_metis_METIS_PartGraphRecursive" >&5 $as_echo "$ac_cv_lib_metis_METIS_PartGraphRecursive" >&6; } -if test "x$ac_cv_lib_metis_METIS_PartGraphRecursive" = xyes; then : +if test "x$ac_cv_lib_metis_METIS_PartGraphRecursive" = x""yes; then psblas_cv_have_metis=yes;METIS_LIBS="-lmetis" else psblas_cv_have_metis=no @@ -9138,7 +9556,7 @@ fi # Check whether --with-amd was given. -if test "${with_amd+set}" = set; then : +if test "${with_amd+set}" = set; then withval=$with_amd; psblas_cv_amd=$withval else psblas_cv_amd='-lamd' @@ -9146,7 +9564,7 @@ fi # Check whether --with-amddir was given. -if test "${with_amddir+set}" = set; then : +if test "${with_amddir+set}" = set; then withval=$with_amddir; psblas_cv_amddir=$withval else psblas_cv_amddir='' @@ -9154,7 +9572,7 @@ fi # Check whether --with-amdincdir was given. -if test "${with_amdincdir+set}" = set; then : +if test "${with_amdincdir+set}" = set; then withval=$with_amdincdir; psblas_cv_amdincdir=$withval else psblas_cv_amdincdir='' @@ -9162,7 +9580,7 @@ fi # Check whether --with-amdlibdir was given. -if test "${with_amdlibdir+set}" = set; then : +if test "${with_amdlibdir+set}" = set; then withval=$with_amdlibdir; psblas_cv_amdlibdir=$withval else psblas_cv_amdlibdir='' @@ -9192,10 +9610,141 @@ if test "x$psblas_cv_amdlibdir" != "x"; then AMD_LIBDIR="-L$psblas_cv_amdlibdir" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: amd dir $psblas_cv_amddir" >&5 +{ $as_echo "$as_me:$LINENO: amd dir $psblas_cv_amddir" >&5 $as_echo "$as_me: amd dir $psblas_cv_amddir" >&6;} -ac_fn_c_check_header_mongrel "$LINENO" "amd.h" "ac_cv_header_amd_h" "$ac_includes_default" -if test "x$ac_cv_header_amd_h" = xyes; then : +if test "${ac_cv_header_amd_h+set}" = set; then + { $as_echo "$as_me:$LINENO: checking for amd.h" >&5 +$as_echo_n "checking for amd.h... " >&6; } +if test "${ac_cv_header_amd_h+set}" = set; then + $as_echo_n "(cached) " >&6 +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_amd_h" >&5 +$as_echo "$ac_cv_header_amd_h" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking amd.h usability" >&5 +$as_echo_n "checking amd.h usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking amd.h presence" >&5 +$as_echo_n "checking amd.h presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: amd.h: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: amd.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: amd.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: amd.h: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: amd.h: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: amd.h: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: amd.h: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: amd.h: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: amd.h: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: amd.h: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ---------------------------------------------- ## +## Report this to salvatore.filippone@uniroma2.it ## +## ---------------------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for amd.h" >&5 +$as_echo_n "checking for amd.h... " >&6; } +if test "${ac_cv_header_amd_h+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_header_amd_h=$ac_header_preproc +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_amd_h" >&5 +$as_echo "$ac_cv_header_amd_h" >&6; } + +fi +if test "x$ac_cv_header_amd_h" = x""yes; then pac_amd_header_ok=yes else pac_amd_header_ok=no; AMD_INCLUDES="" @@ -9207,10 +9756,141 @@ if test "x$pac_amd_header_ok" == "xno" ; then AMD_INCLUDES="-I$psblas_cv_amddir/include -I$psblas_cv_amddir/Include " CPPFLAGS="$AMD_INCLUDES $SAVE_CPPFLAGS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for amd_h in $AMD_INCLUDES" >&5 + { $as_echo "$as_me:$LINENO: checking for amd_h in $AMD_INCLUDES" >&5 $as_echo_n "checking for amd_h in $AMD_INCLUDES... " >&6; } - ac_fn_c_check_header_mongrel "$LINENO" "amd.h" "ac_cv_header_amd_h" "$ac_includes_default" -if test "x$ac_cv_header_amd_h" = xyes; then : + if test "${ac_cv_header_amd_h+set}" = set; then + { $as_echo "$as_me:$LINENO: checking for amd.h" >&5 +$as_echo_n "checking for amd.h... " >&6; } +if test "${ac_cv_header_amd_h+set}" = set; then + $as_echo_n "(cached) " >&6 +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_amd_h" >&5 +$as_echo "$ac_cv_header_amd_h" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking amd.h usability" >&5 +$as_echo_n "checking amd.h usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking amd.h presence" >&5 +$as_echo_n "checking amd.h presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: amd.h: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: amd.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: amd.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: amd.h: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: amd.h: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: amd.h: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: amd.h: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: amd.h: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: amd.h: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: amd.h: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ---------------------------------------------- ## +## Report this to salvatore.filippone@uniroma2.it ## +## ---------------------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for amd.h" >&5 +$as_echo_n "checking for amd.h... " >&6; } +if test "${ac_cv_header_amd_h+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_header_amd_h=$ac_header_preproc +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_amd_h" >&5 +$as_echo "$ac_cv_header_amd_h" >&6; } + +fi +if test "x$ac_cv_header_amd_h" = x""yes; then pac_amd_header_ok=yes else pac_amd_header_ok=no; AMD_INCLUDES="" @@ -9222,8 +9902,139 @@ if test "x$pac_amd_header_ok" == "xno" ; then unset ac_cv_header_amd_h AMD_INCLUDES="-I$psblas_cv_amddir/UFconfig -I$psblas_cv_amddir/AMD/Include -I$psblas_cv_amddir/AMD/Include" CPPFLAGS="$AMD_INCLUDES $SAVE_CPPFLAGS" - ac_fn_c_check_header_mongrel "$LINENO" "amd.h" "ac_cv_header_amd_h" "$ac_includes_default" -if test "x$ac_cv_header_amd_h" = xyes; then : + if test "${ac_cv_header_amd_h+set}" = set; then + { $as_echo "$as_me:$LINENO: checking for amd.h" >&5 +$as_echo_n "checking for amd.h... " >&6; } +if test "${ac_cv_header_amd_h+set}" = set; then + $as_echo_n "(cached) " >&6 +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_amd_h" >&5 +$as_echo "$ac_cv_header_amd_h" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking amd.h usability" >&5 +$as_echo_n "checking amd.h usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking amd.h presence" >&5 +$as_echo_n "checking amd.h presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: amd.h: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: amd.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: amd.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: amd.h: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: amd.h: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: amd.h: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: amd.h: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: amd.h: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: amd.h: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: amd.h: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: amd.h: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ---------------------------------------------- ## +## Report this to salvatore.filippone@uniroma2.it ## +## ---------------------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for amd.h" >&5 +$as_echo_n "checking for amd.h... " >&6; } +if test "${ac_cv_header_amd_h+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_header_amd_h=$ac_header_preproc +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_amd_h" >&5 +$as_echo "$ac_cv_header_amd_h" >&6; } + +fi +if test "x$ac_cv_header_amd_h" = x""yes; then pac_amd_header_ok=yes else pac_amd_header_ok=no; AMD_INCLUDES="" @@ -9237,9 +10048,13 @@ if test "x$pac_amd_header_ok" == "xyes" ; then psblas_cv_amd_includes="$AMD_INCLUDES" AMD_LIBS="$psblas_cv_amd $AMD_LIBDIR" LIBS="$AMD_LIBS -lm $LIBS"; - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for amd_order in $AMD_LIBS" >&5 + { $as_echo "$as_me:$LINENO: checking for amd_order in $AMD_LIBS" >&5 $as_echo_n "checking for amd_order in $AMD_LIBS... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -9249,14 +10064,6 @@ $as_echo_n "checking for amd_order in $AMD_LIBS... " >&6; } extern "C" #endif char amd_order (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif int main () { @@ -9265,23 +10072,52 @@ return amd_order (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then psblas_cv_have_amd=yes;pac_amd_lib_ok=yes; else - psblas_cv_have_amd=no;pac_amd_lib_ok=no; AMD_LIBS="" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + psblas_cv_have_amd=no;pac_amd_lib_ok=no; AMD_LIBS="" fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_amd_lib_ok" >&5 + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:$LINENO: result: $pac_amd_lib_ok" >&5 $as_echo "$pac_amd_lib_ok" >&6; } if test "x$pac_amd_lib_ok" == "xno" ; then AMD_LIBDIR="-L$psblas_cv_amddir/Lib -L$psblas_cv_amddir/lib" AMD_LIBS="$psblas_cv_amd $AMD_LIBDIR" LIBS="$AMD_LIBS -lm $SAVE_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for amd_order in $AMD_LIBS" >&5 + { $as_echo "$as_me:$LINENO: checking for amd_order in $AMD_LIBS" >&5 $as_echo_n "checking for amd_order in $AMD_LIBS... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -9291,14 +10127,6 @@ $as_echo_n "checking for amd_order in $AMD_LIBS... " >&6; } extern "C" #endif char amd_order (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif int main () { @@ -9307,23 +10135,52 @@ return amd_order (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then psblas_cv_have_amd=yes;pac_amd_lib_ok=yes; else - psblas_cv_have_amd=no;pac_amd_lib_ok=no; AMD_LIBS="" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + psblas_cv_have_amd=no;pac_amd_lib_ok=no; AMD_LIBS="" fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_amd_lib_ok" >&5 + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:$LINENO: result: $pac_amd_lib_ok" >&5 $as_echo "$pac_amd_lib_ok" >&6; } fi if test "x$pac_amd_lib_ok" == "xno" ; then AMD_LIBDIR="-L$psblas_cv_amddir/AMD/Lib -L$psblas_cv_amddir/AMD/Lib" AMD_LIBS="$psblas_cv_amd $AMD_LIBDIR" LIBS="$AMD_LIBS -lm $SAVE_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for amd_order in $AMD_LIBS" >&5 + { $as_echo "$as_me:$LINENO: checking for amd_order in $AMD_LIBS" >&5 $as_echo_n "checking for amd_order in $AMD_LIBS... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -9333,14 +10190,6 @@ $as_echo_n "checking for amd_order in $AMD_LIBS... " >&6; } extern "C" #endif char amd_order (); -#ifdef F77_DUMMY_MAIN - -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } - -#endif int main () { @@ -9349,14 +10198,39 @@ return amd_order (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then psblas_cv_have_amd=yes;pac_amd_lib_ok=yes; else - psblas_cv_have_amd=no;pac_amd_lib_ok=no; AMD_LIBS="" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + psblas_cv_have_amd=no;pac_amd_lib_ok=no; AMD_LIBS="" fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_amd_lib_ok" >&5 + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:$LINENO: result: $pac_amd_lib_ok" >&5 $as_echo "$pac_amd_lib_ok" >&6; } fi fi @@ -9492,13 +10366,13 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; + *) $as_unset $ac_var ;; esac ;; esac done @@ -9506,8 +10380,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" @@ -9529,23 +10403,12 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi + cat confcache >$cache_file else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 + { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi @@ -9595,15 +10458,14 @@ DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= -U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -9611,12 +10473,18 @@ LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } fi if test -n "$EXEEXT"; then am__EXEEXT_TRUE= @@ -9627,14 +10495,13 @@ else fi -: "${CONFIG_STATUS=./config.status}" +: ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. @@ -9644,18 +10511,17 @@ cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 debug=false ac_cs_recheck=false ac_cs_silent=false - SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which @@ -9663,15 +10529,23 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; esac + fi + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + as_nl=' ' export as_nl @@ -9679,13 +10553,7 @@ export as_nl as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else @@ -9696,7 +10564,7 @@ else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; - case $arg in #( + case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; @@ -9719,6 +10587,13 @@ if test "${PATH_SEPARATOR+set}" != set; then } fi +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + # IFS # We need space, tab and new line, in precisely that order. Quoting is @@ -9728,16 +10603,15 @@ fi IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( +case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done IFS=$as_save_IFS ;; @@ -9749,16 +10623,12 @@ if test "x$as_myself" = x; then fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 + { (exit 1); exit 1; } fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' @@ -9770,89 +10640,7 @@ export LC_ALL LANGUAGE=C export LANGUAGE -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - +# Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -9866,12 +10654,8 @@ else as_basename=false fi -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi +# Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ @@ -9891,25 +10675,76 @@ $as_echo X/"$0" | } s/.*/./; q'` -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( +case `echo -n x` in -n*) - case `echo 'xy\c'` in + case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; + *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then @@ -9938,56 +10773,8 @@ fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' + as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false @@ -10006,10 +10793,10 @@ else if test -d "$1"; then test -d "$1/."; else - case $1 in #( + case $1 in -*)set "./$1";; esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' @@ -10024,19 +10811,13 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to +# Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by PSBLAS $as_me 3.0, which was -generated by GNU Autoconf 2.68. Invocation command line was +generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -10064,15 +10845,13 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. +\`$as_me' instantiates files from templates according to the +current configuration. -Usage: $0 [OPTION]... [TAG]... +Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit - --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files @@ -10086,17 +10865,16 @@ $config_files Configuration commands: $config_commands -Report bugs to ." +Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ PSBLAS config.status 3.0 -configured by $0, generated by GNU Autoconf 2.68, - with options \\"\$ac_cs_config\\" +configured by $0, generated by GNU Autoconf 2.63, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2010 Free Software Foundation, Inc. +Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -10114,16 +10892,11 @@ ac_need_defaults=: while test $# != 0 do case $1 in - --*=?*) + --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; *) ac_option=$1 ac_optarg=$2 @@ -10137,17 +10910,14 @@ do ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; esac - as_fn_append CONFIG_FILES " '$ac_optarg'" + CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; @@ -10156,10 +10926,11 @@ do ac_cs_silent=: ;; # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; + -*) { $as_echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; - *) as_fn_append ac_config_targets " $1" + *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac @@ -10213,7 +10984,9 @@ do "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Make.inc") CONFIG_FILES="$CONFIG_FILES Make.inc" ;; - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; esac done @@ -10235,24 +11008,26 @@ fi # after its creation but before its name has been assigned to `$tmp'. $debug || { - tmp= ac_tmp= + tmp= trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 - trap 'as_fn_exit 1' 1 2 13 15 + trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" + test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp +} || +{ + $as_echo "$as_me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. @@ -10260,13 +11035,7 @@ ac_tmp=$tmp if test -n "$CONFIG_FILES"; then -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi +ac_cr=' ' ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' @@ -10274,7 +11043,7 @@ else ac_cs_awk_cr=$ac_cr fi -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF @@ -10283,18 +11052,24 @@ _ACEOF echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi @@ -10302,7 +11077,7 @@ done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h @@ -10316,7 +11091,7 @@ s/'"$ac_delim"'$// t delim :nl h -s/\(.\{148\}\)..*/\1/ +s/\(.\{148\}\).*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p @@ -10330,7 +11105,7 @@ s/.\{148\}// t nl :delim h -s/\(.\{148\}\)..*/\1/ +s/\(.\{148\}\).*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p @@ -10350,7 +11125,7 @@ t delim rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && +cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" @@ -10382,29 +11157,23 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 +$as_echo "$as_me: error: could not setup config files machinery" >&2;} + { (exit 1); exit 1; }; } _ACEOF -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// s/^[^=]*=[ ]*$// }' fi @@ -10422,7 +11191,9 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 +$as_echo "$as_me: error: invalid tag $ac_tag" >&2;} + { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -10441,7 +11212,7 @@ do for ac_f do case $ac_f in - -) ac_f="$ac_tmp/stdin";; + -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. @@ -10450,10 +11221,12 @@ do [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" + ac_file_inputs="$ac_file_inputs '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't @@ -10464,7 +11237,7 @@ do `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 + { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. @@ -10476,8 +11249,10 @@ $as_echo "$as_me: creating $ac_file" >&6;} esac case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + *:-:* | *:-) cat >"$tmp/stdin" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } ;; esac ;; esac @@ -10505,7 +11280,47 @@ $as_echo X"$ac_file" | q } s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in @@ -10562,6 +11377,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= + ac_sed_dataroot=' /datarootdir/ { p @@ -10571,11 +11387,12 @@ ac_sed_dataroot=' /@docdir@/p /@infodir@/p /@localedir@/p -/@mandir@/p' +/@mandir@/p +' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 + { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 @@ -10585,7 +11402,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; + s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF @@ -10613,28 +11430,31 @@ s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} +which seems to be undefined. Please make sure it is defined." >&2;} - rm -f "$ac_tmp/stdin" + rm -f "$tmp/stdin" case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } ;; - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 + :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac @@ -10729,7 +11549,47 @@ $as_echo X"$file" | q } s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p + { as_dir=$dirpart/$fdir + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done @@ -10741,12 +11601,15 @@ $as_echo X"$file" | done # for ac_tag -as_fn_exit 0 +{ (exit 0); exit 0; } _ACEOF +chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } # configure is writing to config.log, and then calls config.status. @@ -10767,17 +11630,17 @@ if test "$no_create" != yes; then exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 + $ac_cs_success || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 + { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi #AC_OUTPUT(Make.inc Makefile) ############################################################################### -{ $as_echo "$as_me:${as_lineno-$LINENO}: +{ $as_echo "$as_me:$LINENO: ${PACKAGE_NAME} ${psblas_cv_version} has been configured as follows: MPF90 : ${MPF90} diff --git a/configure.ac b/configure.ac index ab92e0c9..e7c33825 100755 --- a/configure.ac +++ b/configure.ac @@ -377,7 +377,8 @@ if test "X$FCOPT" == "X" ; then FCOPT="-O3 $FCOPT" elif test "X$psblas_cv_fc" == X"xlf" ; then # XL compiler : consider using -qarch=auto - FCOPT="-O3 -qarch=auto -qfixed -qsuffix=f=f:cpp=F $FCOPT" + FCOPT="-O3 -qarch=auto -qfixed -qsuffix=f=f:cpp=F -qlanglvl=extended $FCOPT" + FCFLAGS="-qhalt=e $FCFLAGS" elif test "X$psblas_cv_fc" == X"ifc" ; then # other compilers .. FCOPT="-O3 $FCOPT" @@ -411,7 +412,7 @@ if test "X$F90COPT" == "X" ; then F90COPT="-O3 $F90COPT" elif test "X$psblas_cv_fc" == X"xlf" ; then # XL compiler : consider using -qarch=auto - F90COPT="-O3 -qarch=auto -qsuffix=f=f90:cpp=F90 $F90COPT" + F90COPT="-O3 -qarch=auto -qsuffix=f=f90:cpp=F90 -qlanglvl=extended $F90COPT" elif test "X$psblas_cv_fc" == X"ifc" ; then # other compilers .. F90COPT="-O3 $F90COPT" @@ -559,6 +560,12 @@ PAC_FORTRAN_HAVE_MOVE_ALLOC( Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6.])] ) +PAC_FORTRAN_TEST_ISO_C_BIND( + [FDEFINES="$psblas_cv_define_prepend-DHAVE_ISO_C_BINDING $FDEFINES"], + [AC_MSG_ERROR([Sorry, cannot build PSBLAS without support for ISO_C_BINDING. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.6.])] +) + # # Optional features # @@ -575,11 +582,6 @@ PAC_FORTRAN_TEST_ISO_FORTRAN_ENV( [FDEFINES="$psblas_cv_define_prepend-DHAVE_ISO_FORTRAN_ENV $FDEFINES"], ) -PAC_FORTRAN_TEST_ISO_C_BIND( - [FDEFINES="$psblas_cv_define_prepend-DHAVE_ISO_C_BINDING $FDEFINES"], -) - - PAC_FORTRAN_TEST_FINAL( [FDEFINES="$psblas_cv_define_prepend-DHAVE_FINAL $FDEFINES"], ) @@ -643,11 +645,11 @@ AR="${AR} -cur" # Right now it is a matter of user's taste when linking custom applications. # But PSBLAS examples could take advantage of these libraries, too. -AC_LANG([C]) PAC_BLAS([], [AC_MSG_ERROR([[Cannot find BLAS library, specify a path using --with-blas=DIR/LIB (for example --with-blas=/usr/path/lib/libcxml.a)]])]) PAC_LAPACK( [FDEFINES="$psblas_cv_define_prepend-DHAVE_LAPACK $FDEFINES"], ) +AC_LANG([C]) ############################################################################### diff --git a/docs/html/footnode.html b/docs/html/footnode.html index f36fa421..5da4f545 100644 --- a/docs/html/footnode.html +++ b/docs/html/footnode.html @@ -18,14 +18,14 @@ original version by: Nikos Drakos, CBLU, University of Leeds - +
-
... +
... explicitly1
In our prototype implementation we provide @@ -63,7 +63,7 @@ sample scatter/gather routines. .
-
... domain... domain2
This is the normal situation when the pattern of the sparse matrix is @@ -104,8 +104,8 @@ sample scatter/gather routines. .
-
... follows3
+
... follows3
The string is case-insensitive
.
diff --git a/docs/html/img100.png b/docs/html/img100.png
index b83a8d66..70e7aed4 100644
Binary files a/docs/html/img100.png and b/docs/html/img100.png differ
diff --git a/docs/html/img101.png b/docs/html/img101.png
index 760ef9fa..56b1f63f 100644
Binary files a/docs/html/img101.png and b/docs/html/img101.png differ
diff --git a/docs/html/img102.png b/docs/html/img102.png
index 41f0d840..713d2d1b 100644
Binary files a/docs/html/img102.png and b/docs/html/img102.png differ
diff --git a/docs/html/img103.png b/docs/html/img103.png
index d46b428c..249016df 100644
Binary files a/docs/html/img103.png and b/docs/html/img103.png differ
diff --git a/docs/html/img104.png b/docs/html/img104.png
index 415260ee..760ef9fa 100644
Binary files a/docs/html/img104.png and b/docs/html/img104.png differ
diff --git a/docs/html/img105.png b/docs/html/img105.png
index f92cb72e..2ee5a90a 100644
Binary files a/docs/html/img105.png and b/docs/html/img105.png differ
diff --git a/docs/html/img106.png b/docs/html/img106.png
index 60d8dfe1..d46b428c 100644
Binary files a/docs/html/img106.png and b/docs/html/img106.png differ
diff --git a/docs/html/img107.png b/docs/html/img107.png
index e7ca4346..415260ee 100644
Binary files a/docs/html/img107.png and b/docs/html/img107.png differ
diff --git a/docs/html/img108.png b/docs/html/img108.png
index 9cb013b5..f92cb72e 100644
Binary files a/docs/html/img108.png and b/docs/html/img108.png differ
diff --git a/docs/html/img109.png b/docs/html/img109.png
index b1ec3094..eb2728e9 100644
Binary files a/docs/html/img109.png and b/docs/html/img109.png differ
diff --git a/docs/html/img110.png b/docs/html/img110.png
index aabc4e45..e7ca4346 100644
Binary files a/docs/html/img110.png and b/docs/html/img110.png differ
diff --git a/docs/html/img111.png b/docs/html/img111.png
index 68806f76..9cb013b5 100644
Binary files a/docs/html/img111.png and b/docs/html/img111.png differ
diff --git a/docs/html/img112.png b/docs/html/img112.png
index 022263d1..b1ec3094 100644
Binary files a/docs/html/img112.png and b/docs/html/img112.png differ
diff --git a/docs/html/img113.png b/docs/html/img113.png
index 74f6441a..aabc4e45 100644
Binary files a/docs/html/img113.png and b/docs/html/img113.png differ
diff --git a/docs/html/img114.png b/docs/html/img114.png
index a72a4306..68806f76 100644
Binary files a/docs/html/img114.png and b/docs/html/img114.png differ
diff --git a/docs/html/img115.png b/docs/html/img115.png
index ac6f8a4a..022263d1 100644
Binary files a/docs/html/img115.png and b/docs/html/img115.png differ
diff --git a/docs/html/img116.png b/docs/html/img116.png
index 545220a9..74f6441a 100644
Binary files a/docs/html/img116.png and b/docs/html/img116.png differ
diff --git a/docs/html/img117.png b/docs/html/img117.png
index 8a3e6727..a72a4306 100644
Binary files a/docs/html/img117.png and b/docs/html/img117.png differ
diff --git a/docs/html/img118.png b/docs/html/img118.png
index daaf838b..ac6f8a4a 100644
Binary files a/docs/html/img118.png and b/docs/html/img118.png differ
diff --git a/docs/html/img119.png b/docs/html/img119.png
index c4cfd664..545220a9 100644
Binary files a/docs/html/img119.png and b/docs/html/img119.png differ
diff --git a/docs/html/img120.png b/docs/html/img120.png
index ccd954d6..8a3e6727 100644
Binary files a/docs/html/img120.png and b/docs/html/img120.png differ
diff --git a/docs/html/img121.png b/docs/html/img121.png
index b0f9c08e..daaf838b 100644
Binary files a/docs/html/img121.png and b/docs/html/img121.png differ
diff --git a/docs/html/img122.png b/docs/html/img122.png
index 14244bb1..c4cfd664 100644
Binary files a/docs/html/img122.png and b/docs/html/img122.png differ
diff --git a/docs/html/img123.png b/docs/html/img123.png
index d677cf77..ccd954d6 100644
Binary files a/docs/html/img123.png and b/docs/html/img123.png differ
diff --git a/docs/html/img124.png b/docs/html/img124.png
index 8fd6456f..b0f9c08e 100644
Binary files a/docs/html/img124.png and b/docs/html/img124.png differ
diff --git a/docs/html/img125.png b/docs/html/img125.png
index 0041e8ad..14244bb1 100644
Binary files a/docs/html/img125.png and b/docs/html/img125.png differ
diff --git a/docs/html/img126.png b/docs/html/img126.png
index 56140614..7e258ea2 100644
Binary files a/docs/html/img126.png and b/docs/html/img126.png differ
diff --git a/docs/html/img127.png b/docs/html/img127.png
index 74ab3af1..8fd6456f 100644
Binary files a/docs/html/img127.png and b/docs/html/img127.png differ
diff --git a/docs/html/img128.png b/docs/html/img128.png
index b1f65ab8..0041e8ad 100644
Binary files a/docs/html/img128.png and b/docs/html/img128.png differ
diff --git a/docs/html/img129.png b/docs/html/img129.png
index 9730854e..56140614 100644
Binary files a/docs/html/img129.png and b/docs/html/img129.png differ
diff --git a/docs/html/img13.png b/docs/html/img13.png
index 983041b7..0b64d387 100644
Binary files a/docs/html/img13.png and b/docs/html/img13.png differ
diff --git a/docs/html/img130.png b/docs/html/img130.png
index 8bd13e4d..50ea309c 100644
Binary files a/docs/html/img130.png and b/docs/html/img130.png differ
diff --git a/docs/html/img131.png b/docs/html/img131.png
index e01e2da8..b1f65ab8 100644
Binary files a/docs/html/img131.png and b/docs/html/img131.png differ
diff --git a/docs/html/img132.png b/docs/html/img132.png
index 0401ba94..9730854e 100644
Binary files a/docs/html/img132.png and b/docs/html/img132.png differ
diff --git a/docs/html/img133.png b/docs/html/img133.png
index bfbe8eb2..fbe8b458 100644
Binary files a/docs/html/img133.png and b/docs/html/img133.png differ
diff --git a/docs/html/img134.png b/docs/html/img134.png
index c233c5ac..e01e2da8 100644
Binary files a/docs/html/img134.png and b/docs/html/img134.png differ
diff --git a/docs/html/img135.png b/docs/html/img135.png
index e69de29b..ffb090bb 100644
Binary files a/docs/html/img135.png and b/docs/html/img135.png differ
diff --git a/docs/html/img136.png b/docs/html/img136.png
index e69de29b..bfbe8eb2 100644
Binary files a/docs/html/img136.png and b/docs/html/img136.png differ
diff --git a/docs/html/img137.png b/docs/html/img137.png
index ba121f2d..aaf48bd6 100644
Binary files a/docs/html/img137.png and b/docs/html/img137.png differ
diff --git a/docs/html/img138.png b/docs/html/img138.png
index 1c1c80ef..e69de29b 100644
Binary files a/docs/html/img138.png and b/docs/html/img138.png differ
diff --git a/docs/html/img139.png b/docs/html/img139.png
index 82df5356..eee0f971 100644
Binary files a/docs/html/img139.png and b/docs/html/img139.png differ
diff --git a/docs/html/img140.png b/docs/html/img140.png
index 16ae3958..e69de29b 100644
Binary files a/docs/html/img140.png and b/docs/html/img140.png differ
diff --git a/docs/html/img141.png b/docs/html/img141.png
index ff9cded0..43dfe169 100644
Binary files a/docs/html/img141.png and b/docs/html/img141.png differ
diff --git a/docs/html/img142.png b/docs/html/img142.png
index 66deea3e..e1180aca 100644
Binary files a/docs/html/img142.png and b/docs/html/img142.png differ
diff --git a/docs/html/img143.png b/docs/html/img143.png
index 46efae0d..9eaf8c61 100644
Binary files a/docs/html/img143.png and b/docs/html/img143.png differ
diff --git a/docs/html/img144.png b/docs/html/img144.png
index 263f649e..a80d3c32 100644
Binary files a/docs/html/img144.png and b/docs/html/img144.png differ
diff --git a/docs/html/img145.png b/docs/html/img145.png
index b9418ca1..0cc86fe7 100644
Binary files a/docs/html/img145.png and b/docs/html/img145.png differ
diff --git a/docs/html/img146.png b/docs/html/img146.png
index e486de17..554b59b2 100644
Binary files a/docs/html/img146.png and b/docs/html/img146.png differ
diff --git a/docs/html/img147.png b/docs/html/img147.png
index 6ca934d1..a2e86fc0 100644
Binary files a/docs/html/img147.png and b/docs/html/img147.png differ
diff --git a/docs/html/img148.png b/docs/html/img148.png
index 2a1a4eba..ee956842 100644
Binary files a/docs/html/img148.png and b/docs/html/img148.png differ
diff --git a/docs/html/img149.png b/docs/html/img149.png
index 8c593c1a..75d19edb 100644
Binary files a/docs/html/img149.png and b/docs/html/img149.png differ
diff --git a/docs/html/img15.png b/docs/html/img15.png
index 8034e079..c2f46667 100644
Binary files a/docs/html/img15.png and b/docs/html/img15.png differ
diff --git a/docs/html/img16.png b/docs/html/img16.png
index b7b0b140..55c3442a 100644
Binary files a/docs/html/img16.png and b/docs/html/img16.png differ
diff --git a/docs/html/img19.png b/docs/html/img19.png
index e69de29b..cf98cfe0 100644
Binary files a/docs/html/img19.png and b/docs/html/img19.png differ
diff --git a/docs/html/img20.png b/docs/html/img20.png
index 91577fdc..09de5cc5 100644
Binary files a/docs/html/img20.png and b/docs/html/img20.png differ
diff --git a/docs/html/img21.png b/docs/html/img21.png
index e69de29b..7dac43e2 100644
Binary files a/docs/html/img21.png and b/docs/html/img21.png differ
diff --git a/docs/html/img22.png b/docs/html/img22.png
index e69de29b..9430fcbe 100644
Binary files a/docs/html/img22.png and b/docs/html/img22.png differ
diff --git a/docs/html/img23.png b/docs/html/img23.png
index e69de29b..aa48fcec 100644
Binary files a/docs/html/img23.png and b/docs/html/img23.png differ
diff --git a/docs/html/img24.png b/docs/html/img24.png
index 2465f437..8b031349 100644
Binary files a/docs/html/img24.png and b/docs/html/img24.png differ
diff --git a/docs/html/img25.png b/docs/html/img25.png
index 551925d4..aa4a804d 100644
Binary files a/docs/html/img25.png and b/docs/html/img25.png differ
diff --git a/docs/html/img26.png b/docs/html/img26.png
index 37cf3822..1a343166 100644
Binary files a/docs/html/img26.png and b/docs/html/img26.png differ
diff --git a/docs/html/img27.png b/docs/html/img27.png
index b8c723d5..a0f61030 100644
Binary files a/docs/html/img27.png and b/docs/html/img27.png differ
diff --git a/docs/html/img28.png b/docs/html/img28.png
index fd5e56f4..a758b501 100644
Binary files a/docs/html/img28.png and b/docs/html/img28.png differ
diff --git a/docs/html/img29.png b/docs/html/img29.png
index d427eabb..5ed5aee4 100644
Binary files a/docs/html/img29.png and b/docs/html/img29.png differ
diff --git a/docs/html/img30.png b/docs/html/img30.png
index dc269633..71286e30 100644
Binary files a/docs/html/img30.png and b/docs/html/img30.png differ
diff --git a/docs/html/img31.png b/docs/html/img31.png
index 6a55042c..4ae3794e 100644
Binary files a/docs/html/img31.png and b/docs/html/img31.png differ
diff --git a/docs/html/img32.png b/docs/html/img32.png
index def37aa1..c00b10d4 100644
Binary files a/docs/html/img32.png and b/docs/html/img32.png differ
diff --git a/docs/html/img33.png b/docs/html/img33.png
index 0cafba56..fc908012 100644
Binary files a/docs/html/img33.png and b/docs/html/img33.png differ
diff --git a/docs/html/img34.png b/docs/html/img34.png
index e341cc95..227f4a45 100644
Binary files a/docs/html/img34.png and b/docs/html/img34.png differ
diff --git a/docs/html/img35.png b/docs/html/img35.png
index e1c0218c..92e6525b 100644
Binary files a/docs/html/img35.png and b/docs/html/img35.png differ
diff --git a/docs/html/img36.png b/docs/html/img36.png
index 9528520c..83b6d032 100644
Binary files a/docs/html/img36.png and b/docs/html/img36.png differ
diff --git a/docs/html/img37.png b/docs/html/img37.png
index d18c1037..9ea3351a 100644
Binary files a/docs/html/img37.png and b/docs/html/img37.png differ
diff --git a/docs/html/img38.png b/docs/html/img38.png
index 55f487fb..74259acf 100644
Binary files a/docs/html/img38.png and b/docs/html/img38.png differ
diff --git a/docs/html/img39.png b/docs/html/img39.png
index 8ac8e75b..daed562b 100644
Binary files a/docs/html/img39.png and b/docs/html/img39.png differ
diff --git a/docs/html/img40.png b/docs/html/img40.png
index 0b9bf85c..50761467 100644
Binary files a/docs/html/img40.png and b/docs/html/img40.png differ
diff --git a/docs/html/img41.png b/docs/html/img41.png
index 894bf6e9..a6a250ad 100644
Binary files a/docs/html/img41.png and b/docs/html/img41.png differ
diff --git a/docs/html/img42.png b/docs/html/img42.png
index 68e3d16d..e2c33670 100644
Binary files a/docs/html/img42.png and b/docs/html/img42.png differ
diff --git a/docs/html/img43.png b/docs/html/img43.png
index 74259acf..7799cc0d 100644
Binary files a/docs/html/img43.png and b/docs/html/img43.png differ
diff --git a/docs/html/img44.png b/docs/html/img44.png
index daed562b..10c5aa6e 100644
Binary files a/docs/html/img44.png and b/docs/html/img44.png differ
diff --git a/docs/html/img45.png b/docs/html/img45.png
index d91d32f1..c42c94fc 100644
Binary files a/docs/html/img45.png and b/docs/html/img45.png differ
diff --git a/docs/html/img46.png b/docs/html/img46.png
index 3c745bda..75871261 100644
Binary files a/docs/html/img46.png and b/docs/html/img46.png differ
diff --git a/docs/html/img47.png b/docs/html/img47.png
index 6cf13b18..4759178c 100644
Binary files a/docs/html/img47.png and b/docs/html/img47.png differ
diff --git a/docs/html/img48.png b/docs/html/img48.png
index 271cb392..5b8bdacb 100644
Binary files a/docs/html/img48.png and b/docs/html/img48.png differ
diff --git a/docs/html/img49.png b/docs/html/img49.png
index fb4b7995..81b66db4 100644
Binary files a/docs/html/img49.png and b/docs/html/img49.png differ
diff --git a/docs/html/img50.png b/docs/html/img50.png
index 1267e6b3..94229f07 100644
Binary files a/docs/html/img50.png and b/docs/html/img50.png differ
diff --git a/docs/html/img51.png b/docs/html/img51.png
index 4759178c..f759dd46 100644
Binary files a/docs/html/img51.png and b/docs/html/img51.png differ
diff --git a/docs/html/img52.png b/docs/html/img52.png
index 5b8bdacb..6b825d66 100644
Binary files a/docs/html/img52.png and b/docs/html/img52.png differ
diff --git a/docs/html/img53.png b/docs/html/img53.png
index 6ea93c9e..6cdf6149 100644
Binary files a/docs/html/img53.png and b/docs/html/img53.png differ
diff --git a/docs/html/img54.png b/docs/html/img54.png
index 7530b970..f73e47fa 100644
Binary files a/docs/html/img54.png and b/docs/html/img54.png differ
diff --git a/docs/html/img55.png b/docs/html/img55.png
index 7bbf7070..1ec88bf6 100644
Binary files a/docs/html/img55.png and b/docs/html/img55.png differ
diff --git a/docs/html/img56.png b/docs/html/img56.png
index b9c59a14..8e1ae26a 100644
Binary files a/docs/html/img56.png and b/docs/html/img56.png differ
diff --git a/docs/html/img57.png b/docs/html/img57.png
index 4e8a4e16..6ce9093e 100644
Binary files a/docs/html/img57.png and b/docs/html/img57.png differ
diff --git a/docs/html/img58.png b/docs/html/img58.png
index 4b23da2f..be77fbe2 100644
Binary files a/docs/html/img58.png and b/docs/html/img58.png differ
diff --git a/docs/html/img59.png b/docs/html/img59.png
index 1ec88bf6..b36bd89c 100644
Binary files a/docs/html/img59.png and b/docs/html/img59.png differ
diff --git a/docs/html/img60.png b/docs/html/img60.png
index eccae9fa..e85b77f0 100644
Binary files a/docs/html/img60.png and b/docs/html/img60.png differ
diff --git a/docs/html/img61.png b/docs/html/img61.png
index 6ce9093e..4f8dbfd9 100644
Binary files a/docs/html/img61.png and b/docs/html/img61.png differ
diff --git a/docs/html/img62.png b/docs/html/img62.png
index 7cb080ad..11b3c242 100644
Binary files a/docs/html/img62.png and b/docs/html/img62.png differ
diff --git a/docs/html/img63.png b/docs/html/img63.png
index 9b5e36ea..30dbd771 100644
Binary files a/docs/html/img63.png and b/docs/html/img63.png differ
diff --git a/docs/html/img64.png b/docs/html/img64.png
index 05ac5435..2a8221ec 100644
Binary files a/docs/html/img64.png and b/docs/html/img64.png differ
diff --git a/docs/html/img65.png b/docs/html/img65.png
index 8e796960..5b349332 100644
Binary files a/docs/html/img65.png and b/docs/html/img65.png differ
diff --git a/docs/html/img66.png b/docs/html/img66.png
index 30dbd771..2f029ed7 100644
Binary files a/docs/html/img66.png and b/docs/html/img66.png differ
diff --git a/docs/html/img67.png b/docs/html/img67.png
index 11b3c242..e617c4da 100644
Binary files a/docs/html/img67.png and b/docs/html/img67.png differ
diff --git a/docs/html/img68.png b/docs/html/img68.png
index eeb286d2..19eb2899 100644
Binary files a/docs/html/img68.png and b/docs/html/img68.png differ
diff --git a/docs/html/img69.png b/docs/html/img69.png
index 0ed77815..2111312c 100644
Binary files a/docs/html/img69.png and b/docs/html/img69.png differ
diff --git a/docs/html/img70.png b/docs/html/img70.png
index c095039e..42db8764 100644
Binary files a/docs/html/img70.png and b/docs/html/img70.png differ
diff --git a/docs/html/img71.png b/docs/html/img71.png
index 9adf573d..37237747 100644
Binary files a/docs/html/img71.png and b/docs/html/img71.png differ
diff --git a/docs/html/img72.png b/docs/html/img72.png
index 9d578b2e..337d43ee 100644
Binary files a/docs/html/img72.png and b/docs/html/img72.png differ
diff --git a/docs/html/img73.png b/docs/html/img73.png
index 5a54eaaa..af302e8b 100644
Binary files a/docs/html/img73.png and b/docs/html/img73.png differ
diff --git a/docs/html/img74.png b/docs/html/img74.png
index 7cdcc02e..36891148 100644
Binary files a/docs/html/img74.png and b/docs/html/img74.png differ
diff --git a/docs/html/img75.png b/docs/html/img75.png
index e7dece36..ffe4cf52 100644
Binary files a/docs/html/img75.png and b/docs/html/img75.png differ
diff --git a/docs/html/img76.png b/docs/html/img76.png
index 79d30ef8..7dee1cf4 100644
Binary files a/docs/html/img76.png and b/docs/html/img76.png differ
diff --git a/docs/html/img77.png b/docs/html/img77.png
index 64928229..13f0a821 100644
Binary files a/docs/html/img77.png and b/docs/html/img77.png differ
diff --git a/docs/html/img78.png b/docs/html/img78.png
index e75b97e8..0ecdd7b6 100644
Binary files a/docs/html/img78.png and b/docs/html/img78.png differ
diff --git a/docs/html/img79.png b/docs/html/img79.png
index c064368c..e7a86242 100644
Binary files a/docs/html/img79.png and b/docs/html/img79.png differ
diff --git a/docs/html/img8.png b/docs/html/img8.png
index 348bf5fe..6e67241d 100644
Binary files a/docs/html/img8.png and b/docs/html/img8.png differ
diff --git a/docs/html/img80.png b/docs/html/img80.png
index 1bff0b28..4b39f077 100644
Binary files a/docs/html/img80.png and b/docs/html/img80.png differ
diff --git a/docs/html/img81.png b/docs/html/img81.png
index a2008ff2..72d4c328 100644
Binary files a/docs/html/img81.png and b/docs/html/img81.png differ
diff --git a/docs/html/img82.png b/docs/html/img82.png
index 8bcdb184..97c77ca2 100644
Binary files a/docs/html/img82.png and b/docs/html/img82.png differ
diff --git a/docs/html/img83.png b/docs/html/img83.png
index f3e40f22..f89a8e47 100644
Binary files a/docs/html/img83.png and b/docs/html/img83.png differ
diff --git a/docs/html/img84.png b/docs/html/img84.png
index fa390ab4..0802142a 100644
Binary files a/docs/html/img84.png and b/docs/html/img84.png differ
diff --git a/docs/html/img85.png b/docs/html/img85.png
index 6a7e2aff..d4991b1d 100644
Binary files a/docs/html/img85.png and b/docs/html/img85.png differ
diff --git a/docs/html/img86.png b/docs/html/img86.png
index 59a7b1b8..0acc0b6e 100644
Binary files a/docs/html/img86.png and b/docs/html/img86.png differ
diff --git a/docs/html/img87.png b/docs/html/img87.png
index a0e52b5d..7ae3977f 100644
Binary files a/docs/html/img87.png and b/docs/html/img87.png differ
diff --git a/docs/html/img88.png b/docs/html/img88.png
index f1cc239b..4a264749 100644
Binary files a/docs/html/img88.png and b/docs/html/img88.png differ
diff --git a/docs/html/img89.png b/docs/html/img89.png
index 9507699b..5a5b952c 100644
Binary files a/docs/html/img89.png and b/docs/html/img89.png differ
diff --git a/docs/html/img90.png b/docs/html/img90.png
index d7c8fbfc..c79235f5 100644
Binary files a/docs/html/img90.png and b/docs/html/img90.png differ
diff --git a/docs/html/img91.png b/docs/html/img91.png
index 6ba20bc6..ac788493 100644
Binary files a/docs/html/img91.png and b/docs/html/img91.png differ
diff --git a/docs/html/img92.png b/docs/html/img92.png
index 22d4ec91..89460220 100644
Binary files a/docs/html/img92.png and b/docs/html/img92.png differ
diff --git a/docs/html/img93.png b/docs/html/img93.png
index 416d5b4e..781edc19 100644
Binary files a/docs/html/img93.png and b/docs/html/img93.png differ
diff --git a/docs/html/img94.png b/docs/html/img94.png
index 45bc332b..e4114dd3 100644
Binary files a/docs/html/img94.png and b/docs/html/img94.png differ
diff --git a/docs/html/img95.png b/docs/html/img95.png
index 93333dc8..b0538665 100644
Binary files a/docs/html/img95.png and b/docs/html/img95.png differ
diff --git a/docs/html/img96.png b/docs/html/img96.png
index 94b86772..8b1704cc 100644
Binary files a/docs/html/img96.png and b/docs/html/img96.png differ
diff --git a/docs/html/img97.png b/docs/html/img97.png
index f6a5345a..ae0215ed 100644
Binary files a/docs/html/img97.png and b/docs/html/img97.png differ
diff --git a/docs/html/img98.png b/docs/html/img98.png
index d7b4aeca..2383f6a9 100644
Binary files a/docs/html/img98.png and b/docs/html/img98.png differ
diff --git a/docs/html/img99.png b/docs/html/img99.png
index 2f53c222..d7b4aeca 100644
Binary files a/docs/html/img99.png and b/docs/html/img99.png differ
diff --git a/docs/html/index.html b/docs/html/index.html
index adcb8b18..5898a6c1 100644
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -23,18 +23,18 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 
 
 
-
 next 
 up 
 previous 
-
 contents  
 
- Next: Next: Contents -   Contents

@@ -56,319 +56,323 @@ University of Rome ``Tor Vergata'', Italy


-Software version: 3.0-beta +Software version: 3.0
-December 15th, 2011 +May 25, 2012.

-
  • Preconditioner data structure + +
    +
  • Computational routines -
    + HREF="node48.html">psb_spnrmi -- Infinity Norm of Sparse Matrix
  • Communication routines - +
  • psb_ovrl -- Overlap Update + HREF="node51.html">Communication routines + -
    + HREF="node53.html">psb_ovrl -- Overlap Update
  • Data management routines - +
  • psb_cdins -- Communication descriptor insert routine + HREF="node56.html">Data management routines + -
    + HREF="node81.html">psb_sp_getrow -- Extract row(s) from a sparse matrix
  • Parallel environment routines - +
  • psb_info -- Return information about PSBLAS parallel - environment + HREF="node84.html">Parallel environment routines +
    -
  • Error handling +
  • Error handling
    -
  • Utilities +
  • Utilities
    -
  • Preconditioner routines -

    diff --git a/docs/html/node1.html b/docs/html/node1.html index 501f2382..e3066b0f 100644 --- a/docs/html/node1.html +++ b/docs/html/node1.html @@ -26,21 +26,21 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous
    - Next: Next: Introduction - Up: Up: userhtml - Previous: Previous: userhtml

    @@ -53,54 +53,52 @@ Contents
      -
    • Introduction -
    • General overview
      -
    • Data Structures and Classes -

      diff --git a/docs/html/node10.html b/docs/html/node10.html index fe549154..bd088f6e 100644 --- a/docs/html/node10.html +++ b/docs/html/node10.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Methods - +Descriptor data structure + @@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -26,35 +26,265 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
      - Next: get_local_rows Get - Up: Descriptor data structure - Previous: Descriptor data structure -   Next: Methods + Up: Data Structures and Classes + Previous: Data Structures and Classes +   Contents

      -

      -Methods -

      +

      + +
      +Descriptor data structure +

      +All the general matrix informations and elements to be +exchanged among processes are stored within a data structure of the +type descdatapsb_desc_type. +Every structure of this type is associated with a discretization +pattern and enables data communications and other operations that are +necessary for implementing the various algorithms of interest to us. + +

      +The data structure itself psb_desc_type can be treated as an +opaque object handled via the tools routines of +Sec. 6 or the query routines detailed below; +nevertheless we include here a description for the curious +reader. + +

      +First we describe the psb_indx_map type. This is a data +structure that keeps track of a certain number of basic issues such +as: + +

        +
      • The value of the communication/MPI context; +
      • +
      • The number of indices in the index space, i.e. global number of + rows and columns of a sparse matrix; +
      • +
      • The local set of indices, including: + +
          +
        • The number of local indices (and local rows); +
        • +
        • The number of halo indices (and therefore local columns); +
        • +
        • The global indices corresponding to the local ones. +
        • +
        +
      • +
      +There are many different schemes for storing these data; therefore +there are a number of types extending the base one, and the descriptor +structure holds a polymorphic object whose dynamic type can be any of +the extended types. +The methods associated with this data type answer the following +queries: + +
        +
      • For a given set of local indices, find the corresponding indices + in the global numbering; +
      • +
      • For a given set of global indices, find the corresponding + indices in the local numbering, if any, or return an invalid +
      • +
      • Add a global index to the set of halo indices; +
      • +
      • Find the process owner of each member of a set of global + indices. +
      • +
      +All methods but the last are purely local; the last method potentially +requires communication among processes, and thus is a synchronous +method. The choice of a specific dynamic type for the index map is +made at the time the descriptor is initially allocated, according to +the mode of initialization (see also 6). + +

      +The descriptor contents are as follows: +

      +
      indxmap
      +
      A polymorphic variable of a type that is any + extension of the indx_map type described above. +
      +
      halo_index
      +
      A list of the halo and boundary elements for +the current process to be exchanged with other processes; for each +processes with which it is necessary to communicate: + +
        +
      1. Process identifier; +
      2. +
      3. Number of points to be received; +
      4. +
      5. Indices of points to be received; +
      6. +
      7. Number of points to be sent; +
      8. +
      9. Indices of points to be sent; +
      10. +
      +The list may contain an arbitrary number of groups; its end is marked +by a -1. +
      +Specified as: an allocatable integer array of rank one. +
      +
      ext_index
      +
      A list of element indices to be exchanged to + implement the mapping between a base descriptor and a descriptor + with overlap. +
      +
      ovrlap_index
      +
      A list of the overlap elements for the +current process, organized in groups like the previous vector: + +
        +
      1. Process identifier; +
      2. +
      3. Number of points to be received; +
      4. +
      5. Indices of points to be received; +
      6. +
      7. Number of points to be sent; +
      8. +
      9. Indices of points to be sent; +
      10. +
      +The list may contain an arbitrary number of groups; its end is marked +by a -1. +
      +Specified as: an allocatable integer array of rank one. +
      +
      ovr_mst_idx
      +
      A list to retrieve the value of each + overlap element from the respective master process. +
      +Specified as: an allocatable integer array of rank one. +
      +
      ovrlap_elem
      +
      For all overlap points belonging to th +ecurrent process: + +
        +
      1. Overlap point index; +
      2. +
      3. Number of processes sharing that overlap points; +
      4. +
      5. Index of a ``master'' process: +
      6. +
      +Specified as: an allocatable integer array of rank two. +
      +
      bnd_elem
      +
      A list of all boundary points, i.e. points + that have a connection with other processes. +
      +
      +The Fortran 2003 declaration for psb_desc_type structures is +as follows: + +
      + + + +
      Figure 3: +The PSBLAS defined data type that + contains the communication descriptor.
      +
      + +
      +
       
      +type psb_desc_type 
      +    class(psb_indx_map), allocatable :: indxmap
      +    integer, allocatable  :: halo_index(:)
      +    integer, allocatable  :: ext_index(:)
      +    integer, allocatable  :: ovrlap_index(:)
      +    integer, allocatable  :: ovrlap_elem(:,:)
      +    integer, allocatable  :: ovr_mst_idx(:)
      +    integer, allocatable  :: bnd_elem(:)
      +end type psb_desc_type
      +
      +
      +
      +
      + +

      +A communication descriptor associated with a sparse matrix has a +state, which can take the following values: +

      +
      Build:
      +
      State entered after the first allocation, and before the + first assembly; in this state it is possible to add communication + requirements among different processes. +
      +
      Assembled:
      +
      State entered after the assembly; computations using + the associated sparse matrix, such as matrix-vector products, are + only possible in this state. +
      +
      + +



      + +Subsections + + + +
      + + +next + +up + +previous + +contents +
      + Next: Methods + Up: Data Structures and Classes + Previous: Data Structures and Classes +   Contents + diff --git a/docs/html/node100.html b/docs/html/node100.html index 6a5d59a6..9a2faa60 100644 --- a/docs/html/node100.html +++ b/docs/html/node100.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Error handling - +psb_rcv -- Receive data + @@ -18,174 +18,172 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
      - Next: psb_errpush Pushes - Up: userhtml - Previous: psb_rcv Receive -   Next: Error handling + Up: Parallel environment routines + Previous: psb_snd Send +   Contents

      -

      -Error handling -

      +

      +psb_rcv -- Receive data +

      -The PSBLAS library error handling policy has been completely rewritten -in version 2.0. The idea behind the design of this new error handling -strategy is to keep error messages on a stack allowing the user to -trace back up to the point where the first error message has been -generated. Every routine in the PSBLAS-2.0 library has, as last -non-optional argument, an integer info variable; whenever, -inside the routine, an error is detected, this variable is set to a -value corresponding to a specific error code. Then this error code is -also pushed on the error stack and then either control is returned to -the caller routine or the execution is aborted, depending on the users -choice. At the time when the execution is aborted, an error message is -printed on standard output with a level of verbosity than can be -chosen by the user. If the execution is not aborted, then, the caller -routine checks the value returned in the info variable and, if -not zero, an error condition is raised. This process continues on all the -levels of nested calls until the level where the user decides to abort -the program execution. +

      +call psb_rcv(icontxt, dat, src, m)
      +

      -Figure 9 shows the layout of a generic psb_foo -routine with respect to the PSBLAS-2.0 error handling policy. It is -possible to see how, whenever an error condition is detected, the -info variable is set to the corresponding error code which is, -then, pushed on top of the stack by means of the -psb_errpush. An error condition may be directly detected inside -a routine or indirectly checking the error code returned returned by a -called routine. Whenever an error is encountered, after it has been -pushed on stack, the program execution skips to a point where the -error condition is handled; the error condition is handled either by -returning control to the caller routine or by calling the -psb\_error routine which prints the content of the error stack -and aborts the program execution, according to the choice made by the -user with psb_set_erraction. The default is to print the error -and terminate the program, but the user may choose to handle the error -explicitly. - -

      - -

      - - - -
      Figure 9: -The layout of a generic psb_foo - routine with respect to PSBLAS-2.0 error handling policy.
      -
      - -
      - \fbox{\TheSbox} -
      -
      + WIDTH="146" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" + SRC="img136.png" + ALT="$0<= src <= np-1$">. +
  • +
    m
    +
    Number of rows. +
    +Scope: global. +
    +Type: Optional. +
    +Intent: in. +
    +Specified as: an integer value +$0<= m <= size(dat,1)$. +
    +When $dat$ is a rank 2 array, specifies the number of rows to be sent +independently of the leading dimension $size(dat,1)$; must have the +same value on sending and receiving processes. +
    +

    -Figure 10 reports a sample error message generated by -the PSBLAS-2.0 library. This error has been generated by the fact that -the user has chosen the invalid ``FOO'' storage format to represent -the sparse matrix. From this error message it is possible to see that -the error has been detected inside the psb_cest subroutine -called by psb_spasb ... by process 0 (i.e. the root process). +

    +
    On Return
    +
    +
    +
    dat
    +
    The data to be received. +
    +Scope: local. +
    +Type: required. +
    +Intent: inout. +
    +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. Type, kind and rank must agree on sender and receiver process; if $m$ is +not specified, size must agree as well. +
    +

    +Notes -

    - - - -
    Figure 10: -A sample PSBLAS-2.0 error - message. Process 0 detected an error condition inside the psb_cest subroutine
    -
    - -
    - -\fbox{\TheSbox} -
    -
    +
      +
    1. This subroutine implies a synchronization, but only between the + calling process and the source process $src$. +
    2. +

    -


    - -Subsections - - -
    - next - + up - previous - contents
    - Next: psb_errpush Pushes - Up: userhtml - Previous: psb_rcv Receive -   Next: Error handling + Up: Parallel environment routines + Previous: psb_snd Send +   Contents diff --git a/docs/html/node101.html b/docs/html/node101.html index f5df1b42..5653dc1b 100644 --- a/docs/html/node101.html +++ b/docs/html/node101.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_errpush -- Pushes an error code onto the error stack - +Error handling + @@ -18,101 +18,176 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: psb_error Prints - Up: Error handling - Previous: Error handling -   Next: psb_errpush Pushes + Up: userhtml + Previous: psb_rcv Receive +   Contents

    -

    -psb_errpush -- Pushes an error code onto the error - stack -

    +

    +Error handling +

    -

    -call psb_errpush(err_c, r_name, i_err, a_err)
    -
    +The PSBLAS library error handling policy has been completely rewritten +in version 2.0. The idea behind the design of this new error handling +strategy is to keep error messages on a stack allowing the user to +trace back up to the point where the first error message has been +generated. Every routine in the PSBLAS-2.0 library has, as last +non-optional argument, an integer info variable; whenever, +inside the routine, an error is detected, this variable is set to a +value corresponding to a specific error code. Then this error code is +also pushed on the error stack and then either control is returned to +the caller routine or the execution is aborted, depending on the users +choice. At the time when the execution is aborted, an error message is +printed on standard output with a level of verbosity than can be +chosen by the user. If the execution is not aborted, then, the caller +routine checks the value returned in the info variable and, if +not zero, an error condition is raised. This process continues on all the +levels of nested calls until the level where the user decides to abort +the program execution. + +

    +Figure 9 shows the layout of a generic psb_foo +routine with respect to the PSBLAS-2.0 error handling policy. It is +possible to see how, whenever an error condition is detected, the +info variable is set to the corresponding error code which is, +then, pushed on top of the stack by means of the +psb_errpush. An error condition may be directly detected inside +a routine or indirectly checking the error code returned returned by a +called routine. Whenever an error is encountered, after it has been +pushed on stack, the program execution skips to a point where the +error condition is handled; the error condition is handled either by +returning control to the caller routine or by calling the +psb\_error routine which prints the content of the error stack +and aborts the program execution, according to the choice made by the +user with psb_set_erraction. The default is to print the error +and terminate the program, but the user may choose to handle the error +explicitly.

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    err_c
    -
    the error code -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: an integer. -
    -
    r_name
    -
    the soutine where the error has been caught. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a string. -
    -
    i_err
    -
    addional info for error code -
    -Scope: local -
    -Type: optional -
    -Specified as: an integer array -
    -
    a_err
    -
    addional info for error code -
    -Scope: local -
    -Type: optional -
    -Specified as: a string. -
    -
    + +
    + + + +
    Figure 9: +The layout of a generic psb_foo + routine with respect to PSBLAS-2.0 error handling policy.
    +
    + +
    + +\fbox{\TheSbox} +
    +
    + +

    +Figure 10 reports a sample error message generated by +the PSBLAS-2.0 library. This error has been generated by the fact that +the user has chosen the invalid ``FOO'' storage format to represent +the sparse matrix. From this error message it is possible to see that +the error has been detected inside the psb_cest subroutine +called by psb_spasb ... by process 0 (i.e. the root process). + +

    + +

    + + + +
    Figure 10: +A sample PSBLAS-2.0 error + message. Process 0 detected an error condition inside the psb_cest subroutine
    +
    + +
    + +\fbox{\TheSbox} +
    +



    + +Subsections + + + +
    + + +next + +up + +previous + +contents +
    + Next: psb_errpush Pushes + Up: userhtml + Previous: psb_rcv Receive +   Contents + diff --git a/docs/html/node102.html b/docs/html/node102.html index aea3a015..8dbfc463 100644 --- a/docs/html/node102.html +++ b/docs/html/node102.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_error -- Prints the error stack content and aborts execution - +psb_errpush -- Pushes an error code onto the error stack + @@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_set_errverbosity Sets - Up: Error handling - Previous: psb_errpush Pushes -   Next: psb_error Prints + Up: Error handling + Previous: Error handling +   Contents

    -

    -psb_error -- Prints the error stack content and aborts - execution +

    +psb_errpush -- Pushes an error code onto the error + stack

    -call psb_error(icontxt)
    +call psb_errpush(err_c, r_name, i_err, a_err)
     

    @@ -69,17 +69,46 @@ call psb_error(icontxt)

    On Entry
    -
    icontxt
    -
    the communication context. +
    err_c
    +
    the error code
    -Scope: global +Scope: local
    -Type: optional +Type: required
    Intent: in.
    Specified as: an integer.
    +
    r_name
    +
    the soutine where the error has been caught. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a string. +
    +
    i_err
    +
    addional info for error code +
    +Scope: local +
    +Type: optional +
    +Specified as: an integer array +
    +
    a_err
    +
    addional info for error code +
    +Scope: local +
    +Type: optional +
    +Specified as: a string. +

    diff --git a/docs/html/node103.html b/docs/html/node103.html index 1203e4ff..71c492a9 100644 --- a/docs/html/node103.html +++ b/docs/html/node103.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_set_errverbosity -- Sets the verbosity of error messages. - +psb_error -- Prints the error stack content and aborts execution + @@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_set_erraction Set - Up: Error handling - Previous: psb_error Prints -   Next: psb_set_errverbosity Sets + Up: Error handling + Previous: psb_errpush Pushes +   Contents

    -

    -psb_set_errverbosity -- Sets the verbosity of error - messages. +

    +psb_error -- Prints the error stack content and aborts + execution

    -call psb_set_errverbosity(v)
    +call psb_error(icontxt)
     

    @@ -69,12 +69,12 @@ call psb_set_errverbosity(v)

    On Entry
    -
    v
    -
    the verbosity level +
    icontxt
    +
    the communication context.
    -Scope: global +Scope: global
    -Type: required +Type: optional
    Intent: in.
    diff --git a/docs/html/node104.html b/docs/html/node104.html index 80493d57..e74622c6 100644 --- a/docs/html/node104.html +++ b/docs/html/node104.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_set_erraction -- Set the type of action to be taken upon error condition. - +psb_set_errverbosity -- Sets the verbosity of error messages. + @@ -18,46 +18,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Utilities - Up: Error handling - Previous: psb_set_errverbosity Sets -   Next: psb_set_erraction Set + Up: Error handling + Previous: psb_error Prints +   Contents

    -

    -psb_set_erraction -- Set the type of action to be - taken upon error condition. +

    +psb_set_errverbosity -- Sets the verbosity of error + messages.

    -call psb_set_erraction(err_act)
    +call psb_set_errverbosity(v)
     

    @@ -68,25 +69,19 @@ call psb_set_erraction(err_act)

    On Entry
    -
    err_act
    -
    the type of action. +
    v
    +
    the verbosity level
    -Scope: global +Scope: global
    Type: required
    Intent: in.
    -Specified as: an integer. Possible values: psb_act_ret, -psb_act_abort. +Specified as: an integer.
    -

    -

    -call psb_errcomm(icontxt, err)
    -
    -



    diff --git a/docs/html/node105.html b/docs/html/node105.html index 8d385f3b..1a877774 100644 --- a/docs/html/node105.html +++ b/docs/html/node105.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Utilities - +psb_set_erraction -- Set the type of action to be taken upon error condition. + @@ -18,73 +18,76 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: hb_read Read - Up: userhtml - Previous: psb_set_erraction Set -   Next: Utilities + Up: Error handling + Previous: psb_set_errverbosity Sets +   Contents

    -

    - -
    -Utilities -

    +

    +psb_set_erraction -- Set the type of action to be + taken upon error condition. +

    -We have some utitlities available for input and output of -sparsematrices; the interfaces to these routines are available in the -module psb_util_mod. +

    +call psb_set_erraction(err_act)
    +

    -


    - -Subsections +
    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    err_act
    +
    the type of action. +
    +Scope: global +
    +Type: required +
    +Intent: in. +
    +Specified as: an integer. Possible values: psb_act_ret, +psb_act_abort. +
    +
    + +

    +

    +call psb_errcomm(icontxt, err)
    +
    - - +



    diff --git a/docs/html/node106.html b/docs/html/node106.html index 0e912dc5..1ce258d9 100644 --- a/docs/html/node106.html +++ b/docs/html/node106.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format - +Utilities + @@ -18,139 +18,74 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: hb_write Write - Up: Utilities - Previous: Utilities -   Next: hb_read Read + Up: userhtml + Previous: psb_set_erraction Set +   Contents

    -

    -hb_read -- Read a sparse matrix from a file in the - Harwell-Boeing format -

    - -

    -

    -call hb_read(a, iret, iunit, filename, b, mtitle)
    -
    - -

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    filename
    -
    The name of the file to be read. +

    +
    -Type:optional. -
    -Specified as: a character variable containing a valid file name, or --, in which case the default input unit 5 (i.e. standard input -in Unix jargon) is used. Default: -. -

    -
    iunit
    -
    The Fortran file unit number. -
    -Type:optional. -
    -Specified as: an integer value. Only meaningful if filename is not -. -
    -
    +Utilities +

    -

    -
    On Return
    -
    -
    -
    a
    -
    the sparse matrix read from file. -
    -Type:required. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    b
    -
    Rigth hand side(s). -
    -Type: Optional -
    -An array of type real or complex, rank 2 and having the ALLOCATABLE -attribute; will be allocated and filled in if the input file contains -a right hand side, otherwise will be left in the UNALLOCATED state. -
    -
    mtitle
    -
    Matrix title. -
    -Type: Optional -
    -A charachter variable of length 72 holding a copy of the -matrix title as specified by the Harwell-Boeing format and contained -in the input file. -
    -
    iret
    -
    Error code. -
    -Type: required -
    -An integer value; 0 means no error has been detected. -
    -
    +We have some utitlities available for input and output of +sparsematrices; the interfaces to these routines are available in the +module psb_util_mod.

    -


    - - -next - -up - -previous - -contents -
    - Next: hb_write Write - Up: Utilities - Previous: Utilities -   Contents - +

    + +Subsections + + + +

    diff --git a/docs/html/node107.html b/docs/html/node107.html index 688867dd..8124a246 100644 --- a/docs/html/node107.html +++ b/docs/html/node107.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format - +hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format + @@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: mm_mat_read Read - Up: Utilities - Previous: hb_read Read -   Next: hb_write Write + Up: Utilities + Previous: Utilities +   Contents

    -

    -hb_write -- Write a sparse matrix to a file - in the Harwell-Boeing format +

    +hb_read -- Read a sparse matrix from a file in the + Harwell-Boeing format

    -call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
    +call hb_read(a, iret, iunit, filename, b, mtitle)
     

    @@ -69,29 +69,13 @@ call hb_write(a, iret, iunit, filename, key, rhs, mtitle)

    On Entry
    -
    a
    -
    the sparse matrix to be written. -
    -Type:required. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    b
    -
    Rigth hand side. -
    -Type: Optional -
    -An array of type real or complex, rank 1 and having the ALLOCATABLE -attribute; will be allocated and filled in if the input file contains -a right hand side. -
    filename
    -
    The name of the file to be written to. +
    The name of the file to be read.
    Type:optional.
    Specified as: a character variable containing a valid file name, or --, in which case the default output unit 6 (i.e. standard output +-, in which case the default input unit 5 (i.e. standard input in Unix jargon) is used. Default: -.
    iunit
    @@ -101,30 +85,37 @@ Type:optional.
    Specified as: an integer value. Only meaningful if filename is not -. -
    key
    -
    Matrix key. + + +

    +

    +
    On Return
    +
    +
    +
    a
    +
    the sparse matrix read from file. +
    +Type:required. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    b
    +
    Rigth hand side(s).
    Type: Optional
    -A charachter variable of length 8 holding the -matrix key as specified by the Harwell-Boeing format and to be -written to file. +An array of type real or complex, rank 2 and having the ALLOCATABLE +attribute; will be allocated and filled in if the input file contains +a right hand side, otherwise will be left in the UNALLOCATED state.
    mtitle
    Matrix title.
    Type: Optional
    -A charachter variable of length 72 holding the -matrix title as specified by the Harwell-Boeing format and to be -written to file. -
    -
    - -

    -

    -
    On Return
    -
    +A charachter variable of length 72 holding a copy of the +matrix title as specified by the Harwell-Boeing format and contained +in the input file.
    iret
    Error code. @@ -138,26 +129,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: mm_mat_read Read - Up: Utilities - Previous: hb_read Read -   Next: hb_write Write + Up: Utilities + Previous: Utilities +   Contents diff --git a/docs/html/node108.html b/docs/html/node108.html index 8bc1e0fd..6b42f189 100644 --- a/docs/html/node108.html +++ b/docs/html/node108.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format - +hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format + @@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: mm_vet_read Read - Up: Utilities - Previous: hb_write Write -   Next: mm_mat_read Read + Up: Utilities + Previous: hb_read Read +   Contents

    -

    -mm_mat_read -- Read a sparse matrix from a - file in the MatrixMarket format +

    +hb_write -- Write a sparse matrix to a file + in the Harwell-Boeing format

    -call mm_mat_read(a, iret, iunit, filename)
    +call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
     

    @@ -69,13 +69,29 @@ call mm_mat_read(a, iret, iunit, filename)

    On Entry
    +
    a
    +
    the sparse matrix to be written. +
    +Type:required. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    b
    +
    Rigth hand side. +
    +Type: Optional +
    +An array of type real or complex, rank 1 and having the ALLOCATABLE +attribute; will be allocated and filled in if the input file contains +a right hand side. +
    filename
    -
    The name of the file to be read. +
    The name of the file to be written to.
    Type:optional.
    Specified as: a character variable containing a valid file name, or --, in which case the default input unit 5 (i.e. standard input +-, in which case the default output unit 6 (i.e. standard output in Unix jargon) is used. Default: -.
    iunit
    @@ -85,6 +101,24 @@ Type:optional.
    Specified as: an integer value. Only meaningful if filename is not -.
    +
    key
    +
    Matrix key. +
    +Type: Optional +
    +A charachter variable of length 8 holding the +matrix key as specified by the Harwell-Boeing format and to be +written to file. +
    +
    mtitle
    +
    Matrix title. +
    +Type: Optional +
    +A charachter variable of length 72 holding the +matrix title as specified by the Harwell-Boeing format and to be +written to file. +

    @@ -92,13 +126,6 @@ Specified as: an integer value. Only meaningful if filename is not -On Return

    -
    a
    -
    the sparse matrix read from file. -
    -Type:required. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    iret
    Error code.
    @@ -109,7 +136,30 @@ An integer value; 0 means no error has been detected.

    -


    +
    + + +next + +up + +previous + +contents +
    + Next: mm_mat_read Read + Up: Utilities + Previous: hb_read Read +   Contents + diff --git a/docs/html/node109.html b/docs/html/node109.html index 477bd497..3931edcc 100644 --- a/docs/html/node109.html +++ b/docs/html/node109.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -mm_vet_read -- Read a dense vector from a file in the MatrixMarket format - +mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format + @@ -20,44 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: mm_mat_write Write - Up: Utilities - Previous: mm_mat_read Read -   Next: mm_vet_read Read + Up: Utilities + Previous: hb_write Write +   Contents

    -

    -mm_vet_read -- Read a dense vector from a +

    +mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format

    +

    -call mm_vet_read(b, iret, iunit, filename)
    +call mm_mat_read(a, iret, iunit, filename)
     

    @@ -91,14 +92,12 @@ Specified as: an integer value. Only meaningful if filename is not -On Return

    -
    b
    -
    Rigth hand side(s). +
    a
    +
    the sparse matrix read from file.
    -Type: required +Type:required.
    -An array of type real or complex, rank 2 and having the ALLOCATABLE -attribute; will be allocated and filled in if the input file contains -a right hand side, otherwise will be left in the UNALLOCATED state. +Specified as: a structured data of type spdatapsb_Tspmat_type.
    iret
    Error code. diff --git a/docs/html/node11.html b/docs/html/node11.html index bc95bcd6..93acd3ba 100644 --- a/docs/html/node11.html +++ b/docs/html/node11.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_local_rows -- Get number of local rows - +Methods + @@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node12.html"> next + HREF="node10.html"> up @@ -40,61 +40,20 @@ original version by: Nikos Drakos, CBLU, University of Leeds contents
    Next: get_local_cols Get + HREF="node12.html">get_local_rows Get Up: Descriptor data structure + HREF="node10.html">Descriptor data structure Previous: Methods + HREF="node10.html">Descriptor data structure   Contents

    -

    -get_local_rows -- Get number of local rows +

    +Methods

    - -

    -

    -nr = desc%get_local_rows()
    -
    - -

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    desc
    -
    the communication descriptor. -
    -Scope: local. -
    -
    - -

    -

    -
    On Return
    -
    -
    -
    Function value
    -
    The number of local rows, i.e. the number of - rows owned by the current process; as explained in 1, - it is equal to -$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert$. The returned value is - specific to the calling process. -
    -
    - -



    diff --git a/docs/html/node110.html b/docs/html/node110.html index 54ddaa1b..b9f2a496 100644 --- a/docs/html/node110.html +++ b/docs/html/node110.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format - +mm_vet_read -- Read a dense vector from a file in the MatrixMarket format + @@ -18,46 +18,49 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Preconditioner routines - Up: Utilities - Previous: mm_vet_read Read -   Next: mm_mat_write Write + Up: Utilities + Previous: mm_mat_read Read +   Contents

    -

    -mm_mat_write -- Write a sparse matrix to a +

    +mm_vet_read -- Read a dense vector from a file in the MatrixMarket format

    -call mm_mat_write(a, mtitle, iret, iunit, filename)
    +call mm_vet_read(b, iret, iunit, filename)
     
    + +

    Type:
    Asynchronous. @@ -65,28 +68,13 @@ call mm_mat_write(a, mtitle, iret, iunit, filename)
    On Entry
    -
    a
    -
    the sparse matrix to be written. -
    -Type:required. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    mtitle
    -
    Matrix title. -
    -Type: required -
    -A charachter variable holding a descriptive title for the matrix to be - written to file. -
    filename
    -
    The name of the file to be written to. +
    The name of the file to be read.
    Type:optional.
    Specified as: a character variable containing a valid file name, or --, in which case the default output unit 6 (i.e. standard output +-, in which case the default input unit 5 (i.e. standard input in Unix jargon) is used. Default: -.
    iunit
    @@ -103,6 +91,15 @@ Specified as: an integer value. Only meaningful if filename is not -On Return
    +
    b
    +
    Rigth hand side(s). +
    +Type: required +
    +An array of type real or complex, rank 2 and having the ALLOCATABLE +attribute; will be allocated and filled in if the input file contains +a right hand side, otherwise will be left in the UNALLOCATED state. +
    iret
    Error code.
    diff --git a/docs/html/node111.html b/docs/html/node111.html index 2abd518e..2837be7c 100644 --- a/docs/html/node111.html +++ b/docs/html/node111.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Preconditioner routines - +mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format + @@ -18,76 +18,102 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: psb_precinit Initialize - Up: userhtml - Previous: mm_mat_write Write -   Next: Preconditioner routines + Up: Utilities + Previous: mm_vet_read Read +   Contents

    -

    - +

    +mm_mat_write -- Write a sparse matrix to a + file in the MatrixMarket format +

    + +
    +call mm_mat_write(a, mtitle, iret, iunit, filename)
    +
    +
    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    a
    +
    the sparse matrix to be written. +
    +Type:required. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    mtitle
    +
    Matrix title. +
    +Type: required +
    +A charachter variable holding a descriptive title for the matrix to be + written to file. +
    +
    filename
    +
    The name of the file to be written to. +
    +Type:optional. +
    +Specified as: a character variable containing a valid file name, or +-, in which case the default output unit 6 (i.e. standard output +in Unix jargon) is used. Default: -. +
    +
    iunit
    +
    The Fortran file unit number.
    -Preconditioner routines -

    +Type:optional. +
    +Specified as: an integer value. Only meaningful if filename is not -. +
    +

    -The base PSBLAS library contains the implementation of two simple -preconditioning techniques: - -

      -
    • Diagonal Scaling -
    • -
    • Block Jacobi with ILU(0) factorization -
    • -
    -The supporting data type and subroutine interfaces are defined in the -module psb_prec_mod. +
    +
    On Return
    +
    +
    +
    iret
    +
    Error code. +
    +Type: required +
    +An integer value; 0 means no error has been detected. +
    +



    - -Subsections - - - -

    diff --git a/docs/html/node112.html b/docs/html/node112.html index 8daa74d7..56f63714 100644 --- a/docs/html/node112.html +++ b/docs/html/node112.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_precinit -- Initialize a preconditioner - +Preconditioner routines + @@ -18,125 +18,76 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: psb_precbld Builds - Up: Preconditioner routines - Previous: Preconditioner routines -   Next: psb_precinit Initialize + Up: userhtml + Previous: mm_mat_write Write +   Contents

    -

    -psb_precinit -- Initialize a preconditioner -

    +

    + +
    +Preconditioner routines +

    -

    -call psb_precinit(prec, ptype, info)
    -
    +The base PSBLAS library contains the implementation of two simple +preconditioning techniques: -

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    ptype
    -
    the type of preconditioner. -Scope: global -
    -Type: required -
    -Intent: in. -
    -Specified as: a character string, see usage notes. -
    -
    On Exit
    -

    -

    -
    prec
    -
    Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a preconditioner data structure precdatapsb_prec_type. -
    -
    info
    -
    Scope: global -
    -Type: required -
    -Intent: out. -
    -Error code: if no error, 0 is returned. -
    -
    -Notes -Legal inputs to this subroutine are interpreted depending on the -$ptype$ string as follows3: -
    -
    NONE
    -
    No preconditioning, i.e. the preconditioner is just a copy - operator. -
    -
    DIAG
    -
    Diagonal scaling; each entry of the input vector is - multiplied by the reciprocal of the sum of the absolute values of - the coefficients in the corresponding row of matrix $A$; -
    -
    BJAC
    -
    Precondition by a factorization of the - block-diagonal of matrix $A$, where block boundaries are determined - by the data allocation boundaries for each process; requires no - communication. Only the incomplete factorization $ILU(0)$ is - currently implemented. -
    -
    +
      +
    • Diagonal Scaling +
    • +
    • Block Jacobi with ILU(0) factorization +
    • +
    +The supporting data type and subroutine interfaces are defined in the +module psb_prec_mod.



    + +Subsections + + + +

    diff --git a/docs/html/node113.html b/docs/html/node113.html index 35637e7a..dc10ea9c 100644 --- a/docs/html/node113.html +++ b/docs/html/node113.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_precbld -- Builds a preconditioner - +psb_precinit -- Initialize a preconditioner + @@ -20,113 +20,118 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_precaply Preconditioner - Up: Preconditioner routines - Previous: psb_precinit Initialize -   Next: psb_precbld Builds + Up: Preconditioner routines + Previous: Preconditioner routines +   Contents

    -

    -psb_precbld -- Builds a preconditioner +

    +psb_precinit -- Initialize a preconditioner

    -call psb_precbld(a, desc_a, prec, info)
    +call psb_precinit(prec, ptype, info)
     

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    -
    a
    -
    the system sparse matrix. -Scope: local +
    ptype
    +
    the type of preconditioner. +Scope: global
    Type: required
    -Intent: in, target. +Intent: in.
    -Specified as: a sparse matrix data structure spdatapsb_Tspmat_type. +Specified as: a character string, see usage notes. +
    +
    On Exit
    +

    prec
    -
    the preconditioner. -
    -Scope: local +
    Scope: local
    Type: required
    Intent: inout.
    -Specified as: an already initialized precondtioner data structure precdatapsb_prec_type -
    -
    desc_a
    -
    the problem communication descriptor. -Scope: local +Specified as: a preconditioner data structure precdatapsb_prec_type. +
    +
    info
    +
    Scope: global
    Type: required
    -Intent: in, target. +Intent: out.
    -Specified as: a communication descriptor data structure descdatapsb_desc_type. +Error code: if no error, 0 is returned.
    - -

    +Notes +Legal inputs to this subroutine are interpreted depending on the +$ptype$ string as follows3:

    -
    On Return
    -
    +
    NONE
    +
    No preconditioning, i.e. the preconditioner is just a copy + operator.
    -
    prec
    -
    the preconditioner. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a precondtioner data structure precdatapsb_prec_type -
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. +
    DIAG
    +
    Diagonal scaling; each entry of the input vector is + multiplied by the reciprocal of the sum of the absolute values of + the coefficients in the corresponding row of matrix $A$; +
    +
    BJAC
    +
    Precondition by a factorization of the + block-diagonal of matrix $A$, where block boundaries are determined + by the data allocation boundaries for each process; requires no + communication. Only the incomplete factorization $ILU(0)$ is + currently implemented.
    diff --git a/docs/html/node114.html b/docs/html/node114.html index eb8eb791..0d05d317 100644 --- a/docs/html/node114.html +++ b/docs/html/node114.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_precaply -- Preconditioner application routine - +psb_precbld -- Builds a preconditioner + @@ -20,45 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_precdescr Prints - Up: Preconditioner routines - Previous: psb_precbld Builds -   Next: psb_precaply Preconditioner + Up: Preconditioner routines + Previous: psb_precinit Initialize +   Contents

    -

    -psb_precaply -- Preconditioner application routine +

    +psb_precbld -- Builds a preconditioner

    -call psb_precaply(prec,x,y,desc_a,info,trans,work)
    -call psb_precaply(prec,x,desc_a,info,trans)
    +call psb_precbld(a, desc_a, prec, info,amold,vmold)
     

    @@ -69,54 +68,60 @@ call psb_precaply(prec,x,desc_a,info,trans)

    On Entry
    -
    prec
    -
    the preconditioner. +
    a
    +
    the system sparse matrix. Scope: local
    Type: required
    -Intent: in. +Intent: in, target.
    -Specified as: a preconditioner data structure precdatapsb_prec_type. +Specified as: a sparse matrix data structure spdatapsb_Tspmat_type.
    -
    x
    -
    the source vector. +
    prec
    +
    the preconditioner. +
    Scope: local
    Type: required
    Intent: inout.
    -Specified as: a double precision array. -
    +Specified as: an already initialized precondtioner data structure precdatapsb_prec_type +
    desc_a
    -
    the problem communication descriptor. +
    the problem communication descriptor. Scope: local
    Type: required
    -Intent: in. +Intent: in, target.
    -Specified as: a communication data structure descdatapsb_desc_type. +Specified as: a communication descriptor data structure descdatapsb_desc_type.
    -
    trans
    -
    Scope: +
    amold
    +
    The desired dynamic type for the internal matrix storage.
    -Type: optional +Scope: local. +
    +Type: optional.
    Intent: in.
    -Specified as: a character. +Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat.
    -
    work
    -
    an optional work space -Scope: local +
    vmold
    +
    The desired dynamic type for the internal vector storage.
    -Type: optional +Scope: local.
    -Intent: inout. +Type: optional. +
    +Intent: in.
    -Specified as: a double precision array. +Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type. + +

    @@ -125,16 +130,17 @@ Specified as: a double precision array.
    On Return
    -
    y
    -
    the destination vector. +
    prec
    +
    the preconditioner. +
    Scope: local
    Type: required
    Intent: inout.
    -Specified as: a double precision array. -
    +Specified as: a precondtioner data structure precdatapsb_prec_type +
    info
    Error code.
    diff --git a/docs/html/node115.html b/docs/html/node115.html index a81962e6..f72936a0 100644 --- a/docs/html/node115.html +++ b/docs/html/node115.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_precdescr -- Prints a description of current preconditioner - +psb_precaply -- Preconditioner application routine + @@ -18,53 +18,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Iterative Methods - Up: Preconditioner routines - Previous: psb_precaply Preconditioner -   Next: psb_precdescr Prints + Up: Preconditioner routines + Previous: psb_precbld Builds +   Contents

    -

    -psb_precdescr -- Prints a description of current - preconditioner +

    +psb_precaply -- Preconditioner application routine

    -call psb_precdescr(prec)
    -call psb_precdescr(prec, iout)
    +call psb_precaply(prec,x,y,desc_a,info,trans,work)
    +call psb_precaply(prec,x,desc_a,info,trans)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    @@ -79,15 +79,72 @@ Intent: in.
    Specified as: a preconditioner data structure precdatapsb_prec_type.
    -
    iout
    -
    output unit. +
    x
    +
    the source vector. Scope: local
    -Type: optiona +Type: required +
    +Intent: inout. +
    +Specified as: a rank one array or an object of type vdatapsb_T_vect_type. +
    +
    desc_a
    +
    the problem communication descriptor. +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a communication data structure descdatapsb_desc_type. +
    +
    trans
    +
    Scope: +
    +Type: optional
    Intent: in.
    -Specified as: an integer number. +Specified as: a character. +
    +
    work
    +
    an optional work space +Scope: local +
    +Type: optional +
    +Intent: inout. +
    +Specified as: a double precision array. +
    +
    + +

    +

    +
    On Return
    +
    +
    +
    y
    +
    the destination vector. +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one array or an object of type vdatapsb_T_vect_type. +
    +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected.
    diff --git a/docs/html/node116.html b/docs/html/node116.html index 91d965f5..6391df3f 100644 --- a/docs/html/node116.html +++ b/docs/html/node116.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Iterative Methods - +psb_precdescr -- Prints a description of current preconditioner + @@ -18,61 +18,80 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: psb_krylov Krylov - Up: userhtml - Previous: psb_precdescr Prints -   Next: Iterative Methods + Up: Preconditioner routines + Previous: psb_precaply Preconditioner +   Contents

    -

    - -
    -Iterative Methods -

    +

    +psb_precdescr -- Prints a description of current + preconditioner +

    -In this chapter we provide routines for preconditioners and iterative -methods. The interfaces for Krylov subspace methods are available in -the module psb_krylov_mod. +

    +call psb_precdescr(prec)
    +call psb_precdescr(prec, iout)
    +

    -


    - -Subsections +
    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    prec
    +
    the preconditioner. +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a preconditioner data structure precdatapsb_prec_type. +
    +
    iout
    +
    output unit. +Scope: local +
    +Type: optiona +
    +Intent: in. +
    +Specified as: an integer number. +
    +
    - - +



    diff --git a/docs/html/node117.html b/docs/html/node117.html index d443e839..46984ee1 100644 --- a/docs/html/node117.html +++ b/docs/html/node117.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_krylov -- Krylov Methods Driver Routine - +Iterative Methods + @@ -18,372 +18,62 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - + + + - next - + up previous - contents
    - Next: Bibliography - Up: Iterative Methods + Next: psb_krylov Krylov + Up: userhtml Previous: Iterative Methods -   psb_precdescr Prints +   Contents

    -

    +

    +
    -psb_krylov -- Krylov Methods Driver - Routine -

    - -

    -This subroutine is a driver that provides a general interface for all -the Krylov-Subspace family methods implemented in PSBLAS version 2. - -

    -The stopping criterion is the normwise backward error, in the infinity -norm, i.e. the iteration is stopped when -

    -
    - - -\begin{displaymath}err = \frac{\Vert r_i\Vert}{(\Vert A\Vert\Vert x_i\Vert+\Vert b\Vert)} < eps \end{displaymath} -
    -
    -

    -or the 2-norm residual reduction -

    -
    - - -\begin{displaymath}err = \frac{\Vert r_i\Vert}{\Vert b\Vert _2} < eps \end{displaymath} -
    -
    -

    -according to the value passed through the istop argument (see -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. - -

    -

    -call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&
    -     & itmax,iter,err,itrace,irst,istop,cond)
    -
    +Iterative Methods +

    -

    -
    Type:
    -
    Synchronous. -
    -
    On Entry
    -
    -
    -
    method
    -
    a string that defines the iterative method to be - used. Supported values are: -
    -
    CG:
    -
    the Conjugate Gradient method; - -
    -
    CGS:
    -
    the Conjugate Gradient Stabilized method; +In this chapter we provide routines for preconditioners and iterative +methods. The interfaces for Krylov subspace methods are available in +the module psb_krylov_mod.

    -

    -
    BICG:
    -
    the Bi-Conjugate Gradient method; - -
    -
    BICGSTAB:
    -
    the Bi-Conjugate Gradient Stabilized method; - -
    -
    BICGSTABL:
    -
    the Bi-Conjugate Gradient Stabilized method with restarting; - -
    -
    RGMRES:
    -
    the Generalized Minimal Residual method with restarting. - -
    -
    -
    -
    a
    -
    the local portion of global sparse matrix -$A$. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    prec
    -
    The data structure containing the preconditioner. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a structured data of type precdatapsb_prec_type. -
    -
    b
    -
    The RHS vector. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a rank one array. -
    -
    x
    -
    The initial guess. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one array. -
    -
    eps
    -
    The stopping tolerance. -
    -Scope: global -
    -Type: required -
    -Intent: in. -
    -Specified as: a real number. -
    -
    desc_a
    -
    contains data structures for communications. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    itmax
    -
    The maximum number of iterations to perform. -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Default: $itmax = 1000$. -
    -Specified as: an integer variable $itmax \ge 1$. -
    -
    itrace
    -
    If $>0$ print out an informational message about - convergence every $itrace$ iterations. -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -
    irst
    -
    An integer specifying the restart parameter. -
    -Scope: global -
    -Type: optional. -
    -Intent: in. -
    -Values: $irst>0$. This is employed for the BiCGSTABL or RGMRES -methods, otherwise it is ignored. - -

    -

    -
    istop
    -
    An integer specifying the stopping criterion. -
    -Scope: global -
    -Type: optional. -
    -Intent: in. -
    -Values: 1: use the normwise backward error, 2: use the scaled 2-norm -of the residual. Default: 2. -
    -
    On Return
    -
    -
    -
    x
    -
    The computed solution. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one array. -
    -
    iter
    -
    The number of iterations performed. -
    -Scope: global -
    -Type: optional -
    -Intent: out. -
    -Returned as: an integer variable. -
    -
    err
    -
    The convergence estimate on exit. -
    -Scope: global -
    -Type: optional -
    -Intent: out. -
    -Returned as: a real number. -
    -
    cond
    -
    An estimate of the condition number of matrix $A$; only - available with the $CG$ method. -
    -Scope: global -
    -Type: optional -
    -Intent: out. -
    -Returned as: a real number. -
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -
    -
    - -

    - -

    - -

    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: Bibliography - Up: Iterative Methods - Previous: Iterative Methods -   Contents - +

    + +Subsections + + + +

    diff --git a/docs/html/node118.html b/docs/html/node118.html index 21313b13..df91490f 100644 --- a/docs/html/node118.html +++ b/docs/html/node118.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Bibliography - +psb_krylov -- Krylov Methods Driver Routine + @@ -18,166 +18,372 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: About this document ... - Up: userhtml - Previous: psb_krylov Krylov -   Next: Bibliography + Up: Iterative Methods + Previous: Iterative Methods +   Contents -

    +
    +
    - -

    -Bibliography -

    1 -
    - D. Barbieri, V. Cardellini, S. Filippone and D. Rouson -Design Patterns for Scientific Computations on Sparse Matrices, - HPSS 2011, Algorithms and Programming Tools for Next-Generation High-Performance Scientific Software, Bordeaux, Sep. 2011 + +

    +
    +psb_krylov -- Krylov Methods Driver + Routine +

    -

    2 -
    -G. Bella, S. Filippone, A. De Maio and M. Testa, -A Simulation Model for Forest Fires, -in J. Dongarra, K. Madsen, J. Wasniewski, editors, -Proceedings of PARA 04 Workshop on State of the Art -in Scientific Computing, pp. 546-553, Lecture Notes in Computer Science, -Springer, 2005. -

    3 -
    A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,
    -2LEV-D2P4: a package of high-performance preconditioners,
    -Applicable Algebra in Engineering, Communications and Computing, -Volume 18, Number 3, May, 2007, pp. 223-239 -

    4 -
    P. D'Ambra, S. Filippone, D. Di Serafino
    -On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners -
    -Applied Numerical Mathematics, Elsevier Science, -Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196. +This subroutine is a driver that provides a general interface for all +the Krylov-Subspace family methods implemented in PSBLAS version 2.

    -

    5 -
    - Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R., -An Extended Set of Fortran Basic Linear Algebra Subprograms, -ACM Trans. Math. Softw. vol. 14, 1-17, 1988. -

    6 -
    - Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I., -A Set of level 3 Basic Linear Algebra Subprograms, -ACM Trans. Math. Softw. vol. 16, 1-17, 1990. -

    7 -
    -J. J. Dongarra and R. C. Whaley, -A User's Guide to the BLACS v. 1.1, -Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of -Tennessee, March 1995 (updated May 1997). -

    8 -
    -I. Duff, M. Marrone, G. Radicati and C. Vittoli, -Level 3 Basic Linear Algebra Subprograms for Sparse Matrices: -a User Level Interface, -ACM Transactions on Mathematical Software, 23(3), pp. 379-401, 1997. -

    9 -
    -I. Duff, M. Heroux and R. Pozo, -An Overview of the Sparse Basic Linear -Algebra Subprograms: the New Standard from the BLAS Technical Forum, -ACM Transactions on Mathematical Software, 28(2), pp. 239-267, 2002. -

    10 +The stopping criterion is the normwise backward error, in the infinity +norm, i.e. the iteration is stopped when +

    +
    + + +\begin{displaymath}err = \frac{\Vert r_i\Vert}{(\Vert A\Vert\Vert x_i\Vert+\Vert b\Vert)} < eps \end{displaymath} +
    +
    +

    +or the 2-norm residual reduction +

    +
    + + +\begin{displaymath}err = \frac{\Vert r_i\Vert}{\Vert b\Vert _2} < eps \end{displaymath} +
    +
    +

    +according to the value passed through the istop argument (see +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. + +

    +

    +call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&
    +     & itmax,iter,err,itrace,irst,istop,cond)
    +
    + +

    +

    +
    Type:
    +
    Synchronous. +
    +
    On Entry
    -S. Filippone and M. Colajanni, -PSBLAS: A Library for Parallel Linear Algebra -Computation on Sparse Matrices, +
    +
    method
    +
    a string that defines the iterative method to be + used. Supported values are: +
    +
    CG:
    +
    the Conjugate Gradient method; + +
    +
    CGS:
    +
    the Conjugate Gradient Stabilized method; + +

    +

    +
    BICG:
    +
    the Bi-Conjugate Gradient method; + +
    +
    BICGSTAB:
    +
    the Bi-Conjugate Gradient Stabilized method; + +
    +
    BICGSTABL:
    +
    the Bi-Conjugate Gradient Stabilized method with restarting; + +
    +
    RGMRES:
    +
    the Generalized Minimal Residual method with restarting. + +
    +
    +
    +
    a
    +
    the local portion of global sparse matrix +$A$.
    -ACM Transactions on Mathematical Software, 26(4), pp. 527-550, 2000. -

    11 -
    -S. Filippone and A. Buttari, -Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003, +Scope: local
    -ACM Transactions on Mathematical Software, to appear. -

    12 -
    -S. Filippone, P. D'Ambra, M. Colajanni, -Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics -Applications Code on Linux Clusters, -in G. Joubert, A. Murli, F. Peters, M. Vanneschi, editors, -Parallel Computing - Advances & Current Issues, -pp. 441-448, Imperial College Press, 2002. -

    13 -
    - Gamma, E., Helm, R., Johnson, R., and Vlissides, - J. 1995. - Design Patterns: Elements of Reusable Object-Oriented Software. - Addison-Wesley. +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    prec
    +
    The data structure containing the preconditioner. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type precdatapsb_prec_type. +
    +
    b
    +
    The RHS vector. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a rank one array or an object of type vdatapsb_T_vect_type. +
    +
    x
    +
    The initial guess. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one array or an object of type vdatapsb_T_vect_type. +
    +
    eps
    +
    The stopping tolerance. +
    +Scope: global +
    +Type: required +
    +Intent: in. +
    +Specified as: a real number. +
    +
    desc_a
    +
    contains data structures for communications. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type descdatapsb_desc_type. +
    +
    itmax
    +
    The maximum number of iterations to perform. +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Default: $itmax = 1000$. +
    +Specified as: an integer variable $itmax \ge 1$. +
    +
    itrace
    +
    If $>0$ print out an informational message about + convergence every $itrace$ iterations. +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +
    irst
    +
    An integer specifying the restart parameter. +
    +Scope: global +
    +Type: optional. +
    +Intent: in. +
    +Values: $irst>0$. This is employed for the BiCGSTABL or RGMRES +methods, otherwise it is ignored.

    -

    14 -
    -Karypis, G. and Kumar, V., -METIS: Unstructured Graph Partitioning and Sparse Matrix - Ordering System. -Minneapolis, MN 55455: University of Minnesota, Department of - Computer Science, 1995. -Internet Address: http://www.cs.umn.edu/~karypis. -

    15 +
    +
    istop
    +
    An integer specifying the stopping criterion. +
    +Scope: global +
    +Type: optional. +
    +Intent: in. +
    +Values: 1: use the normwise backward error, 2: use the scaled 2-norm +of the residual. Default: 2. +
    +
    On Return
    -Lawson, C., Hanson, R., Kincaid, D. and Krogh, F., - Basic Linear Algebra Subprograms for Fortran usage, -ACM Trans. Math. Softw. vol. 5, 38-329, 1979. +
    +
    x
    +
    The computed solution. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one array or an object of type vdatapsb_T_vect_type. +
    +
    iter
    +
    The number of iterations performed. +
    +Scope: global +
    +Type: optional +
    +Intent: out. +
    +Returned as: an integer variable. +
    +
    err
    +
    The convergence estimate on exit. +
    +Scope: global +
    +Type: optional +
    +Intent: out. +
    +Returned as: a real number. +
    +
    cond
    +
    An estimate of the condition number of matrix $A$; only + available with the $CG$ method. +
    +Scope: global +
    +Type: optional +
    +Intent: out. +
    +Returned as: a real number. +
    +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +
    + + +

    -

    16 -
    -Machiels, L. and Deville, M. -Fortran 90: An entry to object-oriented programming for the solution - of partial differential equations. -ACM Trans. Math. Softw. vol. 23, 32-49. -

    17 -
    -Metcalf, M., Reid, J. and Cohen, M. -Fortran 95/2003 explained. -Oxford University Press, 2004. -

    18 -
    -Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The - Object-Oriented Way. Cambridge University Press (2011)

    -

    19 -
    -M. Snir, S. Otto, S. Huss-Lederman, D. Walker and J. Dongarra, -MPI: The Complete Reference. Volume 1 - The MPI Core, second edition, -MIT Press, 1998. -

    -


    +
    + + +next + +up + +previous + +contents +
    + Next: Bibliography + Up: Iterative Methods + Previous: Iterative Methods +   Contents + diff --git a/docs/html/node119.html b/docs/html/node119.html index b1919536..b69ac18d 100644 --- a/docs/html/node119.html +++ b/docs/html/node119.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -About this document ... - +Bibliography + @@ -18,52 +18,165 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + + + -next - +next + up - previous - contents
    - Up: Next:
    About this document ... + Up: userhtml - Previous: Bibliography -   Previous: psb_krylov Krylov +   Contents -
    -
    +

    + +

    +Bibliography +

    1 +
    + D. Barbieri, V. Cardellini, S. Filippone and D. Rouson +Design Patterns for Scientific Computations on Sparse Matrices, + HPSS 2011, Algorithms and Programming Tools for Next-Generation High-Performance Scientific Software, Bordeaux, Sep. 2011 + +

    +

    2 +
    +G. Bella, S. Filippone, A. De Maio and M. Testa, +A Simulation Model for Forest Fires, +in J. Dongarra, K. Madsen, J. Wasniewski, editors, +Proceedings of PARA 04 Workshop on State of the Art +in Scientific Computing, pp. 546-553, Lecture Notes in Computer Science, +Springer, 2005. +

    3 +
    A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,
    +2LEV-D2P4: a package of high-performance preconditioners,
    +Applicable Algebra in Engineering, Communications and Computing, +Volume 18, Number 3, May, 2007, pp. 223-239 +

    4 +
    P. D'Ambra, S. Filippone, D. Di Serafino
    +On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners +
    +Applied Numerical Mathematics, Elsevier Science, +Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196. -

    -About this document ... -

    -

    -This document was generated using the -LaTeX2HTML translator Version 2008 (1.71)

    -Copyright © 1993, 1994, 1995, 1996, -Nikos Drakos, -Computer Based Learning Unit, University of Leeds. +

    5 +
    + Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R., +An Extended Set of Fortran Basic Linear Algebra Subprograms, +ACM Trans. Math. Softw. vol. 14, 1-17, 1988. +

    6 +
    + Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I., +A Set of level 3 Basic Linear Algebra Subprograms, +ACM Trans. Math. Softw. vol. 16, 1-17, 1990. +

    7 +
    +J. J. Dongarra and R. C. Whaley, +A User's Guide to the BLACS v. 1.1, +Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of +Tennessee, March 1995 (updated May 1997). +

    8 +
    +I. Duff, M. Marrone, G. Radicati and C. Vittoli, +Level 3 Basic Linear Algebra Subprograms for Sparse Matrices: +a User Level Interface, +ACM Transactions on Mathematical Software, 23(3), pp. 379-401, 1997. +

    9 +
    +I. Duff, M. Heroux and R. Pozo, +An Overview of the Sparse Basic Linear +Algebra Subprograms: the New Standard from the BLAS Technical Forum, +ACM Transactions on Mathematical Software, 28(2), pp. 239-267, 2002. +

    10 +
    +S. Filippone and M. Colajanni, +PSBLAS: A Library for Parallel Linear Algebra +Computation on Sparse Matrices, +
    +ACM Transactions on Mathematical Software, 26(4), pp. 527-550, 2000. +

    11 +
    +S. Filippone and A. Buttari, +Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003,
    -Copyright © 1997, 1998, 1999, -Ross Moore, -Mathematics Department, Macquarie University, Sydney. +ACM Transactions on Mathematical Software, to appear. +

    12 +
    +S. Filippone, P. D'Ambra, M. Colajanni, +Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics +Applications Code on Linux Clusters, +in G. Joubert, A. Murli, F. Peters, M. Vanneschi, editors, +Parallel Computing - Advances & Current Issues, +pp. 441-448, Imperial College Press, 2002. +

    13 +
    + Gamma, E., Helm, R., Johnson, R., and Vlissides, + J. 1995. + Design Patterns: Elements of Reusable Object-Oriented Software. + Addison-Wesley. + +

    +

    14 +
    +Karypis, G. and Kumar, V., +METIS: Unstructured Graph Partitioning and Sparse Matrix + Ordering System. +Minneapolis, MN 55455: University of Minnesota, Department of + Computer Science, 1995. +Internet Address: http://www.cs.umn.edu/~karypis. +

    15 +
    +Lawson, C., Hanson, R., Kincaid, D. and Krogh, F., + Basic Linear Algebra Subprograms for Fortran usage, +ACM Trans. Math. Softw. vol. 5, 38-329, 1979. +

    -The command line arguments were:
    - latex2html -local_icons -noaddress -dir ../../html userhtml.tex +

    16 +
    +Machiels, L. and Deville, M. +Fortran 90: An entry to object-oriented programming for the solution + of partial differential equations. +ACM Trans. Math. Softw. vol. 23, 32-49. +

    17 +
    +Metcalf, M., Reid, J. and Cohen, M. +Fortran 95/2003 explained. +Oxford University Press, 2004. +

    18 +
    +Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The + Object-Oriented Way. Cambridge University Press (2011) + +

    +

    19 +
    +M. Snir, S. Otto, S. Huss-Lederman, D. Walker and J. Dongarra, +MPI: The Complete Reference. Volume 1 - The MPI Core, second edition, +MIT Press, 1998. +
    +

    -The translation was initiated by Salvatore Filippone on 2012-02-24


    diff --git a/docs/html/node12.html b/docs/html/node12.html index 2c8f5469..f196940c 100644 --- a/docs/html/node12.html +++ b/docs/html/node12.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_local_cols -- Get number of local cols - +get_local_rows -- Get number of local rows + @@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node13.html"> next + HREF="node10.html"> up @@ -40,34 +40,34 @@ original version by: Nikos Drakos, CBLU, University of Leeds contents
    Next: get_global_rows Get + HREF="node13.html">get_local_cols Get Up: Descriptor data structure + HREF="node10.html">Descriptor data structure Previous: get_local_rows Get + HREF="node11.html">Methods   Contents

    -

    -get_local_cols -- Get number of local cols +

    +get_local_rows -- Get number of local rows

    -nc = desc%get_local_cols()
    +nr = desc%get_local_rows()
     

    -
    On Entry
    -
    -
    Type:
    Asynchronous.
    +
    On Entry
    +
    +
    desc
    the communication descriptor.
    @@ -81,17 +81,16 @@ Scope: local.
    Function value
    -
    The number of local cols, i.e. the number of - indices used by the current process, including both local and halo - indices; as explained in 1, - it is equal to $\vert{\cal I}_i\vert + \vert{\cal B}_i\vert +\vert{\cal H}_i\vert$. The - returned value is specific to the calling process. + WIDTH="70" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" + SRC="img10.png" + ALT="$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert$">. The returned value is + specific to the calling process.
    diff --git a/docs/html/node120.html b/docs/html/node120.html new file mode 100644 index 00000000..9abc2c87 --- /dev/null +++ b/docs/html/node120.html @@ -0,0 +1,70 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
    + Up: userhtml + Previous: Bibliography +   Contents +
    +
    + + +

    +About this document ... +

    +

    +This document was generated using the +LaTeX2HTML translator Version 2008 (1.71) +

    +Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
    +Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

    +The command line arguments were:
    + latex2html -local_icons -noaddress -dir ../../html userhtml.tex +

    +The translation was initiated by Salvatore Filippone on 2012-05-25 +


    + + + diff --git a/docs/html/node13.html b/docs/html/node13.html index 92b4f110..72c02d97 100644 --- a/docs/html/node13.html +++ b/docs/html/node13.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_global_rows -- Get number of global rows - +get_local_cols -- Get number of local cols + @@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node14.html"> next + HREF="node10.html"> up @@ -40,24 +40,24 @@ original version by: Nikos Drakos, CBLU, University of Leeds contents
    Next: get_global_cols Get + HREF="node14.html">get_global_rows Get Up: Descriptor data structure + HREF="node10.html">Descriptor data structure Previous: get_local_cols Get + HREF="node12.html">get_local_rows Get   Contents

    -

    -get_global_rows -- Get number of global rows +

    +get_local_cols -- Get number of local cols

    -nr = desc%get_global_rows()
    +nc = desc%get_local_cols()
     

    @@ -81,8 +81,17 @@ Scope: local.

    Function value
    -
    The number of global rows, i.e. the size of the - global index space. +
    The number of local cols, i.e. the number of + indices used by the current process, including both local and halo + indices; as explained in 1, + it is equal to +$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert +\vert{\cal H}_i\vert$. The + returned value is specific to the calling process.
    diff --git a/docs/html/node14.html b/docs/html/node14.html index f7851f0b..24667baf 100644 --- a/docs/html/node14.html +++ b/docs/html/node14.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_global_cols -- Get number of global cols - +get_global_rows -- Get number of global rows + @@ -18,55 +18,56 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up previous - contents
    - Next: get_context Get communication context - Up: Descriptor data structure + Next: get_global_cols Get + Up: Descriptor data structure Previous: get_global_rows Get -   get_local_cols Get +   Contents

    -

    -get_global_cols -- Get number of global cols +

    +get_global_rows -- Get number of global rows

    -nr = desc%get_global_cols()
    +nr = desc%get_global_rows()
     

    -
    Type:
    -
    Asynchronous. -
    On Entry
    +
    Type:
    +
    Asynchronous. +
    desc
    the communication descriptor.
    @@ -80,8 +81,8 @@ Scope: local.
    Function value
    -
    The number of global cols; usually this is equal - to the number of global rows. +
    The number of global rows, i.e. the size of the + global index space.
    diff --git a/docs/html/node15.html b/docs/html/node15.html index d2114c6d..d56f398c 100644 --- a/docs/html/node15.html +++ b/docs/html/node15.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_context--Get communication context - +get_global_cols -- Get number of global cols + @@ -18,9 +18,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + @@ -30,9 +29,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node16.html"> next + HREF="node10.html"> up - previous
    Next: psb_cd_get_large_threshold Get + HREF="node16.html">get_context Get communication context Up: Data Structures and Classes - Previous: get_global_cols Get + HREF="node10.html">Descriptor data structure + Previous: get_global_rows Get   Contents

    -

    -
    -get_context--Get communication context -
    -

    +

    +get_global_cols -- Get number of global cols +

    + +

    -ictxt = desc%get_context()
    +nr = desc%get_global_cols()
     

    @@ -81,27 +80,13 @@ Scope: local.

    Function value
    -
    The communication context. +
    The number of global cols; usually this is equal + to the number of global rows.



    - -Subsections - - - -

    diff --git a/docs/html/node16.html b/docs/html/node16.html index 8eb32729..4c552fdc 100644 --- a/docs/html/node16.html +++ b/docs/html/node16.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cd_get_large_threshold -- Get threshold for index mapping switch - +get_context--Get communication context + @@ -18,46 +18,46 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: psb_cd_set_large_threshold Set - Up: get_context Get communication context - Previous: get_context Get communication context -   Next: psb_cd_get_large_threshold Get + Up: Data Structures and Classes + Previous: get_global_cols Get +   Contents

    -

    -psb_cd_get_large_threshold -- Get threshold for - index mapping switch -

    - +

    +
    +get_context--Get communication context +
    +

    -ith = psb_cd_get_large_threshold()
    +ictxt = desc%get_context()
     

    @@ -65,18 +65,43 @@ ith = psb_cd_get_large_threshold()

    Type:
    Asynchronous.
    -
    On Return
    +
    On Entry
    -
    Function value
    -
    The current value for the size threshold. +
    desc
    +
    the communication descriptor. +
    +Scope: local. +
    +

    +

    +
    On Return
    +
    +
    +
    Function value
    +
    The communication context.



    + +Subsections + + + +

    diff --git a/docs/html/node17.html b/docs/html/node17.html index 46dfba63..ea533b7d 100644 --- a/docs/html/node17.html +++ b/docs/html/node17.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cd_set_large_threshold -- Set threshold for index mapping switch - +psb_cd_get_large_threshold -- Get threshold for index mapping switch + @@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node18.html"> next + HREF="node16.html"> up @@ -40,51 +40,40 @@ original version by: Nikos Drakos, CBLU, University of Leeds contents
    Next: Named Constants + HREF="node18.html">psb_cd_set_large_threshold Set Up: get_context Get communication context + HREF="node16.html">get_context Get communication context Previous: psb_cd_get_large_threshold Get + HREF="node16.html">get_context Get communication context   Contents

    -

    -psb_cd_set_large_threshold -- Set threshold for +

    +psb_cd_get_large_threshold -- Get threshold for index mapping switch

    -call psb_cd_set_large_threshold(ith)
    +ith = psb_cd_get_large_threshold()
     

    Type:
    -
    Synchronous. +
    Asynchronous.
    -
    On Entry
    +
    On Return
    -
    ith
    -
    the new threshold for communication descriptors. -
    -Scope: global. -
    -Type: required. -
    -Intent: in. -
    -Specified as: an integer value greater than zero. +
    Function value
    +
    The current value for the size threshold. + +

    -Note: the threshold value is only queried by the library at the time a -call to psb_cdall is executed, therefore changing the threshold -has no effect on communication descriptors that have already been -initialized. Moreover the threshold must have the same value on all -processes.



    diff --git a/docs/html/node18.html b/docs/html/node18.html index d34af5ef..14e7187d 100644 --- a/docs/html/node18.html +++ b/docs/html/node18.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Named Constants - +psb_cd_set_large_threshold -- Set threshold for index mapping switch + @@ -18,78 +18,73 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up previous - contents
    - Next: Sparse Matrix class - Up: get_context Get communication context + Next: Named Constants + Up: get_context Get communication context Previous: psb_cd_set_large_threshold Set -   psb_cd_get_large_threshold Get +   Contents

    -

    - -
    -Named Constants +

    +psb_cd_set_large_threshold -- Set threshold for + index mapping switch

    + +
    +call psb_cd_set_large_threshold(ith)
    +
    + +

    -
    psb_none_
    -
    Generic no-op; -
    -
    psb_nohalo_
    -
    Do not fetch halo elements; -
    -
    psb_halo_
    -
    Fetch halo elements from neighbouring processes; +
    Type:
    +
    Synchronous.
    -
    psb_sum_
    -
    Sum overlapped elements +
    On Entry
    +
    -
    psb_avg_
    -
    Average overlapped elements -
    -
    psb_comm_halo_
    -
    Exchange data based on the halo_index - list; -
    -
    psb_comm_ext_
    -
    Exchange data based on the ext_index - list; -
    -
    psb_comm_ovr_
    -
    Exchange data based on the ovrlap_index - list; -
    -
    psb_comm_mov_
    -
    Exchange data based on the ovr_mst_idx - list; - -

    +

    ith
    +
    the new threshold for communication descriptors. +
    +Scope: global. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer value greater than zero.
    +Note: the threshold value is only queried by the library at the time a +call to psb_cdall is executed, therefore changing the threshold +has no effect on communication descriptors that have already been +initialized. Moreover the threshold must have the same value on all +processes.



    diff --git a/docs/html/node19.html b/docs/html/node19.html index 1130a48b..c6d964fe 100644 --- a/docs/html/node19.html +++ b/docs/html/node19.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Sparse Matrix class - +Named Constants + @@ -18,9 +18,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + @@ -30,9 +29,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node20.html"> next + HREF="node16.html"> up - previous
    Next: Methods + HREF="node20.html">Sparse Matrix class Up: Data Structures and Classes - Previous: Named Constants + HREF="node16.html">get_context Get communication context + Previous: psb_cd_set_large_threshold Set   Contents

    -

    - +

    +
    -Sparse Matrix class -

    -The spdatapsb_Tspmat_type class -contains all information about the local portion of the sparse matrix and -its storage mode. Its design is -based on the STATE design pattern [13] as detailed -in [11]; the type declaration is shown in -figure 4 where T is a placeholder for the -data type and precision variants +Named Constants +

    -
    S
    -
    Single precision real; +
    psb_none_
    +
    Generic no-op;
    -
    D
    -
    Double precision real; +
    psb_nohalo_
    +
    Do not fetch halo elements;
    -
    C
    -
    Single precision complex; +
    psb_halo_
    +
    Fetch halo elements from neighbouring processes;
    -
    Z
    -
    Double precision complex. +
    psb_sum_
    +
    Sum overlapped elements
    -
    -The actual data is contained in the polymorphic component a%a -of type spbasedatapsb_T_base_sparse_mat; its -specific layout can be chosen dynamically among the predefined types, -or an entirely new storage layout can be implemented and passed to the -library at runtime via the psb_spasb routine. - -
    - - - -
    Figure 4: - The PSBLAS defined data type that - contains a sparse matrix.
    -
    - -
    - -\fbox{\TheSbox} -
    -
    -The following very common formats are precompiled in PSBLAS and thus -are always available: -
    -
    psb_T_coo_sparse_mat
    -
    Coordinate storage; +
    psb_avg_
    +
    Average overlapped elements
    -
    psb_T_csr_sparse_mat
    -
    Compressed storage by rows; +
    psb_comm_halo_
    +
    Exchange data based on the halo_index + list;
    -
    psb_T_csc_sparse_mat
    -
    Compressed storage by columns; -
    -
    -The inner sparse matrix has an associated state, which can take the -following values: -
    -
    Build:
    -
    State entered after the first allocation, and before the - first assembly; in this state it is possible to add nonzero entries. +
    psb_comm_ext_
    +
    Exchange data based on the ext_index + list;
    -
    Assembled:
    -
    State entered after the assembly; computations using - the sparse matrix, such as matrix-vector products, are only possible - in this state; +
    psb_comm_ovr_
    +
    Exchange data based on the ovrlap_index + list;
    -
    Update:
    -
    State entered after a reinitalization; this is used to - handle applications in which the same sparsity pattern is used - multiple times with different coefficients. In this state it is only - possible to enter coefficients for already existing nonzero entries. +
    psb_comm_mov_
    +
    Exchange data based on the ovr_mst_idx + list; + +

    -The only storage variant supporting the build state is COO; all other -variants are obtained by conversion to/from it.



    - -Subsections - - - -
    - - -next - -up - -previous - -contents -
    - Next: Methods - Up: Data Structures and Classes - Previous: Named Constants -   Contents - diff --git a/docs/html/node2.html b/docs/html/node2.html index c8d7c660..b8b22555 100644 --- a/docs/html/node2.html +++ b/docs/html/node2.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next:
    General overview - Up: Up:
    userhtml - Previous: Previous: Contents -   Contents

    @@ -71,7 +71,7 @@ passing.

    The PSBLAS library version 3 is implemented in the Fortran 2003 [17] programming language, with reuse and/or + HREF="node119.html#metcalf">17] programming language, with reuse and/or adaptation of existing Fortran 77 and Fortran 95 software, plus a handful of C routines. @@ -81,11 +81,11 @@ mostly in the handling of requirements for evolution and adaptation of the library to new computing architectures and integration of new algorithms. For a detailed discussion of our design see [11]; other + HREF="node119.html#Sparse03">11]; other works discussing advanced programming in Fortran 2003 include [1,18]; sufficient support for + HREF="node119.html#DesPat:11">1,18]; sufficient support for Fortran 2003 is now available from many compilers, including the GNU Fortran compiler from the Free Software Foundation (as of version 4.6). @@ -94,7 +94,7 @@ Previous approaches have been based on mixing Fortran 95, with its support for object-based design, with other languages; these have been advocated by a number of authors, e.g. [16]. Moreover, the Fortran 95 facilities for dynamic + HREF="node119.html#machiels">16]. Moreover, the Fortran 95 facilities for dynamic memory management and interface overloading greatly enhance the usability of the PSBLAS subroutines. In this way, the library can take care of runtime memory @@ -105,12 +105,12 @@ implementation or compilation time. The presentation of the PSBLAS library follows the general structure of the proposal for serial Sparse BLAS [8,9], which in its turn is based on the + HREF="node119.html#sblas97">8,9], which in its turn is based on the proposal for BLAS on dense matrices [15,5,6]. + HREF="node119.html#BLAS1">15,5,6].

    The applicability of sparse iterative solvers to many different areas @@ -144,26 +144,26 @@ computational fluid dynamics applications.


    - next - up - previous - contents
    - Next: Next: General overview - Up: Up: userhtml - Previous: Previous: Contents -   Contents diff --git a/docs/html/node20.html b/docs/html/node20.html index 97335261..f1e5de66 100644 --- a/docs/html/node20.html +++ b/docs/html/node20.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Methods - +Sparse Matrix class + @@ -18,43 +18,181 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: get_nrows Get - Up: Sparse Matrix class - Previous: Sparse Matrix class -   Next: Methods + Up: Data Structures and Classes + Previous: Named Constants +   Contents

    -

    -Methods -

    +

    + +
    +Sparse Matrix class +

    +The spdatapsb_Tspmat_type class +contains all information about the local portion of the sparse matrix and +its storage mode. Its design is +based on the STATE design pattern [13] as detailed +in [11]; the type declaration is shown in +figure 4 where T is a placeholder for the +data type and precision variants +
    +
    S
    +
    Single precision real; +
    +
    D
    +
    Double precision real; +
    +
    C
    +
    Single precision complex; +
    +
    Z
    +
    Double precision complex. +
    +
    +The actual data is contained in the polymorphic component a%a +of type spbasedatapsb_T_base_sparse_mat; its +specific layout can be chosen dynamically among the predefined types, +or an entirely new storage layout can be implemented and passed to the +library at runtime via the psb_spasb routine. + +
    + + + +
    Figure 4: + The PSBLAS defined data type that + contains a sparse matrix.
    +
    + +
    +
    +  type :: psb_Tspmat_type
    +
    +    class(psb_T_base_sparse_mat), allocatable  :: a 
    +
    +  end type  psb_Tspmat_type
    +
    +
    +
    +
    +The following very common formats are precompiled in PSBLAS and thus +are always available: +
    +
    psb_T_coo_sparse_mat
    +
    Coordinate storage; +
    +
    psb_T_csr_sparse_mat
    +
    Compressed storage by rows; +
    +
    psb_T_csc_sparse_mat
    +
    Compressed storage by columns; +
    +
    +The inner sparse matrix has an associated state, which can take the +following values: +
    +
    Build:
    +
    State entered after the first allocation, and before the + first assembly; in this state it is possible to add nonzero entries. +
    +
    Assembled:
    +
    State entered after the assembly; computations using + the sparse matrix, such as matrix-vector products, are only possible + in this state; +
    +
    Update:
    +
    State entered after a reinitalization; this is used to + handle applications in which the same sparsity pattern is used + multiple times with different coefficients. In this state it is only + possible to enter coefficients for already existing nonzero entries. +
    +
    +The only storage variant supporting the build state is COO; all other +variants are obtained by conversion to/from it. + +



    + +Subsections + + + +
    + + +next + +up + +previous + +contents +
    + Next: Methods + Up: Data Structures and Classes + Previous: Named Constants +   Contents + diff --git a/docs/html/node21.html b/docs/html/node21.html index 8351372e..c72eb73b 100644 --- a/docs/html/node21.html +++ b/docs/html/node21.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_nrows -- Get number of rows in a sparse matrix - +Methods + @@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node22.html"> next + HREF="node20.html"> up @@ -40,52 +40,20 @@ original version by: Nikos Drakos, CBLU, University of Leeds contents
    Next: get_ncols Get + HREF="node22.html">get_nrows Get Up: Sparse Matrix class + HREF="node20.html">Sparse Matrix class Previous: Methods + HREF="node20.html">Sparse Matrix class   Contents

    -

    -get_nrows -- Get number of rows in a sparse matrix +

    +Methods

    - -

    -

    -nr = a%get_nrows()
    -
    - -

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    a
    -
    the sparse matrix -
    -Scope: local -
    -
    - -

    -

    -
    On Return
    -
    -
    -
    Function value
    -
    The number of rows of sparse matrix a. -
    -
    - -



    diff --git a/docs/html/node22.html b/docs/html/node22.html index bbefbf9a..d88d2f3b 100644 --- a/docs/html/node22.html +++ b/docs/html/node22.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_ncols -- Get number of columns in a sparse matrix - +get_nrows -- Get number of rows in a sparse matrix + @@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node23.html"> next + HREF="node20.html"> up @@ -40,24 +40,24 @@ original version by: Nikos Drakos, CBLU, University of Leeds contents
    Next: get_nnzeros Get + HREF="node23.html">get_ncols Get Up: Sparse Matrix class + HREF="node20.html">Sparse Matrix class Previous: get_nrows Get + HREF="node21.html">Methods   Contents

    -

    -get_ncols -- Get number of columns in a sparse matrix +

    +get_nrows -- Get number of rows in a sparse matrix

    -nc = a%get_ncols()
    +nr = a%get_nrows()
     

    @@ -81,7 +81,7 @@ Scope: local

    Function value
    -
    The number of columns of sparse matrix a. +
    The number of rows of sparse matrix a.
    diff --git a/docs/html/node23.html b/docs/html/node23.html index 8aff9f6c..ad347d89 100644 --- a/docs/html/node23.html +++ b/docs/html/node23.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_nnzeros -- Get number of nonzero elements in a sparse matrix - +get_ncols -- Get number of columns in a sparse matrix + @@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node24.html"> next + HREF="node20.html"> up @@ -40,25 +40,24 @@ original version by: Nikos Drakos, CBLU, University of Leeds contents
    Next: get_size Get + HREF="node24.html">get_nnzeros Get Up: Sparse Matrix class + HREF="node20.html">Sparse Matrix class Previous: get_ncols Get + HREF="node22.html">get_nrows Get   Contents

    -

    -get_nnzeros -- Get number of nonzero elements - in a sparse matrix +

    +get_ncols -- Get number of columns in a sparse matrix

    -nz = a%get_nnzeros()
    +nc = a%get_ncols()
     

    @@ -82,20 +81,10 @@ Scope: local

    Function value
    -
    The number of nonzero elements stored in sparse matrix a. +
    The number of columns of sparse matrix a.
    -

    -Notes - -

      -
    1. The function value is specific to the storage format of matrix - a; some storage formats employ padding, thus the returned - value for the same matrix may be different for different storage choices. -
    2. -
    -



    diff --git a/docs/html/node24.html b/docs/html/node24.html index 065398ed..0789665c 100644 --- a/docs/html/node24.html +++ b/docs/html/node24.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_size -- Get maximum number of nonzero elements in a sparse matrix - +get_nnzeros -- Get number of nonzero elements in a sparse matrix + @@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node25.html"> next + HREF="node20.html"> up @@ -40,25 +40,25 @@ original version by: Nikos Drakos, CBLU, University of Leeds contents
    Next: sizeof Get + HREF="node25.html">get_size Get Up: Sparse Matrix class + HREF="node20.html">Sparse Matrix class Previous: get_nnzeros Get + HREF="node23.html">get_ncols Get   Contents

    -

    -get_size -- Get maximum number of nonzero elements +

    +get_nnzeros -- Get number of nonzero elements in a sparse matrix

    -maxnz = a%get_size()
    +nz = a%get_nnzeros()
     

    @@ -82,11 +82,20 @@ Scope: local

    Function value
    -
    The maximum number of nonzero elements that can - be stored in sparse matrix a using its current memory allocation. +
    The number of nonzero elements stored in sparse matrix a.
    +

    +Notes + +

      +
    1. The function value is specific to the storage format of matrix + a; some storage formats employ padding, thus the returned + value for the same matrix may be different for different storage choices. +
    2. +
    +



    diff --git a/docs/html/node25.html b/docs/html/node25.html index 7fb161a5..f8430abc 100644 --- a/docs/html/node25.html +++ b/docs/html/node25.html @@ -7,10 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -sizeof -- Get memory occupation in bytes -of a sparse matrix - +get_size -- Get maximum number of nonzero elements in a sparse matrix + @@ -22,7 +20,7 @@ of a sparse matrix"> - + @@ -32,7 +30,7 @@ of a sparse matrix"> HREF="node26.html"> next + HREF="node20.html"> up @@ -42,25 +40,25 @@ of a sparse matrix"> contents
    Next: get_fmt Short + HREF="node26.html">sizeof Get Up: Sparse Matrix class + HREF="node20.html">Sparse Matrix class Previous: get_size Get + HREF="node24.html">get_nnzeros Get   Contents

    -

    -sizeof -- Get memory occupation in bytes -of a sparse matrix +

    +get_size -- Get maximum number of nonzero elements + in a sparse matrix

    -memory_size = a%sizeof()
    +maxnz = a%get_size()
     

    @@ -84,7 +82,8 @@ Scope: local

    Function value
    -
    The memory occupation in bytes. +
    The maximum number of nonzero elements that can + be stored in sparse matrix a using its current memory allocation.
    diff --git a/docs/html/node26.html b/docs/html/node26.html index 27fd36d8..c6abf81e 100644 --- a/docs/html/node26.html +++ b/docs/html/node26.html @@ -7,8 +7,10 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_fmt -- Short description of the dynamic type - +sizeof -- Get memory occupation in bytes +of a sparse matrix + @@ -20,7 +22,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -30,7 +32,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node27.html"> next + HREF="node20.html"> up @@ -40,24 +42,25 @@ original version by: Nikos Drakos, CBLU, University of Leeds contents
    Next: is_bld, is_upd, is_asb + HREF="node27.html">get_fmt Short Up: Sparse Matrix class + HREF="node20.html">Sparse Matrix class Previous: sizeof Get + HREF="node25.html">get_size Get   Contents

    -

    -get_fmt -- Short description of the dynamic type +

    +sizeof -- Get memory occupation in bytes +of a sparse matrix

    -write(*,*) a%get_fmt()
    +memory_size = a%sizeof()
     

    @@ -81,9 +84,7 @@ Scope: local

    Function value
    -
    A short string describing the dynamic type of - the matrix. Predefined values include NULL, COO, - CSR and CSC. +
    The memory occupation in bytes.
    diff --git a/docs/html/node27.html b/docs/html/node27.html index be2ad8d8..6f75ccd9 100644 --- a/docs/html/node27.html +++ b/docs/html/node27.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -is_bld, is_upd, is_asb -- Status check - +get_fmt -- Short description of the dynamic type + @@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node28.html"> next + HREF="node20.html"> up @@ -40,26 +40,24 @@ original version by: Nikos Drakos, CBLU, University of Leeds contents
    Next: Named Constants + HREF="node28.html">is_bld, is_upd, is_asb Up: Sparse Matrix class + HREF="node20.html">Sparse Matrix class Previous: get_fmt Short + HREF="node26.html">sizeof Get   Contents

    -

    -is_bld, is_upd, is_asb -- Status check +

    +get_fmt -- Short description of the dynamic type

    -if (a%is_bld()) then 
    -if (a%is_upd()) then 
    -if (a%is_asb()) then 
    +write(*,*) a%get_fmt()
     

    @@ -83,8 +81,9 @@ Scope: local

    Function value
    -
    A logical value indicating whether the - matrix is in the Build, Update or Assembled state, respectively. +
    A short string describing the dynamic type of + the matrix. Predefined values include NULL, COO, + CSR and CSC.
    diff --git a/docs/html/node28.html b/docs/html/node28.html index b3fc272e..5b56a554 100644 --- a/docs/html/node28.html +++ b/docs/html/node28.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Named Constants - +is_bld, is_upd, is_asb -- Status check + @@ -18,63 +18,73 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up previous - contents
    - Next: Dense Vector Data Structure - Up: Sparse Matrix class + Next: Named Constants + Up: Sparse Matrix class Previous: is_bld, is_upd, is_asb -   get_fmt Short +   Contents

    -

    - -
    -Named Constants +

    +is_bld, is_upd, is_asb -- Status check

    + +

    +

    +if (a%is_bld()) then 
    +if (a%is_upd()) then 
    +if (a%is_asb()) then 
    +
    + +

    -
    psb_dupl_ovwrt_
    -
    Duplicate coefficients should be overwritten - (i.e. ignore duplications) -
    -
    psb_dupl_add_
    -
    Duplicate coefficients should be added; +
    Type:
    +
    Asynchronous.
    -
    psb_dupl_err_
    -
    Duplicate coefficients should trigger an error conditino +
    On Entry
    +
    -
    psb_upd_dflt_
    -
    Default update strategy for matrix coefficients; -
    -
    psb_upd_srch_
    -
    Update strategy based on search into the data structure; +
    a
    +
    the sparse matrix +
    +Scope: local +
    +
    + +

    +

    +
    On Return
    +
    -
    psb_upd_perm_
    -
    Update strategy based on additional - permutation data (see tools routine description). +
    Function value
    +
    A logical value indicating whether the + matrix is in the Build, Update or Assembled state, respectively.
    diff --git a/docs/html/node29.html b/docs/html/node29.html index 057cd719..2d19df44 100644 --- a/docs/html/node29.html +++ b/docs/html/node29.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Dense Vector Data Structure - +Named Constants + @@ -18,9 +18,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + @@ -30,9 +29,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node30.html"> next + HREF="node20.html"> up - previous
    Next: Methods + HREF="node30.html">Dense Vector Data Structure Up: Data Structures and Classes - Previous: Named Constants + HREF="node20.html">Sparse Matrix class + Previous: is_bld, is_upd, is_asb   Contents

    -

    - +

    +
    -Dense Vector Data Structure -

    -The vdatapsb_T_vect_type data structure -encapsulates the dense vectors in a way similar to sparse matrices. -The user will not, in general, access the vector components directly, -but rather via the routines of sec. 6. Among other -simple things, we define here an extraction method that can be used to -get a full copy of the part of the vector stored on the local -process. - -

    -The type declaration is shown in -figure 5 where T is a placeholder for the -data type and precision variants +Named Constants +

    -
    I
    -
    Integer; +
    psb_dupl_ovwrt_
    +
    Duplicate coefficients should be overwritten + (i.e. ignore duplications) +
    +
    psb_dupl_add_
    +
    Duplicate coefficients should be added;
    -
    S
    -
    Single precision real; +
    psb_dupl_err_
    +
    Duplicate coefficients should trigger an error conditino
    -
    D
    -
    Double precision real; +
    psb_upd_dflt_
    +
    Default update strategy for matrix coefficients;
    -
    C
    -
    Single precision complex; +
    psb_upd_srch_
    +
    Update strategy based on search into the data structure;
    -
    Z
    -
    Double precision complex. +
    psb_upd_perm_
    +
    Update strategy based on additional + permutation data (see tools routine description).
    -The actual data is contained in the polymorphic component v%v; -the separation between the application and the actual data is -essential for cases where it is necessary to link to data storage made -available elsewhere outside the direct control of the -compiler/application, e.g. data stored in a graphics accelerator's -private memory. - -
    - - - -
    Figure 5: - The PSBLAS defined data type that - contains a dense vector.
    -
    - -
    - -\fbox{\TheSbox} -
    -



    - -Subsections - - - -
    - - -next - -up - -previous - -contents -
    - Next: Methods - Up: Data Structures and Classes - Previous: Named Constants -   Contents - diff --git a/docs/html/node3.html b/docs/html/node3.html index b7347682..14e3c913 100644 --- a/docs/html/node3.html +++ b/docs/html/node3.html @@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next:
    Basic Nomenclature - Up: Up: userhtml - Previous: Previous: Introduction -   Contents

    @@ -78,14 +78,14 @@ calls to the serial sparse BLAS subroutines. In a similar way, the inter-process message exchanges are encapsulated in an applicaiton layer that has been strongly inspired by the Basic Linear Algebra Communication Subroutines (BLACS) library [7]. + HREF="node119.html#BLACS">7]. Usually there is no need to deal directly with MPI; however, in some cases, MPI routines are used directly to improve efficiency. For -further details on our communication layer see Sec. 7. +further details on our communication layer see Sec. 7.

    -

    +
    @@ -93,12 +93,12 @@ PSBLAS library components hierarchy.
    \includegraphics[scale=0.65]{figures/psblas.eps} \includegraphics[scale=0.65]{figures/psblas}
    @@ -134,7 +134,7 @@ equation indices to processes. In particular it is consistent with the usage of graph partitioning tools commonly available in the literature, e.g. METIS [14]. + HREF="node119.html#METIS">14]. Dense vectors conform to sparse matrices, that is, the entries of a vector follow the same distribution of the matrix rows. @@ -145,7 +145,7 @@ process generates its own portion. We never require that the entire matrix be available on a single node. However, it is possible to hold the entire matrix in one process and distribute it explicitly1, even though the resulting memory + HREF="footnode.html#foot187">1, even though the resulting memory bottleneck would make this option unattractive in most cases.

    @@ -154,38 +154,43 @@ bottleneck would make this option unattractive in most cases. Subsections


    - next - up - previous - contents
    - Next: Next: Basic Nomenclature - Up: Up: userhtml - Previous: Previous: Introduction -   Contents diff --git a/docs/html/node30.html b/docs/html/node30.html index f7d48c1d..15e75707 100644 --- a/docs/html/node30.html +++ b/docs/html/node30.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Methods - +Dense Vector Data Structure + @@ -18,43 +18,147 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next:get_nrows Get - Up:Dense Vector Data Structure - Previous:Dense Vector Data Structure -   Next:Methods + Up:Data Structures and Classes + Previous:Named Constants +   Contents

    -

    -Methods -

    +

    + +
    +Dense Vector Data Structure +

    +The vdatapsb_T_vect_type data structure +encapsulates the dense vectors in a way similar to sparse matrices, +i.e. including a base type vbasedata psb_T_base_vect_type. +The user will not, in general, access the vector components directly, +but rather via the routines of sec. 6. Among other +simple things, we define here an extraction method that can be used to +get a full copy of the part of the vector stored on the local +process. + +

    +The type declaration is shown in +figure 5 where T is a placeholder for the +data type and precision variants +

    +
    I
    +
    Integer; +
    +
    S
    +
    Single precision real; +
    +
    D
    +
    Double precision real; +
    +
    C
    +
    Single precision complex; +
    +
    Z
    +
    Double precision complex. +
    +
    +The actual data is contained in the polymorphic component v%v; +the separation between the application and the actual data is +essential for cases where it is necessary to link to data storage made +available elsewhere outside the direct control of the +compiler/application, e.g. data stored in a graphics accelerator's +private memory. + +
    +
    Figure 1: PSBLAS library components hierarchy.
    + + +
    Figure 5: + The PSBLAS defined data type that + contains a dense vector.
    +
    + +
    +
    +  type psb_T_base_vect_type
    +    TYPE(KIND_), allocatable :: v(:)
    +  end type psb_T_base_vect_type
    +
    +  type psb_T_vect_type
    +    class(psb_T_base_vect_type), allocatable :: v 
    +  end type  psb_T_vect_type
    +
    +
    +
    +
    + +



    + +Subsections + + + +
    + + +next + +up + +previous + +contents +
    + Next: Methods + Up: Data Structures and Classes + Previous: Named Constants +   Contents + diff --git a/docs/html/node31.html b/docs/html/node31.html index 1a11e620..b34304b8 100644 --- a/docs/html/node31.html +++ b/docs/html/node31.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_nrows -- Get number of rows in a dense vector - +Methods + @@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node32.html"> next + HREF="node30.html"> up @@ -40,52 +40,20 @@ original version by: Nikos Drakos, CBLU, University of Leeds contents
    Next: get_ncols Get + HREF="node32.html">get_nrows Get Up: Dense Vector Data Structure + HREF="node30.html">Dense Vector Data Structure Previous: Methods + HREF="node30.html">Dense Vector Data Structure   Contents

    -

    -get_nrows -- Get number of rows in a dense vector +

    +Methods

    - -

    -

    -nr = v%get_nrows()
    -
    - -

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    v
    -
    the dense vector -
    -Scope: local -
    -
    - -

    -

    -
    On Return
    -
    -
    -
    Function value
    -
    The number of rows of sparse matrix a. -
    -
    - -



    diff --git a/docs/html/node32.html b/docs/html/node32.html index 80043db9..9ff87361 100644 --- a/docs/html/node32.html +++ b/docs/html/node32.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_ncols -- Get number of columns in a sparse matrix - +get_nrows -- Get number of rows in a dense vector + @@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node33.html"> next + HREF="node30.html"> up @@ -40,21 +40,51 @@ original version by: Nikos Drakos, CBLU, University of Leeds contents
    Next: sizeof Get + HREF="node33.html">get_ncols Get Up: Dense Vector Data Structure + HREF="node30.html">Dense Vector Data Structure Previous: get_nrows Get + HREF="node31.html">Methods   Contents

    -

    -get_ncols -- Get number of columns in a sparse matrix +

    +get_nrows -- Get number of rows in a dense vector

    +

    +

    +nr = v%get_nrows()
    +
    + +

    +

    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    v
    +
    the dense vector +
    +Scope: local +
    +
    + +

    +

    +
    On Return
    +
    +
    +
    Function value
    +
    The number of rows of sparse matrix a. +
    +
    +



    diff --git a/docs/html/node33.html b/docs/html/node33.html index 8051c04b..b1a38c2e 100644 --- a/docs/html/node33.html +++ b/docs/html/node33.html @@ -7,10 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -sizeof -- Get memory occupation in bytes -of a dense vector matrix - +get_ncols -- Get number of columns in a sparse matrix + @@ -22,7 +20,7 @@ of a dense vector matrix"> - + @@ -32,7 +30,7 @@ of a dense vector matrix"> HREF="node34.html"> next + HREF="node30.html"> up @@ -42,52 +40,21 @@ of a dense vector matrix"> contents
    Next: get_vect Get + HREF="node34.html">sizeof Get Up: Dense Vector Data Structure + HREF="node30.html">Dense Vector Data Structure Previous: get_ncols Get + HREF="node32.html">get_nrows Get   Contents

    -

    -sizeof -- Get memory occupation in bytes -of a dense vector matrix +

    +get_ncols -- Get number of columns in a sparse matrix

    -

    -

    -memory_size = v%sizeof()
    -
    - -

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    v
    -
    the dense vector -
    -Scope: local -
    -
    - -

    -

    -
    On Return
    -
    -
    -
    Function value
    -
    The memory occupation in bytes. -
    -
    -



    diff --git a/docs/html/node34.html b/docs/html/node34.html index 7150a347..a4d7d073 100644 --- a/docs/html/node34.html +++ b/docs/html/node34.html @@ -7,8 +7,10 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_vect -- Get a copy of the vector contents - +sizeof -- Get memory occupation in bytes +of a dense vector matrix + @@ -18,45 +20,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up previous - contents
    - Next: Preconditioner data structure - Up: Dense Vector Data Structure + Next: get_vect Get + Up: Dense Vector Data Structure Previous: sizeof Get -   get_ncols Get +   Contents

    -

    -get_vect -- Get a copy of the vector contents +

    +sizeof -- Get memory occupation in bytes +of a dense vector matrix

    -extv = v%get_vect()
    +memory_size = v%sizeof()
     

    @@ -80,8 +84,7 @@ Scope: local

    Function value
    -
    An allocatable array holding a copy of the dense - vector contents. +
    The memory occupation in bytes.
    diff --git a/docs/html/node35.html b/docs/html/node35.html index 73e0556a..d5b6dec9 100644 --- a/docs/html/node35.html +++ b/docs/html/node35.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Preconditioner data structure - +get_vect -- Get a copy of the vector contents + @@ -18,9 +18,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + @@ -30,9 +29,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node36.html"> next + HREF="node30.html"> up - previous
    Next: Data structure Methods + HREF="node36.html">Preconditioner data structure Up: Data Structures and Classes - Previous: get_vect Get + HREF="node30.html">Dense Vector Data Structure + Previous: sizeof Get   Contents

    -

    - -
    -Preconditioner data structure -

    -Our base library offers support for simple well known preconditioners -like Diagonal Scaling or Block Jacobi with incomplete -factorization ILU(0). +

    +get_vect -- Get a copy of the vector contents +

    -A preconditioner is held in the precdata psb_prec_type data structure reported in -figure 6. The psb_prec_type -data type may contain a simple preconditioning matrix with the -associated communication descriptor.The values contained in -the iprcparm and rprcparm define tha type of -preconditioner along with all the parameters related to it; thus, -iprcparm and rprcparm define how the other records have -to be interpreted. This data structure is the basis of more complex -preconditioning strategies, which are the subject of further -research. - -

    - - - -
    Figure 6: -The PSBLAS defined data type that contains a preconditioner.

    +
    +extv = v%get_vect()
    +
    +

    +

    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    v
    +
    the dense vector
    - -
    -
    -\fbox{\TheSbox}
    -
    -
    +Scope: local +
    + + +

    +

    +
    On Return
    +
    +
    +
    Function value
    +
    An allocatable array holding a copy of the dense + vector contents. +
    +



    diff --git a/docs/html/node36.html b/docs/html/node36.html index bb39efc5..99c7fc7b 100644 --- a/docs/html/node36.html +++ b/docs/html/node36.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Data structure Methods - +Preconditioner data structure + @@ -18,8 +18,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - + + @@ -29,7 +29,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds HREF="node37.html"> next + HREF="node9.html"> up @@ -41,20 +41,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds Next: Computational routines Up: Data Structures and Classes + HREF="node9.html">Data Structures and Classes Previous: Preconditioner data structure + HREF="node35.html">get_vect Get   Contents

    -

    - +

    +
    -Data structure Methods +Preconditioner data structure

    +Our base library offers support for simple well known preconditioners +like Diagonal Scaling or Block Jacobi with incomplete +factorization ILU(0). + +

    +A preconditioner is held in the precdata psb_prec_type data structure reported in +figure 6. The psb_prec_type +data type may contain a simple preconditioning matrix with the +associated communication descriptor.The internal preconditioner is allocated appropriately with the +dynamic type corresponding to the desired preconditioner. + +

    + + + +
    Figure 6: +The PSBLAS defined data type that contains a preconditioner.
    +
    + +
    +
    +  type psb_Tprec_type
    +    class(psb_T_base_prec_type), allocatable :: prec
    +  end type psb_Tprec_type
    +
    +
    +



    diff --git a/docs/html/node37.html b/docs/html/node37.html index 31b129f9..fa6c6c29 100644 --- a/docs/html/node37.html +++ b/docs/html/node37.html @@ -18,8 +18,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - + + @@ -44,7 +44,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds Up: userhtml Previous: Data structure Methods + HREF="node36.html">Preconditioner data structure   Contents
    @@ -80,11 +80,13 @@ Computational routines
  • psb_genrm2s -- Generalized 2-Norm of Vector
  • psb_spnrmi -- Infinity Norm of Sparse Matrix + HREF="node47.html">psb_spnrm1 -- 1-Norm of Sparse Matrix
  • psb_spmm -- Sparse Matrix by Dense Matrix Product + HREF="node48.html">psb_spnrmi -- Infinity Norm of Sparse Matrix
  • psb_spsm -- Triangular System Solve + HREF="node49.html">psb_spmm -- Sparse Matrix by Dense Matrix Product +
  • psb_spsm -- Triangular System Solve

    diff --git a/docs/html/node38.html b/docs/html/node38.html index 5badba24..abe008dd 100644 --- a/docs/html/node38.html +++ b/docs/html/node38.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next:
    psb_gedot Dot - Up: Up: Computational routines - Previous: Previous: Computational routines -   Contents

    @@ -68,7 +68,7 @@ y \leftarrow \alpha\> x+ \beta y \begin{displaymath}y \leftarrow \alpha\> x+ \beta y \end{displaymath}

  • @@ -81,7 +81,7 @@ call psb_geaxpby(alpha, x, beta, y, desc_a, info)


    -
    +
    @@ -89,17 +89,17 @@ Data types
    Table 1: Data types
    @@ -132,8 +132,8 @@ Data types
    alpha
    the scalar $\alpha$.
    Scope: global @@ -147,8 +147,8 @@ Specified as: a number of the data type indicated in Table .
    Scope: local @@ -160,17 +160,17 @@ Intent: in. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 
    1. The rank of $x$ must be the same of $y$.
    beta
    the scalar $\beta$.
    Scope: global @@ -184,8 +184,8 @@ Specified as: a number of the data type indicated in Table .
    Scope: local @@ -196,11 +196,11 @@ Intent: inout.
    Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of the type indicated in Table 
    1. The rank of $y$ must be the same of $x$.
    desc_a
    @@ -225,8 +225,8 @@ Specified as: an object of type descdatapsb_desc_type.
    y
    the local portion of result submatrix $y$.
    Scope: local @@ -254,26 +254,26 @@ An integer value; 0 means no error has been detected.


    - next - up - previous - contents
    - Next: Next: psb_gedot Dot - Up: Up: Computational routines - Previous: Previous: Computational routines -   Contents diff --git a/docs/html/node39.html b/docs/html/node39.html index 253aa56f..ee6abae2 100644 --- a/docs/html/node39.html +++ b/docs/html/node39.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next: psb_gedots Generalized - Up: Up: Computational routines - Previous: Previous: psb_geaxpby General -   Contents

    @@ -57,20 +57,20 @@ psb_gedot -- Dot Product

    This function computes dot product between two vectors $x$ and $y$.
    If $x$ and $y$ are real vectors it computes dot-product as:

    @@ -82,18 +82,18 @@ dot \leftarrow x^T y --> \begin{displaymath}dot \leftarrow x^T y\end{displaymath}

    Else if $x$ and $y$ are complex vectors then it computes dot-product as:

    @@ -104,8 +104,8 @@ dot \leftarrow x^H y --> \begin{displaymath}dot \leftarrow x^H y\end{displaymath}

    @@ -116,7 +116,7 @@ dot \leftarrow x^H y psb_gedot(x, y, desc_a, info)

    -
    +
    $x$, $y$, $\alpha$, $\beta$ Subroutine
    @@ -124,14 +124,14 @@ Data types
    Table 2: Data types
    @@ -165,8 +165,8 @@ Data types
    x
    the local portion of global dense matrix $x$.
    Scope: local @@ -178,18 +178,18 @@ Intent: in. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 2. The rank of $x$ must be the same of $y$.
    y
    the local portion of global dense matrix $y$.
    Scope: local @@ -201,11 +201,11 @@ Intent: in. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 2. The rank of $y$ must be the same of $x$.
    desc_a
    @@ -226,11 +226,11 @@ Specified as: an object of type descdatapsb_desc_type.
    Function value
    is the dot product of subvectors $x$ and $y$.
    Scope: global @@ -253,26 +253,26 @@ An integer value; 0 means no error has been detected.


    - next - up - previous - contents
    - Next: Next: psb_gedots Generalized - Up: Up: Computational routines - Previous: Previous: psb_geaxpby General -   Contents diff --git a/docs/html/node4.html b/docs/html/node4.html index 633d40c0..a32afb53 100644 --- a/docs/html/node4.html +++ b/docs/html/node4.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next: Library contents - Up: Up: General overview - Previous: Previous: General overview -   Contents

    @@ -112,7 +112,7 @@ on it. Whenever performing a computational step, such as a matrix-vector product, the values associated with halo points are requested from other domains. A boundary point of a given domain is usually a halo point for some other domain2; therefore + HREF="footnode.html#foot196">2; therefore the cardinality of the boundary points set denotes the amount of data sent to other domains.
    @@ -126,8 +126,8 @@ Overlap points do not usually exist in the basic data distributions; however they are a feature of Domain Decomposition Schwarz preconditioners which are the subject of related research work [4,3]. + HREF="node119.html#2007c">4,3].

    We denote the sets of internal, boundary and halo points for a given @@ -135,7 +135,7 @@ subdomain by $\cal I$, $\cal B$ and -

    +
    $dot$, $x$, $y$ Function


    - next - + up - previous - contents
    - Next:psb_gather Gather - Up:Communication routines - Previous:psb_halo Halo -   Next:psb_ovrl Overlap + Up:Communication routines + Previous:Communication routines +   Contents diff --git a/docs/html/node53.html b/docs/html/node53.html index bb981c81..6677cdba 100644 --- a/docs/html/node53.html +++ b/docs/html/node53.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_gather -- Gather Global Dense Matrix - +psb_ovrl -- Overlap Update + @@ -20,97 +20,89 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next:psb_scatter Scatter - Up:Communication routines - Previous:psb_ovrl Overlap -   Next:psb_gather Gather + Up:Communication routines + Previous:psb_halo Halo +   Contents

    -

    -psb_gather -- Gather Global Dense Matrix +

    +psb_ovrl -- Overlap Update

    -These subroutines collect the portions of global dense matrix -distributed over all process into one single array stored on one -process. +These subroutines applies an overlap operator to the input vector:


    \begin{displaymath}glob\_x \leftarrow collect(loc\_x_i) \end{displaymath} + WIDTH="55" HEIGHT="27" BORDER="0" + SRC="img59.png" + ALT="\begin{displaymath}x \leftarrow Q x \end{displaymath}">

    where:
    $glob\_x$
    -
    is the global submatrix -$glob\_x_{1:m,1:n}$ -
    -
    $loc\_x_i$
    -
    is the local portion of global dense matrix on -process $i$. + WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" + SRC="img20.png" + ALT="$x$"> +
    is the global dense submatrix $x$
    $collect$
    -
    is the collect function. + WIDTH="16" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" + SRC="img60.png" + ALT="$Q$"> +
    is the overlap operator; it is the composition of two +operators $ P_a$ and $ P^{T}$.


    -
    +
    Figure 2: Point classfication.
    \includegraphics[scale=0.65]{figures/points.eps} - next - up - previous - contents
    - Next: Next: Library contents - Up: Up: General overview - Previous: Previous: General overview -   Contents diff --git a/docs/html/node40.html b/docs/html/node40.html index 675c9252..a871113f 100644 --- a/docs/html/node40.html +++ b/docs/html/node40.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next: psb_geamax Infinity-Norm - Up: Up: Computational routines - Previous: Previous: psb_gedot Dot -   Contents

    @@ -58,11 +58,11 @@ psb_gedots -- Generalized Dot Product

    This subroutine computes a series of dot products among the columns of two dense matrices $x$ and $y$:

    @@ -74,25 +74,25 @@ res(i) \leftarrow x(:,i)^T y(:,i) \begin{displaymath}res(i) \leftarrow x(:,i)^T y(:,i)\end{displaymath}

    If the matrices are complex, then the usual convention applies, i.e. the conjugate transpose of $x$ is used. If $x$ and $y$ are of rank one, then $res$ is a scalar, else it is a rank one array. @@ -101,7 +101,7 @@ is a rank one array. call psb_gedots(res, x, y, desc_a, info)

    -
    +
    @@ -109,14 +109,14 @@ Data types
    Table 3: Data types
    @@ -150,8 +150,8 @@ Data types
    x
    the local portion of global dense matrix $x$.
    Scope: local @@ -163,18 +163,18 @@ Intent: in. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 3. The rank of $x$ must be the same of $y$.
    y
    the local portion of global dense matrix $y$.
    Scope: local @@ -186,11 +186,11 @@ Intent: in. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 3. The rank of $y$ must be the same of $x$.
    desc_a
    @@ -209,11 +209,11 @@ Specified as: an object of type descdatapsb_desc_type.
    res
    is the dot product of subvectors $x$ and $y$.
    Scope: global @@ -239,26 +239,26 @@ An integer value; 0 means no error has been detected.


    - next - up - previous - contents
    - Next: Next: psb_geamax Infinity-Norm - Up: Up: Computational routines - Previous: Previous: psb_gedot Dot -   Contents diff --git a/docs/html/node41.html b/docs/html/node41.html index 3e041fcd..49bc8e4c 100644 --- a/docs/html/node41.html +++ b/docs/html/node41.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next: psb_geamaxs Generalized - Up: Up: Computational routines - Previous: Previous: psb_gedots Generalized -   Contents

    @@ -58,13 +58,13 @@ psb_geamax -- Infinity-Norm of Vector

    This function computes the infinity-norm of a vector $x$.
    If $x$ is a real vector it computes infinity norm as:

    @@ -77,14 +77,14 @@ amax \leftarrow \max_i |x_i| \begin{displaymath}amax \leftarrow \max_i \vert x_i\vert\end{displaymath}

    else if $x$ is a complex vector then it computes the infinity-norm as:

    @@ -96,7 +96,7 @@ amax \leftarrow \max_i {(|re(x_i)| + |im(x_i)|)} \begin{displaymath}amax \leftarrow \max_i {(\vert re(x_i)\vert + \vert im(x_i)\vert)}\end{displaymath}

    @@ -109,7 +109,7 @@ psb_geamax(x, desc_a, info)


    -
    +
    $res$, $x$, $y$ Subroutine
    @@ -117,12 +117,12 @@ Data types
    Table 4: Data types
    @@ -160,8 +160,8 @@ Data types
    x
    the local portion of global dense matrix $x$.
    @@ -193,8 +193,8 @@ Specified as: an object of type descdatapsb_desc_type.
    Function value
    is the infinity norm of subvector $x$.
    Scope: global @@ -217,26 +217,26 @@ An integer value; 0 means no error has been detected.


    - next - up - previous - contents
    - Next: Next: psb_geamaxs Generalized - Up: Up: Computational routines - Previous: Previous: psb_gedots Generalized -   Contents diff --git a/docs/html/node42.html b/docs/html/node42.html index 12877aa0..6d425413 100644 --- a/docs/html/node42.html +++ b/docs/html/node42.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next: psb_geasum 1-Norm - Up: Up: Computational routines - Previous: Previous: psb_geamax Infinity-Norm -   Contents

    @@ -58,8 +58,8 @@ psb_geamaxs -- Generalized Infinity Norm

    This subroutine computes a series of infinity norms on the columns of a dense matrix $x$:

    @@ -70,8 +70,8 @@ res(i) \leftarrow \max_k |x(k,i)| --> \begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath}

    @@ -84,7 +84,7 @@ call psb_geamaxs(res, x, desc_a, info)


    -
    +
    $amax$ $x$ Function
    @@ -92,12 +92,12 @@ Data types
    Table 5: Data types
    @@ -135,8 +135,8 @@ Data types
    x
    the local portion of global dense matrix $x$.
    Scope: local @@ -165,8 +165,8 @@ Specified as: an object of type descdatapsb_desc_type.
    res
    is the infinity norm of the columns of $x$.
    Scope: global @@ -191,26 +191,26 @@ An integer value; 0 means no error has been detected.


    - next - up - previous - contents
    - Next: Next: psb_geasum 1-Norm - Up: Up: Computational routines - Previous: Previous: psb_geamax Infinity-Norm -   Contents diff --git a/docs/html/node43.html b/docs/html/node43.html index 062aeea3..441c101b 100644 --- a/docs/html/node43.html +++ b/docs/html/node43.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next: psb_geasums Generalized - Up: Up: Computational routines - Previous: Previous: psb_geamaxs Generalized -   Contents

    @@ -57,13 +57,13 @@ psb_geasum -- 1-Norm of Vector

    This function computes the 1-norm of a vector $x$.
    If $x$ is a real vector it computes 1-norm as:

    @@ -76,14 +76,14 @@ asum \leftarrow \|x_i\| \begin{displaymath}asum \leftarrow \Vert x_i\Vert\end{displaymath}

    else if $x$ is a complex vector then it computes 1-norm as:

    @@ -95,7 +95,7 @@ asum \leftarrow \|re(x)\|_1 + \|im(x)\|_1 \begin{displaymath}asum \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath}

    @@ -108,7 +108,7 @@ psb_geasum(x, desc_a, info)


    -
    +
    $res$ $x$ Subroutine
    @@ -116,12 +116,12 @@ Data types
    Table 6: Data types
    @@ -159,8 +159,8 @@ Data types
    x
    the local portion of global dense matrix $x$.
    @@ -192,8 +192,8 @@ Specified as: an object of type descdatapsb_desc_type.
    Function value
    is the 1-norm of vector $x$.
    Scope: global @@ -216,26 +216,26 @@ An integer value; 0 means no error has been detected.


    - next - up - previous - contents
    - Next: Next: psb_geasums Generalized - Up: Up: Computational routines - Previous: Previous: psb_geamaxs Generalized -   Contents diff --git a/docs/html/node44.html b/docs/html/node44.html index 0bd0d12c..e38357a9 100644 --- a/docs/html/node44.html +++ b/docs/html/node44.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next: psb_genrm2 2-Norm - Up: Up: Computational routines - Previous: Previous: psb_geasum 1-Norm -   Contents

    @@ -58,8 +58,8 @@ psb_geasums -- Generalized 1-Norm of Vector

    This subroutine computes a series of 1-norms on the columns of a dense matrix $x$:

    @@ -70,20 +70,20 @@ res(i) \leftarrow \max_k |x(k,i)| --> \begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath}

    This function computes the 1-norm of a vector $x$.
    If $x$ is a real vector it computes 1-norm as:

    @@ -96,14 +96,14 @@ res(i) \leftarrow \|x_i\| \begin{displaymath}res(i) \leftarrow \Vert x_i\Vert\end{displaymath}

    else if $x$ is a complex vector then it computes 1-norm as:

    @@ -114,8 +114,8 @@ res(i) \leftarrow \|re(x)\|_1 + \|im(x)\|_1 --> \begin{displaymath}res(i) \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath}

    @@ -128,7 +128,7 @@ call psb_geasums(res, x, desc_a, info)


    -
    +
    $asum$ $x$ Function
    @@ -136,12 +136,12 @@ Data types
    Table 7: Data types
    @@ -179,8 +179,8 @@ Data types
    x
    the local portion of global dense matrix $x$.
    @@ -190,7 +190,7 @@ Type: required
    Intent: in.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 7.
    @@ -212,8 +212,8 @@ Specified as: an object of type descdatapsb_desc_type.
    res
    contains the 1-norm of (the columns of) $x$.
    Scope: global @@ -239,26 +239,26 @@ An integer value; 0 means no error has been detected.


    - next - up - previous - contents
    - Next: Next: psb_genrm2 2-Norm - Up: Up: Computational routines - Previous: Previous: psb_geasum 1-Norm -   Contents diff --git a/docs/html/node45.html b/docs/html/node45.html index 643a0688..0edd9cbf 100644 --- a/docs/html/node45.html +++ b/docs/html/node45.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next: psb_genrm2s Generalized - Up: Up: Computational routines - Previous: Previous: psb_geasums Generalized -   Contents

    @@ -57,13 +57,13 @@ psb_genrm2 -- 2-Norm of Vector

    This function computes the 2-norm of a vector $x$.
    If $x$ is a real vector it computes 2-norm as:

    @@ -76,14 +76,14 @@ nrm2 \leftarrow \sqrt{x^T x} \begin{displaymath}nrm2 \leftarrow \sqrt{x^T x}\end{displaymath}

    else if $x$ is a complex vector then it computes 2-norm as:

    @@ -95,7 +95,7 @@ nrm2 \leftarrow \sqrt{x^H x} \begin{displaymath}nrm2 \leftarrow \sqrt{x^H x}\end{displaymath}

    @@ -103,7 +103,7 @@ nrm2 \leftarrow \sqrt{x^H x}


    -
    +
    $res$ $x$ Subroutine
    @@ -111,12 +111,12 @@ Data types
    Table 8: Data types
    @@ -159,8 +159,8 @@ psb_genrm2(x, desc_a, info)
    x
    the local portion of global dense matrix $x$.
    Scope: local @@ -169,7 +169,7 @@ Type: required
    Intent: in.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 8.
    @@ -191,8 +191,8 @@ Specified as: an object of type descdatapsb_desc_type.
    Function Value
    is the 2-norm of subvector $x$.
    Scope: global @@ -217,26 +217,26 @@ An integer value; 0 means no error has been detected.


    - next - up - previous - contents
    - Next: Next: psb_genrm2s Generalized - Up: Up: Computational routines - Previous: Previous: psb_geasums Generalized -   Contents diff --git a/docs/html/node46.html b/docs/html/node46.html index 8d5ecbab..cb27d20f 100644 --- a/docs/html/node46.html +++ b/docs/html/node46.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: psb_spnrmi Infinity - Up: Next: psb_spnrm1 1-Norm + Up: Computational routines - Previous: Previous: psb_genrm2 2-Norm -   Contents

    @@ -58,8 +58,8 @@ psb_genrm2s -- Generalized 2-Norm of Vector

    This subroutine computes a series of 2-norms on the columns of a dense matrix $x$:

    @@ -70,8 +70,8 @@ res(i) \leftarrow \|x(:,i)\|_2 --> \begin{displaymath}res(i) \leftarrow \Vert x(:,i)\Vert _2 \end{displaymath}

    @@ -84,7 +84,7 @@ call psb_genrm2s(res, x, desc_a, info)


    -
    +
    $nrm2$ $x$ Function
    @@ -92,12 +92,12 @@ Data types
    Table 9: Data types
    @@ -135,8 +135,8 @@ Data types
    x
    the local portion of global dense matrix $x$.
    @@ -146,7 +146,7 @@ Type: required
    Intent: in.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 9.
    @@ -168,8 +168,8 @@ Specified as: an object of type descdatapsb_desc_type.
    res
    contains the 1-norm of (the columns of) $x$.
    Scope: global @@ -194,26 +194,26 @@ An integer value; 0 means no error has been detected.


    - next - up - previous - contents
    - Next: psb_spnrmi Infinity - Up: Next: psb_spnrm1 1-Norm + Up: Computational routines - Previous: Previous: psb_genrm2 2-Norm -   Contents diff --git a/docs/html/node47.html b/docs/html/node47.html index eabc27ba..71e5cd26 100644 --- a/docs/html/node47.html +++ b/docs/html/node47.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spnrmi -- Infinity Norm of Sparse Matrix - +psb_spnrm1 -- 1-Norm of Sparse Matrix + @@ -26,37 +26,37 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: psb_spmm Sparse - Up: Next: psb_spnrmi Infinity + Up: Computational routines - Previous: Previous: psb_genrm2s Generalized -   Contents

    -psb_spnrmi -- Infinity Norm of Sparse Matrix +psb_spnrm1 -- 1-Norm of Sparse Matrix

    -This function computes the infinity-norm of a matrix $A$: @@ -66,14 +66,14 @@ This function computes the infinity-norm of a matrix \begin{displaymath}nrmi \leftarrow \Vert A\Vert _\infty \end{displaymath} + WIDTH="98" HEIGHT="28" BORDER="0" + SRC="img42.png" + ALT="\begin{displaymath}nrm1 \leftarrow \Vert A\Vert _1 \end{displaymath}">

    @@ -92,7 +92,7 @@ where:


    -
    +
    $res$ $x$ Subroutine
    @@ -106,16 +106,16 @@ Data types - + - + - + - +
    Table 10: Data types
    Function
    Short Precision Realpsb_spnrmipsb_spnrm1
    Long Precision Realpsb_spnrmipsb_spnrm1
    Short Precision Complexpsb_spnrmipsb_spnrm1
    Long Precision Complexpsb_spnrmipsb_spnrm1
    @@ -126,7 +126,7 @@ Data types

    -psb_spnrmi(A, desc_a, info)
    +psb_spnrm1(A, desc_a, info)
     

    @@ -167,7 +167,7 @@ Specified as: an object of type descdatapsb_desc_type.

    Function value
    -
    is the infinity-norm of sparse submatrix is the 1-norm of sparse submatrix $A$. @@ -192,26 +192,26 @@ An integer value; 0 means no error has been detected.


    - next - up - previous - contents
    - Next: psb_spmm Sparse - Up: Next: psb_spnrmi Infinity + Up: Computational routines - Previous: Previous: psb_genrm2s Generalized -   Contents diff --git a/docs/html/node48.html b/docs/html/node48.html index bf3aa9b0..b6a6a28d 100644 --- a/docs/html/node48.html +++ b/docs/html/node48.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spmm -- Sparse Matrix by Dense Matrix Product - +psb_spnrmi -- Infinity Norm of Sparse Matrix + @@ -26,123 +26,64 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: psb_spsm Triangular - Up: Next: psb_spmm Sparse + Up: Computational routines - Previous: psb_spnrmi Infinity -   Previous: psb_spnrm1 1-Norm +   Contents

    -psb_spmm -- Sparse Matrix by Dense Matrix Product +psb_spnrmi -- Infinity Norm of Sparse Matrix

    -This subroutine computes the Sparse Matrix by Dense Matrix Product: - -

    -
    -

    - - - - - -
    \begin{displaymath}
-y \leftarrow \alpha A x + \beta y
-\end{displaymath} -(1)
    -

    -
    -
    - - - - - -
    \begin{displaymath}
-y \leftarrow \alpha A^T x + \beta y
-\end{displaymath} -(2)
    -

    +This function computes the infinity-norm of a matrix $A$:
    -
    - +

    +

    +
    - - - -
    \begin{displaymath}
-y \leftarrow \alpha A^H x + \beta y
-\end{displaymath} -(3)
    -

    -

    +\begin{displaymath}nrmi \leftarrow \Vert A\Vert _\infty \end{displaymath} +

    +
    +

    where:
    -
    $x$
    -
    is the global dense matrix $x_{:, :}$ -
    -
    $y$
    -
    is the global dense matrix $y_{:, :}$ -
    $A$
    -
    is the global sparse matrix represents the global matrix $A$ @@ -151,7 +92,7 @@ where:


    -
    +
    @@ -161,32 +102,20 @@ Data types - + ALT="$A$"> + - + - + - + - +
    Table 11: Data types
    $A$, $x$, $y$, $\alpha$, $\beta$SubroutineFunction
    Short Precision Realpsb_spmmpsb_spnrmi
    Long Precision Realpsb_spmmpsb_spnrmi
    Short Precision Complexpsb_spmmpsb_spnrmi
    Long Precision Complexpsb_spmmpsb_spnrmi
    @@ -197,10 +126,8 @@ Data types

    -call psb_spmm(alpha, a, x, beta, y, desc_a, info)
    -call psb_spmm(alpha, a, x, beta, y,desc_a, info, &
    -             & trans, work)
    -
    +psb_spnrmi(A, desc_a, info) +

    @@ -210,23 +137,8 @@ call psb_spmm(alpha, a, x, beta, y,desc_a, info, &
    On Entry
    -
    alpha
    -
    the scalar $\alpha$. -
    -Scope: global -
    -Type: required -
    -Intent: in. -
    -Specified as: a number of the data type indicated in -Table 11. -
    a
    -
    the local portion of the sparse matrix +
    the local portion of the global sparse matrix in.
    Specified as: an object of type spdatapsb_Tspmat_type.
    -
    x
    -
    the local portion of global dense matrix -$x$. - -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 11. The rank of $x$ must be the same of $y$. -
    -
    beta
    -
    the scalar $\beta$. -
    -Scope: global -
    -Type: required -
    -Intent: in. -
    -Specified as: a number of the data type indicated in Table 11. -
    -
    y
    -
    the local portion of global dense matrix -$y$. - -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 11. The rank of $y$ must be the same of $x$. -
    desc_a
    contains data structures for communications.
    @@ -313,74 +163,18 @@ Intent: in.
    Specified as: an object of type descdatapsb_desc_type.
    -
    trans
    -
    indicates what kind of operation to perform. -
    -
    trans = N
    -
    the operation is specified by equation 1 -
    -
    trans = T
    -
    the operation is specified by equation -2 -
    -
    trans = C
    -
    the operation is specified by equation -3 -
    -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Default: $trans = N$ -
    -Specified as: a character variable. - -

    -

    -
    work
    -
    work array. -
    -Scope: local -
    -Type: optional -
    -Intent: inout. -
    -Specified as: a rank one array of the same type of $x$ and $y$ with -the TARGET attribute. - -

    -

    On Return
    -
    y
    -
    the local portion of result matrix $y$. -
    -Scope: local -
    -Type: required +
    Function value
    +
    is the infinity-norm of sparse submatrix $A$.
    -Intent: inout. +Scope: global
    -Specified as: an array of rank one or two -containing numbers of type specified in -Table 11. +Specified as: a long precision real number.
    info
    Error code. @@ -398,26 +192,26 @@ An integer value; 0 means no error has been detected.


    - next - up - previous - contents
    - Next: psb_spsm Triangular - Up: Next: psb_spmm Sparse + Up: Computational routines - Previous: psb_spnrmi Infinity -   Previous: psb_spnrm1 1-Norm +   Contents diff --git a/docs/html/node49.html b/docs/html/node49.html index c302d004..9bd8de43 100644 --- a/docs/html/node49.html +++ b/docs/html/node49.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spsm -- Triangular System Solve - +psb_spmm -- Sparse Matrix by Dense Matrix Product + @@ -18,6 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds + @@ -25,113 +26,132 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Communication routines - Up: Next: psb_spsm Triangular + Up: Computational routines - Previous: psb_spmm Sparse -   Previous: psb_spnrmi Infinity +   Contents

    -psb_spsm -- Triangular System Solve +psb_spmm -- Sparse Matrix by Dense Matrix Product

    -This subroutine computes the Triangular System Solve: +This subroutine computes the Sparse Matrix by Dense Matrix Product:

    -

    -
    +
    +
    + -\begin{eqnarray*}
-y &\leftarrow& \alpha T^{-1} x + \beta y\\
-y &\leftarrow& \al...
-...-H} x + \beta y\\
-y &\leftarrow& \alpha T^{-H} D x + \beta y\\
-\end{eqnarray*}
    -

    + + + +
    \begin{displaymath}
+y \leftarrow \alpha A x + \beta y
+\end{displaymath} +(1)
    +

    +
    +
    + + + + + +
    \begin{displaymath}
+y \leftarrow \alpha A^T x + \beta y
+\end{displaymath} +(2)
    +

    +
    +
    + + + + + +
    \begin{displaymath}
+y \leftarrow \alpha A^H x + \beta y
+\end{displaymath} +(3)
    +

    where:

    $x$
    is the global dense matrix $x_{:, :}$
    $y$
    is the global dense matrix $y_{:, :}$
    $T$
    -
    is the global sparse block triangular submatrix $T$ -
    -
    $D$
    -
    is the scaling diagonal matrix. + WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" + SRC="img1.png" + ALT="$A$"> +
    is the global sparse matrix $A$
    -

    -

    -call psb_spsm(alpha, t, x, beta, y, desc_a, info)
    -call psb_spsm(alpha, t, x, beta, y, desc_a, info,&
    -             & trans, unit, choice, diag, work)
    -
    -


    -
    +
    @@ -139,37 +159,34 @@ Data types
    Table 12: Data types
    - + - + - + - +
    $T$, $A$, $x$, $y$, $D$, $\alpha$, $\beta$ Subroutine
    Short Precision Realpsb_spsmpsb_spmm
    Long Precision Realpsb_spsmpsb_spmm
    Short Precision Complexpsb_spsmpsb_spmm
    Long Precision Complexpsb_spsmpsb_spmm
    @@ -178,6 +195,13 @@ Data types


    +

    +

    +call psb_spmm(alpha, a, x, beta, y, desc_a, info)
    +call psb_spmm(alpha, a, x, beta, y,desc_a, info, &
    +             & trans, work)
    +
    +

    Type:
    @@ -188,8 +212,8 @@ Data types
    alpha
    the scalar $\alpha$.
    Scope: global @@ -199,14 +223,14 @@ Type: required Intent: in.
    Specified as: a number of the data type indicated in -Table 12. +Table 12.
    -
    t
    -
    the global portion of the sparse matrix +
    a
    +
    the local portion of the sparse matrix $T$. + WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" + SRC="img1.png" + ALT="$A$">.
    Scope: local
    @@ -214,14 +238,13 @@ Type: required
    Intent: in.
    -Specified as: an object type specified in -§ 3. +Specified as: an object of type spdatapsb_Tspmat_type.
    x
    the local portion of global dense matrix $x$.
    @@ -231,20 +254,20 @@ Type: required
    Intent: in.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 12. The rank of 12. The rank of $x$ must be the same of $y$.
    beta
    the scalar $\beta$.
    Scope: global @@ -253,13 +276,13 @@ Type: required
    Intent: in.
    -Specified as: a number of the data type indicated in Table 12. +Specified as: a number of the data type indicated in Table 12.
    y
    the local portion of global dense matrix $y$.
    @@ -269,14 +292,14 @@ Type: required
    Intent: inout.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 12. The rank of 12. The rank of $y$ must be the same of $x$.
    desc_a
    @@ -291,16 +314,18 @@ Intent: in. Specified as: an object of type descdatapsb_desc_type.
    trans
    -
    specify with unitd the operation to perform. +
    indicates what kind of operation to perform.
    -
    trans = 'N'
    -
    the operation is with no transposed matrix +
    trans = N
    +
    the operation is specified by equation 1
    -
    trans = 'T'
    -
    the operation is with transposed matrix. +
    trans = T
    +
    the operation is specified by equation +2
    -
    trans = 'C'
    -
    the operation is with conjugate transposed matrix. +
    trans = C
    +
    the operation is specified by equation +3
    Scope: global @@ -310,87 +335,16 @@ Type: optional Intent: in.
    Default: $trans = N$
    Specified as: a character variable. -
    -
    unitd
    -
    specify with trans the operation to perform. -
    -
    unitd = 'U'
    -
    the operation is with no scaling -
    -
    unitd = 'L'
    -
    the operation is with left scaling -
    -
    unitd = 'R'
    -
    the operation is with right scaling. -
    -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Default: $unitd = U$ -
    -Specified as: a character variable. -
    -
    choice
    -
    specifies the update of overlap elements to be performed - on exit: -
    -
    -
    psb_none_ -
    -
    -
    psb_sum_ -
    -
    -
    psb_avg_ -
    -
    -
    psb_square_root_ -
    -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Default: psb_avg_ -
    -Specified as: an integer variable. -
    -
    diag
    -
    the diagonal scaling matrix. -
    -Scope: local -
    -Type: optional -
    -Intent: in. -
    -Default: -$diag(1) = 1 (no scaling)$ -
    -Specified as: a rank one array containing numbers of the type -indicated in Table 12. + +

    work
    -
    a work array. +
    work array.
    Scope: local
    @@ -399,10 +353,13 @@ Type: optional Intent: inout.
    Specified as: a rank one array of the same type of $x$ with the -TARGET attribute. + WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" + SRC="img20.png" + ALT="$x$"> and $y$ with +the TARGET attribute.

    @@ -410,12 +367,10 @@ TARGET attribute.
    y
    -
    the local portion of global dense matrix -$y$. - +
    the local portion of result matrix $y$.
    Scope: local
    @@ -425,7 +380,7 @@ Intent: inout.
    Specified as: an array of rank one or two containing numbers of type specified in -Table 12. +Table 12.
    info
    Error code. @@ -443,26 +398,26 @@ An integer value; 0 means no error has been detected.


    - next - up - previous - contents
    - Next: Communication routines - Up: Next: psb_spsm Triangular + Up: Computational routines - Previous: psb_spmm Sparse -   Previous: psb_spnrmi Infinity +   Contents diff --git a/docs/html/node5.html b/docs/html/node5.html index 52bb0a15..b441f311 100644 --- a/docs/html/node5.html +++ b/docs/html/node5.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next: Application structure - Up: Up: General overview - Previous: Previous: Basic Nomenclature -   Contents

    @@ -123,12 +123,12 @@ internally defined in the PSBLAS software package:
  • sp: the routine is related to sparse data,
  • cd: the routine is related to communication descriptor - (see 3). + (see 3).
  • For example the psb_geins, psb_spins and - psb_cdins perform the same action (see 6) on + psb_cdins perform the same action (see 6) on dense matrices, sparse matrices and communication descriptors respectively. Interface overloading allows the usage of the same subroutine @@ -169,26 +169,26 @@ whose current value is 3.0.0


    - next - up - previous - contents
    - Next: Next: Application structure - Up: Up: General overview - Previous: Previous: Basic Nomenclature -   Contents diff --git a/docs/html/node50.html b/docs/html/node50.html index 60b7170b..039fe379 100644 --- a/docs/html/node50.html +++ b/docs/html/node50.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Communication routines - +psb_spsm -- Triangular System Solve + @@ -18,63 +18,453 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: psb_halo Halo - Up: userhtml - Previous: psb_spsm Triangular -   Next: Communication routines + Up: Computational routines + Previous: psb_spmm Sparse +   Contents

    -

    -Communication routines -

    -The routines in this chapter implement various global communication operators -on vectors associated with a discretization mesh. For auxiliary communication -routines not tied to a discretization space see 6. +

    +psb_spsm -- Triangular System Solve +

    -


    - -Subsections - - - -

    +This subroutine computes the Triangular System Solve: + +

    +

    +
    + +\begin{eqnarray*}
+y &\leftarrow& \alpha T^{-1} x + \beta y\\
+y &\leftarrow& \al...
+...-H} x + \beta y\\
+y &\leftarrow& \alpha T^{-H} D x + \beta y\\
+\end{eqnarray*}
    +

    + +

    +where: +

    +
    $x$
    +
    is the global dense matrix $x_{:, :}$ +
    +
    $y$
    +
    is the global dense matrix $y_{:, :}$ +
    +
    $T$
    +
    is the global sparse block triangular submatrix $T$ +
    +
    $D$
    +
    is the scaling diagonal matrix. +
    +
    + +

    +

    +call psb_spsm(alpha, t, x, beta, y, desc_a, info)
    +call psb_spsm(alpha, t, x, beta, y, desc_a, info,&
    +             & trans, unit, choice, diag, work)
    +
    + +

    +

    +
    + + + +
    Table 13: +Data types
    +
    + + + + + + + + + + + + + + + + +
    $T$, $x$, $y$, $D$, $\alpha$, $\beta$Subroutine
    Short Precision Realpsb_spsm
    Long Precision Realpsb_spsm
    Short Precision Complexpsb_spsm
    Long Precision Complexpsb_spsm
    +
    +
    +

    +
    + +

    +

    +
    Type:
    +
    Synchronous. +
    +
    On Entry
    +
    +
    +
    alpha
    +
    the scalar $\alpha$. +
    +Scope: global +
    +Type: required +
    +Intent: in. +
    +Specified as: a number of the data type indicated in +Table 13. +
    +
    t
    +
    the global portion of the sparse matrix +$T$. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: an object type specified in +§ 3. +
    +
    x
    +
    the local portion of global dense matrix +$x$. + +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +containing numbers of type specified in +Table 13. The rank of $x$ must be the same of $y$. +
    +
    beta
    +
    the scalar $\beta$. +
    +Scope: global +
    +Type: required +
    +Intent: in. +
    +Specified as: a number of the data type indicated in Table 13. +
    +
    y
    +
    the local portion of global dense matrix +$y$. + +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +containing numbers of type specified in +Table 13. The rank of $y$ must be the same of $x$. +
    +
    desc_a
    +
    contains data structures for communications. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: an object of type descdatapsb_desc_type. +
    +
    trans
    +
    specify with unitd the operation to perform. +
    +
    trans = 'N'
    +
    the operation is with no transposed matrix +
    +
    trans = 'T'
    +
    the operation is with transposed matrix. +
    +
    trans = 'C'
    +
    the operation is with conjugate transposed matrix. +
    +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Default: $trans = N$ +
    +Specified as: a character variable. +
    +
    unitd
    +
    specify with trans the operation to perform. +
    +
    unitd = 'U'
    +
    the operation is with no scaling +
    +
    unitd = 'L'
    +
    the operation is with left scaling +
    +
    unitd = 'R'
    +
    the operation is with right scaling. +
    +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Default: $unitd = U$ +
    +Specified as: a character variable. +
    +
    choice
    +
    specifies the update of overlap elements to be performed + on exit: +
    +
    +
    psb_none_ +
    +
    +
    psb_sum_ +
    +
    +
    psb_avg_ +
    +
    +
    psb_square_root_ +
    +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Default: psb_avg_ +
    +Specified as: an integer variable. +
    +
    diag
    +
    the diagonal scaling matrix. +
    +Scope: local +
    +Type: optional +
    +Intent: in. +
    +Default: +$diag(1) = 1 (no scaling)$ +
    +Specified as: a rank one array containing numbers of the type +indicated in Table 13. +
    +
    work
    +
    a work array. +
    +Scope: local +
    +Type: optional +
    +Intent: inout. +
    +Specified as: a rank one array of the same type of $x$ with the +TARGET attribute. + +

    +

    +
    On Return
    +
    +
    +
    y
    +
    the local portion of global dense matrix +$y$. + +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: an array of rank one or two +containing numbers of type specified in +Table 13. +
    +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +
    +
    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: Communication routines + Up: Computational routines + Previous: psb_spmm Sparse +   Contents + diff --git a/docs/html/node51.html b/docs/html/node51.html index b3bf8f64..d921e10b 100644 --- a/docs/html/node51.html +++ b/docs/html/node51.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_halo -- Halo Data Communication - +Communication routines + @@ -18,636 +18,63 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: psb_ovrl Overlap - Up: Communication routines - Previous: Communication routines -   Next: psb_halo Halo + Up: userhtml + Previous: psb_spsm Triangular +   Contents

    -

    -psb_halo -- Halo Data Communication -

    - -

    -These subroutines gathers the values of the halo -elements, and (optionally) scale the result: - -

    -

    -
    - - -\begin{displaymath}x \leftarrow \alpha x \end{displaymath} -
    -
    -

    -where: -
    -
    $x$
    -
    is a global dense submatrix. -
    -
    - -

    -

    -
    - - - -
    Table 13: -Data types
    -
    - - - - - - - - - - - - - - - - - - - -
    $\alpha$, $x$Subroutine
    Integerpsb_halo
    Short Precision Realpsb_halo
    Long Precision Realpsb_halo
    Short Precision Complexpsb_halo
    Long Precision Complexpsb_halo
    -
    -
    -

    -
    - -

    -

    -call psb_halo(x, desc_a, info)
    -call psb_halo(x, desc_a, info, alpha, work, data)
    -
    +

    +Communication routines +

    +The routines in this chapter implement various global communication operators +on vectors associated with a discretization mesh. For auxiliary communication +routines not tied to a discretization space see 6.

    -

    -
    Type:
    -
    Synchronous. -
    -
    On Entry
    -
    -
    -
    x
    -
    global dense matrix $x$. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one or two array with the TARGET attribute -containing numbers of type specified in -Table 13. -
    -
    desc_a
    -
    contains data structures for communications. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    alpha
    -
    the scalar $\alpha$. -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Default: $alpha = 1 $ -
    -Specified as: a number of the data type indicated in Table 13. -
    -
    work
    -
    the work array. -
    -Scope: local -
    -Type: optional -
    -Intent: inout. -
    -Specified as: a rank one array of the same type of $x$ with the -POINTER attribute. -
    -
    data
    -
    index list selector. -
    -Scope: global -
    -Type: optional -
    -Specified as: an integer. Values:psb_comm_halo_,psb_comm_mov_, -psb_comm_ext_, default: psb_comm_halo_. Chooses the -index list on which to base the data exchange. - -

    -

    -
    On Return
    -
    -
    -
    x
    -
    global dense result matrix $x$. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Returned as: a rank one or two array -containing numbers of type specified in -Table 13. -
    -
    info
    -
    the local portion of result submatrix $y$. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value that contains an error code. -
    -
    - -
    - - - -
    Figure 7: -Sample discretization mesh.
    -
    -\includegraphics[scale=0.45]{figures/try8x8.eps} - - -\rotatebox{-90}{\includegraphics[scale=0.45]{figures/try8x8}} - -
    -
    - -

    -Usage Example -Consider the discretization mesh depicted in fig. 7, -partitioned among two processes as shown by the dashed line; the data -distribution is such that each process will own 32 entries in the -index space, with a halo made of 8 entries placed at local indices 33 -through 40. If process 0 assigns an initial value of 1 to its entries -in the $x$ vector, and process 1 assigns a value of 2, then after a -call to psb_halo the contents of the local vectors will be the -following: -
    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -Process 0  -Process 1
    - I GLOB(I) X(I)   I GLOB(I) X(I)
    - 1 1 1.0   1 33 2.0
    - 2 2 1.0   2 34 2.0
    - 3 3 1.0   3 35 2.0
    - 4 4 1.0   4 36 2.0
    - 5 5 1.0   5 37 2.0
    - 6 6 1.0   6 38 2.0
    - 7 7 1.0   7 39 2.0
    - 8 8 1.0   8 40 2.0
    - 9 9 1.0   9 41 2.0
    - 10 10 1.0   10 42 2.0
    - 11 11 1.0   11 43 2.0
    - 12 12 1.0   12 44 2.0
    - 13 13 1.0   13 45 2.0
    - 14 14 1.0   14 46 2.0
    - 15 15 1.0   15 47 2.0
    - 16 16 1.0   16 48 2.0
    - 17 17 1.0   17 49 2.0
    - 18 18 1.0   18 50 2.0
    - 19 19 1.0   19 51 2.0
    - 20 20 1.0   20 52 2.0
    -21 21 1.0   21 53 2.0
    -22 22 1.0   22 54 2.0
    -23 23 1.0   23 55 2.0
    -24 24 1.0   24 56 2.0
    -25 25 1.0   25 57 2.0
    -26 26 1.0   26 58 2.0
    -27 27 1.0   27 59 2.0
    -28 28 1.0   28 60 2.0
    -29 29 1.0   29 61 2.0
    -30 30 1.0   30 62 2.0
    -31 31 1.0   31 63 2.0
    -32 32 1.0   32 64 2.0
    -33 33 2.0   33 25 1.0
    -34 34 2.0   34 26 1.0
    -35 35 2.0   35 27 1.0
    -36 36 2.0   36 28 1.0
    -37 37 2.0   37 29 1.0
    -38 38 2.0   38 30 1.0
    -39 39 2.0   39 31 1.0
    -40 40 2.0   40 32 1.0
    -
    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_ovrl Overlap - Up: Communication routines - Previous: Communication routines -   Contents - +

    + +Subsections + + + +

    diff --git a/docs/html/node52.html b/docs/html/node52.html index 095357e1..87aec440 100644 --- a/docs/html/node52.html +++ b/docs/html/node52.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_ovrl -- Overlap Update - +psb_halo -- Halo Data Communication + @@ -20,89 +20,74 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_gather Gather - Up: Communication routines - Previous: psb_halo Halo -   Next: psb_ovrl Overlap + Up: Communication routines + Previous: Communication routines +   Contents

    -

    -psb_ovrl -- Overlap Update +

    +psb_halo -- Halo Data Communication

    -These subroutines applies an overlap operator to the input vector: +These subroutines gathers the values of the halo +elements, and (optionally) scale the result:


    \begin{displaymath}x \leftarrow Q x \end{displaymath} + WIDTH="53" HEIGHT="24" BORDER="0" + SRC="img55.png" + ALT="\begin{displaymath}x \leftarrow \alpha x \end{displaymath}">

    where:
    $x$
    -
    is the global dense submatrix $x$ -
    -
    $Q$
    -
    is the overlap operator; it is the composition of two -operators $ P_a$ and $ P^{T}$. +
    is a global dense submatrix.


    -
    +
    @@ -110,22 +95,28 @@ Data types
    Table 14: Data types
    + + + - + - + - + - +
    $\alpha$, $x$ Subroutine
    Integerpsb_halo
    Short Precision Realpsb_ovrlpsb_halo
    Long Precision Realpsb_ovrlpsb_halo
    Short Precision Complexpsb_ovrlpsb_halo
    Long Precision Complexpsb_ovrlpsb_halo
    @@ -136,9 +127,9 @@ Data types

    -call psb_ovrl(x, desc_a, info)
    -call psb_ovrl(x, desc_a, info, update=update_type, work=work)
    -
    +call psb_halo(x, desc_a, info) +call psb_halo(x, desc_a, info, alpha, work, data) +

    @@ -150,8 +141,8 @@ call psb_ovrl(x, desc_a, info, update=update_type, work=work)
    x
    global dense matrix $x$.
    Scope: local @@ -160,9 +151,9 @@ Type: required
    Intent: inout.
    -Specified as: a rank one or two array +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 14. +Table 14.
    desc_a
    contains data structures for communications. @@ -175,40 +166,24 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    -
    update
    -
    Update operator. -
    -
    update = psb_none_
    -
    Do nothing; -
    -
    update = psb_add_
    -
    Sum overlap entries, i.e. apply $P^T$; -
    -
    update = psb_avg_
    -
    Average overlap entries, i.e. apply $P_aP^T$; -
    -
    +
    alpha
    +
    the scalar $\alpha$. +
    Scope: global
    -Intent: in. +Type: optional
    -Default: -$update\_type = psb\_avg\_ $ +Intent: in.
    -Scope: global +Default: $alpha = 1 $
    -Specified as: a integer variable. +Specified as: a number of the data type indicated in Table 14.
    work
    the work array. @@ -219,10 +194,21 @@ Type: optional
    Intent: inout.
    -Specified as: a one dimensional array of the same type of $x$. +Specified as: a rank one array of the same type of $x$. +
    +
    data
    +
    index list selector. +
    +Scope: global +
    +Type: optional +
    +Specified as: an integer. Values:psb_comm_halo_,psb_comm_mov_, +psb_comm_ext_, default: psb_comm_halo_. Chooses the +index list on which to base the data exchange.

    @@ -231,8 +217,8 @@ Specified as: a one dimensional array of the same type of
    x
    global dense result matrix $x$.
    Scope: local @@ -241,12 +227,15 @@ Type: required
    Intent: inout.
    -Specified as: an array of rank one or two +Returned as: a rank one or two array containing numbers of type specified in -Table 14. +Table 14.
    info
    -
    Error code. +
    the local portion of result submatrix $y$.
    Scope: local
    @@ -254,80 +243,46 @@ Type: required
    Intent: out.
    -An integer value; 0 means no error has been detected. +An integer value that contains an error code.
    -

    -Notes - -

      -
    1. If there is no overlap in the data distribution associated with - the descriptor, no operations are performed; -
    2. -
    3. The operator $ P^{T}$ performs the reduction sum of overlap -elements; it is a ``prolongation'' operator $P^T$ that -replicates overlap elements, accounting for the physical replication -of data; -
    4. -
    5. The operator $ P_a$ performs a scaling on the overlap elements by -the amount of replication; thus, when combined with the reduction -operator, it implements the average of replicated elements over all of -their instances. -
    6. -
    - -

    - -

    +
    -
    Figure 8: +Figure 7: Sample discretization mesh.
    \includegraphics[scale=0.65]{figures/try8x8_ov.eps} + WIDTH="357" HEIGHT="313" ALIGN="BOTTOM" BORDER="0" + SRC="img58.png" + ALT="\includegraphics[scale=0.45]{figures/try8x8.eps}"> \rotatebox{-90}{\includegraphics[scale=0.65]{figures/try8x8_ov}} + WIDTH="1" HEIGHT="2" ALIGN="BOTTOM" BORDER="0" + SRC="img57.png" + ALT="\rotatebox{-90}{\includegraphics[scale=0.45]{figures/try8x8}}">
    -Example of use -Consider the discretization mesh depicted in fig. 8, -partitioned among two processes as shown by the dashed lines, with an -overlap of 1 extra layer with respect to the partition of -fig. 7; the data -distribution is such that each process will own 40 entries in the -index space, with an overlap of 16 entries placed at local indices 25 -through 40; the halo will run from local index 41 through local index 48.. If process 0 assigns an initial value of 1 to its entries +

    +Usage Example +Consider the discretization mesh depicted in fig. 7, +partitioned among two processes as shown by the dashed line; the data +distribution is such that each process will own 32 entries in the +index space, with a halo made of 8 entries placed at local indices 33 +through 40. If process 0 assigns an initial value of 1 to its entries in the $x$ vector, and process 1 assigns a value of 2, then after a -call to psb_ovrl with psb_avg_ and a call to -psb_halo_ the contents of the local vectors will be the -following (showing a transition among the two subdomains) - -

    +call to psb_halo the contents of the local vectors will be the +following:

    @@ -350,7 +305,7 @@ Process 1 - + @@ -358,7 +313,7 @@ Process 1 - + @@ -366,7 +321,7 @@ Process 1 - + @@ -374,7 +329,7 @@ Process 1 - + @@ -382,7 +337,7 @@ Process 1 - + @@ -390,7 +345,7 @@ Process 1 - + @@ -398,7 +353,7 @@ Process 1 - + @@ -406,7 +361,7 @@ Process 1 - + @@ -505,7 +460,7 @@ Process 1 +21 @@ -513,7 +468,7 @@ Process 1 +22 @@ -521,7 +476,7 @@ Process 1 +23 @@ -529,7 +484,7 @@ Process 1 +24 @@ -537,195 +492,131 @@ Process 1 +25 - + +26 - + +27 - + +28 - + +29 - + +30 - + +31 - + +32 - + +33 - + - + +34 - + - + +35 - + - + +36 - + - + +37 - + - + +38 - + - + +39 - + - + +40 - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    1.0   1 33 1.5 2.0
    2 1.0   2 34 1.5 2.0
    3 1.0   3 35 1.5 2.0
    4 1.0   4 36 1.5 2.0
    5 1.0   5 37 1.5 2.0
    6 1.0   6 38 1.5 2.0
    7 1.0   7 39 1.5 2.0
    8 1.0   8 40 1.5 2.0
    9 2.0
    - 21 21 1.0   21 2.0
    - 22 22 1.0   22 2.0
    - 23 23 1.0   23 2.0
    - 24 24 1.0   24 2.0
    - 25 25 1.5 1.0   25 57 2.0
    - 26 26 1.5 1.0   26 58 2.0
    - 27 27 1.5 1.0   27 59 2.0
    - 28 28 1.5 1.0   28 60 2.0
    - 29 29 1.5 1.0   29 61 2.0
    - 30 30 1.5 1.0   30 62 2.0
    - 31 31 1.5 1.0   31 63 2.0
    - 32 32 1.5 1.0   32 64 2.0
    - 33 33 1.5 2.0   33 25 1.5 1.0
    - 34 34 1.5 2.0   34 26 1.5 1.0
    - 35 35 1.5 2.0   35 27 1.5 1.0
    - 36 36 1.5 2.0   36 28 1.5 1.0
    - 37 37 1.5 2.0   37 29 1.5 1.0
    - 38 38 1.5 2.0   38 30 1.5 1.0
    - 39 39 1.5 2.0   39 31 1.5 1.0
    - 40 40 1.5 2.0   40 32 1.5
    - 41 41 2.0   41 17 1.0
    - 42 42 2.0   42 18 1.0
    - 43 43 2.0   43 19 1.0
    - 44 44 2.0   44 20 1.0
    - 45 45 2.0   45 21 1.0
    - 46 46 2.0   46 22 1.0
    - 47 47 2.0   47 23 1.0
    - 48 48 2.0   48 24 1.0
    @@ -734,26 +625,26 @@ Process 1
    @@ -118,25 +110,22 @@ Data types
    Table 15: Data types
    + WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" + SRC="img20.png" + ALT="$x$"> - - - - + - + - + - +
    $x_i, y$ Subroutine
    Integerpsb_gather
    Short Precision Realpsb_gatherpsb_ovrl
    Long Precision Realpsb_gatherpsb_ovrl
    Short Precision Complexpsb_gatherpsb_ovrl
    Long Precision Complexpsb_gatherpsb_ovrl
    @@ -147,9 +136,9 @@ Data types

    -call psb_gather(glob_x, loc_x, desc_a, info, root)
    -call psb_gather(glob_x, loc_x, desc_a, info, root)
    -
    +call psb_ovrl(x, desc_a, info) +call psb_ovrl(x, desc_a, info, update=update_type, work=work) +

    @@ -159,21 +148,21 @@ call psb_gather(glob_x, loc_x, desc_a, info, root)
    On Entry
    -
    loc_x
    -
    the local portion of global dense matrix -$glob\_x$. +
    x
    +
    global dense matrix $x$.
    Scope: local
    -Type: required +Type: required
    -Intent: in. +Intent: inout.
    -Specified as: a rank one or two array containing numbers of the type -indicated in Table 15. +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +containing numbers of type specified in +Table 15.
    desc_a
    contains data structures for communications. @@ -186,43 +175,75 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    -
    root
    -
    The process that holds the global copy. If $root=-1$ all - the processes will have a copy of the global vector. -
    +
    update
    +
    Update operator. +
    +
    update = psb_none_
    +
    Do nothing; +
    +
    update = psb_add_
    +
    Sum overlap entries, i.e. apply $P^T$; +
    +
    update = psb_avg_
    +
    Average overlap entries, i.e. apply $P_aP^T$; +
    +
    Scope: global
    -Type: optional -
    Intent: in.
    -Specified as: an integer variable $-1\le root\le np-1$, default $-1$. + WIDTH="166" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" + SRC="img65.png" + ALT="$update\_type = psb\_avg\_ $"> +
    +Scope: global +
    +Specified as: a integer variable. +
    +
    work
    +
    the work array. +
    +Scope: local +
    +Type: optional +
    +Intent: inout. +
    +Specified as: a one dimensional array of the same type of $x$. + +

    On Return
    -
    glob_x
    -
    The array where the local parts must be gathered. +
    x
    +
    global dense result matrix $x$.
    -Scope: global +Scope: local
    -Type: required +Type: required
    -Intent: out. +Intent: inout.
    -Specified as: a rank one or two array. +Specified as: an array of rank one or two +containing numbers of type specified in +Table 15.
    info
    Error code. @@ -237,29 +258,502 @@ An integer value; 0 means no error has been detected.
    +

    +Notes + +

      +
    1. If there is no overlap in the data distribution associated with + the descriptor, no operations are performed; +
    2. +
    3. The operator $ P^{T}$ performs the reduction sum of overlap +elements; it is a ``prolongation'' operator $P^T$ that +replicates overlap elements, accounting for the physical replication +of data; +
    4. +
    5. The operator $ P_a$ performs a scaling on the overlap elements by +the amount of replication; thus, when combined with the reduction +operator, it implements the average of replicated elements over all of +their instances. +
    6. +
    + +

    + +

    + + + +
    Figure 8: +Sample discretization mesh.
    +
    +\includegraphics[scale=0.65]{figures/try8x8_ov.eps} + + +\rotatebox{-90}{\includegraphics[scale=0.65]{figures/try8x8_ov}} + +
    +
    + +Example of use +Consider the discretization mesh depicted in fig. 8, +partitioned among two processes as shown by the dashed lines, with an +overlap of 1 extra layer with respect to the partition of +fig. 7; the data +distribution is such that each process will own 40 entries in the +index space, with an overlap of 16 entries placed at local indices 25 +through 40; the halo will run from local index 41 through local index 48.. If process 0 assigns an initial value of 1 to its entries +in the $x$ vector, and process 1 assigns a value of 2, then after a +call to psb_ovrl with psb_avg_ and a call to +psb_halo_ the contents of the local vectors will be the +following (showing a transition among the two subdomains) + +

    +
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +Process 0  +Process 1
    + I GLOB(I) X(I)   I GLOB(I) X(I)
    + 1 1 1.0   1 33 1.5
    + 2 2 1.0   2 34 1.5
    + 3 3 1.0   3 35 1.5
    + 4 4 1.0   4 36 1.5
    + 5 5 1.0   5 37 1.5
    + 6 6 1.0   6 38 1.5
    + 7 7 1.0   7 39 1.5
    + 8 8 1.0   8 40 1.5
    + 9 9 1.0   9 41 2.0
    + 10 10 1.0   10 42 2.0
    + 11 11 1.0   11 43 2.0
    + 12 12 1.0   12 44 2.0
    + 13 13 1.0   13 45 2.0
    + 14 14 1.0   14 46 2.0
    + 15 15 1.0   15 47 2.0
    + 16 16 1.0   16 48 2.0
    + 17 17 1.0   17 49 2.0
    + 18 18 1.0   18 50 2.0
    + 19 19 1.0   19 51 2.0
    + 20 20 1.0   20 52 2.0
    + 21 21 1.0   21 53 2.0
    + 22 22 1.0   22 54 2.0
    + 23 23 1.0   23 55 2.0
    + 24 24 1.0   24 56 2.0
    + 25 25 1.5   25 57 2.0
    + 26 26 1.5   26 58 2.0
    + 27 27 1.5   27 59 2.0
    + 28 28 1.5   28 60 2.0
    + 29 29 1.5   29 61 2.0
    + 30 30 1.5   30 62 2.0
    + 31 31 1.5   31 63 2.0
    + 32 32 1.5   32 64 2.0
    + 33 33 1.5   33 25 1.5
    + 34 34 1.5   34 26 1.5
    + 35 35 1.5   35 27 1.5
    + 36 36 1.5   36 28 1.5
    + 37 37 1.5   37 29 1.5
    + 38 38 1.5   38 30 1.5
    + 39 39 1.5   39 31 1.5
    + 40 40 1.5   40 32 1.5
    + 41 41 2.0   41 17 1.0
    + 42 42 2.0   42 18 1.0
    + 43 43 2.0   43 19 1.0
    + 44 44 2.0   44 20 1.0
    + 45 45 2.0   45 21 1.0
    + 46 46 2.0   46 22 1.0
    + 47 47 2.0   47 23 1.0
    + 48 48 2.0   48 24 1.0
    +
    +


    - next - + up - previous - contents
    - Next: psb_scatter Scatter - Up: Communication routines - Previous: psb_ovrl Overlap -   Next: psb_gather Gather + Up: Communication routines + Previous: psb_halo Halo +   Contents diff --git a/docs/html/node54.html b/docs/html/node54.html index 5126c427..f67a8c54 100644 --- a/docs/html/node54.html +++ b/docs/html/node54.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_scatter -- Scatter Global Dense Matrix - +psb_gather -- Gather Global Dense Matrix + @@ -18,79 +18,81 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Data management routines - Up: Communication routines - Previous: psb_gather Gather -   Next: psb_scatter Scatter + Up: Communication routines + Previous: psb_ovrl Overlap +   Contents

    -

    -psb_scatter -- Scatter Global Dense Matrix +

    +psb_gather -- Gather Global Dense Matrix

    -These subroutines scatters the portions of global dense matrix owned -by a process to all the processes in the processes grid. +These subroutines collect the portions of global dense matrix +distributed over all process into one single array stored on one +process.


    \begin{displaymath}loc\_x_i \leftarrow scatter(glob\_x) \end{displaymath} + WIDTH="163" HEIGHT="28" BORDER="0" + SRC="img68.png" + ALT="\begin{displaymath}glob\_x \leftarrow collect(loc\_x_i) \end{displaymath}">

    where:
    $glob\_x$
    -
    is the global matrix $glob\_x_{1:m,1:n}$
    $loc\_x_i$
    is the local portion of global dense matrix on process $i$.
    $scatter$
    -
    is the scatter function. + WIDTH="48" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" + SRC="img72.png" + ALT="$collect$"> +
    is the collect function.


    -
    +
    @@ -116,25 +118,25 @@ Data types
    Table 16: Data types
    - + - + - + - + - +
    $x_i, y$ Subroutine
    Integerpsb_scatterpsb_gather
    Short Precision Realpsb_scatterpsb_gather
    Long Precision Realpsb_scatterpsb_gather
    Short Precision Complexpsb_scatterpsb_gather
    Long Precision Complexpsb_scatterpsb_gather
    @@ -145,8 +147,8 @@ Data types

    -call psb_scatter(glob_x, loc_x, desc_a, info, root)
    -call psb_scatter(glob_x, loc_x, desc_a, info, root)
    +call psb_gather(glob_x, loc_x, desc_a, info, root)
    +call psb_gather(glob_x, loc_x, desc_a, info, root)
     

    @@ -157,16 +159,21 @@ call psb_scatter(glob_x, loc_x, desc_a, info, root)

    On Entry
    -
    glob_x
    -
    The array that must be scattered into local pieces. +
    loc_x
    +
    the local portion of global dense matrix +$glob\_x$.
    -Scope: global +Scope: local
    Type: required
    Intent: in.
    -Specified as: a rank one or two array. +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +indicated in Table 16.
    desc_a
    contains data structures for communications. @@ -181,10 +188,10 @@ Specified as: a structured data of type descdatapsb_desc_type.
    root
    The process that holds the global copy. If $root=-1$ all - the processes have a copy of the global vector. + the processes will have a copy of the global vector.
    Scope: global
    @@ -196,31 +203,26 @@ Specified as: an integer variable $-1\le root\le np-1$, default $-1$.
    On Return
    -
    loc_x
    -
    the local portion of global dense matrix -$glob\_x$. +
    glob_x
    +
    The array where the local parts must be gathered.
    -Scope: local +Scope: global
    Type: required
    Intent: out.
    -Specified as: a rank one or two array containing numbers of the type -indicated in Table 16. +Specified as: a rank one or two array with the ALLOCATABLE attribute.
    info
    Error code. @@ -238,26 +240,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: Data management routines - Up: Communication routines - Previous: psb_gather Gather -   Next: psb_scatter Scatter + Up: Communication routines + Previous: psb_ovrl Overlap +   Contents diff --git a/docs/html/node55.html b/docs/html/node55.html index 789becdb..94e03587 100644 --- a/docs/html/node55.html +++ b/docs/html/node55.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Data management routines - +psb_scatter -- Scatter Global Dense Matrix + @@ -18,114 +18,248 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: psb_cdall Allocates - Up: userhtml - Previous: psb_scatter Scatter -   Next: Data management routines + Up: Communication routines + Previous: psb_gather Gather +   Contents

    -

    - +

    +psb_scatter -- Scatter Global Dense Matrix +

    + +

    +These subroutines scatters the portions of global dense matrix owned +by a process to all the processes in the processes grid. + +

    +

    +
    + + +\begin{displaymath}loc\_x_i \leftarrow scatter(glob\_x) \end{displaymath} +
    +
    +

    +where: +
    +
    $glob\_x$
    +
    is the global matrix +$glob\_x_{1:m,1:n}$ +
    +
    $loc\_x_i$
    +
    is the local portion of global dense matrix on +process $i$. +
    +
    $scatter$
    +
    is the scatter function. +
    +
    + +

    +

    +
    + + + +
    Table 17: +Data types
    +
    + + + + + + + + + + + + + + + + + + + +
    $x_i, y$Subroutine
    Integerpsb_scatter
    Short Precision Realpsb_scatter
    Long Precision Realpsb_scatter
    Short Precision Complexpsb_scatter
    Long Precision Complexpsb_scatter
    +
    +
    +


    -Data management routines -

    -


    - -Subsections +
    +call psb_scatter(glob_x, loc_x, desc_a, info, root)
    +call psb_scatter(glob_x, loc_x, desc_a, info, root)
    +
    - - -

    +

    +

    +
    Type:
    +
    Synchronous. +
    +
    On Entry
    +
    +
    +
    glob_x
    +
    The array that must be scattered into local pieces. +
    +Scope: global +
    +Type: required +
    +Intent: in. +
    +Specified as: a rank one or two array. +
    +
    desc_a
    +
    contains data structures for communications. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type descdatapsb_desc_type. +
    +
    root
    +
    The process that holds the global copy. If $root=-1$ all + the processes have a copy of the global vector. +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Specified as: an integer variable +$-1\le root\le np-1$, default $-1$. +
    +
    On Return
    +
    +
    +
    loc_x
    +
    the local portion of global dense matrix +$glob\_x$. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +Specified as: a rank one or two array containing numbers of the type +indicated in Table 17. +
    +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +
    +
    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: Data management routines + Up: Communication routines + Previous: psb_gather Gather +   Contents + diff --git a/docs/html/node56.html b/docs/html/node56.html index 46f6434c..c4f500cb 100644 --- a/docs/html/node56.html +++ b/docs/html/node56.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cdall -- Allocates a communication descriptor - +Data management routines + @@ -18,407 +18,114 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: psb_cdins Communication - Up: Data management routines - Previous: Data management routines -   Next: psb_cdall Allocates + Up: userhtml + Previous: psb_scatter Scatter +   Contents

    -

    -psb_cdall -- Allocates a communication descriptor -

    - -

    -

    -call psb_cdall(icontxt, desc_a, info,mg=mg,parts=parts)
    -call psb_cdall(icontxt, desc_a, info,vg=vg,[mg=mg,flag=flag])
    -call psb_cdall(icontxt, desc_a, info,vl=vl,[nl=nl,globalcheck=.true.])
    -call psb_cdall(icontxt, desc_a, info,nl=nl)
    -call psb_cdall(icontxt, desc_a, info,mg=mg,repl=.true.)
    -
    - -

    -This subroutine initializes the communication descriptor associated -with an index space. One of the optional arguments -parts, vg, vl, nl or repl -must be specified, thereby choosing -the specific initialization strategy. -

    -
    On Entry
    -
    -
    -
    Type:
    -
    Synchronous. -
    -
    icontxt
    -
    the communication context. -
    -Scope:global. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer value. -
    -
    vg
    -
    Data allocation: each index -$i\in \{1\dots mg\}$ is allocated - to process $vg(i)$. -
    -Scope:global. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer array. -
    -
    flag
    -
    Specifies whether entries in $vg$ are zero- or one-based. -
    -Scope:global. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer value $0,1$, default $0$. - -

    -

    -
    mg
    -
    the (global) number of rows of the problem. -
    -Scope:global. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer value. It is required if parts or -repl is specified, it is optional if vg is specified. -
    -
    parts
    -
    the subroutine that defines the partitioning scheme. -
    -Scope:global. -
    -Type:required. -
    -Specified as: a subroutine. -
    -
    vl
    -
    Data allocation: the set of global indices - $vl(1:nl)$ belonging to the calling process. -
    -Scope:local. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer array. -
    -
    nl
    -
    Data allocation: in a generalized block-row distribution the - number of indices belonging to the current process. -
    -Scope:local. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer value. May be specified together with -vl. -
    -
    repl
    -
    Data allocation: build a replicated index space (i.e. all - processes own all indices). -
    -Scope:global. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: the logical value .true. -
    -
    globalcheck
    -
    Data allocation: do global checks on the local - index lists vl -
    -Scope:global. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: a logical value, default: .true. -
    -
    - -

    -

    -
    On Return
    -
    -
    -
    desc_a
    -
    the communication descriptor. -
    -Scope:local. -
    -Type:required. -
    -Intent: out. -
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    info
    -
    Error code. -
    -Scope: local +

    +
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -

    -
    +Data management routines +

    -Notes +


    + +Subsections -
      -
    1. One of the optional arguments parts, vg, - vl, nl or repl must be specified, thereby choosing the - initialization strategy as follows: -
      -
      parts
      -
      In this case we have a subroutine specifying the mapping - between global indices and process/local index pairs. If this - optional argument is specified, then it is mandatory to - specify the argument mg as well. - The subroutine must conform to the following interface: -
      -  interface 
      -     subroutine psb_parts(glob_index,mg,np,pv,nv)
      -       integer, intent (in)  :: glob_index,np,mg
      -       integer, intent (out) :: nv, pv(*)
      -     end subroutine psb_parts
      -  end interface
      -
      - The input arguments are: -
      -
      glob_index
      -
      The global index to be mapped; - -
      -
      np
      -
      The number of processes in the mapping; - -
      -
      mg
      -
      The total number of global rows in the mapping; - -
      -
      - The output arguments are: -
      -
      nv
      -
      The number of entries in pv; - -
      -
      pv
      -
      A vector containing the indices of the processes to - which the global index should be assigend; each entry must satisfy - -$0\le pv(i) < np$; if $nv>1$ we have an index assigned to multiple - processes, i.e. we have an overlap among the subdomains. - -
      -
      -
      -
      vg
      -
      In this case the association between an index and a process - is specified via an integer vector vg(1:mg); - each index -$i\in \{1\dots mg\}$ is assigned to process $vg(i)$. - The vector vg must be identical on all - calling processes; its entries may have the ranges $(0\dots np-1)$ - or $(1\dots np)$ according to the value of flag. - The size $mg$ may be specified via the optional argument mg; - the default is to use the entire vector vg, thus having - mg=size(vg). -
      -
      vl
      -
      In this case we are specifying the list of indices - vl(1:nl) assigned to the current process; thus, the global - problem size $mg$ is given by - the range of the aggregate of the individual vectors vl specified - in the calling processes. The size may be specified via the optional - argument nl; the default is to use the entire vector vl, thus having - nl=size(vl). - If globalcheck=.true. the subroutine will check how many - times each entry in the global index space $(1\dots mg)$ is - specified in the input lists vl, thus allowing for the - presence of overlap in the input, and checking for ``orphan'' - indices. If globalcheck=.false., the subroutine will not - check for overlap, and may be significantly faster, but the user - is implicitly guaranteeing that there are neither orphan nor - overlap indices. -
      -
      nl
      -
      If this argument is specified alone (i.e. without vl) - the result is a generalized row-block distribution in which each - process $I$ gets assigned a consecutive chunk of $N_I=nl$ global - indices. -
      -
      repl
      -
      This arguments specifies to replicate all indices on - all processes. This is a special purpose data allocation that is - useful in the construction of some multilevel preconditioners. -
      -
      -
    2. -
    3. On exit from this routine the descriptor is in the build - state. -
    4. -
    5. Calling the routine with vg or parts implies that - every process will scan the entire index space to figure out the - local indices. -
    6. -
    7. Overlapped indices are possible with both parts and - vl invocations. -
    8. -
    9. When the subroutine is invoked with vl in - conjunction with globalcheck=.true., it will perform a scan - of the index space to search for overlap or orphan indices. -
    10. -
    11. When the subroutine is invoked with vl in - conjunction with globalcheck=.false., no index space scan - will take place. Thus it is the responsibility of the user to make - sure that the indices specified in vl have neither orphans nor - overlaps; if this assumption fails, results will be - unpredictable. -
    12. -
    13. Orphan and overlap indices are - impossible by construction when the subroutine is invoked with - nl (alone), or vg. -
    14. -
    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_cdins Communication - Up: Data management routines - Previous: Data management routines -   Contents - + + +

    diff --git a/docs/html/node57.html b/docs/html/node57.html index 26755012..5687cd32 100644 --- a/docs/html/node57.html +++ b/docs/html/node57.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cdins -- Communication descriptor insert routine - +psb_cdall -- Allocates a communication descriptor + @@ -20,98 +20,207 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_cdasb Communication - Up: Data management routines - Previous: psb_cdall Allocates -   Next: psb_cdins Communication + Up: Data management routines + Previous: Data management routines +   Contents

    -

    -psb_cdins -- Communication descriptor insert routine +

    +psb_cdall -- Allocates a communication descriptor

    -call psb_cdins(nz, ia, ja, desc_a, info)
    +call psb_cdall(icontxt, desc_a, info,mg=mg,parts=parts)
    +call psb_cdall(icontxt, desc_a, info,vg=vg,[mg=mg,flag=flag])
    +call psb_cdall(icontxt, desc_a, info,vl=vl,[nl=nl,globalcheck=.true.,lidx=lidx])
    +call psb_cdall(icontxt, desc_a, info,nl=nl)
    +call psb_cdall(icontxt, desc_a, info,mg=mg,repl=.true.)
     

    -This subroutine examines the edges of the graph associated with the -discretization mesh (and isomorphic to the sparsity pattern of a -linear system coefficient matrix), storing them as necessary into the -communication descriptor. - -

    +This subroutine initializes the communication descriptor associated +with an index space. One of the optional arguments +parts, vg, vl, nl or repl +must be specified, thereby choosing +the specific initialization strategy.

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    +
    On Entry
    -
    nz
    -
    the number of points being inserted. +
    Type:
    +
    Synchronous. +
    +
    icontxt
    +
    the communication context.
    -Scope: local. +Scope:global.
    -Type: required. +Type:required.
    Intent: in.
    Specified as: an integer value.
    -
    ia
    -
    the indices of the starting vertex of the edges being inserted. +
    vg
    +
    Data allocation: each index +$i\in \{1\dots mg\}$ is allocated + to process $vg(i)$. +
    +Scope:global. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer array. +
    +
    flag
    +
    Specifies whether entries in $vg$ are zero- or one-based. +
    +Scope:global. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer value $0,1$, default $0$. + +

    +

    +
    mg
    +
    the (global) number of rows of the problem. +
    +Scope:global. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer value. It is required if parts or +repl is specified, it is optional if vg is specified. +
    +
    parts
    +
    the subroutine that defines the partitioning scheme. +
    +Scope:global. +
    +Type:required. +
    +Specified as: a subroutine. +
    +
    vl
    +
    Data allocation: the set of global indices + $vl(1:nl)$ belonging to the calling process. +
    +Scope:local. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer array. +
    +
    nl
    +
    Data allocation: in a generalized block-row distribution the + number of indices belonging to the current process.
    -Scope: local. +Scope:local. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer value. May be specified together with +vl. +
    +
    repl
    +
    Data allocation: build a replicated index space + (i.e. all processes own all indices). +
    +Scope:global. +
    +Type:optional. +
    +Intent: in.
    -Type: required. +Specified as: the logical value .true. +
    +
    globalcheck
    +
    Data allocation: do global checks on the local + index lists vl +
    +Scope:global. +
    +Type:optional.
    Intent: in.
    -Specified as: an integer array of length $nz$. +Specified as: a logical value, default: .true.
    -
    ja
    -
    the indices of the end vertex of the edges being inserted. +
    lidx
    +
    Data allocation: the set of local indices + $lidx(1:nl)$ to be assigned to the global indices $vl$.
    -Scope: local. +Scope:local.
    -Type: required. +Type:optional.
    Intent: in.
    -Specified as: an integer array of length $nz$. +Specified as: an integer array.
    @@ -121,13 +230,13 @@ Specified as: an integer array of length
    desc_a
    -
    the updated communication descriptor. +
    the communication descriptor.
    Scope:local.
    Type:required.
    -Intent: inout. +Intent: out.
    Specified as: a structured data of type descdatapsb_desc_type.
    @@ -143,41 +252,199 @@ Intent: out. An integer value; 0 means no error has been detected. + +

    Notes

      -
    1. This routine may only be called if the descriptor is in the - build state; +
    2. One of the optional arguments parts, vg, + vl, nl or repl must be specified, thereby choosing the + initialization strategy as follows: +
      +
      parts
      +
      In this case we have a subroutine specifying the mapping + between global indices and process/local index pairs. If this + optional argument is specified, then it is mandatory to + specify the argument mg as well. + The subroutine must conform to the following interface: +
      +  interface 
      +     subroutine psb_parts(glob_index,mg,np,pv,nv)
      +       integer, intent (in)  :: glob_index,np,mg
      +       integer, intent (out) :: nv, pv(*)
      +     end subroutine psb_parts
      +  end interface
      +
      + The input arguments are: +
      +
      glob_index
      +
      The global index to be mapped; + +
      +
      np
      +
      The number of processes in the mapping; + +
      +
      mg
      +
      The total number of global rows in the mapping; + +
      +
      + The output arguments are: +
      +
      nv
      +
      The number of entries in pv; + +
      +
      pv
      +
      A vector containing the indices of the processes to + which the global index should be assigend; each entry must satisfy + +$0\le pv(i) < np$; if $nv>1$ we have an index assigned to multiple + processes, i.e. we have an overlap among the subdomains. + +
      +
      +
      +
      vg
      +
      In this case the association between an index and a process + is specified via an integer vector vg(1:mg); + each index +$i\in \{1\dots mg\}$ is assigned to process $vg(i)$. + The vector vg must be identical on all + calling processes; its entries may have the ranges $(0\dots np-1)$ + or $(1\dots np)$ according to the value of flag. + The size $mg$ may be specified via the optional argument mg; + the default is to use the entire vector vg, thus having + mg=size(vg). +
      +
      vl
      +
      In this case we are specifying the list of indices + vl(1:nl) assigned to the current process; thus, the global + problem size $mg$ is given by + the range of the aggregate of the individual vectors vl specified + in the calling processes. The size may be specified via the optional + argument nl; the default is to use the entire vector + vl, thus having nl=size(vl). + If globalcheck=.true. the subroutine will check how many + times each entry in the global index space $(1\dots mg)$ is + specified in the input lists vl, thus allowing for the + presence of overlap in the input, and checking for ``orphan'' + indices. If globalcheck=.false., the subroutine will not + check for overlap, and may be significantly faster, but the user + is implicitly guaranteeing that there are neither orphan nor + overlap indices. +
      +
      lidx
      +
      The optional argument lidx is available for + those cases in which the user has already established a + global-to-local mapping; if it is specified, each index in + vl(i) will be mapped to the corresponding local index + lidx(i). When specifying the argument lidx the user + would also likely employ lidx in calls to psb_cdins + and local in calls to psb_spins and psb_geins; + see also sec. 2.3.1. +
      +
      nl
      +
      If this argument is specified alone (i.e. without vl) + the result is a generalized row-block distribution in which each + process $I$ gets assigned a consecutive chunk of $N_I=nl$ global + indices. +
      +
      repl
      +
      This arguments specifies to replicate all indices on + all processes. This is a special purpose data allocation that is + useful in the construction of some multilevel preconditioners. +
      +
      +
    3. +
    4. On exit from this routine the descriptor is in the build + state.
    5. -
    6. This routine automatically ignores edges that do not -insist on the current process, i.e. edges for which neither the starting -nor the end vertex belong to the current process. +
    7. Calling the routine with vg or parts implies that + every process will scan the entire index space to figure out the + local indices. +
    8. +
    9. Overlapped indices are possible with both parts and + vl invocations. +
    10. +
    11. When the subroutine is invoked with vl in + conjunction with globalcheck=.true., it will perform a scan + of the index space to search for overlap or orphan indices. +
    12. +
    13. When the subroutine is invoked with vl in + conjunction with globalcheck=.false., no index space scan + will take place. Thus it is the responsibility of the user to make + sure that the indices specified in vl have neither orphans nor + overlaps; if this assumption fails, results will be + unpredictable. +
    14. +
    15. Orphan and overlap indices are + impossible by construction when the subroutine is invoked with + nl (alone), or vg.


    - next - + up - previous - contents
    - Next: psb_cdasb Communication - Up: Data management routines - Previous: psb_cdall Allocates -   Next: psb_cdins Communication + Up: Data management routines + Previous: Data management routines +   Contents diff --git a/docs/html/node58.html b/docs/html/node58.html index e69857e5..f14bf2f0 100644 --- a/docs/html/node58.html +++ b/docs/html/node58.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cdasb -- Communication descriptor assembly routine - +psb_cdins -- Communication descriptor insert routine + @@ -20,64 +20,140 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_cdcpy Copies - Up: Data management routines - Previous: psb_cdins Communication -   Next: psb_cdasb Communication + Up: Data management routines + Previous: psb_cdall Allocates +   Contents

    -

    -psb_cdasb -- Communication descriptor assembly routine +

    +psb_cdins -- Communication descriptor insert routine

    -call psb_cdasb(desc_a, info)
    +call psb_cdins(nz, ia, ja, desc_a, info [,ila,jla])
    +call psb_cdins(nz,ja,desc,info[,jla,mask,lidx])
     
    +

    +This subroutine examines the edges of the graph associated with the +discretization mesh (and isomorphic to the sparsity pattern of a +linear system coefficient matrix), storing them as necessary into the +communication descriptor. In the first form the edges are specified as +pairs of indices $ia(i),ja(i)$; the starting index $ia(i)$ should +belong to the current process. +In the second form only the remote indices $ja(i)$ are specified. +

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    -
    desc_a
    -
    the communication descriptor. +
    nz
    +
    the number of points being inserted.
    -Scope:local. +Scope: local.
    -Type:required. +Type: required.
    -Intent: inout. +Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: an integer value. +
    +
    ia
    +
    the indices of the starting vertex of the edges being inserted. +
    +Scope: local. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer array of length $nz$. +
    +
    ja
    +
    the indices of the end vertex of the edges being inserted. +
    +Scope: local. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer array of length $nz$. +
    +
    mask
    +
    Mask entries in ja, they are inserted only when the + corresponding mask entries are .true. +
    +Scope: local. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: a logical array of length $nz$, default .true.. +
    +
    lidx
    +
    User defined local indices for ja. +
    +Scope: local. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an integer array of length $nz$.
    @@ -87,7 +163,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
    desc_a
    -
    the communication descriptor. +
    the updated communication descriptor.
    Scope:local.
    @@ -108,17 +184,77 @@ Intent: out.
    An integer value; 0 means no error has been detected.
    +
    ila
    +
    the local indices of the starting vertex of the edges being inserted. +
    +Scope: local. +
    +Type: optional. +
    +Intent: out. +
    +Specified as: an integer array of length $nz$. +
    +
    jla
    +
    the local indices of the end vertex of the edges being inserted. +
    +Scope: local. +
    +Type: optional. +
    +Intent: out. +
    +Specified as: an integer array of length $nz$. + +

    +

    Notes
      -
    1. On exit from this routine the descriptor is in the assembled - state. +
    2. This routine may only be called if the descriptor is in the + build state; +
    3. +
    4. This routine automatically ignores edges that do not +insist on the current process, i.e. edges for which neither the starting +nor the end vertex belong to the current process. +
    5. +
    6. The second form of this routine will be useful when dealing with + user-specified index mappings; see also 2.3.1.

    -


    +
    + + +next + +up + +previous + +contents +
    + Next: psb_cdasb Communication + Up: Data management routines + Previous: psb_cdall Allocates +   Contents + diff --git a/docs/html/node59.html b/docs/html/node59.html index 81fe7c90..bcacd90c 100644 --- a/docs/html/node59.html +++ b/docs/html/node59.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cdcpy -- Copies a communication descriptor - +psb_cdasb -- Communication descriptor assembly routine + @@ -20,66 +20,64 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_cdfree Frees - Up: Data management routines - Previous: psb_cdasb Communication -   Next: psb_cdcpy Copies + Up: Data management routines + Previous: psb_cdins Communication +   Contents

    -

    -psb_cdcpy -- Copies a communication descriptor +

    +psb_cdasb -- Communication descriptor assembly routine

    -call psb_cdcpy(desc_in, desc_out, info)
    +call psb_cdasb(desc_a, info)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    -
    desc_in
    +
    desc_a
    the communication descriptor.
    Scope:local.
    Type:required.
    -Intent: in. +Intent: inout.
    Specified as: a structured data of type descdatapsb_desc_type. - -

    @@ -88,14 +86,14 @@ Specified as: a structured data of type descdatapsb_desc_type.
    On Return
    -
    desc_out
    -
    the communication descriptor copy. +
    desc_a
    +
    the communication descriptor.
    Scope:local.
    Type:required.
    -Intent: out. +Intent: inout.
    Specified as: a structured data of type descdatapsb_desc_type.
    @@ -111,6 +109,13 @@ Intent: out. An integer value; 0 means no error has been detected. +Notes + +
      +
    1. On exit from this routine the descriptor is in the assembled + state. +
    2. +



    diff --git a/docs/html/node6.html b/docs/html/node6.html index af78326b..6804fb8e 100644 --- a/docs/html/node6.html +++ b/docs/html/node6.html @@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -26,33 +26,35 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Programming model - Up: Next: User-defined index mappings + Up: General overview - Previous: Previous: Library contents -   Contents

    -

    -Application structure +

    + +
    +Application structure

    @@ -62,7 +64,7 @@ space to which there corresponds an index space and a matrix sparsity pattern. As an example, consider a cell-centered finite-volume discretization of the Navier-Stokes equations on a simulation domain; the index space $1\dots n$ is isomorphic to the set of cell centers, whereas the pattern of the associated linear system matrix is @@ -73,7 +75,7 @@ by the discretization stencil. Thus the first order of business is to establish an index space, and this is done with a call to psb_cdall in which we specify the size of the index space $n$ and the allocation of the elements of the index space to the various processes making up the MPI (virtual) @@ -82,7 +84,7 @@ parallel machine.

    The index space is partitioned among processes, and this creates a mapping from the ``global'' numbering $1\dots n$ to a numbering ``local'' to each process; each process $1\dots n_{\hbox{row}_i}$, each element of which corresponds to a certain element of $1\dots n$. The user does not set explicitly this mapping; when the application needs to indicate to which element of the index @@ -107,7 +109,7 @@ library will translate into the appropriate ``local'' numbering.

    For a given index space $1\dots n$ there are many possible associated topologies, i.e. many different discretization stencils; thus the @@ -242,28 +244,37 @@ doubling of memory occupation, and thus would be almost always far from optimal.

    +


    + +Subsections + + +
    - next - up - previous - contents
    - Next: Programming model - Up: Next: User-defined index mappings + Up: General overview - Previous: Previous: Library contents -   Contents diff --git a/docs/html/node60.html b/docs/html/node60.html index 0d218d1d..5a95618c 100644 --- a/docs/html/node60.html +++ b/docs/html/node60.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cdfree -- Frees a communication descriptor - +psb_cdcpy -- Copies a communication descriptor + @@ -20,64 +20,66 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_cdbldext Build - Up: Data management routines - Previous: psb_cdcpy Copies -   Next: psb_cdfree Frees + Up: Data management routines + Previous: psb_cdasb Communication +   Contents

    -

    -psb_cdfree -- Frees a communication descriptor +

    +psb_cdcpy -- Copies a communication descriptor

    -call psb_cdfree(desc_a, info)
    +call psb_cdcpy(desc_in, desc_out, info)
     

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    -
    desc_a
    -
    the communication descriptor to be freed. +
    desc_in
    +
    the communication descriptor.
    Scope:local.
    Type:required.
    -Intent: inout. +Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type. + +

    @@ -86,6 +88,17 @@ Specified as: a structured data of type descdatapsb_desc_type.
    On Return
    +
    desc_out
    +
    the communication descriptor copy. +
    +Scope:local. +
    +Type:required. +
    +Intent: out. +
    +Specified as: a structured data of type descdatapsb_desc_type. +
    info
    Error code.
    diff --git a/docs/html/node61.html b/docs/html/node61.html index 5e66d933..b709dcf4 100644 --- a/docs/html/node61.html +++ b/docs/html/node61.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cdbldext -- Build an extended communication descriptor - +psb_cdfree -- Frees a communication descriptor + @@ -20,51 +20,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_spall Allocates - Up: Data management routines - Previous: psb_cdfree Frees -   Next: psb_cdbldext Build + Up: Data management routines + Previous: psb_cdcpy Copies +   Contents

    -

    -psb_cdbldext -- Build an extended communication - descriptor +

    +psb_cdfree -- Frees a communication descriptor

    -call psb_cdbldext(a,desc_a,nl,desc_out, info, extype)
    +call psb_cdfree(desc_a, info)
     

    -This subroutine builds an extended communication descriptor, based on -the input descriptor desc_a and on the stencil specified -through the input sparse matrix a.

    Type:
    Synchronous. @@ -72,54 +68,16 @@ through the input sparse matrix a.
    On Entry
    -
    a
    -
    A sparse matrix -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: a structured data type. -
    desc_a
    -
    the communication descriptor. +
    the communication descriptor to be freed.
    Scope:local.
    Type:required.
    -Intent: in. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    nl
    -
    the number of additional layers desired. -
    -Scope:global. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer value $nl\ge 0$. -
    -
    extype
    -
    the kind of estension required. -
    -Scope:global. -
    -Type:optional . -
    -Intent: in. +Intent: inout.
    -Specified as: an integer value -psb_ovt_xhal_, psb_ovt_asov_, default: psb_ovt_xhal_ - -

    +Specified as: a structured data of type descdatapsb_desc_type.

    @@ -128,17 +86,6 @@ Specified as: an integer value
    On Return
    -
    desc_out
    -
    the extended communication descriptor. -
    -Scope:local. -
    -Type:required. -
    -Intent: inout. -
    -Specified as: a structured data of type descdatapsb_desc_type. -
    info
    Error code.
    @@ -153,48 +100,7 @@ An integer value; 0 means no error has been detected.

    -Notes - -

      -
    1. Specifying psb_ovt_xhal_ for the extype argument - the user will obtain a descriptor for a domain partition in which - the additional layers are fetched as part of an (extended) halo; - however the index-to-process mapping is identical to that of the - base descriptor; -
    2. -
    3. Specifying psb_ovt_asov_ for the extype argument - the user will obtain a descriptor with an overlapped decomposition: - the additional layer is aggregated to the local subdomain (and thus - is an overlap), and a new halo extending beyond the last additional - layer is formed. -
    4. -
    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_spall Allocates - Up: Data management routines - Previous: psb_cdfree Frees -   Contents - +

    diff --git a/docs/html/node62.html b/docs/html/node62.html index b1d42575..e7be36c6 100644 --- a/docs/html/node62.html +++ b/docs/html/node62.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spall -- Allocates a sparse matrix - +psb_cdbldext -- Build an extended communication descriptor + @@ -20,47 +20,51 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_spins Insert - Up: Data management routines - Previous: psb_cdbldext Build -   Next: psb_spall Allocates + Up: Data management routines + Previous: psb_cdfree Frees +   Contents

    -

    -psb_spall -- Allocates a sparse matrix +

    +psb_cdbldext -- Build an extended communication + descriptor

    -call psb_spall(a, desc_a, info, nnz)
    +call psb_cdbldext(a,desc_a,nl,desc_out, info, extype)
     

    +This subroutine builds an extended communication descriptor, based on +the input descriptor desc_a and on the stencil specified +through the input sparse matrix a.

    Type:
    Synchronous. @@ -68,6 +72,16 @@ call psb_spall(a, desc_a, info, nnz)
    On Entry
    +
    a
    +
    A sparse matrix +Scope:local. +
    +Type:required. +
    +Intent: in. +
    +Specified as: a structured data type. +
    desc_a
    the communication descriptor.
    @@ -77,19 +91,35 @@ Type:required.
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    nl
    +
    the number of additional layers desired. +
    +Scope:global. +
    +Type:required. +
    +Intent: in. +
    +Specified as: an integer value $nl\ge 0$.
    -
    nnz
    -
    An estimate of the number of nonzeroes in the local - part of the assembled matrix. +
    extype
    +
    the kind of estension required.
    -Scope: global. +Scope:global.
    -Type: optional. +Type:optional .
    Intent: in.
    -Specified as: an integer value. +Specified as: an integer value +psb_ovt_xhal_, psb_ovt_asov_, default: psb_ovt_xhal_ + +

    @@ -98,16 +128,16 @@ Specified as: an integer value.
    On Return
    -
    a
    -
    the matrix to be allocated. +
    desc_out
    +
    the extended communication descriptor.
    -Scope:local +Scope:local.
    -Type:required +Type:required.
    -Intent: out. +Intent: inout.
    -Specified as: a structured data of type spdatapsb_Tspmat_type. +Specified as: a structured data of type descdatapsb_desc_type.
    info
    Error code. @@ -121,47 +151,48 @@ Intent: out. An integer value; 0 means no error has been detected.
    + +

    Notes

      -
    1. On exit from this routine the sparse matrix is in the build - state. -
    2. -
    3. The descriptor may be in either the build or assembled state. +
    4. Specifying psb_ovt_xhal_ for the extype argument + the user will obtain a descriptor for a domain partition in which + the additional layers are fetched as part of an (extended) halo; + however the index-to-process mapping is identical to that of the + base descriptor;
    5. -
    6. Providing a good estimate for the number of nonzeroes $nnz$ in - the assembled matrix may substantially improve performance in the - matrix build phase, as it will reduce or eliminate the need for - (potentially multiple) data reallocations. +
    7. Specifying psb_ovt_asov_ for the extype argument + the user will obtain a descriptor with an overlapped decomposition: + the additional layer is aggregated to the local subdomain (and thus + is an overlap), and a new halo extending beyond the last additional + layer is formed.


    - next - + up - previous - contents
    - Next: psb_spins Insert - Up: Data management routines - Previous: psb_cdbldext Build -   Next: psb_spall Allocates + Up: Data management routines + Previous: psb_cdfree Frees +   Contents diff --git a/docs/html/node63.html b/docs/html/node63.html index c78ad2e4..60b16a94 100644 --- a/docs/html/node63.html +++ b/docs/html/node63.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spins -- Insert a cloud of elements into a sparse matrix - +psb_spall -- Allocates a sparse matrix + @@ -20,57 +20,56 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_spasb Sparse - Up: Data management routines - Previous: psb_spall Allocates -   Next: psb_spins Insert + Up: Data management routines + Previous: psb_cdbldext Build +   Contents

    -

    -psb_spins -- Insert a cloud of elements into a sparse - matrix +

    +psb_spall -- Allocates a sparse matrix

    -call psb_spins(nz, ia, ja, val, a, desc_a, info)
    +call psb_spall(a, desc_a, info, nnz)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    -
    nz
    -
    the number of elements to be inserted. +
    desc_a
    +
    the communication descriptor.
    Scope:local.
    @@ -78,65 +77,20 @@ Type:required.
    Intent: in.
    -Specified as: an integer scalar. +Specified as: a structured data of type descdatapsb_desc_type.
    -
    ia
    -
    the row indices of the elements to be inserted. +
    nnz
    +
    An estimate of the number of nonzeroes in the local + part of the assembled matrix.
    -Scope:local. +Scope: global.
    -Type:required. +Type: optional.
    Intent: in.
    -Specified as: an integer array of size $nz$. +Specified as: an integer value.
    -
    ja
    -
    the column indices of the elements to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer array of size $nz$. -
    -
    val
    -
    the elements to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an array of size $nz$. Must be of the same type and kind -of the aspk component of the sparse matrix $a$. -
    -
    desc_a
    -
    The communication descriptor. -
    -Scope: local. -
    -Type: required. -
    -Intent: inout. -
    -Specified as: a variable of type descdatapsb_desc_type. -

    @@ -145,27 +99,16 @@ Specified as: a variable of type descdatapsb_desc_type.

    a
    -
    the matrix into which elements will be inserted. +
    the matrix to be allocated.
    Scope:local
    Type:required
    -Intent: inout. +Intent: out.
    Specified as: a structured data of type spdatapsb_Tspmat_type.
    -
    desc_a
    -
    The communication descriptor. -
    -Scope: local. -
    -Type: required. -
    -Intent: inout. -
    -Specified as: a variable of type descdatapsb_desc_type. -
    info
    Error code.
    @@ -178,59 +121,47 @@ Intent: out. An integer value; 0 means no error has been detected.
    - -

    Notes

      -
    1. On entry to this routine the descriptor may be in either the - build or assembled state. +
    2. On exit from this routine the sparse matrix is in the build + state.
    3. -
    4. On entry to this routine the sparse matrix may be in either the - build or update state. +
    5. The descriptor may be in either the build or assembled state.
    6. -
    7. If the descriptor is in the build state, then the sparse matrix - must also be in the build state; the action of the routine is to - (implicitly) call psb_cdins to add entries to the sparsity - pattern; each sparse matrix entry implicitly defines a graph edge, - that is passed to the descriptor routine for the appropriate - processing. -
    8. -
    9. Any coefficients from matrix rows not assigned to the calling - process are silently ignored; -
    10. -
    11. If the descriptor is in the assembled state, then any entries in - the sparse matrix that would generate additional communication - requirements will be ignored; -
    12. -
    13. If the matrix is in the update state, any entries in positions - that were not present in the original matrix will be ignored. +
    14. Providing a good estimate for the number of nonzeroes $nnz$ in + the assembled matrix may substantially improve performance in the + matrix build phase, as it will reduce or eliminate the need for + (potentially multiple) data reallocations.


    - next - + up - previous - contents
    - Next: psb_spasb Sparse - Up: Data management routines - Previous: psb_spall Allocates -   Next: psb_spins Insert + Up: Data management routines + Previous: psb_cdbldext Build +   Contents diff --git a/docs/html/node64.html b/docs/html/node64.html index fa82c8aa..ff9464c3 100644 --- a/docs/html/node64.html +++ b/docs/html/node64.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spasb -- Sparse matrix assembly routine - +psb_spins -- Insert a cloud of elements into a sparse matrix + @@ -20,56 +20,57 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_spfree Frees - Up: Data management routines - Previous: psb_spins Insert -   Next: psb_spasb Sparse + Up: Data management routines + Previous: psb_spall Allocates +   Contents

    -

    -psb_spasb -- Sparse matrix assembly routine +

    +psb_spins -- Insert a cloud of elements into a sparse + matrix

    -call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
    +call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
     

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    -
    desc_a
    -
    the communication descriptor. +
    nz
    +
    the number of elements to be inserted.
    Scope:local.
    @@ -77,52 +78,76 @@ Type:required.
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: an integer scalar.
    -
    afmt
    -
    the storage format for the sparse matrix. +
    ia
    +
    the row indices of the elements to be inserted.
    -Scope: local. +Scope:local.
    -Type: optional. +Type:required.
    Intent: in.
    -Specified as: an array of characters. Defalt: 'CSR'. +Specified as: an integer array of size $nz$.
    -
    upd
    -
    Provide for updates to the matrix coefficients. +
    ja
    +
    the column indices of the elements to be inserted.
    -Scope: global. +Scope:local.
    -Type: optional. +Type:required.
    Intent: in.
    -Specified as: integer, possible values: psb_upd_srch_, psb_upd_perm_ +Specified as: an integer array of size $nz$.
    -
    dupl
    -
    How to handle duplicate coefficients. +
    val
    +
    the elements to be inserted.
    -Scope: global. +Scope:local.
    -Type: optional. +Type:required.
    Intent: in.
    -Specified as: integer, possible values: psb_dupl_ovwrt_, -psb_dupl_add_, psb_dupl_err_. +Specified as: an array of size $nz$. Must be of the same type and kind +of the coefficients of the sparse matrix $a$.
    -
    mold
    -
    The desired dynamic type for the internal matrix storage. +
    desc_a
    +
    The communication descriptor.
    -Scope: local. +Scope: local.
    -Type: optional. +Type: required.
    -Intent: in. +Intent: inout. +
    +Specified as: a variable of type descdatapsb_desc_type. +
    +
    local
    +
    Whether the entries in the indices vectors ia, + ja are already in local numbering. +
    +Scope:local.
    -Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat. +Type:optional. +
    +Specified as: a logical value; default: .false.. + +

    @@ -132,7 +157,7 @@ Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_
    a
    -
    the matrix to be assembled. +
    the matrix into which elements will be inserted.
    Scope:local
    @@ -142,6 +167,17 @@ Intent: inout.
    Specified as: a structured data of type spdatapsb_Tspmat_type.
    +
    desc_a
    +
    The communication descriptor. +
    +Scope: local. +
    +Type: required. +
    +Intent: inout. +
    +Specified as: a variable of type descdatapsb_desc_type. +
    info
    Error code.
    @@ -159,51 +195,79 @@ An integer value; 0 means no error has been detected. Notes
      -
    1. On entry to this routine the descriptor must be in the - assembled state, i.e. psb_cdasb must already have been called. +
    2. On entry to this routine the descriptor may be in either the + build or assembled state. +
    3. +
    4. On entry to this routine the sparse matrix may be in either the + build or update state. +
    5. +
    6. If the descriptor is in the build state, then the sparse matrix + must also be in the build state; the action of the routine is to + (implicitly) call psb_cdins to add entries to the sparsity + pattern; each sparse matrix entry implicitly defines a graph edge, + that is passed to the descriptor routine for the appropriate + processing; +
    7. +
    8. The coefficients to be inserted are represented by the ordered + triples +$ia(i),ja(i),val(i)$, for $i=1,\dots,nz$; these triples + should belong to the current process, i.e. $ia(i)$ should be one of + the local indices, but are otherwise arbitrary;
    9. -
    10. The sparse matrix may be in either the build or update state; +
    11. There is no + requirement that a given row must be passed in its entirety to a + single call to this routine: the buildup of a row may be split into + as many calls as desired;
    12. -
    13. Duplicate entries are detected and handled in both build and - update state, with the exception of the error action that is only - taken in the build state, i.e. on the first assembly; +
    14. Coefficients from different rows may also be mixed up freely + in a single call, according to the application needs;
    15. -
    16. If the update choice is psb_upd_perm_, then subsequent - calls to psb_spins to update the matrix must be arranged in - such a way as to produce exactly the same sequence of coefficient - values as encountered at the first assembly; +
    17. Any coefficients from matrix rows not owned by the calling + process are silently ignored;
    18. -
    19. The output storage format need not be the same on all - processes; +
    20. If the descriptor is in the assembled state, then any entries in + the sparse matrix that would generate additional communication + requirements are ignored;
    21. -
    22. On exit from this routine the matrix is in the assembled state, - and thus is suitable for the computational routines. +
    23. If the matrix is in the update state, any entries in positions + that were not present in the original matrix are ignored.


    - next - + up - previous - contents
    - Next: psb_spfree Frees - Up: Data management routines - Previous: psb_spins Insert -   Next: psb_spasb Sparse + Up: Data management routines + Previous: psb_spall Allocates +   Contents diff --git a/docs/html/node65.html b/docs/html/node65.html index 760bc475..206eeea6 100644 --- a/docs/html/node65.html +++ b/docs/html/node65.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spfree -- Frees a sparse matrix - +psb_spasb -- Sparse matrix assembly routine + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_sprn Reinit - Up: Data management routines - Previous: psb_spasb Sparse -   Next: psb_spfree Frees + Up: Data management routines + Previous: psb_spins Insert +   Contents

    -

    -psb_spfree -- Frees a sparse matrix +

    +psb_spasb -- Sparse matrix assembly routine

    -call psb_spfree(a, desc_a, info)
    +call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
     

    @@ -68,17 +68,6 @@ call psb_spfree(a, desc_a, info)

    On Entry
    -
    a
    -
    the matrix to be freed. -
    -Scope:local -
    -Type:required -
    -Intent: inout. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    desc_a
    the communication descriptor.
    @@ -90,6 +79,51 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    +
    afmt
    +
    the storage format for the sparse matrix. +
    +Scope: local. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an array of characters. Defalt: 'CSR'. +
    +
    upd
    +
    Provide for updates to the matrix coefficients. +
    +Scope: global. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: integer, possible values: psb_upd_srch_, psb_upd_perm_ +
    +
    dupl
    +
    How to handle duplicate coefficients. +
    +Scope: global. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: integer, possible values: psb_dupl_ovwrt_, +psb_dupl_add_, psb_dupl_err_. +
    +
    mold
    +
    The desired dynamic type for the internal matrix storage. +
    +Scope: local. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat. +

    @@ -97,6 +131,17 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    +
    a
    +
    the matrix to be assembled. +
    +Scope:local +
    +Type:required +
    +Intent: inout. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    info
    Error code.
    @@ -111,7 +156,56 @@ An integer value; 0 means no error has been detected.

    -


    +Notes + +
      +
    1. On entry to this routine the descriptor must be in the + assembled state, i.e. psb_cdasb must already have been called. +
    2. +
    3. The sparse matrix may be in either the build or update state; +
    4. +
    5. Duplicate entries are detected and handled in both build and + update state, with the exception of the error action that is only + taken in the build state, i.e. on the first assembly; +
    6. +
    7. If the update choice is psb_upd_perm_, then subsequent + calls to psb_spins to update the matrix must be arranged in + such a way as to produce exactly the same sequence of coefficient + values as encountered at the first assembly; +
    8. +
    9. The output storage format need not be the same on all + processes; +
    10. +
    11. On exit from this routine the matrix is in the assembled state, + and thus is suitable for the computational routines. +
    12. +
    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: psb_spfree Frees + Up: Data management routines + Previous: psb_spins Insert +   Contents + diff --git a/docs/html/node66.html b/docs/html/node66.html index a9b43af6..16b4a9f3 100644 --- a/docs/html/node66.html +++ b/docs/html/node66.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_sprn -- Reinit sparse matrix structure for psblas routines. - +psb_spfree -- Frees a sparse matrix + @@ -20,45 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_geall Allocates - Up: Data management routines - Previous: psb_spfree Frees -   Next: psb_sprn Reinit + Up: Data management routines + Previous: psb_spasb Sparse +   Contents

    -

    -psb_sprn -- Reinit sparse matrix structure for psblas - routines. +

    +psb_spfree -- Frees a sparse matrix

    -call psb_sprn(a, decsc_a, info, clear)
    +call psb_spfree(a, desc_a, info)
     

    @@ -70,7 +69,7 @@ call psb_sprn(a, decsc_a, info, clear)

    a
    -
    the matrix to be reinitialized. +
    the matrix to be freed.
    Scope:local
    @@ -91,17 +90,6 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    -
    clear
    -
    Choose whether to zero out matrix coefficients -
    -Scope:local. -
    -Type:optional. -
    -Intent: in. -
    -Default: true. -

    @@ -121,13 +109,6 @@ Intent: out. An integer value; 0 means no error has been detected. -Notes - -

      -
    1. On exit from this routine the sparse matrix is in the update - state. -
    2. -



    diff --git a/docs/html/node67.html b/docs/html/node67.html index 6783d0f5..36d0c035 100644 --- a/docs/html/node67.html +++ b/docs/html/node67.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_geall -- Allocates a dense matrix - +psb_sprn -- Reinit sparse matrix structure for psblas routines. + @@ -20,44 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_geins Dense - Up: Data management routines - Previous: psb_sprn Reinit -   Next: psb_geall Allocates + Up: Data management routines + Previous: psb_spfree Frees +   Contents

    -

    -psb_geall -- Allocates a dense matrix +

    +psb_sprn -- Reinit sparse matrix structure for psblas + routines.

    -call psb_geall(x, desc_a, info, n, lb)
    +call psb_sprn(a, decsc_a, info, clear)
     

    @@ -68,52 +69,38 @@ call psb_geall(x, desc_a, info, n, lb)

    On Entry
    -
    desc_a
    -
    The communication descriptor. +
    a
    +
    the matrix to be reinitialized.
    -Scope: local +Scope:local
    -Type: required +Type:required
    -Intent: in. +Intent: inout.
    -Specified as: a variable of type descdatapsb_desc_type. -
    -
    n
    -
    The number of columns of the dense matrix to be allocated. +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    desc_a
    +
    the communication descriptor.
    -Scope: local +Scope:local.
    -Type: optional +Type:required.
    Intent: in.
    -Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a -rank-1 array. +Specified as: a structured data of type descdatapsb_desc_type.
    -
    lb
    -
    The lower bound for the column index range of the dense matrix to be allocated. +
    clear
    +
    Choose whether to zero out matrix coefficients
    -Scope: local +Scope:local.
    -Type: optional +Type:optional.
    Intent: in.
    -Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a -rank-1 array. +Default: true.
    @@ -122,18 +109,6 @@ rank-1 array.
    On Return
    -
    x
    -
    The dense matrix to be allocated. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -Specified as: a rank one or two array with the ALLOCATABLE -attribute, of type real, complex or integer. -
    info
    Error code.
    @@ -146,6 +121,13 @@ Intent: out. An integer value; 0 means no error has been detected.
    +Notes + +
      +
    1. On exit from this routine the sparse matrix is in the update + state. +
    2. +



    diff --git a/docs/html/node68.html b/docs/html/node68.html index a193b124..1d11c658 100644 --- a/docs/html/node68.html +++ b/docs/html/node68.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_geins -- Dense matrix insertion routine - +psb_geall -- Allocates a dense matrix + @@ -20,123 +20,100 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_geasb Assembly - Up: Data management routines - Previous: psb_geall Allocates -   Next: psb_geins Dense + Up: Data management routines + Previous: psb_sprn Reinit +   Contents

    -

    -psb_geins -- Dense matrix insertion routine +

    +psb_geall -- Allocates a dense matrix

    -call psb_geins(m, irw, val, x, desc_a, info,dupl)
    +call psb_geall(x, desc_a, info, n, lb)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    -
    m
    -
    Number of rows in $val$ to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer value. -
    -
    irw
    -
    Indices of the rows to be inserted. Specifically, row $i$ - of $val$ will be inserted into the local row corresponding to the - global row index $irw(i)$. -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer array. -
    -
    val
    -
    the dense submatrix to be inserted. +
    desc_a
    +
    The communication descriptor.
    -Scope:local. +Scope: local
    -Type:required. +Type: required
    Intent: in.
    -Specified as: a rank 1 or 2 array. -Specified as: an integer value. -
    -
    desc_a
    -
    the communication descriptor. +Specified as: a variable of type descdatapsb_desc_type. +
    +
    n
    +
    The number of columns of the dense matrix to be allocated.
    -Scope:local. +Scope: local
    -Type:required. +Type: optional
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a +rank-1 array.
    -
    dupl
    -
    How to handle duplicate coefficients. +
    lb
    +
    The lower bound for the column index range of the dense matrix to be allocated.
    -Scope: global. +Scope: local
    -Type: optional. +Type: optional
    Intent: in.
    -Specified as: integer, possible values: psb_dupl_ovwrt_, -psb_dupl_add_. +Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a +rank-1 array.
    @@ -146,16 +123,16 @@ Specified as: integer, possible values: psb_dupl_ovwrt_,
    x
    -
    the output dense matrix. +
    The dense matrix to be allocated.
    Scope: local
    Type: required
    -Intent: inout. +Intent: out.
    -Specified as: a rank one or two array with the ALLOCATABLE -attribute, of type real, complex or integer. +Specified as: a rank one or two array with the ALLOCATABLE attribute +or an object of type vdatapsb_T_vect_type, of type real, complex or integer.
    info
    Error code. @@ -170,40 +147,29 @@ An integer value; 0 means no error has been detected.
    -

    -Notes - -

      -
    1. Dense vectors/matrices do not have an associated state; -
    2. -
    3. Duplicate entries are either overwritten or added, there is no - provision for raising an error condition. -
    4. -
    -


    - next - + up - previous - contents
    - Next: psb_geasb Assembly - Up: Data management routines - Previous: psb_geall Allocates -   Next: psb_geins Dense + Up: Data management routines + Previous: psb_sprn Reinit +   Contents diff --git a/docs/html/node69.html b/docs/html/node69.html index 3a3ec72f..0f80b457 100644 --- a/docs/html/node69.html +++ b/docs/html/node69.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_geasb -- Assembly a dense matrix - +psb_geins -- Dense matrix insertion routine + @@ -20,65 +20,136 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_gefree Frees - Up: Data management routines - Previous: psb_geins Dense -   Next: psb_geasb Assembly + Up: Data management routines + Previous: psb_geall Allocates +   Contents

    -

    -psb_geasb -- Assembly a dense matrix +

    +psb_geins -- Dense matrix insertion routine

    -call psb_geasb(x, desc_a, info)
    +call psb_geins(m, irw, val, x, desc_a, info [,dupl,local])
     

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    +
    m
    +
    Number of rows in $val$ to be inserted. +
    +Scope:local. +
    +Type:required. +
    +Intent: in. +
    +Specified as: an integer value. +
    +
    irw
    +
    Indices of the rows to be inserted. Specifically, row $i$ + of $val$ will be inserted into the local row corresponding to the + global row index $irw(i)$. +Scope:local. +
    +Type:required. +
    +Intent: in. +
    +Specified as: an integer array. +
    +
    val
    +
    the dense submatrix to be inserted. +
    +Scope:local. +
    +Type:required. +
    +Intent: in. +
    +Specified as: a rank 1 or 2 array. +Specified as: an integer value. +
    desc_a
    -
    The communication descriptor. +
    the communication descriptor.
    -Scope: local +Scope:local.
    -Type: required +Type:required.
    Intent: in.
    -Specified as: a variable of type descdatapsb_desc_type. -
    +Specified as: a structured data of type descdatapsb_desc_type. + +
    dupl
    +
    How to handle duplicate coefficients. +
    +Scope: global. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: integer, possible values: psb_dupl_ovwrt_, +psb_dupl_add_. +
    +
    local
    +
    Whether the entries in the index vector irw, + are already in local numbering. +
    +Scope:local. +
    +Type:optional. +
    +Specified as: a logical value; default: .false.. + +

    +

    @@ -87,7 +158,7 @@ Specified as: a variable of type descdatapsb_desc_type.

    x
    -
    The dense matrix to be assembled. +
    the output dense matrix.
    Scope: local
    @@ -95,8 +166,8 @@ Type: required
    Intent: inout.
    -Specified as: a rank one or two array with the ALLOCATABLE -attribute, of type real, complex or integer. +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type, of +type real, complex or integer.
    info
    Error code. @@ -110,7 +181,43 @@ Intent: out. An integer value; 0 means no error has been detected.
    -

    + +

    +Notes + +

      +
    1. Dense vectors/matrices do not have an associated state; +
    2. +
    3. Duplicate entries are either overwritten or added, there is no + provision for raising an error condition. +
    4. +
    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: psb_geasb Assembly + Up: Data management routines + Previous: psb_geall Allocates +   Contents + diff --git a/docs/html/node7.html b/docs/html/node7.html index f85e6b2f..4c3606c4 100644 --- a/docs/html/node7.html +++ b/docs/html/node7.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Programming model - +User-defined index mappings + @@ -19,105 +19,93 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: Data Structures and Classes - Up: General overview - Previous: Next: Programming model + Up: Application structure + Previous: Application structure -   Contents

    -

    -Programming model -

    - -

    -The PSBLAS librarary is based on the Single Program Multiple Data -(SPMD) programming model: each process participating in the -computation performs the same actions on a chunk of data. Parallelism -is thus data-driven. - -

    -Because of this structure, many subroutines coordinate their action -across the various processes, thus providing an implicit -synchronization point, and therefore must be -called simultaneously by all processes participating in the -computation. This is certainly true for the data allocation and -assembly routines, for all the computational routines and for some of -the tools routines. +

    + +
    +User-defined index mappings +

    +PSBLAS supports user-defined global to local index mappings, subject +to the constraints outlined in sec. 2.3: -

    -However there are many cases where no synchronization, and indeed no -communication among processes, is implied; for instance, all the routines in -sec. 3.5 are only acting on the local data structures, -and thus may be called independently. The most important case is that -of the coefficient insertion routines: since the number of -coefficients in the sparse and dense matrices varies among the -processors, and since the user is free to choose an arbitrary order in -builiding the matrix entries, these routines cannot imply a -synchronization. +

      +
    1. The set of indices owned locally must be mapped to the set + +$1\dots n_{\hbox{row}_i}$; +
    2. +
    3. The set of halo points must be mapped to the set + +$n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$; +
    4. +
    +but otherwise the mapping is arbitrary. The user application is +responsible to ensure consistency of this mapping; some errors may be +caught by the library, but this is not guaranteed. +The application structure to +support this usage is as follows: -

    -Throughout this user's guide each subroutine will be clearly indicated -as: -

    -
    Synchronous:
    -
    must be called simultaneously by all the - processes in the relevant communication context; -
    -
    Asynchronous:
    -
    may be called in a totally independent manner. -
    -
    +
      +
    1. Initialize index space with + psb_cdall(ictx,desc,info,vl=vl,lidx=lidx) passing the vectors + vl(:) containing the set of global indices owned by the + current process and lidx(:) containing the corresponding + local indices; +
    2. +
    3. Add the halo points ja(:) and their associated local + indices lidx(:) with a(some) call(s) to + psb_cdins(nz,ja,desc,info,lidx=lidx); +
    4. +
    5. Assemble the descriptor with psb_cdasb; +
    6. +
    7. Build the sparse matrices and vectors, optionally making use in + psb_spins and psb_geins of the local argument + specifying that the indices in ia, ja and irw, + respectively, are already local indices. +
    8. +

    -


    - - -next - -up - -previous - -contents -
    - Next: Data Structures and Classes - Up: General overview - Previous: Application structure -   Contents - +

    diff --git a/docs/html/node70.html b/docs/html/node70.html index 740b2e35..e1346fae 100644 --- a/docs/html/node70.html +++ b/docs/html/node70.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_gefree -- Frees a dense matrix - +psb_geasb -- Assembly a dense matrix + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_gelp Applies - Up: Data management routines - Previous: psb_geasb Assembly -   Next: psb_gefree Frees + Up: Data management routines + Previous: psb_geins Dense +   Contents

    -

    -psb_gefree -- Frees a dense matrix +

    +psb_geasb -- Assembly a dense matrix

    -call psb_gefree(x, desc_a, info)
    +call psb_geasb(x, desc_a, info, mold)
     

    @@ -68,21 +68,6 @@ call psb_gefree(x, desc_a, info)

    On Entry
    -
    x
    -
    The dense matrix to - be freed. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one or two array with the ALLOCATABLE -attribute, of type real, complex or integer. -
    -

    -

    desc_a
    The communication descriptor.
    @@ -94,6 +79,21 @@ Intent: in.
    Specified as: a variable of type descdatapsb_desc_type.
    +
    mold
    +
    The desired dynamic type for the internal vector storage. +
    +Scope: local. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type; this is +only allowed when $x$ is of type vdatapsb_T_vect_type. +

    @@ -101,6 +101,18 @@ Specified as: a variable of type descdatapsb_desc_type.

    On Return
    +
    x
    +
    The dense matrix to be assembled. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one or two array with the ALLOCATABLE or an +object of type vdatapsb_T_vect_type, of type real, complex or integer. +
    info
    Error code.
    @@ -113,8 +125,6 @@ Intent: out. An integer value; 0 means no error has been detected.
    - -



    diff --git a/docs/html/node71.html b/docs/html/node71.html index a2984d2f..eff0bcc2 100644 --- a/docs/html/node71.html +++ b/docs/html/node71.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_gelp -- Applies a left permutation to a dense matrix - +psb_gefree -- Frees a dense matrix + @@ -20,99 +20,79 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_glob_to_loc Global - Up: Data management routines - Previous: psb_gefree Frees -   Next: psb_gelp Applies + Up: Data management routines + Previous: psb_geasb Assembly +   Contents

    -

    -psb_gelp -- Applies a left permutation to a dense - matrix +

    +psb_gefree -- Frees a dense matrix

    -call psb_gelp(trans, iperm, x, info)
    +call psb_gefree(x, desc_a, info)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    -
    trans
    -
    A character that specifies whether to permute $A$ or $A^T$. +
    x
    +
    The dense matrix to + be freed.
    Scope: local
    Type: required
    -Intent: in. -
    -Specified as: a single character with value 'N' for $A$ or 'T' for $A^T$. -
    -
    iperm
    -
    An integer array containing permutation information. -
    -Scope: local -
    -Type: required +Intent: inout.
    -Intent: in. +Specified as: a rank one or two array with the ALLOCATABLE or an +object of type vdatapsb_T_vect_type, of type real, complex or integer.
    -Specified as: an integer one-dimensional array. -
    -
    x
    -
    The dense matrix to be permuted. +

    +

    +
    desc_a
    +
    The communication descriptor.
    Scope: local
    Type: required
    -Intent: inout. +Intent: in.
    -Specified as: a one or two dimensional array. +Specified as: a variable of type descdatapsb_desc_type.
    diff --git a/docs/html/node72.html b/docs/html/node72.html index 13e6dc5d..15710b18 100644 --- a/docs/html/node72.html +++ b/docs/html/node72.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_glob_to_loc -- Global to local indices convertion - +psb_gelp -- Applies a left permutation to a dense matrix + @@ -20,46 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_loc_to_glob Local - Up: Data management routines - Previous: psb_gelp Applies -   Next: psb_glob_to_loc Global + Up: Data management routines + Previous: psb_gefree Frees +   Contents

    -

    -psb_glob_to_loc -- Global to local indices - convertion +

    +psb_gelp -- Applies a left permutation to a dense + matrix

    -call psb_glob_to_loc(x, y, desc_a, info, iact,owned)
    -call psb_glob_to_loc(x, desc_a, info, iact,owned)
    +call psb_gelp(trans, iperm, x, info)
     

    @@ -70,51 +69,51 @@ call psb_glob_to_loc(x, desc_a, info, iact,owned)

    On Entry
    -
    x
    -
    An integer vector of indices to be converted. +
    trans
    +
    A character that specifies whether to permute $A$ or $A^T$.
    Scope: local
    Type: required
    -Intent: in, inout. +Intent: in.
    -Specified as: a rank one integer array. +Specified as: a single character with value 'N' for $A$ or 'T' for $A^T$.
    -
    desc_a
    -
    the communication descriptor. +
    iperm
    +
    An integer array containing permutation information.
    -Scope:local. +Scope: local
    -Type:required. +Type: required
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    iact
    -
    specifies action to be taken in case of range errors. -Scope: global -
    -Type: optional -
    -Intent: in. +Specified as: an integer one-dimensional array. +
    +
    x
    +
    The dense matrix to be permuted.
    -Specified as: a character variable Ignore, Warning or -Abort, default Ignore. -
    -
    owned
    -
    Specfies valid range of input -Scope: global +Scope: local
    -Type: optional +Type: required
    -Intent: in. +Intent: inout.
    -If true, then only indices strictly owned by the current process are -considered valid, if false then halo indices are also -accepted. Default: false. -
    +Specified as: a one or two dimensional array. +

    @@ -122,44 +121,6 @@ accepted. Default: false.

    On Return
    -
    x
    -
    If $y$ is not present, - then $x$ is overwritten with the translated integer indices. -Scope: global -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one integer array. -
    -
    y
    -
    If $y$ is present, - then $y$ is overwritten with the translated integer indices, and $x$ - is left unchanged. -Scope: global -
    -Type: optional -
    -Intent: out. -
    -Specified as: a rank one integer array. -
    info
    Error code.
    @@ -174,42 +135,7 @@ An integer value; 0 means no error has been detected.

    -Notes - -

      -
    1. If an input index is out of range, then the corresponding output - index is set to a negative number; -
    2. -
    3. The default Ignore means that the negative output is the - only action taken on an out-of-range input. -
    4. -
    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_loc_to_glob Local - Up: Data management routines - Previous: psb_gelp Applies -   Contents - +

    diff --git a/docs/html/node73.html b/docs/html/node73.html index 40f0ad5f..d5c941e9 100644 --- a/docs/html/node73.html +++ b/docs/html/node73.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_loc_to_glob -- Local to global indices conversion - +psb_glob_to_loc -- Global to local indices convertion + @@ -20,46 +20,46 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_is_owned - Up: Data management routines - Previous: psb_glob_to_loc Global -   Next: psb_loc_to_glob Local + Up: Data management routines + Previous: psb_gelp Applies +   Contents

    -

    -psb_loc_to_glob -- Local to global indices - conversion +

    +psb_glob_to_loc -- Global to local indices + convertion

    -call psb_loc_to_glob(x, y, desc_a, info, iact)
    -call psb_loc_to_glob(x, desc_a, info, iact)
    +call psb_glob_to_loc(x, y, desc_a, info, iact,owned)
    +call psb_glob_to_loc(x, desc_a, info, iact,owned)
     

    @@ -103,6 +103,18 @@ Intent: in. Specified as: a character variable Ignore, Warning or Abort, default Ignore.

    +
    owned
    +
    Specfies valid range of input +Scope: global +
    +Type: optional +
    +Intent: in. +
    +If true, then only indices strictly owned by the current process are +considered valid, if false then halo indices are also +accepted. Default: false. +

    @@ -112,12 +124,12 @@ Specified as: a character variable Ignore, Warning or

    x
    If $y$ is not present, then $x$ is overwritten with the translated integer indices. Scope: global
    @@ -129,15 +141,15 @@ Specified as: a rank one integer array.
    y
    If $y$ is not present, + WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" + SRC="img21.png" + ALT="$y$"> is present, then $y$ is overwritten with the translated integer indices, and $x$ is left unchanged. Scope: global @@ -161,29 +173,41 @@ An integer value; 0 means no error has been detected.
    +

    +Notes + +

      +
    1. If an input index is out of range, then the corresponding output + index is set to a negative number; +
    2. +
    3. The default Ignore means that the negative output is the + only action taken on an out-of-range input. +
    4. +
    +


    - next - + up - previous - contents
    - Next: psb_is_owned - Up: Data management routines - Previous: psb_glob_to_loc Global -   Next: psb_loc_to_glob Local + Up: Data management routines + Previous: psb_gelp Applies +   Contents diff --git a/docs/html/node74.html b/docs/html/node74.html index d25641fd..89014d0a 100644 --- a/docs/html/node74.html +++ b/docs/html/node74.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_is_owned - +psb_loc_to_glob -- Local to global indices conversion + @@ -20,44 +20,46 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_owned_index - Up: Data management routines - Previous: psb_loc_to_glob Local -   Next: psb_is_owned + Up: Data management routines + Previous: psb_glob_to_loc Global +   Contents

    -

    -psb_is_owned +

    +psb_loc_to_glob -- Local to global indices + conversion

    -call psb_is_owned(x, desc_a)
    +call psb_loc_to_glob(x, y, desc_a, info, iact)
    +call psb_loc_to_glob(x, desc_a, info, iact)
     

    @@ -69,15 +71,15 @@ call psb_is_owned(x, desc_a)

    x
    -
    Integer index. +
    An integer vector of indices to be converted.
    Scope: local
    Type: required
    -Intent: in. +Intent: in, inout.
    -Specified as: a scalar integer. +Specified as: a rank one integer array.
    desc_a
    the communication descriptor. @@ -90,6 +92,17 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    +
    iact
    +
    specifies action to be taken in case of range errors. +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Specified as: a character variable Ignore, Warning or +Abort, default Ignore. +

    @@ -97,32 +110,82 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    -
    Function value
    -
    A logical mask which is true if - $x$ is owned by the current process -Scope: local +
    x
    +
    If $y$ is not present, + then $x$ is overwritten with the translated integer indices. +Scope: global
    Type: required
    +Intent: inout. +
    +Specified as: a rank one integer array. +
    +
    y
    +
    If $y$ is not present, + then $y$ is overwritten with the translated integer indices, and $x$ + is left unchanged. +Scope: global +
    +Type: optional +
    Intent: out. -
    +
    +Specified as: a rank one integer array. + +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +

    -Notes - -

      -
    1. This routine returns a .true. value for an index - that is strictly owned by the current process, excluding the halo - indices -
    2. -
    - -

    -


    +
    + + +next + +up + +previous + +contents +
    + Next: psb_is_owned + Up: Data management routines + Previous: psb_glob_to_loc Global +   Contents + diff --git a/docs/html/node75.html b/docs/html/node75.html index 16e56ca5..d4349792 100644 --- a/docs/html/node75.html +++ b/docs/html/node75.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_owned_index - +psb_is_owned + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_is_local - Up: Data management routines - Previous: psb_is_owned -   Next: psb_owned_index + Up: Data management routines + Previous: psb_loc_to_glob Local +   Contents

    -

    -psb_owned_index +

    +psb_is_owned

    -call psb_owned_index(y, x, desc_a, info)
    +call psb_is_owned(x, desc_a)
     

    @@ -69,15 +69,15 @@ call psb_owned_index(y, x, desc_a, info)

    x
    -
    Integer indices. +
    Integer index.
    Scope: local
    Type: required
    -Intent: in, inout. +Intent: in.
    -Specified as: a scalar or a rank one integer array. +Specified as: a scalar integer.
    desc_a
    the communication descriptor. @@ -90,17 +90,6 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    -
    iact
    -
    specifies action to be taken in case of range errors. -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Specified as: a character variable Ignore, Warning or -Abort, default Ignore. -

    @@ -108,39 +97,26 @@ Specified as: a character variable Ignore, Warning or

    On Return
    -
    y
    -
    A logical mask which is true for all corresponding entries of +
    Function value
    +
    A logical mask which is true if $x$ that are owned by the current process + WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" + SRC="img20.png" + ALT="$x$"> is owned by the current process Scope: local
    Type: required
    Intent: out. -
    -Specified as: a scalar or rank one logical array. -
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -
    +

    Notes

      -
    1. This routine returns a .true. value for those indices - that are strictly owned by the current process, excluding the halo +
    2. This routine returns a .true. value for an index + that is strictly owned by the current process, excluding the halo indices
    diff --git a/docs/html/node76.html b/docs/html/node76.html index e27dc8cc..5c2f0867 100644 --- a/docs/html/node76.html +++ b/docs/html/node76.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_is_local - +psb_owned_index + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_local_index - Up: Data management routines - Previous: psb_owned_index -   Next: psb_is_local + Up: Data management routines + Previous: psb_is_owned +   Contents

    -

    -psb_is_local +

    +psb_owned_index

    -call psb_is_local(x, desc_a)
    +call psb_owned_index(y, x, desc_a, info)
     

    @@ -69,15 +69,15 @@ call psb_is_local(x, desc_a)

    x
    -
    Integer index. +
    Integer indices.
    Scope: local
    Type: required
    -Intent: in. +Intent: in, inout.
    -Specified as: a scalar integer. +Specified as: a scalar or a rank one integer array.
    desc_a
    the communication descriptor. @@ -90,6 +90,17 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    +
    iact
    +
    specifies action to be taken in case of range errors. +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Specified as: a character variable Ignore, Warning or +Abort, default Ignore. +

    @@ -97,26 +108,39 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    -
    Function value
    -
    A logical mask which is true if +
    y
    +
    A logical mask which is true for all corresponding entries of $x$ is local to the current process + WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" + SRC="img20.png" + ALT="$x$"> that are owned by the current process Scope: local
    Type: required
    Intent: out. -
    +
    +Specified as: a scalar or rank one logical array. + +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +

    Notes

      -
    1. This routine returns a .true. value for an index - that is local to the current process, including the halo +
    2. This routine returns a .true. value for those indices + that are strictly owned by the current process, excluding the halo indices
    diff --git a/docs/html/node77.html b/docs/html/node77.html index 65d02b3c..9dfd8611 100644 --- a/docs/html/node77.html +++ b/docs/html/node77.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_local_index - +psb_is_local + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_get_boundary Extract - Up: Data management routines - Previous: psb_is_local -   Next: psb_local_index + Up: Data management routines + Previous: psb_owned_index +   Contents

    -

    -psb_local_index +

    +psb_is_local

    -call psb_local_index(y, x, desc_a, info)
    +call psb_is_local(x, desc_a)
     

    @@ -69,15 +69,15 @@ call psb_local_index(y, x, desc_a, info)

    x
    -
    Integer indices. +
    Integer index.
    Scope: local
    Type: required
    -Intent: in, inout. +Intent: in.
    -Specified as: a scalar or a rank one integer array. +Specified as: a scalar integer.
    desc_a
    the communication descriptor. @@ -90,17 +90,6 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    -
    iact
    -
    specifies action to be taken in case of range errors. -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Specified as: a character variable Ignore, Warning or -Abort, default Ignore. -

    @@ -108,40 +97,27 @@ Specified as: a character variable Ignore, Warning or

    On Return
    -
    y
    -
    A logical mask which is true for all corresponding entries of +
    Function value
    +
    A logical mask which is true if $x$ that are local to the current process + WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" + SRC="img20.png" + ALT="$x$"> is local to the current process Scope: local
    Type: required
    Intent: out. -
    -Specified as: a scalar or rank one logical array. -
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -
    +

    Notes

      -
    1. This routine returns a .true. value for those indices - that are local to the current process, including the halo - indices. +
    2. This routine returns a .true. value for an index + that is local to the current process, including the halo + indices
    diff --git a/docs/html/node78.html b/docs/html/node78.html index 1a52d7e2..45ca65c2 100644 --- a/docs/html/node78.html +++ b/docs/html/node78.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_get_boundary -- Extract list of boundary elements - +psb_local_index + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_get_overlap Extract - Up: Data management routines - Previous: psb_local_index -   Next: psb_get_boundary Extract + Up: Data management routines + Previous: psb_is_local +   Contents

    -

    -psb_get_boundary -- Extract list of boundary elements +

    +psb_local_index

    -call psb_get_boundary(bndel, desc, info)
    +call psb_local_index(y, x, desc_a, info)
     

    @@ -68,7 +68,18 @@ call psb_get_boundary(bndel, desc, info)

    On Entry
    -
    desc
    +
    x
    +
    Integer indices. +
    +Scope: local +
    +Type: required +
    +Intent: in, inout. +
    +Specified as: a scalar or a rank one integer array. +
    +
    desc_a
    the communication descriptor.
    Scope:local. @@ -79,6 +90,17 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    +
    iact
    +
    specifies action to be taken in case of range errors. +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Specified as: a character variable Ignore, Warning or +Abort, default Ignore. +

    @@ -86,19 +108,20 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    -
    bndel
    -
    The list of boundary elements on the calling process, in - local numbering. -
    +
    y
    +
    A logical mask which is true for all corresponding entries of + $x$ that are local to the current process Scope: local
    Type: required
    Intent: out.
    -Specified as: a rank one array with the ALLOCATABLE -attribute, of type integer. -
    +Specified as: a scalar or rank one logical array. +
    info
    Error code.
    @@ -116,12 +139,9 @@ An integer value; 0 means no error has been detected. Notes
      -
    1. If there are no boundary elements (i.e., if the local part of - the connectivity graph is self-contained) the output vector is set - to the ``not allocated'' state. -
    2. -
    3. Otherwise the size of bndel will be exactly equal to the - number of boundary elements. +
    4. This routine returns a .true. value for those indices + that are local to the current process, including the halo + indices.
    diff --git a/docs/html/node79.html b/docs/html/node79.html index 2fc320ef..9c52e269 100644 --- a/docs/html/node79.html +++ b/docs/html/node79.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_get_overlap -- Extract list of overlap elements - +psb_get_boundary -- Extract list of boundary elements + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_sp_getrow Extract - Up: Data management routines - Previous: psb_get_boundary Extract -   Next: psb_get_overlap Extract + Up: Data management routines + Previous: psb_local_index +   Contents

    -

    -psb_get_overlap -- Extract list of overlap elements +

    +psb_get_boundary -- Extract list of boundary elements

    -call psb_get_overlap(ovrel, desc, info)
    +call psb_get_boundary(bndel, desc, info)
     

    @@ -86,8 +86,8 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    -
    ovrel
    -
    The list of overlap elements on the calling process, in +
    bndel
    +
    The list of boundary elements on the calling process, in local numbering.
    Scope: local @@ -116,11 +116,12 @@ An integer value; 0 means no error has been detected. Notes
      -
    1. If there are no overlap elements the output vector is set - to the ``not allocated'' state. +
    2. If there are no boundary elements (i.e., if the local part of + the connectivity graph is self-contained) the output vector is set + to the ``not allocated'' state.
    3. -
    4. Otherwise the size of ovrel will be exactly equal to the - number of overlap elements. +
    5. Otherwise the size of bndel will be exactly equal to the + number of boundary elements.
    diff --git a/docs/html/node8.html b/docs/html/node8.html index 01bcfe04..5ac1d581 100644 --- a/docs/html/node8.html +++ b/docs/html/node8.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Data Structures and Classes - +Programming model + @@ -18,200 +18,104 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: Descriptor data structure - Up: userhtml - Previous: Programming model -   Next: Data Structures and Classes + Up: General overview + Previous: User-defined index mappings +   Contents

    -

    - -
    -Data Structures and Classes -

    +

    +Programming model +

    + +

    +The PSBLAS librarary is based on the Single Program Multiple Data +(SPMD) programming model: each process participating in the +computation performs the same actions on a chunk of data. Parallelism +is thus data-driven.

    -In this chapter we illustrate the data structures used for definition of -routines interfaces. They include data structures for sparse matrices, -communication descriptors and preconditioners. +Because of this structure, many subroutines coordinate their action +across the various processes, thus providing an implicit +synchronization point, and therefore must be +called simultaneously by all processes participating in the +computation. This is certainly true for the data allocation and +assembly routines, for all the computational routines and for some of +the tools routines. +

    -All the data types and the basic subroutine interfaces related to -descriptors and sparse matrices are defined in -the module psb_base_mod; this will have to be included by every -user subroutine that makes use of the library. The preconditioners are -defined in the module psb_prec_mod +However there are many cases where no synchronization, and indeed no +communication among processes, is implied; for instance, all the routines in +sec. [*] are only acting on the local data structures, +and thus may be called independently. The most important case is that +of the coefficient insertion routines: since the number of +coefficients in the sparse and dense matrices varies among the +processors, and since the user is free to choose an arbitrary order in +builiding the matrix entries, these routines cannot imply a +synchronization.

    -Integer, real and complex data types are parametrized with a kind type -defined in the library as follows: +Throughout this user's guide each subroutine will be clearly indicated +as:

    -
    psb_spk_
    -
    Kind parameter for short precision real and complex - data; corresponds to a REAL declaration and is - normally 4 bytes; -
    -
    psb_dpk_
    -
    Kind parameter for long precision real and complex - data; corresponds to a DOUBLE PRECISION declaration and is - normally 8 bytes; -
    -
    psb_ipk_
    -
    Kind parameter for integer data; - with default build options this is a 4 bytes integer, but there is - (highly) experimental support for 8-bytes integers; +
    Synchronous:
    +
    must be called simultaneously by all the + processes in the relevant communication context;
    -
    psb_mpik_
    -
    Kind parameter for 4-bytes integer data, as is - always used by MPI; -
    -
    psb_long_int_k_
    -
    Kind parameter for long (8 bytes) integers, - which are always used by the sizeof methods. +
    Asynchronous:
    +
    may be called in a totally independent manner.
    -Together with the classes attributes we also discuss their -methods. Most methods detailed here only act on the local variable, -i.e. their action is purely local and asynchronous unless otherwise -stated. -The list of methods here is not completely exhaustive; many methods, -especially those that alter the contents of the various objects, are -usually not needed by the end-user, and therefore are described in the -developer's documentation.

    -


    - -Subsections - - -
    - next - + up - previous - contents
    - Next: Descriptor data structure - Up: userhtml - Previous: Programming model -   Next: Data Structures and Classes + Up: General overview + Previous: User-defined index mappings +   Contents diff --git a/docs/html/node80.html b/docs/html/node80.html index d8dd0999..73d19447 100644 --- a/docs/html/node80.html +++ b/docs/html/node80.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_sp_getrow -- Extract row(s) from a sparse matrix - +psb_get_overlap -- Extract list of overlap elements + @@ -20,45 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_sizeof Memory - Up: Data management routines - Previous: psb_get_overlap Extract -   Next: psb_sp_getrow Extract + Up: Data management routines + Previous: psb_get_boundary Extract +   Contents

    -

    -psb_sp_getrow -- Extract row(s) from a sparse matrix +

    +psb_get_overlap -- Extract list of overlap elements

    -call psb_sp_getrow(row, a, nz, ia, ja, val, info, &
    -              & append, nzin, lrw)
    +call psb_get_overlap(ovrel, desc, info)
     

    @@ -69,75 +68,16 @@ call psb_sp_getrow(row, a, nz, ia, ja, val, info, &

    On Entry
    -
    row
    -
    The (first) row to be extracted. +
    desc
    +
    the communication descriptor.
    -Scope:local -
    -Type:required -
    -Intent: in. -
    -Specified as: an integer $>0$. -
    -
    a
    -
    the matrix from which to get rows. -
    -Scope:local -
    -Type:required -
    -Intent: in. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    append
    -
    Whether to append or overwrite existing output. -
    -Scope:local -
    -Type:optional -
    -Intent: in. -
    -Specified as: a logical value default: false (overwrite). -
    -
    nzin
    -
    Input size to be appended to. -
    -Scope:local -
    -Type:optional -
    -Intent: in. -
    -Specified as: an integer $>0$. When append is true, specifies how many -entries in the output vectors are already filled. -
    -
    lrw
    -
    The last row to be extracted. -
    -Scope:local +Scope:local.
    -Type:optional +Type:required.
    Intent: in.
    -Specified as: an integer $>0$, default: $row$. - -

    +Specified as: a structured data of type descdatapsb_desc_type.

    @@ -146,50 +86,19 @@ Specified as: an integer On Return
    -
    nz
    -
    the number of elements returned by this call. +
    ovrel
    +
    The list of overlap elements on the calling process, in + local numbering.
    -Scope:local. +Scope: local
    -Type:required. +Type: required
    Intent: out.
    -Returned as: an integer scalar. -
    -
    ia
    -
    the row indices. -
    -Scope:local. -
    -Type:required. -
    -Intent: inout. -
    -Specified as: an integer array with the ALLOCATABLE attribute. -
    -
    ja
    -
    the column indices of the elements to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: inout. -
    -Specified as: an integer array with the ALLOCATABLE attribute. -
    -
    val
    -
    the elements to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: inout. -
    -Specified as: a real array with the ALLOCATABLE attribute. -
    +Specified as: a rank one array with the ALLOCATABLE +attribute, of type integer. +
    info
    Error code.
    @@ -207,51 +116,16 @@ An integer value; 0 means no error has been detected. Notes
      -
    1. The output $nz$ is always the size of the output generated by - the current call; thus, if append=.true., the total output - size will be $nzin+nz$, with the newly extracted coefficients stored in - entries nzin+1:nzin+nz of the array arguments; +
    2. If there are no overlap elements the output vector is set + to the ``not allocated'' state.
    3. -
    4. When append=.true. the output arrays are reallocated as - necessary; -
    5. -
    6. The row and column indices are returned in the local numbering - scheme; if the global numbering is desired, the user may employ the - psb_loc_to_glob routine on the output. +
    7. Otherwise the size of ovrel will be exactly equal to the + number of overlap elements.

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_sizeof Memory - Up: Data management routines - Previous: psb_get_overlap Extract -   Contents - +

    diff --git a/docs/html/node81.html b/docs/html/node81.html index 564d09a0..7369a95f 100644 --- a/docs/html/node81.html +++ b/docs/html/node81.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_sizeof -- Memory occupation - +psb_sp_getrow -- Extract row(s) from a sparse matrix + @@ -20,49 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: Sorting utilities - Up: Data management routines - Previous: psb_sp_getrow Extract -   Next: psb_sizeof Memory + Up: Data management routines + Previous: psb_get_overlap Extract +   Contents

    -

    -psb_sizeof -- Memory occupation +

    +psb_sp_getrow -- Extract row(s) from a sparse matrix

    -

    -This function computes the memory occupation of a PSBLAS object. -

    -isz = psb_sizeof(a)
    -isz = psb_sizeof(desc_a)
    -isz = psb_sizeof(prec)
    +call psb_sp_getrow(row, a, nz, ia, ja, val, info, &
    +              & append, nzin, lrw)
     

    @@ -73,56 +69,189 @@ isz = psb_sizeof(prec)

    On Entry
    +
    row
    +
    The (first) row to be extracted. +
    +Scope:local +
    +Type:required +
    +Intent: in. +
    +Specified as: an integer $>0$. +
    a
    -
    A sparse matrix -$A$. +
    the matrix from which to get rows.
    -Scope: local +Scope:local
    -Type: required +Type:required
    Intent: in.
    Specified as: a structured data of type spdatapsb_Tspmat_type.
    -
    desc_a
    -
    Communication descriptor. +
    append
    +
    Whether to append or overwrite existing output.
    -Scope: local +Scope:local +
    +Type:optional +
    +Intent: in. +
    +Specified as: a logical value default: false (overwrite). +
    +
    nzin
    +
    Input size to be appended to.
    -Type: required +Scope:local +
    +Type:optional
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: an integer $>0$. When append is true, specifies how many +entries in the output vectors are already filled.
    -
    prec
    -
    Scope: local +
    lrw
    +
    The last row to be extracted. +
    +Scope:local
    -Type: required +Type:optional
    Intent: in.
    -Specified as: a preconditioner data structure precdatapsb_prec_type. +Specified as: an integer $>0$, default: $row$. + +

    + + +

    +

    On Return
    -
    Function value
    -
    The memory occupation of the object specified in - the calling sequence, in bytes. +
    nz
    +
    the number of elements returned by this call. +
    +Scope:local. +
    +Type:required. +
    +Intent: out. +
    +Returned as: an integer scalar. +
    +
    ia
    +
    the row indices. +
    +Scope:local. +
    +Type:required. +
    +Intent: inout. +
    +Specified as: an integer array with the ALLOCATABLE attribute. +
    +
    ja
    +
    the column indices of the elements to be inserted. +
    +Scope:local. +
    +Type:required. +
    +Intent: inout. +
    +Specified as: an integer array with the ALLOCATABLE attribute. +
    +
    val
    +
    the elements to be inserted. +
    +Scope:local. +
    +Type:required. +
    +Intent: inout. +
    +Specified as: a real array with the ALLOCATABLE attribute. +
    +
    info
    +
    Error code.
    Scope: local
    -Returned as: an integer(psb_long_int_k_) number. +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected.

    -


    +Notes + +
      +
    1. The output $nz$ is always the size of the output generated by + the current call; thus, if append=.true., the total output + size will be $nzin+nz$, with the newly extracted coefficients stored in + entries nzin+1:nzin+nz of the array arguments; +
    2. +
    3. When append=.true. the output arrays are reallocated as + necessary; +
    4. +
    5. The row and column indices are returned in the local numbering + scheme; if the global numbering is desired, the user may employ the + psb_loc_to_glob routine on the output. +
    6. +
    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: psb_sizeof Memory + Up: Data management routines + Previous: psb_get_overlap Extract +   Contents + diff --git a/docs/html/node82.html b/docs/html/node82.html index e05399dd..c22ccffe 100644 --- a/docs/html/node82.html +++ b/docs/html/node82.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Sorting utilities - +psb_sizeof -- Memory occupation + @@ -18,276 +18,111 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Parallel environment routines - Up: Data management routines - Previous: psb_sizeof Memory -   Next: Sorting utilities + Up: Data management routines + Previous: psb_sp_getrow Extract +   Contents

    -

    -Sorting utilities +

    +psb_sizeof -- Memory occupation

    -psb_msort -- Sorting by the Merge-sort - algorithm - -

    -psb_qsort -- Sorting by the Quicksort - algorithm +This function computes the memory occupation of a PSBLAS object.

    -psb_hsort -- Sorting by the Heapsort algorithm

    -call psb_msort(x,ix,dir,flag)
    -call psb_qsort(x,ix,dir,flag)
    -call psb_hsort(x,ix,dir,flag)
    +isz = psb_sizeof(a)
    +isz = psb_sizeof(desc_a)
    +isz = psb_sizeof(prec)
     

    -These serial routines sort a sequence $X$ into ascending or -descending order. The argument meaning is identical for the three -calls; the only difference is the algorithm used to accomplish the -task (see Usage Notes below).

    Type:
    Asynchronous.
    -
    On Entry
    +
    On Entry
    -
    x
    -
    The sequence to be sorted. +
    a
    +
    A sparse matrix +$A$.
    -Type:required. +Scope: local
    -Specified as: an integer, real or complex array of rank 1. -
    -
    ix
    -
    A vector of indices. +Type: required
    -Type:optional. +Intent: in.
    -Specified as: an integer array of (at least) the same size as $X$. +Specified as: a structured data of type spdatapsb_Tspmat_type.
    -
    dir
    -
    The desired ordering. +
    desc_a
    +
    Communication descriptor.
    -Type:optional. +Scope: local
    -Specified as: an integer value:
    -
    Integer and real data:
    -
    psb_sort_up_, -psb_sort_down_, psb_asort_up_, psb_asort_down_; -default psb_sort_up_. -
    -
    Complex data:
    -
    psb_lsort_up_, -psb_lsort_down_, psb_asort_up_, psb_asort_down_; -default psb_lsort_up_. -
    -
    +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type descdatapsb_desc_type.
    -
    flag
    -
    Whether to keep the original values in $IX$. +
    prec
    +
    Scope: local
    -Type:optional. +Type: required
    -Specified as: an integer value psb_sort_ovw_idx_ or -psb_sort_keep_idx_; default psb_sort_ovw_idx_. - -

    +Intent: in. +
    +Specified as: a preconditioner data structure precdatapsb_prec_type.

    -
    - -

    -

    On Return
    -
    x
    -
    The sequence of values, in the chosen ordering. +
    Function value
    +
    The memory occupation of the object specified in + the calling sequence, in bytes.
    -Type:required. +Scope: local
    -Specified as: an integer, real or complex array of rank 1. -
    -
    ix
    -
    A vector of indices. -
    -Type: Optional -
    -An integer array of rank 1, whose entries are moved to the same -position as the corresponding entries in $x$. +Returned as: an integer(psb_long_int_k_) number.

    - -

    -Notes - -

      -
    1. For integer or real data the sorting can be performed in the up/down direction, on the - natural or absolute values; -
    2. -
    3. For complex data the sorting can be done in a lexicographic - order (i.e.: sort on the real part with ties broken according to - the imaginary part) or on the absolute values; -
    4. -
    5. The routines return the items in the chosen ordering; the - output difference is the handling of ties (i.e. items with an - equal value) in the original input. With the merge-sort algorithm - ties are preserved in the same relative order as they had in the - original sequence, while this is not guaranteed for quicksort or - heapsort; -
    6. -
    7. 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
-i$; thus, upon return from the subroutine, for each - index $i$ we have in $ix(i)$ the position that the item $x(i)$ - occupied in the original data sequence; -
    8. -
    9. If -$flag = psb\_sort\_keep\_idx\_$ the routine will assume that - the entries in $ix(:)$ have already been initialized by the user; -
    10. -
    11. The three sorting algorithms have a similar $O(n \log n)$ expected - running time; in the average case quicksort will be the - fastest and merge-sort the slowest. However note that: - -
        -
      1. The worst case running time for quicksort is $O(n^2)$; the algorithm - implemented here follows the well-known median-of-three heuristics, - but the worst case may still apply; -
      2. -
      3. The worst case running time for merge-sort and heap-sort is - $O(n \log n)$ as the average case; -
      4. -
      5. The merge-sort algorithm is implemented to take advantage of - subsequences that may be already in the desired ordering prior to - the subroutine call; this situation is relatively common when - dealing with groups of indices of sparse matrix entries, thus - merge-sort is often the preferred choice when a sorting is needed - by other routines in the library. -
      6. -
      -
    12. -
    - -

    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: Parallel environment routines - Up: Data management routines - Previous: psb_sizeof Memory -   Contents - +

    diff --git a/docs/html/node83.html b/docs/html/node83.html index 28b1e21a..6a5a5522 100644 --- a/docs/html/node83.html +++ b/docs/html/node83.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Parallel environment routines - +Sorting utilities + @@ -18,88 +18,276 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: psb_init Initializes - Up: userhtml - Previous: Sorting utilities -   Next: Parallel environment routines + Up: Data management routines + Previous: psb_sizeof Memory +   Contents

    -

    - +

    +Sorting utilities +

    + +

    +psb_msort -- Sorting by the Merge-sort + algorithm + +

    +psb_qsort -- Sorting by the Quicksort + algorithm + +

    +psb_hsort -- Sorting by the Heapsort algorithm +

    +call psb_msort(x,ix,dir,flag)
    +call psb_qsort(x,ix,dir,flag)
    +call psb_hsort(x,ix,dir,flag)
    +
    + +

    +These serial routines sort a sequence $X$ into ascending or +descending order. The argument meaning is identical for the three +calls; the only difference is the algorithm used to accomplish the +task (see Usage Notes below). +

    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    x
    +
    The sequence to be sorted. +
    +Type:required. +
    +Specified as: an integer, real or complex array of rank 1. +
    +
    ix
    +
    A vector of indices. +
    +Type:optional. +
    +Specified as: an integer array of (at least) the same size as $X$. +
    +
    dir
    +
    The desired ordering. +
    +Type:optional. +
    +Specified as: an integer value:
    +
    Integer and real data:
    +
    psb_sort_up_, +psb_sort_down_, psb_asort_up_, psb_asort_down_; +default psb_sort_up_. +
    +
    Complex data:
    +
    psb_lsort_up_, +psb_lsort_down_, psb_asort_up_, psb_asort_down_; +default psb_lsort_up_. +
    +
    +
    +
    flag
    +
    Whether to keep the original values in $IX$. +
    +Type:optional. +
    +Specified as: an integer value psb_sort_ovw_idx_ or +psb_sort_keep_idx_; default psb_sort_ovw_idx_. + +

    +

    +
    + +

    +

    +
    On Return
    +
    +
    +
    x
    +
    The sequence of values, in the chosen ordering. +
    +Type:required.
    -Parallel environment routines - +Specified as: an integer, real or complex array of rank 1. +
    +
    ix
    +
    A vector of indices. +
    +Type: Optional +
    +An integer array of rank 1, whose entries are moved to the same +position as the corresponding entries in $x$. +
    +
    + +

    -


    - -Subsections - - - -

    +Notes + +
      +
    1. For integer or real data the sorting can be performed in the up/down direction, on the + natural or absolute values; +
    2. +
    3. For complex data the sorting can be done in a lexicographic + order (i.e.: sort on the real part with ties broken according to + the imaginary part) or on the absolute values; +
    4. +
    5. The routines return the items in the chosen ordering; the + output difference is the handling of ties (i.e. items with an + equal value) in the original input. With the merge-sort algorithm + ties are preserved in the same relative order as they had in the + original sequence, while this is not guaranteed for quicksort or + heapsort; +
    6. +
    7. 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
+i$; thus, upon return from the subroutine, for each + index $i$ we have in $ix(i)$ the position that the item $x(i)$ + occupied in the original data sequence; +
    8. +
    9. If +$flag = psb\_sort\_keep\_idx\_$ the routine will assume that + the entries in $ix(:)$ have already been initialized by the user; +
    10. +
    11. The three sorting algorithms have a similar $O(n \log n)$ expected + running time; in the average case quicksort will be the + fastest and merge-sort the slowest. However note that: + +
        +
      1. The worst case running time for quicksort is $O(n^2)$; the algorithm + implemented here follows the well-known median-of-three heuristics, + but the worst case may still apply; +
      2. +
      3. The worst case running time for merge-sort and heap-sort is + $O(n \log n)$ as the average case; +
      4. +
      5. The merge-sort algorithm is implemented to take advantage of + subsequences that may be already in the desired ordering prior to + the subroutine call; this situation is relatively common when + dealing with groups of indices of sparse matrix entries, thus + merge-sort is the preferred choice when a sorting is needed + by other routines in the library. +
      6. +
      +
    12. +
    + +

    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: Parallel environment routines + Up: Data management routines + Previous: psb_sizeof Memory +   Contents + diff --git a/docs/html/node84.html b/docs/html/node84.html index fe5a1c54..b948a6f3 100644 --- a/docs/html/node84.html +++ b/docs/html/node84.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_init -- Initializes PSBLAS parallel environment - +Parallel environment routines + @@ -18,161 +18,88 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: psb_info Return - Up: Parallel environment routines - Previous: Parallel environment routines -   Next: psb_init Initializes + Up: userhtml + Previous: Sorting utilities +   Contents

    -

    -psb_init -- Initializes PSBLAS parallel environment -

    - -

    -

    -call psb_init(icontxt, np, basectxt, ids)
    -
    - -

    -This subroutine initializes the PSBLAS parallel environment, defining -a virtual parallel machine. -

    -
    Type:
    -
    Synchronous. -
    -
    On Entry
    -
    -
    -
    np
    -
    Number of processes in the PSBLAS virtual parallel machine. -
    -Scope: global. -
    -Type: optional. -
    -Intent: in. -
    -Specified as: an integer value. Default: use all available processes. -
    -
    basectxt
    -
    the initial communication context. The new context - will be defined from the processes participating in the initial one. +

    +
    -Scope: global. -
    -Type: optional. -
    -Intent: in. -
    -Specified as: an integer value. Default: use MPI_COMM_WORLD. -

    -
    ids
    -
    Identities of the processes to use for the new context; the - argument is ignored when np is not specified. This allows the - processes in the new environment to be in an order different from the - original one. -
    -Scope: global. -
    -Type: optional. -
    -Intent: in. -
    -Specified as: an integer array. Default: use the indices $(0\dots np-1)$. -
    -
    +Parallel environment routines +

    -

    -
    On Return
    -
    -
    -
    icontxt
    -
    the communication context identifying the virtual - parallel machine. Note that this is always a duplicate of - basectxt, so that library communications are completely - separated from other communication operations. -
    -Scope: global. -
    -Type: required. -
    -Intent: out. -
    -Specified as: an integer variable. -
    -
    - -

    -Notes - -

      -
    1. A call to this routine must precede any other PSBLAS call. -
    2. -
    3. It is an error to specify a value for $np$ greater than the - number of processes available in the underlying base parallel - environment. -
    4. -
    +

    + +Subsections -

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_info Return - Up: Parallel environment routines - Previous: Parallel environment routines -   Contents - + + +

    diff --git a/docs/html/node85.html b/docs/html/node85.html index f9124dbb..cc4dd540 100644 --- a/docs/html/node85.html +++ b/docs/html/node85.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_info -- Return information about PSBLAS parallel environment - +psb_init -- Initializes PSBLAS parallel environment + @@ -20,68 +20,95 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_exit Exit - Up: Parallel environment routines - Previous: psb_init Initializes -   Next: psb_info Return + Up: Parallel environment routines + Previous: Parallel environment routines +   Contents

    -

    -psb_info -- Return information about PSBLAS parallel - environment +

    +psb_init -- Initializes PSBLAS parallel environment

    -call psb_info(icontxt, iam, np)
    +call psb_init(icontxt, np, basectxt, ids)
     

    -This subroutine returns information about the PSBLAS parallel environment, defining +This subroutine initializes the PSBLAS parallel environment, defining a virtual parallel machine.

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    -
    icontxt
    -
    the communication context identifying the virtual - parallel machine. +
    np
    +
    Number of processes in the PSBLAS virtual parallel machine.
    Scope: global.
    -Type: required. +Type: optional.
    Intent: in.
    -Specified as: an integer variable. +Specified as: an integer value. Default: use all available processes. +
    +
    basectxt
    +
    the initial communication context. The new context + will be defined from the processes participating in the initial one. +
    +Scope: global. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an integer value. Default: use MPI_COMM_WORLD. +
    +
    ids
    +
    Identities of the processes to use for the new context; the + argument is ignored when np is not specified. This allows the + processes in the new environment to be in an order different from the + original one. +
    +Scope: global. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an integer array. Default: use the indices $(0\dots np-1)$.
    @@ -90,24 +117,11 @@ Specified as: an integer variable.
    On Return
    -
    iam
    -
    Identifier of current process in the PSBLAS virtual parallel machine. -
    -Scope: local. -
    -Type: required. -
    -Intent: out. -
    -Specified as: an integer value. -$-1 \le iam \le np-1$
    -
    np
    -
    Number of processes in the PSBLAS virtual parallel machine. +
    icontxt
    +
    the communication context identifying the virtual + parallel machine. Note that this is always a duplicate of + basectxt, so that library communications are completely + separated from other communication operations.
    Scope: global.
    @@ -115,56 +129,48 @@ Type: required.
    Intent: out.
    -Specified as: an integer variable.
    +Specified as: an integer variable. +

    Notes

      -
    1. For processes in the virtual parallel machine the identifier - will satisfy -$0 \le iam \le np-1$; +
    2. A call to this routine must precede any other PSBLAS call.
    3. -
    4. If the user has requested on psb_init a number of - processes less than the total available in the parallel execution - environment, the remaining processes will have on return It is an error to specify a value for $iam=-1$; - the only call involving icontxt that any such process may - execute is to psb_exit. + ALT="$np$"> greater than the + number of processes available in the underlying base parallel + environment.


    - next - + up - previous - contents
    - Next: psb_exit Exit - Up: Parallel environment routines - Previous: psb_init Initializes -   Next: psb_info Return + Up: Parallel environment routines + Previous: Parallel environment routines +   Contents diff --git a/docs/html/node86.html b/docs/html/node86.html index b538e1f8..023279f8 100644 --- a/docs/html/node86.html +++ b/docs/html/node86.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_exit -- Exit from PSBLAS parallel environment - +psb_info -- Return information about PSBLAS parallel environment + @@ -20,52 +20,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_get_mpicomm Get - Up: Parallel environment routines - Previous: psb_info Return -   Next: psb_exit Exit + Up: Parallel environment routines + Previous: psb_init Initializes +   Contents

    -

    -psb_exit -- Exit from PSBLAS parallel environment +

    +psb_info -- Return information about PSBLAS parallel + environment

    -call psb_exit(icontxt)
    -call psb_exit(icontxt,close)
    +call psb_info(icontxt, iam, np)
     

    -This subroutine exits from the PSBLAS parallel virtual machine. +This subroutine returns information about the PSBLAS parallel environment, defining +a virtual parallel machine.

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    @@ -82,67 +83,88 @@ Intent: in.
    Specified as: an integer variable.
    -
    close
    -
    Whether to close all data structures related to the - virtual parallel machine, besides those associated with icontxt. +
    + +

    +

    +
    On Return
    +
    +
    +
    iam
    +
    Identifier of current process in the PSBLAS virtual parallel machine. +
    +Scope: local. +
    +Type: required. +
    +Intent: out. +
    +Specified as: an integer value. +$-1 \le iam \le np-1$
    +
    np
    +
    Number of processes in the PSBLAS virtual parallel machine.
    Scope: global.
    -Type: optional. +Type: required.
    -Intent: in. +Intent: out.
    -Specified as: a logical variable, default value: true. -
    +Specified as: an integer variable.

    Notes

      -
    1. This routine may be called even if a previous call to - psb_info has returned with $iam=-1$; indeed, it it is the only - routine that may be called with argument icontxt in this - situation. +
    2. For processes in the virtual parallel machine the identifier + will satisfy +$0 \le iam \le np-1$;
    3. -
    4. A call to this routine with close=.true. implies a call - to MPI_Finalize, after which no parallel routine may be called. -
    5. -
    6. If the user whishes to use multiple communication contexts in the - same program, or to enter and exit multiple times into the parallel - environment, this routine may be called to - selectively close the contexts with close=.false., while on - the last call it should be called with close=.true. to - shutdown in a clean way the entire parallel environment. +
    7. If the user has requested on psb_init a number of + processes less than the total available in the parallel execution + environment, the remaining processes will have on return $iam=-1$; + the only call involving icontxt that any such process may + execute is to psb_exit.


    - next - + up - previous - contents
    - Next: psb_get_mpicomm Get - Up: Parallel environment routines - Previous: psb_info Return -   Next: psb_exit Exit + Up: Parallel environment routines + Previous: psb_init Initializes +   Contents diff --git a/docs/html/node87.html b/docs/html/node87.html index 40b1523c..8e0e2ee1 100644 --- a/docs/html/node87.html +++ b/docs/html/node87.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_get_mpicomm -- Get the MPI communicator - +psb_exit -- Exit from PSBLAS parallel environment + @@ -20,51 +20,52 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_get_rank Get - Up: Parallel environment routines - Previous: psb_exit Exit -   Next: psb_get_mpicomm Get + Up: Parallel environment routines + Previous: psb_info Return +   Contents

    -

    -psb_get_mpicomm -- Get the MPI communicator +

    +psb_exit -- Exit from PSBLAS parallel environment

    -call psb_get_mpicomm(icontxt, icomm)
    +call psb_exit(icontxt)
    +call psb_exit(icontxt,close)
     

    -This subroutine returns the MPI communicator associated with a PSBLAS context +This subroutine exits from the PSBLAS parallel virtual machine.

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    @@ -81,26 +82,69 @@ Intent: in.
    Specified as: an integer variable.
    -
    - -

    -

    -
    On Return
    -
    -
    -
    icomm
    -
    The MPI communicator associated with the PSBLAS virtual parallel machine. +
    close
    +
    Whether to close all data structures related to the + virtual parallel machine, besides those associated with icontxt.
    Scope: global.
    -Type: required. +Type: optional. +
    +Intent: in.
    -Intent: out. -
    +Specified as: a logical variable, default value: true. +

    -


    +Notes + +
      +
    1. This routine may be called even if a previous call to + psb_info has returned with $iam=-1$; indeed, it it is the only + routine that may be called with argument icontxt in this + situation. +
    2. +
    3. A call to this routine with close=.true. implies a call + to MPI_Finalize, after which no parallel routine may be called. +
    4. +
    5. If the user whishes to use multiple communication contexts in the + same program, or to enter and exit multiple times into the parallel + environment, this routine may be called to + selectively close the contexts with close=.false., while on + the last call it should be called with close=.true. to + shutdown in a clean way the entire parallel environment. +
    6. +
    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: psb_get_mpicomm Get + Up: Parallel environment routines + Previous: psb_info Return +   Contents + diff --git a/docs/html/node88.html b/docs/html/node88.html index 432de86a..53c3fbd3 100644 --- a/docs/html/node88.html +++ b/docs/html/node88.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_get_rank -- Get the MPI rank - +psb_get_mpicomm -- Get the MPI communicator + @@ -20,51 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_wtime Wall - Up: Parallel environment routines - Previous: psb_get_mpicomm Get -   Next: psb_get_rank Get + Up: Parallel environment routines + Previous: psb_exit Exit +   Contents

    -

    -psb_get_rank -- Get the MPI rank +

    +psb_get_mpicomm -- Get the MPI communicator

    -call psb_get_rank(rank, icontxt, id)
    +call psb_get_mpicomm(icontxt, icomm)
     

    -This subroutine returns the MPI rank of the PSBLAS process $id$ +This subroutine returns the MPI communicator associated with a PSBLAS context

    Type:
    Asynchronous. @@ -84,22 +81,6 @@ Intent: in.
    Specified as: an integer variable.
    -
    id
    -
    Identifier of a process in the PSBLAS virtual parallel machine. -
    -Scope: local. -
    -Type: required. -
    -Intent: in. -
    -Specified as: an integer value. -$0 \le id \le np-1$

    @@ -107,13 +88,10 @@ Specified as: an integer value. -psb_wtime -- Wall clock timing - +psb_get_rank -- Get the MPI rank + @@ -20,61 +20,105 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_barrier Sinchronization - Up: Parallel environment routines - Previous: psb_get_rank Get -   Next: psb_wtime Wall + Up: Parallel environment routines + Previous: psb_get_mpicomm Get +   Contents

    -

    -psb_wtime -- Wall clock timing +

    +psb_get_rank -- Get the MPI rank

    -time = psb_wtime()
    +call psb_get_rank(rank, icontxt, id)
     

    -This function returns a wall clock timer. The resolution of the timer -is dependent on the underlying parallel environment implementation. +This subroutine returns the MPI rank of the PSBLAS process $id$

    Type:
    Asynchronous.
    -
    On Exit
    +
    On Entry
    -
    Function value
    -
    the elapsed time in seconds. +
    icontxt
    +
    the communication context identifying the virtual + parallel machine.
    -Returned as: a real(psb_dpk_) variable. +Scope: global. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer variable. +
    +
    id
    +
    Identifier of a process in the PSBLAS virtual parallel machine. +
    +Scope: local. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer value. +$0 \le id \le np-1$
    +
    + +

    +

    +
    On Return
    +
    +
    rank
    +
    The MPI rank associated with the PSBLAS process $id$. +
    +Scope: local. +
    +Type: required. +
    +Intent: out. +

    diff --git a/docs/html/node9.html b/docs/html/node9.html index f8b7753b..ae8052ae 100644 --- a/docs/html/node9.html +++ b/docs/html/node9.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Descriptor data structure - +Data Structures and Classes + @@ -18,225 +18,92 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: Methods - Up: Data Structures and Classes - Previous: Data Structures and Classes -   Next: Descriptor data structure + Up: userhtml + Previous: Programming model +   Contents

    -

    - +

    +
    -Descriptor data structure -

    -All the general matrix informations and elements to be -exchanged among processes are stored within a data structure of the -type descdatapsb_desc_type. -Every structure of this type is associated with a discretization -pattern and enables data communications and other operations that are -necessary for implementing the various algorithms of interest to us. +Data Structures and Classes +

    -The data structure itself psb_desc_type can be treated as an -opaque object handled via the tools routines of -Sec. 6 and 3.5; -nevertheless we include here a description for the curious -reader. - +In this chapter we illustrate the data structures used for definition of +routines interfaces. They include data structures for sparse matrices, +communication descriptors and preconditioners.

    -First we describe the psb_indx_map type. This is a data -structure that keeps track of a certain number of basic issues such -as: - -

      -
    • The value of the communication/MPI context; -
    • -
    • The number of indices in the index space, i.e. global number of - rows and columns of a sparse matrix; -
    • -
    • The local set of indices, including: - -
        -
      • The number of local indices (and local rows); -
      • -
      • The number of halo indices (and therefore local columns); -
      • -
      • The global indices corresponding to the local ones. -
      • -
      -
    • -
    -There are many different schemes for storing these data; therefore -there are a number of types extending the base one, and the descriptor -structure holds a polymorphic object whose dynamic type can be any of -the extended types. -The methods associated with this data type answer the following -queries: - -
      -
    • For a given set of local indices, find the corresponding indices - in the global numbering; -
    • -
    • For a given set of global indices, find the corresponding - indices in the local numbering, if any, or return an invalid -
    • -
    • Add a global index to the set of halo indices; -
    • -
    • Find the process owner of each member of a set of global - indices. -
    • -
    -All methods but the last are purely local; the last method potentially -requires communication among processes, and thus is a synchronous -method. The choice of a specific dynamic type for the index map is -made at the time the descriptor is initially allocated, according to -the mode of initialization (see also 6). +All the data types and the basic subroutine interfaces related to +descriptors and sparse matrices are defined in +the module psb_base_mod; this will have to be included by every +user subroutine that makes use of the library. The preconditioners are +defined in the module psb_prec_mod

    -The descriptor contents are as follows: +Integer, real and complex data types are parametrized with a kind type +defined in the library as follows:

    -
    indxmap
    -
    A polymorphic variable of a type that is any - extension of the indx_map type described above. -
    -
    halo_index
    -
    A list of the halo and boundary elements for -the current process to be exchanged with other processes; for each -processes with which it is necessary to communicate: - -
      -
    1. Process identifier; -
    2. -
    3. Number of points to be received; -
    4. -
    5. Indices of points to be received; -
    6. -
    7. Number of points to be sent; -
    8. -
    9. Indices of points to be sent; -
    10. -
    -The list may contain an arbitrary number of groups; its end is marked -by a -1. -
    -Specified as: an allocatable integer array of rank one. +
    psb_spk_
    +
    Kind parameter for short precision real and complex + data; corresponds to a REAL declaration and is + normally 4 bytes;
    -
    ext_index
    -
    A list of element indices to be exchanged to - implement the mapping between a base descriptor and a descriptor - with overlap. -
    -
    ovrlap_index
    -
    A list of the overlap elements for the -current process, organized in groups like the previous vector: - -
      -
    1. Process identifier; -
    2. -
    3. Number of points to be received; -
    4. -
    5. Indices of points to be received; -
    6. -
    7. Number of points to be sent; -
    8. -
    9. Indices of points to be sent; -
    10. -
    -The list may contain an arbitrary number of groups; its end is marked -by a -1. -
    -Specified as: an allocatable integer array of rank one. +
    psb_dpk_
    +
    Kind parameter for long precision real and complex + data; corresponds to a DOUBLE PRECISION declaration and is + normally 8 bytes;
    -
    ovr_mst_idx
    -
    A list to retrieve the value of each - overlap element from the respective master process. -
    -Specified as: an allocatable integer array of rank one. +
    psb_ipk_
    +
    Kind parameter for integer data; + with default build options this is a 4 bytes integer, but there is + (highly) experimental support for 8-bytes integers;
    -
    ovrlap_elem
    -
    For all overlap points belonging to th -ecurrent process: - -
      -
    1. Overlap point index; -
    2. -
    3. Number of processes sharing that overlap points; -
    4. -
    5. Index of a ``master'' process: -
    6. -
    -Specified as: an allocatable integer array of rank two. +
    psb_mpik_
    +
    Kind parameter for 4-bytes integer data, as is + always used by MPI;
    -
    bnd_elem
    -
    A list of all boundary points, i.e. points - that have a connection with other processes. -
    -
    -The Fortran 2003 declaration for psb_desc_type structures is -as follows: - -
    - - - -
    Figure 3: -The PSBLAS defined data type that - contains the communication descriptor.
    -
    - -
    - -\fbox{\TheSbox} -
    -
    - -

    -A communication descriptor associated with a sparse matrix has a -state, which can take the following values: -

    -
    Build:
    -
    State entered after the first allocation, and before the - first assembly; in this state it is possible to add communication - requirements among different processes. -
    -
    Assembled:
    -
    State entered after the assembly; computations using - the associated sparse matrix, such as matrix-vector products, are - only possible in this state. +
    psb_long_int_k_
    +
    Kind parameter for long (8 bytes) integers, + which are always used by the sizeof methods.
    +Together with the classes attributes we also discuss their +methods. Most methods detailed here only act on the local variable, +i.e. their action is purely local and asynchronous unless otherwise +stated. +The list of methods here is not completely exhaustive; many methods, +especially those that alter the contents of the various objects, are +usually not needed by the end-user, and therefore are described in the +developer's documentation.



    @@ -244,40 +111,105 @@ state, which can take the following values: Subsections
    - next - + up - previous - contents
    - Next: Methods - Up: Data Structures and Classes - Previous: Data Structures and Classes -   Next: Descriptor data structure + Up: userhtml + Previous: Programming model +   Contents diff --git a/docs/html/node90.html b/docs/html/node90.html index b4d0de13..3ae77e64 100644 --- a/docs/html/node90.html +++ b/docs/html/node90.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_barrier -- Sinchronization point parallel environment - +psb_wtime -- Wall clock timing + @@ -20,68 +20,60 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_abort Abort - Up: Parallel environment routines - Previous: psb_wtime Wall -   Next: psb_barrier Sinchronization + Up: Parallel environment routines + Previous: psb_get_rank Get +   Contents

    -

    -psb_barrier -- Sinchronization point parallel - environment +

    +psb_wtime -- Wall clock timing

    -call psb_barrier(icontxt)
    +time = psb_wtime()
     

    -This subroutine acts as an explicit synchronization point for the PSBLAS -parallel virtual machine. +This function returns a wall clock timer. The resolution of the timer +is dependent on the underlying parallel environment implementation.

    Type:
    -
    Synchronous. +
    Asynchronous.
    -
    On Entry
    +
    On Exit
    -
    icontxt
    -
    the communication context identifying the virtual - parallel machine. +
    Function value
    +
    the elapsed time in seconds.
    -Scope: global. -
    -Type: required. -
    -Intent: in. -
    -Specified as: an integer variable. +Returned as: a real(psb_dpk_) variable.
    diff --git a/docs/html/node91.html b/docs/html/node91.html index 8b80b3ef..a5ac9abf 100644 --- a/docs/html/node91.html +++ b/docs/html/node91.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_abort -- Abort a computation - +psb_barrier -- Sinchronization point parallel environment + @@ -20,51 +20,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_bcast Broadcast - Up: Parallel environment routines - Previous: psb_barrier Sinchronization -   Next: psb_abort Abort + Up: Parallel environment routines + Previous: psb_wtime Wall +   Contents

    -

    -psb_abort -- Abort a computation +

    +psb_barrier -- Sinchronization point parallel + environment

    -call psb_abort(icontxt)
    +call psb_barrier(icontxt)
     

    -This subroutine aborts computation on the parallel virtual machine. +This subroutine acts as an explicit synchronization point for the PSBLAS +parallel virtual machine.

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    diff --git a/docs/html/node92.html b/docs/html/node92.html index 0d41af6a..ac22fe2f 100644 --- a/docs/html/node92.html +++ b/docs/html/node92.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_bcast -- Broadcast data - +psb_abort -- Abort a computation + @@ -20,52 +20,51 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_sum Global - Up: Parallel environment routines - Previous: psb_abort Abort -   Next: psb_bcast Broadcast + Up: Parallel environment routines + Previous: psb_barrier Sinchronization +   Contents

    -

    -psb_bcast -- Broadcast data +

    +psb_abort -- Abort a computation

    -call psb_bcast(icontxt, dat, root)
    +call psb_abort(icontxt)
     

    -This subroutine implements a broadcast operation based on the -underlying communication library. +This subroutine aborts computation on the parallel virtual machine.

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    @@ -82,81 +81,10 @@ Intent: in.
    Specified as: an integer variable.
    -
    dat
    -
    On the root process, the data to be broadcast. -
    -Scope: global. -
    -Type: required. -
    -Intent: inout. -
    -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, -which may be a scalar or rank 1 array. Type, kind, rank and size must agree on all processes. -
    -
    root
    -
    Root process holding data to be broadcast. -
    -Scope: global. -
    -Type: optional. -
    -Intent: in. -
    -Specified as: an integer value -$0<= root <= np-1$, default 0

    -

    -
    On Return
    -
    -
    -
    dat
    -
    On processes other than root, the data to be broadcast. -
    -Scope: global. -
    -Type: required. -
    -Intent: inout. -
    -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. Type, kind, rank and size must agree on all processes. -
    -
    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_sum Global - Up: Parallel environment routines - Previous: psb_abort Abort -   Contents - +

    diff --git a/docs/html/node93.html b/docs/html/node93.html index a3559080..32bc3dbe 100644 --- a/docs/html/node93.html +++ b/docs/html/node93.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_sum -- Global sum - +psb_bcast -- Broadcast data + @@ -20,48 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_max Global - Up: Parallel environment routines - Previous: psb_bcast Broadcast -   Next: psb_sum Global + Up: Parallel environment routines + Previous: psb_abort Abort +   Contents

    -

    -psb_sum -- Global sum +

    +psb_bcast -- Broadcast data

    -call psb_sum(icontxt, dat, root)
    +call psb_bcast(icontxt, dat, root)
     

    -This subroutine implements a sum reduction operation based on the +This subroutine implements a broadcast operation based on the underlying communication library.

    Type:
    @@ -83,7 +83,7 @@ Intent: in. Specified as: an integer variable.
    dat
    -
    The local contribution to the global sum. +
    On the root process, the data to be broadcast.
    Scope: global.
    @@ -92,14 +92,11 @@ Type: required. Intent: inout.
    Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. +scalar, or a rank 1 or 2 array, or a character or logical variable, +which may be a scalar or rank 1 array. Type, kind, rank and size must agree on all processes.
    root
    -
    Process to hold the final sum, or $-1$ to make it available - on all processes. +
    Root process holding data to be broadcast.
    Scope: global.
    @@ -108,12 +105,12 @@ Type: optional. Intent: in.
    Specified as: an integer value $-1<= root <= np-1$, default -1.
    + WIDTH="152" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" + SRC="img128.png" + ALT="$0<= root <= np-1$">, default 0

    @@ -122,7 +119,7 @@ Specified as: an integer value - next - + up - previous - contents
    - Next: psb_max Global - Up: Parallel environment routines - Previous: psb_bcast Broadcast -   Next: psb_sum Global + Up: Parallel environment routines + Previous: psb_abort Abort +   Contents diff --git a/docs/html/node94.html b/docs/html/node94.html index 705acf2d..de46232c 100644 --- a/docs/html/node94.html +++ b/docs/html/node94.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_max -- Global maximum - +psb_sum -- Global sum + @@ -20,49 +20,49 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_min Global - Up: Parallel environment routines - Previous: psb_sum Global -   Next: psb_max Global + Up: Parallel environment routines + Previous: psb_bcast Broadcast +   Contents

    -

    -psb_max -- Global maximum +

    +psb_sum -- Global sum

    -call psb_max(icontxt, dat, root)
    +call psb_sum(icontxt, dat, root)
     

    -This subroutine implements a maximum valuereduction -operation based on the underlying communication library. +This subroutine implements a sum reduction operation based on the +underlying communication library.

    Type:
    Synchronous. @@ -83,21 +83,21 @@ Intent: in. Specified as: an integer variable.
    dat
    -
    The local contribution to the global maximum. +
    The local contribution to the global sum.
    -Scope: local. +Scope: global.
    Type: required.
    Intent: inout.
    -Specified as: an integer or real 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. Type, kind, rank and size must agree on all processes.
    root
    -
    Process to hold the final maximum, or Process to hold the final sum, or $-1$ to make it available on all processes.
    @@ -112,9 +112,8 @@ Specified as: an integer value $-1<= root <= np-1$, default -1. -
    + SRC="img129.png" + ALT="$-1<= root <= np-1$">, default -1.

    @@ -123,16 +122,18 @@ Specified as: an integer value - next - + up - previous - contents
    - Next: psb_min Global - Up: Parallel environment routines - Previous: psb_sum Global -   Next: psb_max Global + Up: Parallel environment routines + Previous: psb_bcast Broadcast +   Contents diff --git a/docs/html/node95.html b/docs/html/node95.html index 7e22f26e..63735acd 100644 --- a/docs/html/node95.html +++ b/docs/html/node95.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_min -- Global minimum - +psb_max -- Global maximum + @@ -20,48 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_amx Global - Up: Parallel environment routines - Previous: psb_max Global -   Next: psb_min Global + Up: Parallel environment routines + Previous: psb_sum Global +   Contents

    -

    -psb_min -- Global minimum +

    +psb_max -- Global maximum

    -call psb_min(icontxt, dat, root)
    +call psb_max(icontxt, dat, root)
     

    -This subroutine implements a minimum value reduction +This subroutine implements a maximum valuereduction operation based on the underlying communication library.

    Type:
    @@ -83,7 +83,7 @@ Intent: in. Specified as: an integer variable.
    dat
    -
    The local contribution to the global minimum. +
    The local contribution to the global maximum.
    Scope: local.
    @@ -91,13 +91,13 @@ Type: required.
    Intent: 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. Type, kind, rank and size must agree on all processes.
    root
    -
    Process to hold the final value, or Process to hold the final maximum, or $-1$ to make it available on all processes.
    @@ -112,7 +112,7 @@ Specified as: an integer value $-1<= root <= np-1$, default -1.
    @@ -123,18 +123,16 @@ Specified as: an integer value - next - + up - previous - contents
    - Next: psb_amx Global - Up: Parallel environment routines - Previous: psb_max Global -   Next: psb_min Global + Up: Parallel environment routines + Previous: psb_sum Global +   Contents diff --git a/docs/html/node96.html b/docs/html/node96.html index 52798cad..38663fc6 100644 --- a/docs/html/node96.html +++ b/docs/html/node96.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_amx -- Global maximum absolute value - +psb_min -- Global minimum + @@ -20,48 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_amn Global - Up: Parallel environment routines - Previous: psb_min Global -   Next: psb_amx Global + Up: Parallel environment routines + Previous: psb_max Global +   Contents

    -

    -psb_amx -- Global maximum absolute value +

    +psb_min -- Global minimum

    -call psb_amx(icontxt, dat, root)
    +call psb_min(icontxt, dat, root)
     

    -This subroutine implements a maximum absolute value reduction +This subroutine implements a minimum value reduction operation based on the underlying communication library.

    Type:
    @@ -83,7 +83,7 @@ Intent: in. Specified as: an integer variable.
    dat
    -
    The local contribution to the global maximum. +
    The local contribution to the global minimum.
    Scope: local.
    @@ -91,13 +91,13 @@ Type: required.
    Intent: inout.
    -Specified as: an integer, real or complex variable, which may be a +Specified as: an integer or real variable, which may be a scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
    root
    Process to hold the final value, or $-1$ to make it available on all processes.
    @@ -112,7 +112,7 @@ Specified as: an integer value $-1<= root <= np-1$, default -1.
    @@ -123,7 +123,7 @@ Specified as: an integer value - next - + up - previous - contents
    - Next: psb_amn Global - Up: Parallel environment routines - Previous: psb_min Global -   Next: psb_amx Global + Up: Parallel environment routines + Previous: psb_max Global +   Contents diff --git a/docs/html/node97.html b/docs/html/node97.html index 4e7e5bd2..2e8dfb2d 100644 --- a/docs/html/node97.html +++ b/docs/html/node97.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_amn -- Global minimum absolute value - +psb_amx -- Global maximum absolute value + @@ -20,48 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_snd Send - Up: Parallel environment routines - Previous: psb_amx Global -   Next: psb_amn Global + Up: Parallel environment routines + Previous: psb_min Global +   Contents

    -

    -psb_amn -- Global minimum absolute value +

    +psb_amx -- Global maximum absolute value

    -call psb_amn(icontxt, dat, root)
    +call psb_amx(icontxt, dat, root)
     

    -This subroutine implements a minimum absolute value reduction +This subroutine implements a maximum absolute value reduction operation based on the underlying communication library.

    Type:
    @@ -83,7 +83,7 @@ Intent: in. Specified as: an integer variable.
    dat
    -
    The local contribution to the global minimum. +
    The local contribution to the global maximum.
    Scope: local.
    @@ -96,8 +96,8 @@ scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all pro
    root
    Process to hold the final value, or $-1$ to make it available on all processes.
    @@ -112,7 +112,7 @@ Specified as: an integer value $-1<= root <= np-1$, default -1.
    @@ -123,7 +123,7 @@ Specified as: an integer value - next - + up - previous - contents
    - Next: psb_snd Send - Up: Parallel environment routines - Previous: psb_amx Global -   Next: psb_amn Global + Up: Parallel environment routines + Previous: psb_min Global +   Contents diff --git a/docs/html/node98.html b/docs/html/node98.html index d84a735b..9d8d1dc1 100644 --- a/docs/html/node98.html +++ b/docs/html/node98.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_snd -- Send data - +psb_amn -- Global minimum absolute value + @@ -20,51 +20,52 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_rcv Receive - Up: Parallel environment routines - Previous: psb_amn Global -   Next: psb_snd Send + Up: Parallel environment routines + Previous: psb_amx Global +   Contents

    -

    -psb_snd -- Send data +

    +psb_amn -- Global minimum absolute value

    -call psb_snd(icontxt, dat, dst, m)
    +call psb_amn(icontxt, dat, root)
     

    -This subroutine sends a packet of data to a destination. +This subroutine implements a minimum absolute value reduction +operation based on the underlying communication library.

    Type:
    -
    Synchronous: see usage notes. +
    Synchronous.
    On Entry
    @@ -82,65 +83,38 @@ Intent: in. Specified as: an integer variable.
    dat
    -
    The data to be sent. +
    The local contribution to the global minimum.
    Scope: local.
    Type: required.
    -Intent: in. +Intent: inout.
    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. Type, kind and rank must agree on sender and receiver process; if $m$ is -not specified, size must agree as well. +scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
    -
    dst
    -
    Destination process. +
    root
    +
    Process to hold the final value, or $-1$ to make it available + on all processes.
    Scope: global.
    -Type: required. +Type: optional.
    Intent: in.
    Specified as: an integer value $0<= dst <= np-1$. -
    -
    m
    -
    Number of rows. -
    -Scope: global. -
    -Type: Optional. -
    -Intent: in. -
    -Specified as: an integer value -$0<= m <= size(dat,1)$. -
    -When $dat$ is a rank 2 array, specifies the number of rows to be sent -independently of the leading dimension $size(dat,1)$; must have the -same value on sending and receiving processes. -
    + ALT="$-1<= root <= np-1$">, default -1. +

    @@ -148,43 +122,57 @@ same value on sending and receiving processes.

    On Return
    +
    dat
    +
    On destination process(es), the result of the minimum operation. +
    +Scope: global. +
    +Type: required. +
    +Intent: inout. +
    +Specified as: an integer, real or complex variable, which may be a +scalar, or a rank 1 or 2 array. +
    +Type, kind, rank and size must agree on all processes. +

    Notes

      -
    1. This subroutine implies a synchronization, but only between the - calling process and the destination process $dst$. +
    2. The dat argument is both input and output, and its + value may be changed even on processes different from the final + result destination. +
    3. +
    4. The dat argument may also be a long integer scalar.


    - next - + up - previous - contents
    - Next: psb_rcv Receive - Up: Parallel environment routines - Previous: psb_amn Global -   Next: psb_snd Send + Up: Parallel environment routines + Previous: psb_amx Global +   Contents diff --git a/docs/html/node99.html b/docs/html/node99.html index afbe6b6d..9efe8327 100644 --- a/docs/html/node99.html +++ b/docs/html/node99.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_rcv -- Receive data - +psb_snd -- Send data + @@ -18,52 +18,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Error handling - Up: Parallel environment routines - Previous: psb_snd Send -   Next: psb_rcv Receive + Up: Parallel environment routines + Previous: psb_amn Global +   Contents

    -

    -psb_rcv -- Receive data +

    +psb_snd -- Send data

    -call psb_rcv(icontxt, dat, src, m)
    +call psb_snd(icontxt, dat, dst, m)
     

    -This subroutine receives a packet of data to a destination. +This subroutine sends a packet of data to a destination.

    Type:
    -
    Synchronous: see usage notes. +
    Synchronous: see usage notes.
    On Entry
    @@ -80,8 +81,24 @@ Intent: in.
    Specified as: an integer variable.
    -
    src
    -
    Source process. +
    dat
    +
    The data to be sent. +
    +Scope: local. +
    +Type: required. +
    +Intent: in. +
    +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. Type, kind and rank must agree on sender and receiver process; if $m$ is +not specified, size must agree as well. +
    +
    dst
    +
    Destination process.
    Scope: global.
    @@ -90,12 +107,12 @@ Type: required. Intent: in.
    Specified as: an integer value $0<= src <= np-1$. + SRC="img131.png" + ALT="$0<= dst <= np-1$">.
    m
    Number of rows. @@ -111,16 +128,16 @@ Specified as: an integer value $0<= m <= size(dat,1)$.
    When $dat$ is a rank 2 array, specifies the number of rows to be sent independently of the leading dimension $size(dat,1)$; must have the same value on sending and receiving processes.
    @@ -131,22 +148,6 @@ same value on sending and receiving processes.
    On Return
    -
    dat
    -
    The data to be received. -
    -Scope: local. -
    -Type: required. -
    -Intent: inout. -
    -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. Type, kind and rank must agree on sender and receiver process; if $m$ is -not specified, size must agree as well. -

    @@ -154,36 +155,36 @@ not specified, size must agree as well.

    1. This subroutine implies a synchronization, but only between the - calling process and the source process $src$. + calling process and the destination process $dst$.


    - next - + up - previous - contents
    - Next: Error handling - Up: Parallel environment routines - Previous: psb_snd Send -   Next: psb_rcv Receive + Up: Parallel environment routines + Previous: psb_amn Global +   Contents diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html index adcb8b18..5898a6c1 100644 --- a/docs/html/userhtml.html +++ b/docs/html/userhtml.html @@ -23,18 +23,18 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next up previous - contents
    - Next: Next: Contents -   Contents

    @@ -56,319 +56,323 @@ University of Rome ``Tor Vergata'', Italy


    -Software version: 3.0-beta +Software version: 3.0
    -December 15th, 2011 +May 25, 2012.

    -
  • Preconditioner data structure + +
    +
  • Computational routines -
    + HREF="node48.html">psb_spnrmi -- Infinity Norm of Sparse Matrix
  • Communication routines - +
  • psb_ovrl -- Overlap Update + HREF="node51.html">Communication routines + -
    + HREF="node53.html">psb_ovrl -- Overlap Update
  • Data management routines - +
  • psb_cdins -- Communication descriptor insert routine + HREF="node56.html">Data management routines + -
    + HREF="node81.html">psb_sp_getrow -- Extract row(s) from a sparse matrix
  • Parallel environment routines - +
  • psb_info -- Return information about PSBLAS parallel - environment + HREF="node84.html">Parallel environment routines +
    -
  • Error handling +
  • Error handling
    -
  • Utilities +
  • Utilities
    -
  • Preconditioner routines -

    diff --git a/docs/psblas-3.0.pdf b/docs/psblas-3.0.pdf index cc27da33..cbe46024 100644 --- a/docs/psblas-3.0.pdf +++ b/docs/psblas-3.0.pdf @@ -4,7 +4,7 @@ << /S /GoTo /D (title.0) >> endobj 8 0 obj -(PSBLAS-v3.0-beta User's Guide) +(PSBLAS-v3.0 User's Guide) endobj 9 0 obj << /S /GoTo /D (section.1) >> @@ -37,178 +37,178 @@ endobj (2.3 Application structure) endobj 29 0 obj -<< /S /GoTo /D (subsection.2.4) >> +<< /S /GoTo /D (subsubsection.2.3.1) >> endobj 32 0 obj -(2.4 Programming model) +(2.3.1 User-defined index mappings) endobj 33 0 obj -<< /S /GoTo /D (section.3) >> +<< /S /GoTo /D (subsection.2.4) >> endobj 36 0 obj -(3 Data Structures and Classes) +(2.4 Programming model) endobj 37 0 obj -<< /S /GoTo /D (subsection.3.1) >> +<< /S /GoTo /D (section.3) >> endobj 40 0 obj -(3.1 Descriptor data structure) +(3 Data Structures and Classes) endobj 41 0 obj -<< /S /GoTo /D (subsubsection.3.1.1) >> +<< /S /GoTo /D (subsection.3.1) >> endobj 44 0 obj -(3.1.1 Methods) +(3.1 Descriptor data structure) endobj 45 0 obj -<< /S /GoTo /D (section*.2) >> +<< /S /GoTo /D (subsubsection.3.1.1) >> endobj 48 0 obj -(get\137local\137rows ) +(3.1.1 Methods) endobj 49 0 obj -<< /S /GoTo /D (section*.3) >> +<< /S /GoTo /D (section*.2) >> endobj 52 0 obj -(get\137local\137cols ) +(get\137local\137rows ) endobj 53 0 obj -<< /S /GoTo /D (section*.4) >> +<< /S /GoTo /D (section*.3) >> endobj 56 0 obj -(get\137global\137rows ) +(get\137local\137cols ) endobj 57 0 obj -<< /S /GoTo /D (section*.5) >> +<< /S /GoTo /D (section*.4) >> endobj 60 0 obj -(get\137global\137cols ) +(get\137global\137rows ) endobj 61 0 obj -<< /S /GoTo /D (section*.6) >> +<< /S /GoTo /D (section*.5) >> endobj 64 0 obj -(get\137context) +(get\137global\137cols ) endobj 65 0 obj -<< /S /GoTo /D (section*.7) >> +<< /S /GoTo /D (section*.6) >> endobj 68 0 obj -(psb\137cd\137get\137large\137threshold) +(get\137context) endobj 69 0 obj -<< /S /GoTo /D (section*.8) >> +<< /S /GoTo /D (section*.7) >> endobj 72 0 obj -(psb\137cd\137set\137large\137threshold) +(psb\137cd\137get\137large\137threshold) endobj 73 0 obj -<< /S /GoTo /D (subsubsection.3.1.2) >> +<< /S /GoTo /D (section*.8) >> endobj 76 0 obj -(3.1.2 Named Constants) +(psb\137cd\137set\137large\137threshold) endobj 77 0 obj -<< /S /GoTo /D (subsection.3.2) >> +<< /S /GoTo /D (subsubsection.3.1.2) >> endobj 80 0 obj -(3.2 Sparse Matrix class) +(3.1.2 Named Constants) endobj 81 0 obj -<< /S /GoTo /D (subsubsection.3.2.1) >> +<< /S /GoTo /D (subsection.3.2) >> endobj 84 0 obj -(3.2.1 Methods) +(3.2 Sparse Matrix class) endobj 85 0 obj -<< /S /GoTo /D (section*.9) >> +<< /S /GoTo /D (subsubsection.3.2.1) >> endobj 88 0 obj -(get\137nrows) +(3.2.1 Methods) endobj 89 0 obj -<< /S /GoTo /D (section*.10) >> +<< /S /GoTo /D (section*.9) >> endobj 92 0 obj -(get\137ncols) +(get\137nrows) endobj 93 0 obj -<< /S /GoTo /D (section*.11) >> +<< /S /GoTo /D (section*.10) >> endobj 96 0 obj -(get\137nnzeros) +(get\137ncols) endobj 97 0 obj -<< /S /GoTo /D (section*.12) >> +<< /S /GoTo /D (section*.11) >> endobj 100 0 obj -(get\137size) +(get\137nnzeros) endobj 101 0 obj -<< /S /GoTo /D (section*.13) >> +<< /S /GoTo /D (section*.12) >> endobj 104 0 obj -(sizeof) +(get\137size) endobj 105 0 obj -<< /S /GoTo /D (section*.14) >> +<< /S /GoTo /D (section*.13) >> endobj 108 0 obj -(get\137fmt) +(sizeof) endobj 109 0 obj -<< /S /GoTo /D (section*.15) >> +<< /S /GoTo /D (section*.14) >> endobj 112 0 obj -(is\137bld, is\137upd, is\137asb) +(get\137fmt) endobj 113 0 obj -<< /S /GoTo /D (subsubsection.3.2.2) >> +<< /S /GoTo /D (section*.15) >> endobj 116 0 obj -(3.2.2 Named Constants) +(is\137bld, is\137upd, is\137asb) endobj 117 0 obj -<< /S /GoTo /D (subsection.3.3) >> +<< /S /GoTo /D (subsubsection.3.2.2) >> endobj 120 0 obj -(3.3 Dense Vector Data Structure) +(3.2.2 Named Constants) endobj 121 0 obj -<< /S /GoTo /D (subsubsection.3.3.1) >> +<< /S /GoTo /D (subsection.3.3) >> endobj 124 0 obj -(3.3.1 Methods) +(3.3 Dense Vector Data Structure) endobj 125 0 obj -<< /S /GoTo /D (section*.16) >> +<< /S /GoTo /D (subsubsection.3.3.1) >> endobj 128 0 obj -(v\137get\137nrows) +(3.3.1 Methods) endobj 129 0 obj -<< /S /GoTo /D (section*.18) >> +<< /S /GoTo /D (section*.16) >> endobj 132 0 obj -(v\137sizeof) +(v\137get\137nrows) endobj 133 0 obj -<< /S /GoTo /D (section*.19) >> +<< /S /GoTo /D (section*.18) >> endobj 136 0 obj -(v\137get\137vect) +(v\137sizeof) endobj 137 0 obj -<< /S /GoTo /D (subsection.3.4) >> +<< /S /GoTo /D (section*.19) >> endobj 140 0 obj -(3.4 Preconditioner data structure) +(v\137get\137vect) endobj 141 0 obj -<< /S /GoTo /D (subsection.3.5) >> +<< /S /GoTo /D (subsection.3.4) >> endobj 144 0 obj -(3.5 Data structure Methods) +(3.4 Preconditioner data structure) endobj 145 0 obj << /S /GoTo /D (section.4) >> @@ -274,433 +274,439 @@ endobj << /S /GoTo /D (section*.29) >> endobj 188 0 obj -(psb\137spnrmi) +(psb\137spnrm1) endobj 189 0 obj << /S /GoTo /D (section*.30) >> endobj 192 0 obj -(psb\137spmm) +(psb\137spnrmi) endobj 193 0 obj << /S /GoTo /D (section*.31) >> endobj 196 0 obj -(psb\137spsm) +(psb\137spmm) endobj 197 0 obj -<< /S /GoTo /D (section.5) >> +<< /S /GoTo /D (section*.32) >> endobj 200 0 obj -(5 Communication routines) +(psb\137spsm) endobj 201 0 obj -<< /S /GoTo /D (section*.32) >> +<< /S /GoTo /D (section.5) >> endobj 204 0 obj -(psb\137halo) +(5 Communication routines) endobj 205 0 obj << /S /GoTo /D (section*.33) >> endobj 208 0 obj -(psb\137ovrl) +(psb\137halo) endobj 209 0 obj << /S /GoTo /D (section*.34) >> endobj 212 0 obj -(psb\137gather) +(psb\137ovrl) endobj 213 0 obj << /S /GoTo /D (section*.35) >> endobj 216 0 obj -(psb\137scatter) +(psb\137gather) endobj 217 0 obj -<< /S /GoTo /D (section.6) >> +<< /S /GoTo /D (section*.36) >> endobj 220 0 obj -(6 Data management routines) +(psb\137scatter) endobj 221 0 obj -<< /S /GoTo /D (section*.36) >> +<< /S /GoTo /D (section.6) >> endobj 224 0 obj -(psb\137cdall) +(6 Data management routines) endobj 225 0 obj << /S /GoTo /D (section*.37) >> endobj 228 0 obj -(psb\137cdins) +(psb\137cdall) endobj 229 0 obj << /S /GoTo /D (section*.38) >> endobj 232 0 obj -(psb\137cdasb) +(psb\137cdins) endobj 233 0 obj << /S /GoTo /D (section*.39) >> endobj 236 0 obj -(psb\137cdcpy) +(psb\137cdasb) endobj 237 0 obj << /S /GoTo /D (section*.40) >> endobj 240 0 obj -(psb\137cdfree) +(psb\137cdcpy) endobj 241 0 obj << /S /GoTo /D (section*.41) >> endobj 244 0 obj -(psb\137cdbldext) +(psb\137cdfree) endobj 245 0 obj << /S /GoTo /D (section*.42) >> endobj 248 0 obj -(psb\137spall) +(psb\137cdbldext) endobj 249 0 obj << /S /GoTo /D (section*.43) >> endobj 252 0 obj -(psb\137spins) +(psb\137spall) endobj 253 0 obj << /S /GoTo /D (section*.44) >> endobj 256 0 obj -(psb\137spasb) +(psb\137spins) endobj 257 0 obj << /S /GoTo /D (section*.45) >> endobj 260 0 obj -(psb\137spfree) +(psb\137spasb) endobj 261 0 obj << /S /GoTo /D (section*.46) >> endobj 264 0 obj -(psb\137sprn) +(psb\137spfree) endobj 265 0 obj << /S /GoTo /D (section*.47) >> endobj 268 0 obj -(psb\137geall) +(psb\137sprn) endobj 269 0 obj << /S /GoTo /D (section*.48) >> endobj 272 0 obj -(psb\137geins) +(psb\137geall) endobj 273 0 obj << /S /GoTo /D (section*.49) >> endobj 276 0 obj -(psb\137geasb) +(psb\137geins) endobj 277 0 obj << /S /GoTo /D (section*.50) >> endobj 280 0 obj -(psb\137gefree) +(psb\137geasb) endobj 281 0 obj << /S /GoTo /D (section*.51) >> endobj 284 0 obj -(psb\137gelp) +(psb\137gefree) endobj 285 0 obj << /S /GoTo /D (section*.52) >> endobj 288 0 obj -(psb\137glob\137to\137loc) +(psb\137gelp) endobj 289 0 obj << /S /GoTo /D (section*.53) >> endobj 292 0 obj -(psb\137loc\137to\137glob) +(psb\137glob\137to\137loc) endobj 293 0 obj << /S /GoTo /D (section*.54) >> endobj 296 0 obj -(psb\137is\137owned) +(psb\137loc\137to\137glob) endobj 297 0 obj << /S /GoTo /D (section*.55) >> endobj 300 0 obj -(psb\137owned\137index) +(psb\137is\137owned) endobj 301 0 obj << /S /GoTo /D (section*.56) >> endobj 304 0 obj -(psb\137is\137local) +(psb\137owned\137index) endobj 305 0 obj << /S /GoTo /D (section*.57) >> endobj 308 0 obj -(psb\137local\137index) +(psb\137is\137local) endobj 309 0 obj << /S /GoTo /D (section*.58) >> endobj 312 0 obj -(psb\137get\137boundary) +(psb\137local\137index) endobj 313 0 obj << /S /GoTo /D (section*.59) >> endobj 316 0 obj -(psb\137get\137overlap) +(psb\137get\137boundary) endobj 317 0 obj << /S /GoTo /D (section*.60) >> endobj 320 0 obj -(psb\137sp\137getrow) +(psb\137get\137overlap) endobj 321 0 obj << /S /GoTo /D (section*.61) >> endobj 324 0 obj -(psb\137sizeof) +(psb\137sp\137getrow) endobj 325 0 obj << /S /GoTo /D (section*.62) >> endobj 328 0 obj -(Sorting utilities) +(psb\137sizeof) endobj 329 0 obj -<< /S /GoTo /D (section.7) >> +<< /S /GoTo /D (section*.63) >> endobj 332 0 obj -(7 Parallel environment routines) +(Sorting utilities) endobj 333 0 obj -<< /S /GoTo /D (section*.63) >> +<< /S /GoTo /D (section.7) >> endobj 336 0 obj -(psb\137init) +(7 Parallel environment routines) endobj 337 0 obj << /S /GoTo /D (section*.64) >> endobj 340 0 obj -(psb\137info) +(psb\137init) endobj 341 0 obj << /S /GoTo /D (section*.65) >> endobj 344 0 obj -(psb\137exit) +(psb\137info) endobj 345 0 obj << /S /GoTo /D (section*.66) >> endobj 348 0 obj -(psb\137get\137mpicomm) +(psb\137exit) endobj 349 0 obj << /S /GoTo /D (section*.67) >> endobj 352 0 obj -(psb\137get\137rank) +(psb\137get\137mpicomm) endobj 353 0 obj << /S /GoTo /D (section*.68) >> endobj 356 0 obj -(psb\137wtime) +(psb\137get\137rank) endobj 357 0 obj << /S /GoTo /D (section*.69) >> endobj 360 0 obj -(psb\137barrier) +(psb\137wtime) endobj 361 0 obj << /S /GoTo /D (section*.70) >> endobj 364 0 obj -(psb\137abort) +(psb\137barrier) endobj 365 0 obj << /S /GoTo /D (section*.71) >> endobj 368 0 obj -(psb\137bcast) +(psb\137abort) endobj 369 0 obj << /S /GoTo /D (section*.72) >> endobj 372 0 obj -(psb\137sum) +(psb\137bcast) endobj 373 0 obj << /S /GoTo /D (section*.73) >> endobj 376 0 obj -(psb\137max) +(psb\137sum) endobj 377 0 obj << /S /GoTo /D (section*.74) >> endobj 380 0 obj -(psb\137min) +(psb\137max) endobj 381 0 obj << /S /GoTo /D (section*.75) >> endobj 384 0 obj -(psb\137amx) +(psb\137min) endobj 385 0 obj << /S /GoTo /D (section*.76) >> endobj 388 0 obj -(psb\137amn) +(psb\137amx) endobj 389 0 obj << /S /GoTo /D (section*.77) >> endobj 392 0 obj -(psb\137snd) +(psb\137amn) endobj 393 0 obj << /S /GoTo /D (section*.78) >> endobj 396 0 obj -(psb\137rcv) +(psb\137snd) endobj 397 0 obj -<< /S /GoTo /D (section.8) >> +<< /S /GoTo /D (section*.79) >> endobj 400 0 obj -(8 Error handling) +(psb\137rcv) endobj 401 0 obj -<< /S /GoTo /D (section*.79) >> +<< /S /GoTo /D (section.8) >> endobj 404 0 obj -(psb\137errpush) +(8 Error handling) endobj 405 0 obj << /S /GoTo /D (section*.80) >> endobj 408 0 obj -(psb\137error) +(psb\137errpush) endobj 409 0 obj << /S /GoTo /D (section*.81) >> endobj 412 0 obj -(psb\137set\137errverbosity) +(psb\137error) endobj 413 0 obj << /S /GoTo /D (section*.82) >> endobj 416 0 obj -(psb\137set\137erraction) +(psb\137set\137errverbosity) endobj 417 0 obj -<< /S /GoTo /D (section.9) >> +<< /S /GoTo /D (section*.83) >> endobj 420 0 obj -(9 Utilities) +(psb\137set\137erraction) endobj 421 0 obj -<< /S /GoTo /D (section*.83) >> +<< /S /GoTo /D (section.9) >> endobj 424 0 obj -(hb\137read) +(9 Utilities) endobj 425 0 obj << /S /GoTo /D (section*.84) >> endobj 428 0 obj -(hb\137write) +(hb\137read) endobj 429 0 obj << /S /GoTo /D (section*.85) >> endobj 432 0 obj -(mm\137mat\137read) +(hb\137write) endobj 433 0 obj << /S /GoTo /D (section*.86) >> endobj 436 0 obj -(mm\137vet\137read ) +(mm\137mat\137read) endobj 437 0 obj << /S /GoTo /D (section*.87) >> endobj 440 0 obj -(mm\137mat\137write) +(mm\137vet\137read ) endobj 441 0 obj -<< /S /GoTo /D (section.10) >> +<< /S /GoTo /D (section*.88) >> endobj 444 0 obj -(10 Preconditioner routines) +(mm\137mat\137write) endobj 445 0 obj -<< /S /GoTo /D (section*.88) >> +<< /S /GoTo /D (section.10) >> endobj 448 0 obj -(psb\137precinit) +(10 Preconditioner routines) endobj 449 0 obj << /S /GoTo /D (section*.89) >> endobj 452 0 obj -(psb\137precbld) +(psb\137precinit) endobj 453 0 obj << /S /GoTo /D (section*.90) >> endobj 456 0 obj -(psb\137precaply) +(psb\137precbld) endobj 457 0 obj << /S /GoTo /D (section*.91) >> endobj 460 0 obj -(psb\137precdescr) +(psb\137precaply) endobj 461 0 obj -<< /S /GoTo /D (section.11) >> +<< /S /GoTo /D (section*.92) >> endobj 464 0 obj -(11 Iterative Methods) +(psb\137precdescr) endobj 465 0 obj -<< /S /GoTo /D (section*.92) >> +<< /S /GoTo /D (section.11) >> endobj 468 0 obj -(krylov) +(11 Iterative Methods) endobj 469 0 obj -<< /S /GoTo /D [470 0 R /Fit ] >> +<< /S /GoTo /D (section*.93) >> +endobj +472 0 obj +(krylov) +endobj +473 0 obj +<< /S /GoTo /D [474 0 R /Fit ] >> endobj -472 0 obj << -/Length 725 +476 0 obj << +/Length 683 >> stream 0 g 0 G @@ -709,43 +715,43 @@ stream 0 g 0 G 0 g 0 G BT -/F16 24.7871 Tf 169.148 575.399 Td [(PSBLAS)-375(3.0-b)-31(eta)-375(User's)]TJ 234.467 -18.21 Td [(guide)]TJ +/F16 24.7871 Tf 157.142 570.847 Td [(PSBLAS)-375(3.0)-375(User's)-375(guide)]TJ ET q -1 0 0 1 125.3 540.945 cm +1 0 0 1 125.3 554.602 cm 0 0 343.711 4.981 re f Q BT -/F18 14.3462 Tf 132.314 519.262 Td [(A)-350(r)50(efer)50(enc)50(e)-350(guide)-350(for)-350(the)-350(Par)50(al)-50(lel)-350(Sp)50(arse)-350(BLAS)-350(libr)50(ary)]TJ +/F18 14.3462 Tf 132.314 532.919 Td [(A)-350(r)50(efer)50(enc)50(e)-350(guide)-350(for)-350(the)-350(Par)50(al)-50(lel)-350(Sp)50(arse)-350(BLAS)-350(libr)50(ary)]TJ 0 g 0 G 0 g 0 G -/F27 9.9626 Tf 223.567 -123.224 Td [(b)32(y)-383(Salv)63(atore)-383(Filipp)-32(one)]TJ 12.889 -11.956 Td [(and)-383(Alfredo)-384(Buttari)]TJ/F8 9.9626 Tf -52.52 -11.955 Td [(Univ)28(ersit)28(y)-334(of)-333(Rome)-333(\134T)83(or)-333(V)83(ergata".)]TJ 58.227 -24.823 Td [(Decem)28(b)-28(er)-333(15th,)-334(2011.)]TJ +/F27 9.9626 Tf 223.567 -127.777 Td [(b)32(y)-383(Salv)63(atore)-383(Filipp)-32(one)]TJ 12.889 -11.955 Td [(and)-383(Alfredo)-384(Buttari)]TJ/F8 9.9626 Tf -52.52 -11.955 Td [(Univ)28(ersit)28(y)-334(of)-333(Rome)-333(\134T)83(or)-333(V)83(ergata".)]TJ 94.369 -24.824 Td [(Ma)28(y)-334(25,)-333(2012)]TJ 0 g 0 G 0 g 0 G ET endstream endobj -470 0 obj << +474 0 obj << /Type /Page -/Contents 472 0 R -/Resources 471 0 R +/Contents 476 0 R +/Resources 475 0 R /MediaBox [0 0 595.276 841.89] -/Parent 479 0 R +/Parent 483 0 R >> endobj -473 0 obj << -/D [470 0 R /XYZ 99.895 740.998 null] +477 0 obj << +/D [474 0 R /XYZ 99.895 740.998 null] >> endobj -474 0 obj << -/D [470 0 R /XYZ 99.895 716.092 null] +478 0 obj << +/D [474 0 R /XYZ 99.895 716.092 null] >> endobj 6 0 obj << -/D [470 0 R /XYZ 99.895 716.092 null] +/D [474 0 R /XYZ 99.895 716.092 null] >> endobj -471 0 obj << -/Font << /F16 475 0 R /F18 476 0 R /F27 477 0 R /F8 478 0 R >> +475 0 obj << +/Font << /F16 479 0 R /F18 480 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -482 0 obj << +486 0 obj << /Length 77 >> stream @@ -758,22 +764,22 @@ BT ET endstream endobj -481 0 obj << +485 0 obj << /Type /Page -/Contents 482 0 R -/Resources 480 0 R +/Contents 486 0 R +/Resources 484 0 R /MediaBox [0 0 595.276 841.89] -/Parent 479 0 R +/Parent 483 0 R >> endobj -483 0 obj << -/D [481 0 R /XYZ 150.705 740.998 null] +487 0 obj << +/D [485 0 R /XYZ 150.705 740.998 null] >> endobj -480 0 obj << -/Font << /F8 478 0 R >> +484 0 obj << +/Font << /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -532 0 obj << -/Length 17819 +536 0 obj << +/Length 17798 >> stream 0 g 0 G @@ -810,7 +816,14 @@ BT [-1584(6)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.123 Td [(2.4)-1022(Programming)-334(mo)-27(del)]TJ + 22.914 -12.123 Td [(2.3.1)-1144(Us)-1(er-de\014n)1(e)-1(d)-333(index)-333(mappings)]TJ +0 g 0 G + [-847(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ +0 g 0 G + [-1584(8)]TJ +0 g 0 G +0 0 1 rg 0 0 1 RG + -22.914 -12.122 Td [(2.4)-1022(Programming)-334(mo)-27(del)]TJ 0 g 0 G [-736(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ 0 g 0 G @@ -821,56 +834,56 @@ BT 0 g 0 G [-18144(9)]TJ 0 0 1 rg 0 0 1 RG -/F8 9.9626 Tf 14.944 -12.122 Td [(3.1)-1022(Descriptor)-334(data)-333(structure)]TJ +/F8 9.9626 Tf 14.944 -12.123 Td [(3.1)-1022(Descriptor)-334(data)-333(structure)]TJ 0 g 0 G [-886(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1584(9)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.123 Td [(3.1.1)-1144(Metho)-28(ds)]TJ + 22.914 -12.122 Td [(3.1.1)-1144(Metho)-28(ds)]TJ 0 g 0 G [-356(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.122 Td [(get)]TJ + 0 -12.123 Td [(get)]TJ ET q -1 0 0 1 151.635 554.882 cm +1 0 0 1 151.635 542.76 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 554.683 Td [(lo)-28(cal)]TJ +/F8 9.9626 Tf 154.624 542.56 Td [(lo)-28(cal)]TJ ET q -1 0 0 1 175.423 554.882 cm +1 0 0 1 175.423 542.76 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 178.412 554.683 Td [(ro)28(ws)]TJ +/F8 9.9626 Tf 178.412 542.56 Td [(ro)28(ws)]TJ 0 g 0 G [-1277(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1083(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -40.659 -12.123 Td [(get)]TJ + -40.659 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 542.76 cm +1 0 0 1 151.635 530.637 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 542.56 Td [(lo)-28(cal)]TJ +/F8 9.9626 Tf 154.624 530.438 Td [(lo)-28(cal)]TJ ET q -1 0 0 1 175.423 542.76 cm +1 0 0 1 175.423 530.637 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 178.412 542.56 Td [(cols)]TJ +/F8 9.9626 Tf 178.412 530.438 Td [(cols)]TJ 0 g 0 G [-863(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -880,53 +893,53 @@ BT -40.659 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 530.637 cm +1 0 0 1 151.635 518.515 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 530.438 Td [(global)]TJ +/F8 9.9626 Tf 154.624 518.316 Td [(global)]TJ ET q -1 0 0 1 181.235 530.637 cm +1 0 0 1 181.235 518.515 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.224 530.438 Td [(ro)28(ws)]TJ +/F8 9.9626 Tf 184.224 518.316 Td [(ro)28(ws)]TJ 0 g 0 G [-694(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -46.47 -12.122 Td [(get)]TJ + -46.47 -12.123 Td [(get)]TJ ET q -1 0 0 1 151.635 518.515 cm +1 0 0 1 151.635 506.393 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 518.316 Td [(global)]TJ +/F8 9.9626 Tf 154.624 506.193 Td [(global)]TJ ET q -1 0 0 1 181.235 518.515 cm +1 0 0 1 181.235 506.393 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.224 518.316 Td [(cols)]TJ +/F8 9.9626 Tf 184.224 506.193 Td [(cols)]TJ 0 g 0 G [-1058(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(13)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -46.47 -12.123 Td [(get)]TJ + -46.47 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 506.393 cm +1 0 0 1 151.635 494.27 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 506.193 Td [(con)28(text)]TJ +/F8 9.9626 Tf 154.624 494.071 Td [(con)28(text)]TJ 0 g 0 G [-868(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -936,88 +949,88 @@ BT -16.87 -12.122 Td [(psb)]TJ ET q -1 0 0 1 153.351 494.27 cm +1 0 0 1 153.351 482.148 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 156.339 494.071 Td [(cd)]TJ +/F8 9.9626 Tf 156.339 481.949 Td [(cd)]TJ ET q -1 0 0 1 166.9 494.27 cm +1 0 0 1 166.9 482.148 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 169.889 494.071 Td [(get)]TJ +/F8 9.9626 Tf 169.889 481.949 Td [(get)]TJ ET q -1 0 0 1 183.77 494.27 cm +1 0 0 1 183.77 482.148 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 186.759 494.071 Td [(large)]TJ +/F8 9.9626 Tf 186.759 481.949 Td [(large)]TJ ET q -1 0 0 1 208.416 494.27 cm +1 0 0 1 208.416 482.148 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 211.405 494.071 Td [(threshold)]TJ +/F8 9.9626 Tf 211.405 481.949 Td [(threshold)]TJ 0 g 0 G [-549(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(13)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -73.652 -12.122 Td [(psb)]TJ + -73.652 -12.123 Td [(psb)]TJ ET q -1 0 0 1 153.351 482.148 cm +1 0 0 1 153.351 470.025 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 156.339 481.949 Td [(cd)]TJ +/F8 9.9626 Tf 156.339 469.826 Td [(cd)]TJ ET q -1 0 0 1 166.9 482.148 cm +1 0 0 1 166.9 470.025 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 169.889 481.949 Td [(set)]TJ +/F8 9.9626 Tf 169.889 469.826 Td [(set)]TJ ET q -1 0 0 1 182.718 482.148 cm +1 0 0 1 182.718 470.025 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 185.707 481.949 Td [(large)]TJ +/F8 9.9626 Tf 185.707 469.826 Td [(large)]TJ ET q -1 0 0 1 207.365 482.148 cm +1 0 0 1 207.365 470.025 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 210.354 481.949 Td [(threshold)]TJ +/F8 9.9626 Tf 210.354 469.826 Td [(threshold)]TJ 0 g 0 G [-654(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(13)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -72.601 -12.123 Td [(3.1.2)-1144(Nam)-1(ed)-333(Constan)28(ts)]TJ + -72.601 -12.122 Td [(3.1.2)-1144(Nam)-1(ed)-333(Constan)28(ts)]TJ 0 g 0 G [-1017(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(14)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.122 Td [(3.2)-1022(Sparse)-334(Matri)1(x)-334(class)]TJ + -22.914 -12.123 Td [(3.2)-1022(Sparse)-334(Matri)1(x)-334(class)]TJ 0 g 0 G [-372(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(14)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.123 Td [(3.2.1)-1144(Metho)-28(ds)]TJ + 22.914 -12.122 Td [(3.2.1)-1144(Metho)-28(ds)]TJ 0 g 0 G [-356(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1027,39 +1040,39 @@ BT 0 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 433.658 cm +1 0 0 1 151.635 421.536 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 433.459 Td [(nro)28(ws)]TJ +/F8 9.9626 Tf 154.624 421.337 Td [(nro)28(ws)]TJ 0 g 0 G [-776(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(15)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -16.87 -12.122 Td [(get)]TJ + -16.87 -12.123 Td [(get)]TJ ET q -1 0 0 1 151.635 421.536 cm +1 0 0 1 151.635 409.414 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 421.337 Td [(ncols)]TJ +/F8 9.9626 Tf 154.624 409.214 Td [(ncols)]TJ 0 g 0 G [-362(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(15)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -16.87 -12.123 Td [(get)]TJ + -16.87 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 409.414 cm +1 0 0 1 151.635 397.291 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 409.214 Td [(nnzeros)]TJ +/F8 9.9626 Tf 154.624 397.092 Td [(nnzeros)]TJ 0 g 0 G [-804(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1069,67 +1082,67 @@ BT -16.87 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 397.291 cm +1 0 0 1 151.635 385.169 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 397.092 Td [(size)]TJ +/F8 9.9626 Tf 154.624 384.97 Td [(size)]TJ 0 g 0 G [-973(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(16)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -16.87 -12.122 Td [(sizeof)]TJ + -16.87 -12.123 Td [(sizeof)]TJ 0 g 0 G [-305(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ 0 g 0 G [-1084(17)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.123 Td [(get)]TJ + 0 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 373.046 cm +1 0 0 1 151.635 360.924 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 372.847 Td [(fm)28(t)]TJ +/F8 9.9626 Tf 154.624 360.725 Td [(fm)28(t)]TJ 0 g 0 G [-257(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(17)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -16.87 -12.122 Td [(is)]TJ + -16.87 -12.123 Td [(is)]TJ ET q -1 0 0 1 145.048 360.924 cm +1 0 0 1 145.048 348.802 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 148.037 360.725 Td [(bld,)-333(is)]TJ +/F8 9.9626 Tf 148.037 348.602 Td [(bld,)-333(is)]TJ ET q -1 0 0 1 175.257 360.924 cm +1 0 0 1 175.257 348.802 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 178.246 360.725 Td [(up)-28(d,)-333(is)]TJ +/F8 9.9626 Tf 178.246 348.602 Td [(up)-28(d,)-333(is)]TJ ET q -1 0 0 1 208.51 360.924 cm +1 0 0 1 208.51 348.802 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 211.499 360.725 Td [(asb)]TJ +/F8 9.9626 Tf 211.499 348.602 Td [(asb)]TJ 0 g 0 G [-820(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(17)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -73.746 -12.123 Td [(3.2.2)-1144(Nam)-1(ed)-333(Constan)28(ts)]TJ + -73.746 -12.122 Td [(3.2.2)-1144(Nam)-1(ed)-333(Constan)28(ts)]TJ 0 g 0 G [-1017(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1143,86 +1156,79 @@ BT [-1084(18)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.122 Td [(3.3.1)-1144(Metho)-28(ds)]TJ + 22.914 -12.123 Td [(3.3.1)-1144(Metho)-28(ds)]TJ 0 g 0 G [-356(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(18)]TJ + [-1084(19)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.123 Td [(v)]TJ + 0 -12.122 Td [(v)]TJ ET q -1 0 0 1 143.609 312.435 cm +1 0 0 1 143.609 300.312 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 146.598 312.235 Td [(get)]TJ +/F8 9.9626 Tf 146.598 300.113 Td [(get)]TJ ET q -1 0 0 1 160.479 312.435 cm +1 0 0 1 160.479 300.312 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 163.468 312.235 Td [(nro)28(ws)]TJ +/F8 9.9626 Tf 163.468 300.113 Td [(nro)28(ws)]TJ 0 g 0 G [-666(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(18)]TJ + [-1084(19)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -25.715 -12.122 Td [(v)]TJ ET q -1 0 0 1 143.609 300.312 cm +1 0 0 1 143.609 288.19 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 146.598 300.113 Td [(sizeof)]TJ +/F8 9.9626 Tf 146.598 287.991 Td [(sizeof)]TJ 0 g 0 G [-973(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(19)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -8.845 -12.122 Td [(v)]TJ + -8.845 -12.123 Td [(v)]TJ ET q -1 0 0 1 143.609 288.19 cm +1 0 0 1 143.609 276.067 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 146.598 287.991 Td [(get)]TJ +/F8 9.9626 Tf 146.598 275.868 Td [(get)]TJ ET q -1 0 0 1 160.479 288.19 cm +1 0 0 1 160.479 276.067 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 163.468 287.991 Td [(v)28(ect)]TJ +/F8 9.9626 Tf 163.468 275.868 Td [(v)28(ect)]TJ 0 g 0 G [-647(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(19)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -48.629 -12.123 Td [(3.4)-1022(Preconditioner)-333(data)-334(structure)]TJ + -48.629 -12.122 Td [(3.4)-1022(Preconditioner)-333(data)-334(structure)]TJ 0 g 0 G [-586(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(19)]TJ -0 g 0 G -0 0 1 rg 0 0 1 RG - 0 -12.122 Td [(3.5)-1022(Data)-334(structure)-333(Metho)-28(ds)]TJ -0 g 0 G - [-669(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ -0 g 0 G - [-1084(21)]TJ + [-1084(20)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG /F27 9.9626 Tf -14.944 -22.197 Td [(4)-925(Computational)-383(r)-1(ou)1(t)-1(ines)]TJ 0 g 0 G - [-19886(22)]TJ + [-19886(21)]TJ 0 0 1 rg 0 0 1 RG /F8 9.9626 Tf 14.944 -12.122 Td [(psb)]TJ ET @@ -1235,7 +1241,7 @@ BT 0 g 0 G [-301(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(23)]TJ + [-1084(22)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.122 Td [(psb)]TJ @@ -1249,7 +1255,7 @@ BT 0 g 0 G [-718(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1083(25)]TJ + [-1083(24)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.123 Td [(psb)]TJ @@ -1263,7 +1269,7 @@ BT 0 g 0 G [-323(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(27)]TJ + [-1084(26)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.122 Td [(psb)]TJ @@ -1277,7 +1283,7 @@ BT 0 g 0 G [-579(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(29)]TJ + [-1084(28)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.122 Td [(psb)]TJ @@ -1291,7 +1297,7 @@ BT 0 g 0 G [-962(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(30)]TJ + [-1084(29)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.122 Td [(psb)]TJ @@ -1305,7 +1311,7 @@ BT 0 g 0 G [-657(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1083(31)]TJ + [-1083(30)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.122 Td [(psb)]TJ @@ -1319,7 +1325,7 @@ BT 0 g 0 G [-262(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(32)]TJ + [-1084(31)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.123 Td [(psb)]TJ @@ -1333,7 +1339,7 @@ BT 0 g 0 G [-262(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(34)]TJ + [-1084(33)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.122 Td [(psb)]TJ @@ -1347,7 +1353,7 @@ BT 0 g 0 G [-265(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(35)]TJ + [-1084(34)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.122 Td [(psb)]TJ @@ -1357,11 +1363,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 120.326 Td [(spnrmi)]TJ +/F8 9.9626 Tf 133.425 120.326 Td [(spnrm1)]TJ 0 g 0 G - [-876(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-654(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(36)]TJ + [-1084(35)]TJ 0 g 0 G 0 g 0 G 136.942 -29.888 Td [(i)]TJ @@ -1369,341 +1375,341 @@ BT ET endstream endobj -531 0 obj << +535 0 obj << /Type /Page -/Contents 532 0 R -/Resources 530 0 R +/Contents 536 0 R +/Resources 534 0 R /MediaBox [0 0 595.276 841.89] -/Parent 479 0 R -/Annots [ 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R 528 0 R ] +/Parent 483 0 R +/Annots [ 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R 528 0 R 529 0 R 530 0 R 531 0 R 532 0 R ] >> endobj -484 0 obj << +488 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [98.899 682.936 179.001 691.847] /Subtype /Link /A << /S /GoTo /D (section.1) >> >> endobj -485 0 obj << +489 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [98.899 660.74 202.863 669.651] /Subtype /Link /A << /S /GoTo /D (section.2) >> >> endobj -486 0 obj << +490 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 648.617 225.868 657.528] /Subtype /Link /A << /S /GoTo /D (subsection.2.1) >> >> endobj -487 0 obj << +491 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 634.558 210.675 645.406] /Subtype /Link /A << /S /GoTo /D (subsection.2.2) >> >> endobj -488 0 obj << +492 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 622.435 232.122 633.284] /Subtype /Link /A << /S /GoTo /D (subsection.2.3) >> >> endobj -489 0 obj << +493 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.757 610.313 296.409 621.161] +/Subtype /Link +/A << /S /GoTo /D (subsubsection.2.3.1) >> +>> endobj +494 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 610.313 227.777 621.161] +/Rect [113.843 598.191 227.777 609.039] /Subtype /Link /A << /S /GoTo /D (subsection.2.4) >> >> endobj -490 0 obj << +495 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 590.054 258.112 598.965] +/Rect [98.899 577.931 258.112 586.842] /Subtype /Link /A << /S /GoTo /D (section.3) >> >> endobj -491 0 obj << +496 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 575.994 249.529 586.842] +/Rect [113.843 563.872 249.529 574.72] /Subtype /Link /A << /S /GoTo /D (subsection.3.1) >> >> endobj -492 0 obj << +497 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 565.809 208.322 574.72] +/Rect [136.757 553.687 208.322 562.598] /Subtype /Link /A << /S /GoTo /D (subsubsection.3.1.1) >> >> endobj -493 0 obj << +498 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 551.749 202.461 562.598] +/Rect [136.757 539.627 202.461 550.475] /Subtype /Link /A << /S /GoTo /D (section*.2) >> >> endobj -494 0 obj << +499 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 539.627 198.836 550.475] +/Rect [136.757 527.505 198.836 538.353] /Subtype /Link /A << /S /GoTo /D (section*.3) >> >> endobj -495 0 obj << +500 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 527.505 208.273 538.353] +/Rect [136.757 515.382 208.273 526.23] /Subtype /Link /A << /S /GoTo /D (section*.4) >> >> endobj -496 0 obj << +501 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 515.382 204.647 526.23] +/Rect [136.757 503.26 204.647 514.108] /Subtype /Link /A << /S /GoTo /D (section*.5) >> >> endobj -497 0 obj << +502 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 503.26 187.722 513.61] +/Rect [136.757 491.137 187.722 501.488] /Subtype /Link /A << /S /GoTo /D (section*.6) >> >> endobj -498 0 obj << +503 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 491.137 252.889 501.986] +/Rect [136.757 479.015 252.889 489.863] /Subtype /Link /A << /S /GoTo /D (section*.7) >> >> endobj -499 0 obj << +504 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 479.015 251.837 489.863] +/Rect [136.757 466.893 251.837 477.741] /Subtype /Link /A << /S /GoTo /D (section*.8) >> >> endobj -500 0 obj << +505 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 468.83 248.228 477.741] +/Rect [136.757 456.708 248.228 465.619] /Subtype /Link /A << /S /GoTo /D (subsubsection.3.1.2) >> >> endobj -501 0 obj << +506 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 454.77 223.654 465.619] +/Rect [113.843 442.648 223.654 453.496] /Subtype /Link /A << /S /GoTo /D (subsection.3.2) >> >> endobj -502 0 obj << +507 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 444.585 208.322 453.496] +/Rect [136.757 432.463 208.322 441.374] /Subtype /Link /A << /S /GoTo /D (subsubsection.3.2.1) >> >> endobj -503 0 obj << +508 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 430.526 180.886 440.876] +/Rect [136.757 418.403 180.886 428.753] /Subtype /Link /A << /S /GoTo /D (section*.9) >> >> endobj -504 0 obj << +509 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 418.403 177.261 429.251] +/Rect [136.757 406.281 177.261 417.129] /Subtype /Link /A << /S /GoTo /D (section*.10) >> >> endobj -505 0 obj << +510 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 406.281 188.358 416.631] +/Rect [136.757 394.159 188.358 404.509] /Subtype /Link /A << /S /GoTo /D (section*.11) >> >> endobj -506 0 obj << +511 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 394.159 171.173 404.742] +/Rect [136.757 382.036 171.173 392.619] /Subtype /Link /A << /S /GoTo /D (section*.12) >> >> endobj -507 0 obj << +512 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 383.973 162.328 392.884] +/Rect [136.757 371.851 162.328 380.762] /Subtype /Link /A << /S /GoTo /D (section*.13) >> >> endobj -508 0 obj << +513 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 369.914 170.564 380.762] +/Rect [136.757 357.791 170.564 368.64] /Subtype /Link /A << /S /GoTo /D (section*.14) >> >> endobj -509 0 obj << +514 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 357.791 226.941 368.64] +/Rect [136.757 345.669 226.941 356.517] /Subtype /Link /A << /S /GoTo /D (section*.15) >> >> endobj -510 0 obj << +515 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 347.606 248.228 356.517] +/Rect [136.757 335.484 248.228 344.395] /Subtype /Link /A << /S /GoTo /D (subsubsection.3.2.2) >> >> endobj -511 0 obj << +516 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 335.484 265.358 344.284] +/Rect [113.843 323.361 265.358 332.162] /Subtype /Link /A << /S /GoTo /D (subsection.3.3) >> >> endobj -512 0 obj << +517 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 323.361 208.322 332.272] +/Rect [136.757 311.239 208.322 320.15] /Subtype /Link /A << /S /GoTo /D (subsubsection.3.3.1) >> >> endobj -513 0 obj << +518 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 309.302 189.731 319.652] +/Rect [136.757 297.18 189.731 307.53] /Subtype /Link /A << /S /GoTo /D (section*.16) >> >> endobj -514 0 obj << +519 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 299.117 171.173 308.028] +/Rect [136.757 286.994 171.173 295.905] /Subtype /Link /A << /S /GoTo /D (section*.18) >> >> endobj -515 0 obj << +520 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 285.057 182.176 295.407] +/Rect [136.757 272.935 182.176 283.285] /Subtype /Link /A << /S /GoTo /D (section*.19) >> >> endobj -516 0 obj << +521 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 274.872 268.015 283.783] +/Rect [113.843 262.75 268.015 271.661] /Subtype /Link /A << /S /GoTo /D (subsection.3.4) >> >> endobj -517 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 262.75 243.939 271.661] -/Subtype /Link -/A << /S /GoTo /D (subsection.3.5) >> ->> endobj -518 0 obj << +522 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [98.899 238.616 235.028 249.464] /Subtype /Link /A << /S /GoTo /D (section.4) >> >> endobj -519 0 obj << +523 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 226.494 170.121 237.342] /Subtype /Link /A << /S /GoTo /D (section*.20) >> >> endobj -520 0 obj << +524 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 214.371 158.221 225.219] /Subtype /Link /A << /S /GoTo /D (section*.21) >> >> endobj -521 0 obj << +525 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 202.249 162.151 213.097] /Subtype /Link /A << /S /GoTo /D (section*.22) >> >> endobj -522 0 obj << +526 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 190.126 167.354 200.975] /Subtype /Link /A << /S /GoTo /D (section*.23) >> >> endobj -523 0 obj << +527 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 178.004 171.283 188.852] /Subtype /Link /A << /S /GoTo /D (section*.24) >> >> endobj -524 0 obj << +528 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 165.882 166.579 176.73] /Subtype /Link /A << /S /GoTo /D (section*.25) >> >> endobj -525 0 obj << +529 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 153.759 170.508 164.608] /Subtype /Link /A << /S /GoTo /D (section*.26) >> >> endobj -526 0 obj << +530 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 141.637 170.508 152.485] /Subtype /Link /A << /S /GoTo /D (section*.27) >> >> endobj -527 0 obj << +531 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 129.515 170.481 140.363] /Subtype /Link /A << /S /GoTo /D (section*.28) >> >> endobj -528 0 obj << +532 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 117.392 164.393 128.24] +/Rect [113.843 117.392 166.606 128.24] /Subtype /Link /A << /S /GoTo /D (section*.29) >> >> endobj -533 0 obj << -/D [531 0 R /XYZ 99.895 740.998 null] +537 0 obj << +/D [535 0 R /XYZ 99.895 740.998 null] >> endobj -534 0 obj << -/D [531 0 R /XYZ 99.895 696.143 null] +538 0 obj << +/D [535 0 R /XYZ 99.895 696.143 null] >> endobj -530 0 obj << -/Font << /F16 475 0 R /F27 477 0 R /F8 478 0 R >> +534 0 obj << +/Font << /F16 479 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -584 0 obj << -/Length 21523 +588 0 obj << +/Length 21513 >> stream 0 g 0 G @@ -1717,7 +1723,21 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 706.129 Td [(spmm)]TJ +/F8 9.9626 Tf 184.235 706.129 Td [(spnrmi)]TJ +0 g 0 G + [-876(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ +0 g 0 G + [-1084(36)]TJ +0 g 0 G +0 0 1 rg 0 0 1 RG + -18.586 -12.08 Td [(psb)]TJ +ET +q +1 0 0 1 181.246 694.248 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F8 9.9626 Tf 184.235 694.049 Td [(spmm)]TJ 0 g 0 G [-490(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1727,11 +1747,11 @@ BT -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 694.248 cm +1 0 0 1 181.246 682.169 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 694.049 Td [(spsm)]TJ +/F8 9.9626 Tf 184.235 681.969 Td [(spsm)]TJ 0 g 0 G [-929(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1745,39 +1765,39 @@ BT /F8 9.9626 Tf 14.944 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 660.043 cm +1 0 0 1 181.246 647.964 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 659.844 Td [(halo)]TJ +/F8 9.9626 Tf 184.235 647.764 Td [(halo)]TJ 0 g 0 G [-495(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(43)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ + -18.586 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 647.964 cm +1 0 0 1 181.246 635.884 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 647.764 Td [(o)28(vrl)]TJ +/F8 9.9626 Tf 184.235 635.685 Td [(o)28(vrl)]TJ 0 g 0 G [-659(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ 0 g 0 G [-1084(46)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.079 Td [(psb)]TJ + -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 635.884 cm +1 0 0 1 181.246 623.804 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 635.685 Td [(gather)]TJ +/F8 9.9626 Tf 184.235 623.605 Td [(gather)]TJ 0 g 0 G [-326(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1787,11 +1807,11 @@ BT -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 623.804 cm +1 0 0 1 181.246 611.725 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 623.605 Td [(scatter)]TJ +/F8 9.9626 Tf 184.235 611.525 Td [(scatter)]TJ 0 g 0 G [-932(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1805,71 +1825,57 @@ BT /F8 9.9626 Tf 14.944 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 589.599 cm +1 0 0 1 181.246 577.519 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 589.4 Td [(cdall)]TJ +/F8 9.9626 Tf 184.235 577.32 Td [(cdall)]TJ 0 g 0 G [-273(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(54)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ + -18.586 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 577.519 cm +1 0 0 1 181.246 565.44 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 577.32 Td [(cdins)]TJ +/F8 9.9626 Tf 184.235 565.241 Td [(cdins)]TJ 0 g 0 G [-879(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(58)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.079 Td [(psb)]TJ + -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 565.44 cm +1 0 0 1 181.246 553.36 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 565.241 Td [(cdasb)]TJ +/F8 9.9626 Tf 184.235 553.161 Td [(cdasb)]TJ 0 g 0 G [-657(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1083(59)]TJ + [-1083(60)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 553.36 cm +1 0 0 1 181.246 541.28 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 553.161 Td [(cdcp)28(y)]TJ +/F8 9.9626 Tf 184.235 541.081 Td [(cdcp)28(y)]TJ 0 g 0 G [-607(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(60)]TJ -0 g 0 G -0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ -ET -q -1 0 0 1 181.246 541.28 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F8 9.9626 Tf 184.235 541.081 Td [(cdfree)]TJ -0 g 0 G - [-520(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)]TJ -0 g 0 G - [-1084(61)]TJ + [-1084(61)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.08 Td [(psb)]TJ @@ -1879,9 +1885,9 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 529.001 Td [(cdbldext)]TJ +/F8 9.9626 Tf 184.235 529.001 Td [(cdfree)]TJ 0 g 0 G - [-912(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-520(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(62)]TJ 0 g 0 G @@ -1893,11 +1899,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 516.922 Td [(spall)]TJ +/F8 9.9626 Tf 184.235 516.922 Td [(cdbldext)]TJ 0 g 0 G - [-323(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-912(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(64)]TJ + [-1084(63)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.08 Td [(psb)]TJ @@ -1907,9 +1913,9 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 504.842 Td [(spins)]TJ +/F8 9.9626 Tf 184.235 504.842 Td [(spall)]TJ 0 g 0 G - [-929(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-323(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(65)]TJ 0 g 0 G @@ -1921,11 +1927,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 492.762 Td [(spasb)]TJ +/F8 9.9626 Tf 184.235 492.762 Td [(spins)]TJ 0 g 0 G - [-707(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-929(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1083(67)]TJ + [-1084(66)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.079 Td [(psb)]TJ @@ -1935,11 +1941,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 480.683 Td [(spfree)]TJ +/F8 9.9626 Tf 184.235 480.683 Td [(spasb)]TJ 0 g 0 G - [-570(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)]TJ + [-707(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(69)]TJ + [-1083(68)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.08 Td [(psb)]TJ @@ -1949,9 +1955,9 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 468.603 Td [(sprn)]TJ +/F8 9.9626 Tf 184.235 468.603 Td [(spfree)]TJ 0 g 0 G - [-431(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ + [-570(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(70)]TJ 0 g 0 G @@ -1963,9 +1969,9 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 456.523 Td [(geall)]TJ +/F8 9.9626 Tf 184.235 456.523 Td [(sprn)]TJ 0 g 0 G - [-329(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-431(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ 0 g 0 G [-1084(71)]TJ 0 g 0 G @@ -1977,9 +1983,9 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 444.444 Td [(geins)]TJ +/F8 9.9626 Tf 184.235 444.444 Td [(geall)]TJ 0 g 0 G - [-934(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-329(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(72)]TJ 0 g 0 G @@ -1991,11 +1997,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 432.364 Td [(geasb)]TJ +/F8 9.9626 Tf 184.235 432.364 Td [(geins)]TJ 0 g 0 G - [-712(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-934(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(74)]TJ + [-1084(73)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.08 Td [(psb)]TJ @@ -2005,9 +2011,9 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 420.284 Td [(gefree)]TJ +/F8 9.9626 Tf 184.235 420.284 Td [(geasb)]TJ 0 g 0 G - [-576(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-712(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(75)]TJ 0 g 0 G @@ -2019,9 +2025,9 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 408.204 Td [(gelp)]TJ +/F8 9.9626 Tf 184.235 408.204 Td [(gefree)]TJ 0 g 0 G - [-551(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-576(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(76)]TJ 0 g 0 G @@ -2033,335 +2039,335 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 396.125 Td [(glob)]TJ +/F8 9.9626 Tf 184.235 396.125 Td [(gelp)]TJ +0 g 0 G + [-551(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ +0 g 0 G + [-1084(77)]TJ +0 g 0 G +0 0 1 rg 0 0 1 RG + -18.586 -12.08 Td [(psb)]TJ +ET +q +1 0 0 1 181.246 384.244 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F8 9.9626 Tf 184.235 384.045 Td [(glob)]TJ ET q -1 0 0 1 203.097 396.324 cm +1 0 0 1 203.097 384.244 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 206.086 396.125 Td [(to)]TJ +/F8 9.9626 Tf 206.086 384.045 Td [(to)]TJ ET q -1 0 0 1 215.54 396.324 cm +1 0 0 1 215.54 384.244 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 218.528 396.125 Td [(lo)-28(c)]TJ +/F8 9.9626 Tf 218.528 384.045 Td [(lo)-28(c)]TJ 0 g 0 G [-747(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1083(77)]TJ + [-1083(78)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -52.879 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 384.244 cm +1 0 0 1 181.246 372.165 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 384.045 Td [(lo)-28(c)]TJ +/F8 9.9626 Tf 184.235 371.965 Td [(lo)-28(c)]TJ ET q -1 0 0 1 197.286 384.244 cm +1 0 0 1 197.286 372.165 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 200.275 384.045 Td [(to)]TJ +/F8 9.9626 Tf 200.275 371.965 Td [(to)]TJ ET q -1 0 0 1 209.728 384.244 cm +1 0 0 1 209.728 372.165 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 212.717 384.045 Td [(glob)]TJ +/F8 9.9626 Tf 212.717 371.965 Td [(glob)]TJ 0 g 0 G [-748(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1083(79)]TJ + [-1083(80)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -47.068 -12.08 Td [(psb)]TJ + -47.068 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 372.165 cm +1 0 0 1 181.246 360.085 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 371.965 Td [(is)]TJ +/F8 9.9626 Tf 184.235 359.886 Td [(is)]TJ ET q -1 0 0 1 191.53 372.165 cm +1 0 0 1 191.53 360.085 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 194.518 371.965 Td [(o)28(wned)]TJ +/F8 9.9626 Tf 194.518 359.886 Td [(o)28(wned)]TJ 0 g 0 G [-880(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(80)]TJ + [-1084(81)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -28.869 -12.079 Td [(psb)]TJ + -28.869 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 360.085 cm +1 0 0 1 181.246 348.005 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 359.886 Td [(o)28(wned)]TJ +/F8 9.9626 Tf 184.235 347.806 Td [(o)28(wned)]TJ ET q -1 0 0 1 212.23 360.085 cm +1 0 0 1 212.23 348.005 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 215.219 359.886 Td [(index)]TJ +/F8 9.9626 Tf 215.219 347.806 Td [(index)]TJ 0 g 0 G [-746(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1083(81)]TJ + [-1083(82)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -49.57 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 348.005 cm +1 0 0 1 181.246 335.925 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 347.806 Td [(is)]TJ +/F8 9.9626 Tf 184.235 335.726 Td [(is)]TJ ET q -1 0 0 1 191.53 348.005 cm +1 0 0 1 191.53 335.925 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 194.518 347.806 Td [(lo)-28(cal)]TJ +/F8 9.9626 Tf 194.518 335.726 Td [(lo)-28(cal)]TJ 0 g 0 G [-824(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(82)]TJ + [-1084(83)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -28.869 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 335.925 cm +1 0 0 1 181.246 323.846 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 335.726 Td [(lo)-28(cal)]TJ +/F8 9.9626 Tf 184.235 323.647 Td [(lo)-28(cal)]TJ ET q -1 0 0 1 205.035 335.925 cm +1 0 0 1 205.035 323.846 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 208.023 335.726 Td [(index)]TJ +/F8 9.9626 Tf 208.023 323.647 Td [(index)]TJ 0 g 0 G [-691(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(83)]TJ + [-1084(84)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -42.374 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 323.846 cm +1 0 0 1 181.246 311.766 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 323.647 Td [(get)]TJ +/F8 9.9626 Tf 184.235 311.567 Td [(get)]TJ ET q -1 0 0 1 198.116 323.846 cm +1 0 0 1 198.116 311.766 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 201.105 323.647 Td [(b)-28(oundary)]TJ +/F8 9.9626 Tf 201.105 311.567 Td [(b)-28(oundary)]TJ 0 g 0 G [-354(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1083(84)]TJ + [-1083(85)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -35.456 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 311.766 cm +1 0 0 1 181.246 299.686 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 311.567 Td [(get)]TJ +/F8 9.9626 Tf 184.235 299.487 Td [(get)]TJ ET q -1 0 0 1 198.116 311.766 cm +1 0 0 1 198.116 299.686 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 201.105 311.567 Td [(o)28(v)28(erlap)]TJ +/F8 9.9626 Tf 201.105 299.487 Td [(o)28(v)28(erlap)]TJ 0 g 0 G [-605(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(85)]TJ + [-1084(86)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -35.456 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 299.686 cm +1 0 0 1 181.246 287.607 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 299.487 Td [(sp)]TJ +/F8 9.9626 Tf 184.235 287.407 Td [(sp)]TJ ET q -1 0 0 1 194.297 299.686 cm +1 0 0 1 194.297 287.607 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 197.286 299.487 Td [(getro)28(w)]TJ +/F8 9.9626 Tf 197.286 287.407 Td [(getro)28(w)]TJ 0 g 0 G [-433(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(86)]TJ + [-1084(87)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -31.637 -12.08 Td [(psb)]TJ + -31.637 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 287.607 cm +1 0 0 1 181.246 275.527 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 287.407 Td [(sizeof)]TJ +/F8 9.9626 Tf 184.235 275.328 Td [(sizeof)]TJ 0 g 0 G [-740(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(88)]TJ + [-1084(89)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.079 Td [(Sorting)-333(utilities)]TJ + -18.586 -12.08 Td [(Sorting)-333(utilities)]TJ 0 g 0 G [-519(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1083(89)]TJ + [-1083(90)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F27 9.9626 Tf -14.944 -22.126 Td [(7)-925(P)32(arallel)-384(en)32(vironmen)32(t)-383(routines)]TJ +/F27 9.9626 Tf -14.944 -22.125 Td [(7)-925(P)32(arallel)-384(en)32(vironmen)32(t)-383(routines)]TJ 0 g 0 G - [-16891(91)]TJ + [-16891(92)]TJ 0 0 1 rg 0 0 1 RG -/F8 9.9626 Tf 14.944 -12.079 Td [(psb)]TJ +/F8 9.9626 Tf 14.944 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 241.322 cm +1 0 0 1 181.246 229.242 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 241.123 Td [(init)]TJ +/F8 9.9626 Tf 184.235 229.043 Td [(init)]TJ 0 g 0 G [-829(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1083(92)]TJ + [-1083(93)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 229.242 cm +1 0 0 1 181.246 217.162 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 229.043 Td [(info)]TJ +/F8 9.9626 Tf 184.235 216.963 Td [(info)]TJ 0 g 0 G [-690(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(93)]TJ + [-1084(94)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ + -18.586 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 217.162 cm +1 0 0 1 181.246 205.083 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 216.963 Td [(exit)]TJ +/F8 9.9626 Tf 184.235 204.884 Td [(exit)]TJ 0 g 0 G [-690(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(94)]TJ + [-1084(95)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.079 Td [(psb)]TJ + -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 205.083 cm +1 0 0 1 181.246 193.003 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 204.884 Td [(get)]TJ +/F8 9.9626 Tf 184.235 192.804 Td [(get)]TJ ET q -1 0 0 1 198.116 205.083 cm +1 0 0 1 198.116 193.003 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 201.105 204.884 Td [(mpicomm)]TJ +/F8 9.9626 Tf 201.105 192.804 Td [(mpicomm)]TJ 0 g 0 G [-1024(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1083(95)]TJ + [-1083(96)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -35.456 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 193.003 cm +1 0 0 1 181.246 180.923 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 192.804 Td [(get)]TJ +/F8 9.9626 Tf 184.235 180.724 Td [(get)]TJ ET q -1 0 0 1 198.116 193.003 cm +1 0 0 1 198.116 180.923 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 201.105 192.804 Td [(rank)]TJ +/F8 9.9626 Tf 201.105 180.724 Td [(rank)]TJ 0 g 0 G [-994(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1083(96)]TJ + [-1083(97)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -35.456 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 180.923 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F8 9.9626 Tf 184.235 180.724 Td [(wtime)]TJ -0 g 0 G - [-440(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ -0 g 0 G - [-1084(97)]TJ -0 g 0 G -0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ -ET -q 1 0 0 1 181.246 168.844 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 168.644 Td [(barrier)]TJ +/F8 9.9626 Tf 184.235 168.644 Td [(wtime)]TJ 0 g 0 G - [-931(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ + [-440(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(98)]TJ 0 g 0 G @@ -2373,9 +2379,9 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 156.565 Td [(ab)-28(ort)]TJ +/F8 9.9626 Tf 184.235 156.565 Td [(barrier)]TJ 0 g 0 G - [-742(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-931(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ 0 g 0 G [-1084(99)]TJ 0 g 0 G @@ -2387,9 +2393,9 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 144.485 Td [(b)-28(cast)]TJ +/F8 9.9626 Tf 184.235 144.485 Td [(ab)-28(ort)]TJ 0 g 0 G - [-795(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-742(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-584(100)]TJ 0 g 0 G @@ -2401,9 +2407,9 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 132.405 Td [(sum)]TJ +/F8 9.9626 Tf 184.235 132.405 Td [(b)-28(cast)]TJ 0 g 0 G - [-545(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)]TJ + [-795(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-584(101)]TJ 0 g 0 G @@ -2415,11 +2421,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 120.326 Td [(max)]TJ +/F8 9.9626 Tf 184.235 120.326 Td [(sum)]TJ 0 g 0 G - [-468(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-545(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)]TJ 0 g 0 G - [-583(102)]TJ + [-584(102)]TJ 0 g 0 G 0 g 0 G 135.558 -29.888 Td [(ii)]TJ @@ -2427,352 +2433,352 @@ BT ET endstream endobj -583 0 obj << +587 0 obj << /Type /Page -/Contents 584 0 R -/Resources 582 0 R +/Contents 588 0 R +/Resources 586 0 R /MediaBox [0 0 595.276 841.89] -/Parent 479 0 R -/Annots [ 529 0 R 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R ] +/Parent 483 0 R +/Annots [ 533 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R 581 0 R 582 0 R 583 0 R 584 0 R ] >> endobj -529 0 obj << +533 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 703.195 211.3 714.044] +/Rect [164.653 703.195 215.202 714.044] /Subtype /Link /A << /S /GoTo /D (section*.30) >> >> endobj -535 0 obj << +539 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 691.116 206.927 701.964] +/Rect [164.653 691.116 211.3 701.964] /Subtype /Link /A << /S /GoTo /D (section*.31) >> >> endobj -536 0 obj << +540 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 670.928 290.134 679.839] +/Rect [164.653 679.036 206.927 689.884] /Subtype /Link -/A << /S /GoTo /D (section.5) >> +/A << /S /GoTo /D (section*.32) >> >> endobj -537 0 obj << +541 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 656.911 203.496 667.759] +/Rect [149.709 658.848 290.134 667.759] /Subtype /Link -/A << /S /GoTo /D (section*.32) >> +/A << /S /GoTo /D (section.5) >> >> endobj -538 0 obj << +542 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 644.831 201.863 655.679] +/Rect [164.653 644.831 203.496 655.679] /Subtype /Link /A << /S /GoTo /D (section*.33) >> >> endobj -539 0 obj << +543 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 632.751 212.933 643.599] +/Rect [164.653 632.751 201.863 643.599] /Subtype /Link /A << /S /GoTo /D (section*.34) >> >> endobj -540 0 obj << +544 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 620.672 214.648 631.52] +/Rect [164.653 620.672 212.933 631.52] /Subtype /Link /A << /S /GoTo /D (section*.35) >> >> endobj -541 0 obj << +545 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 598.546 302.58 609.394] +/Rect [164.653 608.592 214.648 619.44] /Subtype /Link -/A << /S /GoTo /D (section.6) >> +/A << /S /GoTo /D (section*.36) >> >> endobj -542 0 obj << +546 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 586.466 205.71 597.315] +/Rect [149.709 586.466 302.58 597.315] /Subtype /Link -/A << /S /GoTo /D (section*.36) >> +/A << /S /GoTo /D (section.6) >> >> endobj -543 0 obj << +547 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 574.387 207.426 585.235] +/Rect [164.653 574.387 205.71 585.235] /Subtype /Link /A << /S /GoTo /D (section*.37) >> >> endobj -544 0 obj << +548 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 562.307 209.639 573.155] +/Rect [164.653 562.307 207.426 573.155] /Subtype /Link /A << /S /GoTo /D (section*.38) >> >> endobj -545 0 obj << +549 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 550.227 210.138 561.076] +/Rect [164.653 550.227 209.639 561.076] /Subtype /Link /A << /S /GoTo /D (section*.39) >> >> endobj -546 0 obj << +550 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 538.148 210.996 548.996] +/Rect [164.653 538.148 210.138 548.996] /Subtype /Link /A << /S /GoTo /D (section*.40) >> >> endobj -547 0 obj << +551 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 526.068 222.591 536.916] +/Rect [164.653 526.068 210.996 536.916] /Subtype /Link /A << /S /GoTo /D (section*.41) >> >> endobj -548 0 obj << +552 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 513.988 205.212 524.836] +/Rect [164.653 513.988 222.591 524.836] /Subtype /Link /A << /S /GoTo /D (section*.42) >> >> endobj -549 0 obj << +553 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 501.909 206.927 512.757] +/Rect [164.653 501.909 205.212 512.757] /Subtype /Link /A << /S /GoTo /D (section*.43) >> >> endobj -550 0 obj << +554 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 489.829 209.141 500.677] +/Rect [164.653 489.829 206.927 500.677] /Subtype /Link /A << /S /GoTo /D (section*.44) >> >> endobj -551 0 obj << +555 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 477.749 210.497 488.597] +/Rect [164.653 477.749 209.141 488.597] /Subtype /Link /A << /S /GoTo /D (section*.45) >> >> endobj -552 0 obj << +556 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 465.669 204.132 476.518] +/Rect [164.653 465.669 210.497 476.518] /Subtype /Link /A << /S /GoTo /D (section*.46) >> >> endobj -553 0 obj << +557 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 453.59 205.156 464.438] +/Rect [164.653 453.59 204.132 464.438] /Subtype /Link /A << /S /GoTo /D (section*.47) >> >> endobj -554 0 obj << +558 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 441.51 206.872 452.358] +/Rect [164.653 441.51 205.156 452.358] /Subtype /Link /A << /S /GoTo /D (section*.48) >> >> endobj -555 0 obj << +559 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 429.43 209.086 440.279] +/Rect [164.653 429.43 206.872 440.279] /Subtype /Link /A << /S /GoTo /D (section*.49) >> >> endobj -556 0 obj << +560 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 417.351 210.442 428.199] +/Rect [164.653 417.351 209.086 428.199] /Subtype /Link /A << /S /GoTo /D (section*.50) >> >> endobj -557 0 obj << +561 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 405.271 202.942 416.119] +/Rect [164.653 405.271 210.442 416.119] /Subtype /Link /A << /S /GoTo /D (section*.51) >> >> endobj -558 0 obj << +562 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 393.191 231.978 404.039] +/Rect [164.653 393.191 202.942 404.039] /Subtype /Link /A << /S /GoTo /D (section*.52) >> >> endobj -559 0 obj << +563 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [164.653 381.112 231.978 391.96] /Subtype /Link /A << /S /GoTo /D (section*.53) >> >> endobj -560 0 obj << +564 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 369.032 222.912 379.88] +/Rect [164.653 369.032 231.978 379.88] /Subtype /Link /A << /S /GoTo /D (section*.54) >> >> endobj -561 0 obj << +565 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 356.952 239.738 367.8] +/Rect [164.653 356.952 222.912 367.8] /Subtype /Link /A << /S /GoTo /D (section*.55) >> >> endobj -562 0 obj << +566 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 344.872 215.717 355.721] +/Rect [164.653 344.872 239.738 355.721] /Subtype /Link /A << /S /GoTo /D (section*.56) >> >> endobj -563 0 obj << +567 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 332.793 232.543 343.641] +/Rect [164.653 332.793 215.717 343.641] /Subtype /Link /A << /S /GoTo /D (section*.57) >> >> endobj -564 0 obj << +568 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 320.713 243.64 331.561] +/Rect [164.653 320.713 232.543 331.561] /Subtype /Link /A << /S /GoTo /D (section*.58) >> >> endobj -565 0 obj << +569 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 308.633 233.4 319.482] +/Rect [164.653 308.633 243.64 319.482] /Subtype /Link /A << /S /GoTo /D (section*.59) >> >> endobj -566 0 obj << +570 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 296.554 227.367 307.402] +/Rect [164.653 296.554 233.4 307.402] /Subtype /Link /A << /S /GoTo /D (section*.60) >> >> endobj -567 0 obj << +571 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 284.474 208.809 295.322] +/Rect [164.653 284.474 227.367 295.322] /Subtype /Link /A << /S /GoTo /D (section*.61) >> >> endobj -568 0 obj << +572 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 272.394 234.253 283.242] +/Rect [164.653 272.394 208.809 283.242] /Subtype /Link /A << /S /GoTo /D (section*.62) >> >> endobj -569 0 obj << +573 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 252.206 315.677 261.117] +/Rect [164.653 260.315 234.253 271.163] /Subtype /Link -/A << /S /GoTo /D (section.7) >> +/A << /S /GoTo /D (section*.63) >> >> endobj -570 0 obj << +574 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 238.189 200.175 249.037] +/Rect [149.709 240.126 315.677 249.037] /Subtype /Link -/A << /S /GoTo /D (section*.63) >> +/A << /S /GoTo /D (section.7) >> >> endobj -571 0 obj << +575 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 226.109 201.559 236.958] +/Rect [164.653 226.109 200.175 236.958] /Subtype /Link /A << /S /GoTo /D (section*.64) >> >> endobj -572 0 obj << +576 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [164.653 214.03 201.559 224.878] /Subtype /Link /A << /S /GoTo /D (section*.65) >> >> endobj -573 0 obj << +577 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 201.95 244.719 212.798] +/Rect [164.653 201.95 201.559 212.798] /Subtype /Link /A << /S /GoTo /D (section*.66) >> >> endobj -574 0 obj << +578 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 189.87 221.777 200.719] +/Rect [164.653 189.87 244.719 200.719] /Subtype /Link /A << /S /GoTo /D (section*.67) >> >> endobj -575 0 obj << +579 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 177.791 211.798 188.639] +/Rect [164.653 177.791 221.777 188.639] /Subtype /Link /A << /S /GoTo /D (section*.68) >> >> endobj -576 0 obj << +580 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 165.711 214.648 176.559] +/Rect [164.653 165.711 211.798 176.559] /Subtype /Link /A << /S /GoTo /D (section*.69) >> >> endobj -577 0 obj << +581 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 153.631 208.782 164.48] +/Rect [164.653 153.631 214.648 164.48] /Subtype /Link /A << /S /GoTo /D (section*.70) >> >> endobj -578 0 obj << +582 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 141.552 208.256 152.4] +/Rect [164.653 141.552 208.782 152.4] /Subtype /Link /A << /S /GoTo /D (section*.71) >> >> endobj -579 0 obj << +583 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 129.472 202.998 140.32] +/Rect [164.653 129.472 208.256 140.32] /Subtype /Link /A << /S /GoTo /D (section*.72) >> >> endobj -580 0 obj << +584 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 117.392 203.773 128.24] +/Rect [164.653 117.392 202.998 128.24] /Subtype /Link /A << /S /GoTo /D (section*.73) >> >> endobj -585 0 obj << -/D [583 0 R /XYZ 150.705 740.998 null] +589 0 obj << +/D [587 0 R /XYZ 150.705 740.998 null] >> endobj -582 0 obj << -/Font << /F8 478 0 R /F27 477 0 R >> +586 0 obj << +/Font << /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -610 0 obj << -/Length 9400 +615 0 obj << +/Length 9852 >> stream 0 g 0 G @@ -2786,11 +2792,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 706.129 Td [(min)]TJ +/F8 9.9626 Tf 133.425 706.129 Td [(max)]TJ 0 g 0 G - [-662(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-468(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-584(103)]TJ + [-583(103)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -11.955 Td [(psb)]TJ @@ -2800,11 +2806,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 694.174 Td [(amx)]TJ +/F8 9.9626 Tf 133.425 694.174 Td [(min)]TJ 0 g 0 G - [-468(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-662(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-583(104)]TJ + [-584(104)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -11.955 Td [(psb)]TJ @@ -2814,11 +2820,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 682.219 Td [(amn)]TJ +/F8 9.9626 Tf 133.425 682.219 Td [(amx)]TJ 0 g 0 G - [-440(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-468(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-584(105)]TJ + [-583(105)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -11.956 Td [(psb)]TJ @@ -2828,9 +2834,9 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 670.263 Td [(snd)]TJ +/F8 9.9626 Tf 133.425 670.263 Td [(amn)]TJ 0 g 0 G - [-823(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-440(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-584(106)]TJ 0 g 0 G @@ -2842,435 +2848,456 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 658.308 Td [(rcv)]TJ +/F8 9.9626 Tf 133.425 658.308 Td [(snd)]TJ 0 g 0 G - [-965(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-823(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-584(107)]TJ 0 g 0 G +0 0 1 rg 0 0 1 RG + -18.586 -11.955 Td [(psb)]TJ +ET +q +1 0 0 1 130.436 646.552 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F8 9.9626 Tf 133.425 646.353 Td [(rcv)]TJ +0 g 0 G + [-965(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ +0 g 0 G + [-584(108)]TJ +0 g 0 G 0 0 1 rg 0 0 1 RG /F27 9.9626 Tf -33.53 -21.918 Td [(8)-925(Error)-383(handling)]TJ 0 g 0 G - [-23812(108)]TJ + [-23812(109)]TJ 0 0 1 rg 0 0 1 RG /F8 9.9626 Tf 14.944 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 624.634 cm +1 0 0 1 130.436 612.679 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 624.435 Td [(errpush)]TJ +/F8 9.9626 Tf 133.425 612.48 Td [(errpush)]TJ 0 g 0 G [-595(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-584(110)]TJ + [-584(111)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 612.679 cm +1 0 0 1 130.436 600.724 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 612.48 Td [(error)]TJ +/F8 9.9626 Tf 133.425 600.525 Td [(error)]TJ 0 g 0 G [-987(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-584(111)]TJ + [-584(112)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 600.724 cm +1 0 0 1 130.436 588.769 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 600.525 Td [(set)]TJ +/F8 9.9626 Tf 133.425 588.57 Td [(set)]TJ ET q -1 0 0 1 146.255 600.724 cm +1 0 0 1 146.255 588.769 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 149.244 600.525 Td [(errv)28(erb)-28(osit)28(y)]TJ +/F8 9.9626 Tf 149.244 588.57 Td [(errv)28(erb)-28(osit)28(y)]TJ 0 g 0 G [-977(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-584(112)]TJ + [-584(113)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -34.405 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 588.769 cm +1 0 0 1 130.436 576.814 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 588.57 Td [(set)]TJ +/F8 9.9626 Tf 133.425 576.615 Td [(set)]TJ ET q -1 0 0 1 146.255 588.769 cm +1 0 0 1 146.255 576.814 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 149.244 588.57 Td [(erraction)]TJ +/F8 9.9626 Tf 149.244 576.615 Td [(erraction)]TJ 0 g 0 G [-735(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ 0 g 0 G - [-584(113)]TJ + [-584(114)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG /F27 9.9626 Tf -49.349 -21.918 Td [(9)-925(Utilities)]TJ 0 g 0 G - [-27238(114)]TJ + [-27238(115)]TJ 0 0 1 rg 0 0 1 RG /F8 9.9626 Tf 37.859 -11.955 Td [(h)28(b)]TJ ET q -1 0 0 1 149.144 554.896 cm +1 0 0 1 149.144 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 152.133 554.697 Td [(read)]TJ +/F8 9.9626 Tf 152.133 542.742 Td [(read)]TJ 0 g 0 G [-893(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-583(115)]TJ + [-583(116)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -14.38 -11.955 Td [(h)28(b)]TJ + -14.38 -11.956 Td [(h)28(b)]TJ ET q -1 0 0 1 149.144 542.941 cm +1 0 0 1 149.144 530.986 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 152.133 542.742 Td [(write)]TJ +/F8 9.9626 Tf 152.133 530.786 Td [(write)]TJ 0 g 0 G [-559(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-584(116)]TJ + [-584(117)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -14.38 -11.956 Td [(mm)]TJ + -14.38 -11.955 Td [(mm)]TJ ET q -1 0 0 1 154.956 530.986 cm +1 0 0 1 154.956 519.03 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 157.944 530.786 Td [(mat)]TJ +/F8 9.9626 Tf 157.944 518.831 Td [(mat)]TJ ET q -1 0 0 1 175.7 530.986 cm +1 0 0 1 175.7 519.03 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 178.689 530.786 Td [(read)]TJ +/F8 9.9626 Tf 178.689 518.831 Td [(read)]TJ 0 g 0 G [-560(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-583(117)]TJ + [-583(118)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -40.935 -11.955 Td [(mm)]TJ ET q -1 0 0 1 154.956 519.03 cm +1 0 0 1 154.956 507.075 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 157.944 518.831 Td [(v)28(et)]TJ +/F8 9.9626 Tf 157.944 506.876 Td [(v)28(et)]TJ ET q -1 0 0 1 171.826 519.03 cm +1 0 0 1 171.826 507.075 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 174.815 518.831 Td [(read)]TJ +/F8 9.9626 Tf 174.815 506.876 Td [(read)]TJ 0 g 0 G [-949(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-584(118)]TJ + [-584(119)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -37.062 -11.955 Td [(mm)]TJ ET q -1 0 0 1 154.956 507.075 cm +1 0 0 1 154.956 495.12 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 157.944 506.876 Td [(mat)]TJ +/F8 9.9626 Tf 157.944 494.921 Td [(mat)]TJ ET q -1 0 0 1 175.7 507.075 cm +1 0 0 1 175.7 495.12 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 178.689 506.876 Td [(write)]TJ +/F8 9.9626 Tf 178.689 494.921 Td [(write)]TJ 0 g 0 G [-1005(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-584(119)]TJ + [-584(120)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG /F27 9.9626 Tf -78.794 -21.918 Td [(10)-350(Preconditioner)-383(routi)-1(ne)1(s)]TJ 0 g 0 G - [-19367(120)]TJ + [-19367(121)]TJ 0 0 1 rg 0 0 1 RG /F8 9.9626 Tf 14.944 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 473.202 cm +1 0 0 1 130.436 461.247 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 473.003 Td [(precinit)]TJ +/F8 9.9626 Tf 133.425 461.048 Td [(precinit)]TJ 0 g 0 G [-548(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-584(121)]TJ + [-584(122)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 461.247 cm +1 0 0 1 130.436 449.292 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 461.048 Td [(precbld)]TJ +/F8 9.9626 Tf 133.425 449.093 Td [(precbld)]TJ 0 g 0 G [-659(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-584(122)]TJ + [-584(123)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 449.292 cm +1 0 0 1 130.436 437.337 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 449.093 Td [(precaply)]TJ +/F8 9.9626 Tf 133.425 437.138 Td [(precaply)]TJ 0 g 0 G [-965(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-584(123)]TJ + [-584(124)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -11.955 Td [(psb)]TJ + -18.586 -11.956 Td [(psb)]TJ ET q -1 0 0 1 130.436 437.337 cm +1 0 0 1 130.436 425.382 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 437.138 Td [(precdescr)]TJ +/F8 9.9626 Tf 133.425 425.182 Td [(precdescr)]TJ 0 g 0 G [-596(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-583(124)]TJ + [-583(125)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F27 9.9626 Tf -33.53 -21.918 Td [(11)-350(Iterativ)32(e)-384(Metho)-31(ds)]TJ +/F27 9.9626 Tf -33.53 -21.917 Td [(11)-350(Iterativ)32(e)-384(Metho)-31(ds)]TJ 0 g 0 G - [-22176(125)]TJ + [-22176(126)]TJ 0 0 1 rg 0 0 1 RG -/F8 9.9626 Tf 14.944 -11.955 Td [(krylo)28(v)]TJ +/F8 9.9626 Tf 14.944 -11.956 Td [(krylo)28(v)]TJ 0 g 0 G [-692(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-583(126)]TJ + [-583(127)]TJ 0 g 0 G 0 g 0 G - 152.761 -312.827 Td [(iii)]TJ + 152.761 -300.871 Td [(iii)]TJ 0 g 0 G ET endstream endobj -609 0 obj << +614 0 obj << /Type /Page -/Contents 610 0 R -/Resources 608 0 R +/Contents 615 0 R +/Resources 613 0 R /MediaBox [0 0 595.276 841.89] -/Parent 479 0 R -/Annots [ 581 0 R 586 0 R 587 0 R 588 0 R 589 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R 600 0 R 601 0 R 602 0 R 603 0 R 604 0 R 605 0 R 606 0 R 607 0 R ] +/Parent 483 0 R +/Annots [ 585 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R 600 0 R 601 0 R 602 0 R 603 0 R 604 0 R 605 0 R 606 0 R 607 0 R 608 0 R 609 0 R 610 0 R 611 0 R 612 0 R ] >> endobj -581 0 obj << +585 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 703.195 151.026 714.044] +/Rect [113.843 703.195 152.963 714.044] /Subtype /Link /A << /S /GoTo /D (section*.74) >> >> endobj -586 0 obj << +590 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 691.24 152.963 702.088] +/Rect [113.843 691.24 151.026 702.088] /Subtype /Link /A << /S /GoTo /D (section*.75) >> >> endobj -587 0 obj << +591 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 679.285 153.24 690.133] +/Rect [113.843 679.285 152.963 690.133] /Subtype /Link /A << /S /GoTo /D (section*.76) >> >> endobj -588 0 obj << +592 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 667.33 149.421 678.178] +/Rect [113.843 667.33 153.24 678.178] /Subtype /Link /A << /S /GoTo /D (section*.77) >> >> endobj -589 0 obj << +593 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 655.375 148.009 666.223] +/Rect [113.843 655.375 149.421 666.223] /Subtype /Link /A << /S /GoTo /D (section*.78) >> >> endobj -590 0 obj << +594 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 633.457 190.188 644.305] +/Rect [113.843 643.42 148.009 654.268] /Subtype /Link -/A << /S /GoTo /D (section.8) >> +/A << /S /GoTo /D (section*.79) >> >> endobj -591 0 obj << +595 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 621.502 167.188 632.35] +/Rect [98.899 621.502 190.188 632.35] /Subtype /Link -/A << /S /GoTo /D (section*.79) >> +/A << /S /GoTo /D (section.8) >> >> endobj -592 0 obj << +596 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 609.547 155.537 620.395] +/Rect [113.843 609.547 167.188 620.395] /Subtype /Link /A << /S /GoTo /D (section*.80) >> >> endobj -593 0 obj << +597 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 597.591 202.129 608.44] +/Rect [113.843 597.591 155.537 608.44] /Subtype /Link /A << /S /GoTo /D (section*.81) >> >> endobj -594 0 obj << +598 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 585.636 189.039 596.484] +/Rect [113.843 585.636 202.129 596.484] /Subtype /Link /A << /S /GoTo /D (section*.82) >> >> endobj -595 0 obj << +599 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 565.656 156.061 574.567] +/Rect [113.843 573.681 189.039 584.529] /Subtype /Link -/A << /S /GoTo /D (section.9) >> +/A << /S /GoTo /D (section*.83) >> >> endobj -596 0 obj << +600 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 553.7 171.975 562.611] +/Rect [98.899 553.7 156.061 562.611] /Subtype /Link -/A << /S /GoTo /D (section*.83) >> +/A << /S /GoTo /D (section.9) >> >> endobj -597 0 obj << +601 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 541.745 175.296 550.656] +/Rect [136.757 541.745 171.975 550.656] /Subtype /Link /A << /S /GoTo /D (section*.84) >> >> endobj -598 0 obj << +602 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 529.79 198.531 538.701] +/Rect [136.757 529.79 175.296 538.701] /Subtype /Link /A << /S /GoTo /D (section*.85) >> >> endobj -599 0 obj << +603 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 517.835 197.978 526.746] +/Rect [136.757 517.835 198.531 526.746] /Subtype /Link /A << /S /GoTo /D (section*.86) >> >> endobj -600 0 obj << +604 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 505.88 201.852 514.526] +/Rect [136.757 505.88 197.978 514.791] /Subtype /Link /A << /S /GoTo /D (section*.87) >> >> endobj -601 0 obj << +605 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 483.962 234.475 492.873] +/Rect [136.757 493.925 201.852 502.571] /Subtype /Link -/A << /S /GoTo /D (section.10) >> +/A << /S /GoTo /D (section*.88) >> >> endobj -602 0 obj << +606 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 470.07 167.658 480.918] +/Rect [98.899 472.007 234.475 480.918] /Subtype /Link -/A << /S /GoTo /D (section*.88) >> +/A << /S /GoTo /D (section.10) >> >> endobj -603 0 obj << +607 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 458.114 166.551 468.963] +/Rect [113.843 458.114 167.658 468.963] /Subtype /Link /A << /S /GoTo /D (section*.89) >> >> endobj -604 0 obj << +608 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 446.159 171.256 457.007] +/Rect [113.843 446.159 166.551 457.007] /Subtype /Link /A << /S /GoTo /D (section*.90) >> >> endobj -605 0 obj << +609 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 434.204 174.936 445.052] +/Rect [113.843 434.204 171.256 445.052] /Subtype /Link /A << /S /GoTo /D (section*.91) >> >> endobj -606 0 obj << +610 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 414.223 206.49 423.134] +/Rect [113.843 422.249 174.936 433.097] +/Subtype /Link +/A << /S /GoTo /D (section*.92) >> +>> endobj +611 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [98.899 402.268 206.49 411.179] /Subtype /Link /A << /S /GoTo /D (section.11) >> >> endobj -607 0 obj << +612 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 400.331 142.984 411.179] +/Rect [113.843 388.376 142.984 399.224] /Subtype /Link -/A << /S /GoTo /D (section*.92) >> +/A << /S /GoTo /D (section*.93) >> >> endobj -611 0 obj << -/D [609 0 R /XYZ 99.895 740.998 null] +616 0 obj << +/D [614 0 R /XYZ 99.895 740.998 null] >> endobj -608 0 obj << -/Font << /F8 478 0 R /F27 477 0 R >> +613 0 obj << +/Font << /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -614 0 obj << +619 0 obj << /Length 79 >> stream @@ -3283,21 +3310,21 @@ BT ET endstream endobj -613 0 obj << +618 0 obj << /Type /Page -/Contents 614 0 R -/Resources 612 0 R +/Contents 619 0 R +/Resources 617 0 R /MediaBox [0 0 595.276 841.89] -/Parent 479 0 R +/Parent 483 0 R >> endobj -615 0 obj << -/D [613 0 R /XYZ 150.705 740.998 null] +620 0 obj << +/D [618 0 R /XYZ 150.705 740.998 null] >> endobj -612 0 obj << -/Font << /F8 478 0 R >> +617 0 obj << +/Font << /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -628 0 obj << +633 0 obj << /Length 8518 >> stream @@ -3351,78 +3378,78 @@ BT ET endstream endobj -627 0 obj << +632 0 obj << /Type /Page -/Contents 628 0 R -/Resources 626 0 R +/Contents 633 0 R +/Resources 631 0 R /MediaBox [0 0 595.276 841.89] -/Parent 630 0 R -/Annots [ 616 0 R 617 0 R 618 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R ] +/Parent 635 0 R +/Annots [ 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R 628 0 R 629 0 R 630 0 R ] >> endobj -616 0 obj << +621 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [408.982 586.91 420.937 595.323] /Subtype /Link /A << /S /GoTo /D (cite.metcalf) >> >> endobj -617 0 obj << +622 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [277.684 514.913 289.639 523.326] /Subtype /Link /A << /S /GoTo /D (cite.Sparse03) >> >> endobj -618 0 obj << +623 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [265.763 502.958 272.737 511.371] /Subtype /Link /A << /S /GoTo /D (cite.DesPat:11) >> >> endobj -619 0 obj << +624 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [276.283 502.958 288.238 511.371] /Subtype /Link /A << /S /GoTo /D (cite.RouXiaXu:11) >> >> endobj -620 0 obj << +625 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [210.166 442.916 222.121 451.329] /Subtype /Link /A << /S /GoTo /D (cite.machiels) >> >> endobj -621 0 obj << +626 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [241.566 370.919 248.54 379.332] /Subtype /Link /A << /S /GoTo /D (cite.sblas97) >> >> endobj -622 0 obj << +627 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [252.056 370.919 259.03 379.332] /Subtype /Link /A << /S /GoTo /D (cite.sblas02) >> >> endobj -623 0 obj << +628 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [227.473 358.964 239.428 367.377] /Subtype /Link /A << /S /GoTo /D (cite.BLAS1) >> >> endobj -624 0 obj << +629 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [243.524 358.964 250.498 367.377] /Subtype /Link /A << /S /GoTo /D (cite.BLAS2) >> >> endobj -625 0 obj << +630 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [254.593 358.964 261.567 367.377] @@ -3430,13 +3457,13 @@ endobj /A << /S /GoTo /D (cite.BLAS3) >> >> endobj 10 0 obj << -/D [627 0 R /XYZ 99.895 716.092 null] +/D [632 0 R /XYZ 99.895 716.092 null] >> endobj -626 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F17 629 0 R >> +631 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F17 634 0 R >> /ProcSet [ /PDF /Text ] >> endobj -648 0 obj << +653 0 obj << /Length 5581 >> stream @@ -3481,29 +3508,29 @@ BT ET endstream endobj -647 0 obj << +652 0 obj << /Type /Page -/Contents 648 0 R -/Resources 646 0 R +/Contents 653 0 R +/Resources 651 0 R /MediaBox [0 0 595.276 841.89] -/Parent 630 0 R -/Annots [ 641 0 R 642 0 R 643 0 R ] +/Parent 635 0 R +/Annots [ 646 0 R 647 0 R 648 0 R ] >> endobj -644 0 obj << +649 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/psblas.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 651 0 R +/PTEX.InfoDict 656 0 R /BBox [0 0 197 215] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 652 0 R ->>/Font << /R8 653 0 R>> +/R7 657 0 R +>>/Font << /R8 658 0 R>> >> -/Length 654 0 R +/Length 659 0 R /Filter /FlateDecode >> stream @@ -3522,7 +3549,7 @@ x «Ͻ'ƒÇ›ÇÇùaÚ>=|9Êh±Büuæ¹£$îËLËàq·–ÑÃÊŸ5×k^Þ½;>íN÷Ûi™ZŠ\V+9D£­8îNËLÓG™÷×»~0+¾’”àŠ'¢ˆ±íúmw>o÷;{·=ŸŽûEý—»a¥ÃѲîîÝâ8SË4Â%ÕÇ¥_¾œžNÛ#OαéƒùüÐ endstream endobj -651 0 obj +656 0 obj << /Producer (GPL Ghostscript 9.04) /CreationDate (D:20111215145523+01'00') @@ -3532,16 +3559,16 @@ endobj /Author (sfilippo@donald \(Salvatore Filippone\)) >> endobj -652 0 obj +657 0 obj << /Type /ExtGState /OPM 1 >> endobj -653 0 obj +658 0 obj << /BaseFont /JEJNJE#2BTimes-Roman -/FontDescriptor 655 0 R +/FontDescriptor 660 0 R /Type /Font /FirstChar 32 /LastChar 116 @@ -3550,10 +3577,10 @@ endobj /Subtype /Type1 >> endobj -654 0 obj +659 0 obj 898 endobj -655 0 obj +660 0 obj << /Type /FontDescriptor /FontName /JEJNJE#2BTimes-Roman @@ -3567,10 +3594,10 @@ endobj /MissingWidth 500 /XHeight 460 /CharSet (/A/B/F/I/L/M/P/S/a/c/e/f/g/i/l/n/o/p/r/s/space/t/three/two/zero) -/FontFile3 656 0 R +/FontFile3 661 0 R >> endobj -656 0 obj +661 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -3590,21 +3617,21 @@ p IZ¹t4¤w!}^€gì½—ú€h9@±^è Ò…s2•=3B2H>ÉçynÞÌû7ŠC‰#ˆþhñÚï-whèÇGtBŒV²Õºø`uÞ1èFæ3ÑvðøçÓ÷à´ÛoÝ34\z"ž“,P&+š´®¿Ú»oB03¼å㣶xsÉÝä!FáŽ/†m'~¼êŒn?àßvaÝDëÑ÷ì+°¥¸5ïšôt0Ü ¶æ+ÉÔ·ÆsRz…t¥J–xFzëþƒöÁQîè`û¼/dŠº2›åž™j@7GÛú.º?Üwyc$O‘œÀI‘(S¥ME®ƒßŒô| Áõ^`‚2!-›’"VîIN™"Ì‚B-ÌÎe³/uV9:Î6:.Ç°ÿMɪH endstream endobj -641 0 obj << +646 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.543 541.042 317.517 551.89] /Subtype /Link /A << /S /GoTo /D (figure.1) >> >> endobj -642 0 obj << +647 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [446.018 471.248 452.992 479.661] /Subtype /Link /A << /S /GoTo /D (cite.BLACS) >> >> endobj -643 0 obj << +648 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [210.398 433.445 217.372 444.294] @@ -3612,17 +3639,17 @@ endobj /A << /S /GoTo /D (section.7) >> >> endobj 14 0 obj << -/D [647 0 R /XYZ 150.705 677.433 null] +/D [652 0 R /XYZ 150.705 677.433 null] >> endobj -650 0 obj << -/D [647 0 R /XYZ 258.703 263.3 null] +655 0 obj << +/D [652 0 R /XYZ 258.703 263.3 null] >> endobj -646 0 obj << -/Font << /F8 478 0 R /F16 475 0 R /F11 649 0 R >> -/XObject << /Im1 644 0 R >> +651 0 obj << +/Font << /F8 482 0 R /F16 479 0 R /F11 654 0 R >> +/XObject << /Im1 649 0 R >> /ProcSet [ /PDF /Text ] >> endobj -662 0 obj << +667 0 obj << /Length 8854 >> stream @@ -3669,52 +3696,52 @@ BT ET endstream endobj -661 0 obj << +666 0 obj << /Type /Page -/Contents 662 0 R -/Resources 660 0 R +/Contents 667 0 R +/Resources 665 0 R /MediaBox [0 0 595.276 841.89] -/Parent 630 0 R -/Annots [ 645 0 R 658 0 R 659 0 R ] +/Parent 635 0 R +/Annots [ 650 0 R 663 0 R 664 0 R ] >> endobj -645 0 obj << +650 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [219.5 609.491 231.455 617.904] /Subtype /Link /A << /S /GoTo /D (cite.METIS) >> >> endobj -658 0 obj << +663 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [210.854 546.467 217.316 558.506] /Subtype /Link /A << /S /GoTo /D (Hfootnote.1) >> >> endobj -659 0 obj << +664 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [155.908 188.124 162.37 200.163] /Subtype /Link /A << /S /GoTo /D (Hfootnote.2) >> >> endobj -663 0 obj << -/D [661 0 R /XYZ 99.895 740.998 null] +668 0 obj << +/D [666 0 R /XYZ 99.895 740.998 null] >> endobj 18 0 obj << -/D [661 0 R /XYZ 99.895 515.919 null] +/D [666 0 R /XYZ 99.895 515.919 null] >> endobj -669 0 obj << -/D [661 0 R /XYZ 115.138 167.688 null] +674 0 obj << +/D [666 0 R /XYZ 115.138 167.688 null] >> endobj -671 0 obj << -/D [661 0 R /XYZ 115.138 158.184 null] +676 0 obj << +/D [666 0 R /XYZ 115.138 158.184 null] >> endobj -660 0 obj << -/Font << /F8 478 0 R /F17 629 0 R /F30 664 0 R /F7 665 0 R /F16 475 0 R /F11 649 0 R /F10 666 0 R /F14 667 0 R /F27 477 0 R /F32 668 0 R /F31 670 0 R >> +665 0 obj << +/Font << /F8 482 0 R /F17 634 0 R /F30 669 0 R /F7 670 0 R /F16 479 0 R /F11 654 0 R /F10 671 0 R /F14 672 0 R /F27 481 0 R /F32 673 0 R /F31 675 0 R >> /ProcSet [ /PDF /Text ] >> endobj -678 0 obj << +683 0 obj << /Length 5348 >> stream @@ -3789,29 +3816,29 @@ BT ET endstream endobj -677 0 obj << +682 0 obj << /Type /Page -/Contents 678 0 R -/Resources 676 0 R +/Contents 683 0 R +/Resources 681 0 R /MediaBox [0 0 595.276 841.89] -/Parent 630 0 R -/Annots [ 673 0 R 674 0 R ] +/Parent 635 0 R +/Annots [ 678 0 R 679 0 R ] >> endobj -675 0 obj << +680 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/points.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 681 0 R +/PTEX.InfoDict 686 0 R /BBox [0 0 274 308] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 682 0 R ->>/Font << /R8 683 0 R>> +/R7 687 0 R +>>/Font << /R8 688 0 R>> >> -/Length 684 0 R +/Length 689 0 R /Filter /FlateDecode >> stream @@ -3819,58 +3846,58 @@ x – 󣄠¹3ÊBü=®§«æ±bA‡HŒ}Ï©c·í²»?­é”ׄÿäïÍeùö]_?ü¾¤Ó©d êwßGüðaù´d"®òçæ²¾¾ä}ÍíëÕûe4­ß ,äýÔ×sÿ»º,_ýx÷Ç/w×·¯®~[¾»ZÞ.ø›Œ1¸ð™âuóâ¯ïÿ¼ûùúáoO*žþx/þÃõí½Î22Tø<ᜇd†&Âoî/×ïV˜âÿõèCê1V^õd¨æõãR ¬Û9ŸÎç¶^–ºµÓ¾ÍšÚýÝz¦zõ¯7‹!€S®ûj짔êJÚR¿–ðWZSöN•m˜´ ide«3çûfyÿõROÛú×|J_F¿~]~z2ò–}×òVÐÕämë¦Î€sQ<I<³¦uiüd¸r͵9.Ö¤¢ÆR’ÉÑãY~ОÐCÑÝ¥Ÿ}öçÙ^â<3LA ‰c‹YÒ¶®ôçY¯qž&mCÙØâÌû懣ç—Ñ#|H–_rƧšÇÒ³,wš0s>}yüÇ5ÒNóË p%U¤ –ðW@E’§$§•|¡pxõE`&ÆøåU ™¤ó«›%AÝIUÍ0Gš]ý‘&ûÖM’ î Jšx÷¬…T.ù)~¼C²8˜}~‚­ÛÍWÛ¢íÁvKÑö¶K,8ÛÍ—&†`[C*—ü¨ONÔÇs­ƒ ½m‚ê ò9؆Áu¶!×`{P9¦m‚êKI7oÛB*—ü¨O샹~ñ̳·Ç'­¡Á^ÝIaÏvRy!œzw'ó¤`Íx"0.Ѥb'…iÄù|ùÌs¼žP:-%X/[´^º“#Àa°há…dÞPÓY/)Z‡Ýqˆ&-VŠÖ½ON¬Çtnƒ®G±À¹ÍY–& é›Ë’וB¿Ìœ¤¡¹M…ÁnngäŽ%¤Ò#ØœÃÉÙÇ‚"d;’Àô)ùÃ(˜\X‹³Ž¥²£0}Z¡pø#`Ó†Sò‹%Hvt§Ð̧f£`ú`-Î+”ÐŽQ4ó9ƒ…Ç,x›O/,îf,z»âißn«ªÝìv«$½úæ-ÜŒå`?›“禩™|,ˆ7cïó™;Ìñº@!osõé]Š¦?ݲta0€yýÒ¥¤Zdy›«OïRÜ<%9­äƒ€[}拇ú6m8uõIPžþhǃf>m))…YÞæê“ Ò<%9­äƒ€[}ækçÿÜæ“WO’rõ= A} £ Ñ0'Ë 9‘S,irêÕ÷+\_ã­uâÝ¿›ÑÆE?æóé{¦ƒÙÇá'È‹ÎB#4_²$&†`[–’qq‘‘&/> Mõ5^_'†`[Bý˜OõºÖÁ–%©¡ ª/]07o[šqq ’&/M Íõ5^_'nÞ¶†4.ú1Ÿ6ØsýÜ¥%]Š!ƒCÞgVe@Ù–‹’…$)š5-ƒÃØ5}‡ä²?ÖLg+‡ |>{é>hO‘jøX5~,ê>–0àxÕ},1’š¬ác ”ø±ŠûX€5‹ûXb$3òø³ Ú…t¡í¡=Å>tpº8Õ‡’Ô$iÎ>´-ö¡Ç%ÀšTÔXJR#ÞgL¼í“-J/0®jãȶw.Þâªick£Z,”Ô¤š^”Ñk·ì«éUÝ ‹¯WjÇ‚µÛçƒ.ÁºUE³zÉgýãPˆ,é"›Ñe±ûÌ‹:t˜!*%~ Ö *«QÊÒ@emPMÓ1:¾Þ’àX¼÷(˜®4æ ¤Nƒ¾]þÎJ¦' endstream endobj -681 0 obj +686 0 obj << /Producer (ESP Ghostscript 815.03) /CreationDate (D:20070123225315) /ModDate (D:20070123225315) >> endobj -682 0 obj +687 0 obj << /Type /ExtGState /OPM 1 >> endobj -683 0 obj +688 0 obj << /BaseFont /Times-Roman /Type /Font /Subtype /Type1 >> endobj -684 0 obj +689 0 obj 1397 endobj -673 0 obj << +678 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [294.665 637.885 301.639 646.297] /Subtype /Link /A << /S /GoTo /D (cite.2007c) >> >> endobj -674 0 obj << +679 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [305.735 637.885 312.709 646.297] /Subtype /Link /A << /S /GoTo /D (cite.2007d) >> >> endobj -679 0 obj << -/D [677 0 R /XYZ 150.705 740.998 null] +684 0 obj << +/D [682 0 R /XYZ 150.705 740.998 null] >> endobj -680 0 obj << -/D [677 0 R /XYZ 303.562 347.015 null] +685 0 obj << +/D [682 0 R /XYZ 303.562 347.015 null] >> endobj 22 0 obj << -/D [677 0 R /XYZ 150.705 272.271 null] +/D [682 0 R /XYZ 150.705 272.271 null] >> endobj -676 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F14 667 0 R /F11 649 0 R /F10 666 0 R /F16 475 0 R >> -/XObject << /Im2 675 0 R >> +681 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F14 672 0 R /F11 654 0 R /F10 671 0 R /F16 479 0 R >> +/XObject << /Im2 680 0 R >> /ProcSet [ /PDF /Text ] >> endobj -691 0 obj << +696 0 obj << /Length 5462 >> stream @@ -3958,36 +3985,36 @@ BT ET endstream endobj -690 0 obj << +695 0 obj << /Type /Page -/Contents 691 0 R -/Resources 689 0 R +/Contents 696 0 R +/Resources 694 0 R /MediaBox [0 0 595.276 841.89] -/Parent 630 0 R -/Annots [ 687 0 R 688 0 R ] +/Parent 635 0 R +/Annots [ 692 0 R 693 0 R ] >> endobj -687 0 obj << +692 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [406.358 354.515 413.331 366.47] /Subtype /Link /A << /S /GoTo /D (section.3) >> >> endobj -688 0 obj << +693 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [173.863 318.352 180.837 330.307] /Subtype /Link /A << /S /GoTo /D (section.6) >> >> endobj -692 0 obj << -/D [690 0 R /XYZ 99.895 740.998 null] +697 0 obj << +/D [695 0 R /XYZ 99.895 740.998 null] >> endobj -689 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F14 667 0 R /F30 664 0 R >> +694 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F14 672 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -695 0 obj << +700 0 obj << /Length 8657 >> stream @@ -4033,48 +4060,48 @@ BT ET endstream endobj -694 0 obj << +699 0 obj << /Type /Page -/Contents 695 0 R -/Resources 693 0 R +/Contents 700 0 R +/Resources 698 0 R /MediaBox [0 0 595.276 841.89] -/Parent 630 0 R +/Parent 635 0 R >> endobj -696 0 obj << -/D [694 0 R /XYZ 150.705 740.998 null] +701 0 obj << +/D [699 0 R /XYZ 150.705 740.998 null] >> endobj 26 0 obj << -/D [694 0 R /XYZ 150.705 716.092 null] +/D [699 0 R /XYZ 150.705 716.092 null] >> endobj -698 0 obj << -/D [694 0 R /XYZ 150.705 285.279 null] +703 0 obj << +/D [699 0 R /XYZ 150.705 285.279 null] >> endobj -699 0 obj << -/D [694 0 R /XYZ 150.705 264.776 null] +704 0 obj << +/D [699 0 R /XYZ 150.705 264.776 null] >> endobj -700 0 obj << -/D [694 0 R /XYZ 150.705 243.997 null] +705 0 obj << +/D [699 0 R /XYZ 150.705 243.997 null] >> endobj -701 0 obj << -/D [694 0 R /XYZ 150.705 223.218 null] +706 0 obj << +/D [699 0 R /XYZ 150.705 223.218 null] >> endobj -702 0 obj << -/D [694 0 R /XYZ 150.705 190.483 null] +707 0 obj << +/D [699 0 R /XYZ 150.705 190.483 null] >> endobj -703 0 obj << -/D [694 0 R /XYZ 150.705 169.712 null] +708 0 obj << +/D [699 0 R /XYZ 150.705 169.712 null] >> endobj -704 0 obj << -/D [694 0 R /XYZ 150.705 150.854 null] +709 0 obj << +/D [699 0 R /XYZ 150.705 150.854 null] >> endobj -705 0 obj << -/D [694 0 R /XYZ 150.705 134.487 null] +710 0 obj << +/D [699 0 R /XYZ 150.705 134.487 null] >> endobj -693 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F30 664 0 R /F9 697 0 R /F17 629 0 R >> +698 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F30 669 0 R /F9 702 0 R /F17 634 0 R >> /ProcSet [ /PDF /Text ] >> endobj -708 0 obj << +714 0 obj << /Length 6893 >> stream @@ -4139,112 +4166,157 @@ BT ET endstream endobj -707 0 obj << +713 0 obj << /Type /Page -/Contents 708 0 R -/Resources 706 0 R +/Contents 714 0 R +/Resources 712 0 R /MediaBox [0 0 595.276 841.89] -/Parent 723 0 R ->> endobj -709 0 obj << -/D [707 0 R /XYZ 99.895 740.998 null] ->> endobj -710 0 obj << -/D [707 0 R /XYZ 99.895 716.092 null] ->> endobj -711 0 obj << -/D [707 0 R /XYZ 99.895 685.535 null] ->> endobj -712 0 obj << -/D [707 0 R /XYZ 99.895 613.511 null] ->> endobj -713 0 obj << -/D [707 0 R /XYZ 99.895 588.43 null] ->> endobj -714 0 obj << -/D [707 0 R /XYZ 99.895 563.625 null] +/Parent 729 0 R >> endobj 715 0 obj << -/D [707 0 R /XYZ 99.895 526.865 null] +/D [713 0 R /XYZ 99.895 740.998 null] >> endobj 716 0 obj << -/D [707 0 R /XYZ 99.895 502.06 null] +/D [713 0 R /XYZ 99.895 716.092 null] >> endobj 717 0 obj << -/D [707 0 R /XYZ 99.895 477.255 null] +/D [713 0 R /XYZ 99.895 685.535 null] >> endobj 718 0 obj << -/D [707 0 R /XYZ 99.895 449.514 null] +/D [713 0 R /XYZ 99.895 613.511 null] >> endobj 719 0 obj << -/D [707 0 R /XYZ 99.895 419.179 null] +/D [713 0 R /XYZ 99.895 588.43 null] >> endobj 720 0 obj << -/D [707 0 R /XYZ 99.895 388.567 null] +/D [713 0 R /XYZ 99.895 563.625 null] >> endobj 721 0 obj << -/D [707 0 R /XYZ 99.895 369.91 null] +/D [713 0 R /XYZ 99.895 526.865 null] >> endobj 722 0 obj << -/D [707 0 R /XYZ 99.895 351.53 null] +/D [713 0 R /XYZ 99.895 502.06 null] >> endobj -706 0 obj << -/Font << /F8 478 0 R /F30 664 0 R >> -/ProcSet [ /PDF /Text ] +723 0 obj << +/D [713 0 R /XYZ 99.895 477.255 null] +>> endobj +724 0 obj << +/D [713 0 R /XYZ 99.895 449.514 null] +>> endobj +725 0 obj << +/D [713 0 R /XYZ 99.895 419.179 null] +>> endobj +726 0 obj << +/D [713 0 R /XYZ 99.895 388.567 null] >> endobj 727 0 obj << -/Length 3504 +/D [713 0 R /XYZ 99.895 369.91 null] +>> endobj +728 0 obj << +/D [713 0 R /XYZ 99.895 351.53 null] +>> endobj +712 0 obj << +/Font << /F8 482 0 R /F30 669 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +732 0 obj << +/Length 7490 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(2.4)-1125(Programming)-375(mo)-31(del)]TJ/F8 9.9626 Tf 0 -18.389 Td [(The)-325(PSBLAS)-324(librarary)-325(is)-325(based)-324(o)-1(n)-324(the)-325(Single)-325(Program)-324(Multiple)-325(Data)-325(\050SPMD\051)]TJ 0 -11.956 Td [(programming)-413(mo)-28(del:)-603(eac)27(h)-413(pro)-27(cess)-413(participating)-413(in)-413(the)-413(computation)-413(p)-28(erforms)]TJ 0 -11.955 Td [(the)-333(same)-334(actions)-333(on)-333(a)-334(c)28(h)28(unk)-333(of)-334(data.)-444(P)28(arallelism)-334(is)-333(th)28(us)-334(data-d)1(riv)27(en.)]TJ 14.944 -11.955 Td [(Because)-389(of)-389(this)-389(structure,)-402(m)-1(an)28(y)-389(subrou)1(tines)-389(co)-28(ordinate)-389(their)-389(action)-389(across)]TJ -14.944 -11.955 Td [(the)-478(v)56(arious)-478(pro)-28(cesses,)-514(th)28(us)-478(pro)28(viding)-477(a)-1(n)-477(implicit)-478(sync)28(hronization)-478(p)-28(oin)28(t,)-514(and)]TJ 0 -11.955 Td [(therefore)]TJ/F17 9.9626 Tf 43.026 0 Td [(must)]TJ/F8 9.9626 Tf 26.326 0 Td [(b)-28(e)-452(called)-452(sim)28(ultaneously)-452(b)28(y)-452(all)-452(pro)-28(cesses)-452(participating)-452(in)-452(the)]TJ -69.352 -11.956 Td [(computation.)-597(This)-384(is)-384(certainly)-384(true)-385(for)-384(the)-384(data)-384(allo)-28(cation)-384(and)-384(assem)28(bly)-385(rou)1(-)]TJ 0 -11.955 Td [(tines,)-333(for)-334(all)-333(the)-333(computational)-333(routines)-334(and)-333(for)-333(some)-334(of)-333(the)-333(to)-28(ols)-334(r)1(outines.)]TJ 14.944 -11.955 Td [(Ho)28(w)28(e)-1(v)28(er)-490(there)-490(are)-490(m)-1(an)28(y)-490(cases)-490(where)-491(no)-490(sync)28(hronization,)-529(and)-491(in)1(dee)-1(d)-490(no)]TJ -14.944 -11.955 Td [(comm)28(unication)-459(among)-458(pro)-28(cesses,)-489(is)-459(implied;)-521(f)1(or)-459(instance,)-489(all)-459(the)-458(routines)-458(in)]TJ 0 -11.955 Td [(sec.)]TJ +/F27 9.9626 Tf 150.705 706.129 Td [(2.3.1)-1150(User-de\014ned)-383(index)-384(mappings)]TJ/F8 9.9626 Tf 0 -18.389 Td [(PSBLAS)-385(s)-1(u)1(pp)-28(orts)-386(user-de\014ned)-385(global)-386(to)-386(lo)-27(cal)-386(index)-386(mappings,)-398(sub)-56(ject)-385(to)-386(the)]TJ 0 -11.956 Td [(constrain)28(ts)-334(ou)1(tlined)-334(in)-333(sec.)]TJ 0 0 1 rg 0 0 1 RG - [-421(3.5)]TJ + [-333(2.3)]TJ 0 g 0 G - [-421(are)-421(only)-420(acting)-421(on)-421(the)-421(lo)-28(cal)-421(data)-420(structures,)-443(and)-421(th)28(us)-421(ma)28(y)-421(b)-28(e)-421(called)]TJ 0 -11.955 Td [(indep)-28(enden)28(tly)84(.)-917(The)-491(most)-491(imp)-27(ortan)27(t)-490(case)-491(is)-491(that)-491(of)-490(the)-491(co)-28(e\016cien)28(t)-491(insertion)]TJ 0 -11.956 Td [(routines:)-409(since)-263(the)-263(n)27(um)28(b)-28(er)-263(of)-263(co)-27(e\016c)-1(i)1(e)-1(n)28(ts)-263(in)-263(the)-263(sparse)-263(and)-263(dense)-263(matrices)-263(v)55(aries)]TJ 0 -11.955 Td [(among)-323(the)-322(pro)-28(cessors,)-325(and)-323(since)-322(the)-323(user)-323(is)-322(free)-323(to)-323(c)28(ho)-28(ose)-322(an)-323(arbitrary)-323(ord)1(e)-1(r)-322(in)]TJ 0 -11.955 Td [(builiding)-333(the)-333(matrix)-334(en)28(tries,)-333(these)-334(routines)-333(cannot)-333(imply)-334(a)-333(sync)28(hronization.)]TJ 14.944 -11.955 Td [(Throughout)-333(this)-333(use)-1(r)1('s)-334(guide)-333(eac)28(h)-334(subroutine)-333(will)-333(b)-28(e)-333(clearly)-334(indicated)-333(as:)]TJ + [(:)]TJ 0 g 0 G -/F27 9.9626 Tf -14.944 -19.925 Td [(Sync)32(hronous:)]TJ + 12.176 -19.925 Td [(1.)]TJ 0 g 0 G -/F8 9.9626 Tf 71.504 0 Td [(m)28(ust)-359(b)-28(e)-359(called)-359(sim)28(ultaneously)-359(b)28(y)-359(all)-359(the)-359(pro)-28(cesses)-359(in)-359(the)-359(rele-)]TJ -46.597 -11.956 Td [(v)56(an)27(t)-333(comm)28(unication)-333(c)-1(on)28(text;)]TJ + [-500(The)-333(set)-334(of)-333(indices)-333(o)27(wned)-333(lo)-28(cally)-333(m)28(ust)-334(b)-27(e)-334(mapp)-28(ed)-333(to)-333(the)-334(set)-333(1)]TJ/F11 9.9626 Tf 282.774 0 Td [(:)-167(:)-166(:)-167(n)]TJ/F8 9.9626 Tf 19.263 -1.494 Td [(ro)28(w)]TJ/F9 4.9813 Tf 15.802 -0.997 Td [(i)]TJ/F8 9.9626 Tf 3.654 2.491 Td [(;)]TJ +0 g 0 G + -321.493 -19.925 Td [(2.)]TJ +0 g 0 G + [-500(The)-333(set)-334(of)-333(halo)-333(p)-28(oin)28(ts)-334(m)28(ust)-333(b)-28(e)-333(mapp)-28(ed)-333(to)-334(the)-333(set)]TJ/F11 9.9626 Tf 232.684 0 Td [(n)]TJ/F8 9.9626 Tf 5.98 -1.495 Td [(ro)28(w)]TJ/F9 4.9813 Tf 15.802 -0.996 Td [(i)]TJ/F8 9.9626 Tf 5.868 2.491 Td [(+)-222(1)]TJ/F11 9.9626 Tf 16.604 0 Td [(:)-167(:)-166(:)-167(n)]TJ/F8 9.9626 Tf 19.263 -3.487 Td [(col)]TJ/F9 4.9813 Tf 12.177 -0.996 Td [(i)]TJ/F8 9.9626 Tf 3.654 4.483 Td [(;)]TJ -324.208 -19.926 Td [(but)-366(otherwise)-366(the)-365(mapping)-366(is)-366(arbitrary)84(.)-542(The)-366(user)-366(application)-366(is)-365(resp)-28(onsible)-366(to)]TJ 0 -11.955 Td [(ensure)-356(consistency)-356(of)-356(this)-356(mapping;)-367(some)-356(errors)-356(ma)27(y)-356(b)-27(e)-356(caugh)27(t)-356(b)28(y)-356(the)-356(library)84(,)]TJ 0 -11.955 Td [(but)-377(this)-378(is)-377(not)-377(guaran)28(te)-1(ed.)-576(The)-377(application)-378(structure)-377(to)-377(s)-1(u)1(pp)-28(ort)-378(t)1(his)-378(usage)-377(is)]TJ 0 -11.955 Td [(as)-333(follo)27(ws:)]TJ +0 g 0 G + 12.176 -19.925 Td [(1.)]TJ +0 g 0 G + [-500(Initialize)-222(index)-222(space)-223(with)]TJ/F30 9.9626 Tf 125.696 0 Td [(psb_cdall\050ictx,desc,info,vl=vl,lidx=lidx\051)]TJ/F8 9.9626 Tf -112.966 -11.955 Td [(passing)-253(the)-254(v)28(ectors)]TJ/F30 9.9626 Tf 83.59 0 Td [(vl\050:\051)]TJ/F8 9.9626 Tf 28.674 0 Td [(con)28(taining)-253(the)-254(set)-253(of)-253(global)-253(indices)-254(o)28(wned)-253(b)28(y)-253(the)]TJ -112.264 -11.956 Td [(curren)28(t)-334(pr)1(o)-28(cess)-334(and)]TJ/F30 9.9626 Tf 88.751 0 Td [(lidx\050:\051)]TJ/F8 9.9626 Tf 39.933 0 Td [(con)28(taining)-333(the)-334(corresp)-28(ondin)1(g)-334(lo)-28(cal)-333(indices;)]TJ +0 g 0 G + -141.414 -19.925 Td [(2.)]TJ +0 g 0 G + [-500(Add)-266(the)-266(halo)-266(p)-27(oin)27(ts)]TJ/F30 9.9626 Tf 100.593 0 Td [(ja\050:\051)]TJ/F8 9.9626 Tf 28.801 0 Td [(and)-266(their)-266(asso)-28(ciated)-265(lo)-28(cal)-266(indices)]TJ/F30 9.9626 Tf 143.508 0 Td [(lidx\050:\051)]TJ/F8 9.9626 Tf 39.261 0 Td [(with)]TJ -299.433 -11.955 Td [(a\050some\051)-333(c)-1(all\050)1(s)-1(\051)-333(to)]TJ/F30 9.9626 Tf 79.812 0 Td [(psb_cdins\050nz,ja,desc,info,lidx=lidx\051)]TJ/F8 9.9626 Tf 188.293 0 Td [(;)]TJ +0 g 0 G + -280.835 -19.925 Td [(3.)]TJ +0 g 0 G + [-500(Assem)28(ble)-334(the)-333(descriptor)-333(with)]TJ/F30 9.9626 Tf 143.02 0 Td [(psb_cdasb)]TJ/F8 9.9626 Tf 47.073 0 Td [(;)]TJ +0 g 0 G + -190.093 -19.926 Td [(4.)]TJ +0 g 0 G + [-500(Build)-240(the)-240(sparse)-240(matrices)-240(and)-240(v)27(ectors,)-258(optionally)-240(making)-240(use)-241(in)]TJ/F30 9.9626 Tf 284.462 0 Td [(psb_spins)]TJ/F8 9.9626 Tf -271.732 -11.955 Td [(and)]TJ/F30 9.9626 Tf 19.727 0 Td [(psb_geins)]TJ/F8 9.9626 Tf 50.749 0 Td [(of)-369(the)]TJ/F30 9.9626 Tf 29.214 0 Td [(local)]TJ/F8 9.9626 Tf 29.827 0 Td [(argumen)28(t)-369(sp)-28(ecifying)-369(that)-369(the)-369(indices)-369(in)]TJ/F30 9.9626 Tf 176.06 0 Td [(ia)]TJ/F8 9.9626 Tf 10.461 0 Td [(,)]TJ/F30 9.9626 Tf -316.038 -11.955 Td [(ja)]TJ/F8 9.9626 Tf 13.782 0 Td [(and)]TJ/F30 9.9626 Tf 19.372 0 Td [(irw)]TJ/F8 9.9626 Tf 15.691 0 Td [(,)-333(resp)-28(ectiv)28(ely)83(,)-333(are)-334(already)-333(lo)-28(cal)-333(indices.)]TJ/F16 11.9552 Tf -73.751 -27.888 Td [(2.4)-1125(Programming)-375(mo)-31(del)]TJ/F8 9.9626 Tf 0 -18.39 Td [(The)-325(PSBLAS)-324(librarary)-325(is)-325(based)-324(o)-1(n)-324(the)-325(Single)-325(Program)-324(Multiple)-325(Data)-325(\050SPMD\051)]TJ 0 -11.955 Td [(programming)-413(mo)-28(del:)-603(eac)27(h)-413(pro)-27(cess)-413(participating)-413(in)-413(the)-413(computation)-413(p)-28(erforms)]TJ 0 -11.955 Td [(the)-333(same)-334(actions)-333(on)-333(a)-334(c)28(h)28(unk)-333(of)-334(data.)-444(P)28(arallelism)-334(is)-333(th)28(us)-334(data-d)1(riv)27(en.)]TJ 14.944 -11.955 Td [(Because)-389(of)-389(this)-389(structure,)-402(m)-1(an)28(y)-389(subrou)1(tines)-389(co)-28(ordinate)-389(their)-389(action)-389(across)]TJ -14.944 -11.956 Td [(the)-478(v)56(arious)-478(pro)-28(cesses,)-514(th)28(us)-478(pro)28(viding)-477(a)-1(n)-477(implicit)-478(sync)28(hronization)-478(p)-28(oin)28(t,)-514(and)]TJ 0 -11.955 Td [(therefore)]TJ/F17 9.9626 Tf 43.026 0 Td [(must)]TJ/F8 9.9626 Tf 26.326 0 Td [(b)-28(e)-452(called)-452(sim)28(ultaneously)-452(b)28(y)-452(all)-452(pro)-28(cesses)-452(participating)-452(in)-452(the)]TJ -69.352 -11.955 Td [(computation.)-597(This)-384(is)-384(certainly)-384(true)-385(for)-384(the)-384(data)-384(allo)-28(cation)-384(and)-384(assem)28(bly)-385(rou)1(-)]TJ 0 -11.955 Td [(tines,)-333(for)-334(all)-333(the)-333(computational)-333(routines)-334(and)-333(for)-333(some)-334(of)-333(the)-333(to)-28(ols)-334(r)1(outines.)]TJ 14.944 -11.955 Td [(Ho)28(w)28(e)-1(v)28(er)-490(there)-490(are)-490(m)-1(an)28(y)-490(cases)-490(where)-491(no)-490(sync)28(hronization,)-529(and)-491(in)1(dee)-1(d)-490(no)]TJ -14.944 -11.955 Td [(comm)28(unication)-459(among)-458(pro)-28(cesses,)-489(is)-459(implied;)-521(f)1(or)-459(instance,)-489(all)-459(the)-458(routines)-458(in)]TJ 0 -11.956 Td [(sec.)]TJ/F27 9.9626 Tf 19.88 0 Td [(??)]TJ/F8 9.9626 Tf 15.147 0 Td [(are)-434(only)-435(acting)-434(on)-434(the)-434(lo)-28(cal)-434(data)-435(structures,)-459(and)-435(th)28(us)-434(ma)28(y)-435(b)-27(e)-435(called)]TJ -35.027 -11.955 Td [(indep)-28(enden)28(tly)84(.)-917(The)-491(most)-491(imp)-27(ortan)27(t)-490(case)-491(is)-491(that)-491(of)-490(the)-491(co)-28(e\016cien)28(t)-491(insertion)]TJ 0 -11.955 Td [(routines:)-409(since)-263(the)-263(n)27(um)28(b)-28(er)-263(of)-263(co)-27(e\016c)-1(i)1(e)-1(n)28(ts)-263(in)-263(the)-263(sparse)-263(and)-263(dense)-263(matrices)-263(v)55(aries)]TJ 0 -11.955 Td [(among)-323(the)-322(pro)-28(cessors,)-325(and)-323(since)-322(the)-323(user)-323(is)-322(free)-323(to)-323(c)28(ho)-28(ose)-322(an)-323(arbitrary)-323(ord)1(e)-1(r)-322(in)]TJ 0 -11.955 Td [(builiding)-333(the)-333(matrix)-334(en)28(tries,)-333(these)-334(routines)-333(cannot)-333(imply)-334(a)-333(sync)28(hronization.)]TJ 14.944 -11.955 Td [(Throughout)-333(this)-333(use)-1(r)1('s)-334(guide)-333(eac)28(h)-334(subroutine)-333(will)-333(b)-28(e)-333(clearly)-334(indicated)-333(as:)]TJ +0 g 0 G +/F27 9.9626 Tf -14.944 -19.926 Td [(Sync)32(hronous:)]TJ +0 g 0 G +/F8 9.9626 Tf 71.504 0 Td [(m)28(ust)-359(b)-28(e)-359(called)-359(sim)28(ultaneously)-359(b)28(y)-359(all)-359(the)-359(pro)-28(cesses)-359(in)-359(the)-359(rele-)]TJ -46.597 -11.955 Td [(v)56(an)27(t)-333(comm)28(unication)-333(c)-1(on)28(text;)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(Async)32(hronous:)]TJ 0 g 0 G /F8 9.9626 Tf 78.32 0 Td [(ma)28(y)-334(b)-27(e)-334(called)-333(in)-333(a)-334(totally)-333(indep)-28(enden)28(t)-333(manner.)]TJ 0 g 0 G - 91.045 -366.168 Td [(8)]TJ + 91.045 -72.817 Td [(8)]TJ 0 g 0 G ET endstream endobj -726 0 obj << +731 0 obj << /Type /Page -/Contents 727 0 R -/Resources 725 0 R +/Contents 732 0 R +/Resources 730 0 R /MediaBox [0 0 595.276 841.89] -/Parent 723 0 R -/Annots [ 724 0 R ] +/Parent 729 0 R +/Annots [ 711 0 R ] >> endobj -724 0 obj << +711 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.454 565.254 184.177 576.103] +/Rect [269.731 674.788 284.454 683.699] /Subtype /Link -/A << /S /GoTo /D (subsection.3.5) >> +/A << /S /GoTo /D (subsection.2.3) >> >> endobj -728 0 obj << -/D [726 0 R /XYZ 150.705 740.998 null] +733 0 obj << +/D [731 0 R /XYZ 150.705 740.998 null] >> endobj 30 0 obj << -/D [726 0 R /XYZ 150.705 716.092 null] +/D [731 0 R /XYZ 150.705 716.092 null] >> endobj -725 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F17 629 0 R /F27 477 0 R >> +734 0 obj << +/D [731 0 R /XYZ 150.705 671.799 null] +>> endobj +735 0 obj << +/D [731 0 R /XYZ 150.705 649.383 null] +>> endobj +736 0 obj << +/D [731 0 R /XYZ 150.705 576.158 null] +>> endobj +737 0 obj << +/D [731 0 R /XYZ 150.705 530.385 null] +>> endobj +738 0 obj << +/D [731 0 R /XYZ 150.705 497.951 null] +>> endobj +739 0 obj << +/D [731 0 R /XYZ 150.705 478.303 null] +>> endobj +34 0 obj << +/D [731 0 R /XYZ 150.705 424.511 null] +>> endobj +730 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F11 654 0 R /F9 702 0 R /F30 669 0 R /F16 479 0 R /F17 634 0 R >> /ProcSet [ /PDF /Text ] >> endobj -733 0 obj << -/Length 8428 +743 0 obj << +/Length 8440 >> stream 0 g 0 G @@ -4363,15 +4435,11 @@ q []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 386.571 288.724 Td [(type)]TJ/F8 9.9626 Tf 20.922 0 Td [(.)-803(Ev)28(ery)]TJ -307.598 -11.955 Td [(structure)-437(of)-438(this)-437(t)28(yp)-28(e)-437(is)-438(asso)-28(ciated)-437(with)-437(a)-438(discretization)-437(pattern)-437(and)-438(enables)]TJ 0 -11.955 Td [(data)-302(comm)28(unications)-301(and)-302(other)-301(op)-28(erations)-302(that)-301(are)-302(necessary)-301(for)-302(implemen)28(ting)]TJ 0 -11.956 Td [(the)-333(v)55(arious)-333(algorithms)-333(of)-334(in)28(terest)-333(to)-334(us.)]TJ 14.944 -12.034 Td [(The)-281(data)-282(structure)-281(itself)]TJ/F30 9.9626 Tf 107.959 0 Td [(psb_desc_type)]TJ/F8 9.9626 Tf 70.797 0 Td [(can)-281(b)-28(e)-281(treate)-1(d)-281(as)-281(an)-281(opaque)-282(ob)-55(ject)]TJ -193.7 -11.955 Td [(handled)-339(via)-339(the)-339(to)-27(ols)-339(routines)-339(of)-339(Sec.)]TJ -0 0 1 rg 0 0 1 RG - [-339(6)]TJ -0 g 0 G - [-339(and)]TJ +/F30 9.9626 Tf 386.571 288.724 Td [(type)]TJ/F8 9.9626 Tf 20.922 0 Td [(.)-803(Ev)28(ery)]TJ -307.598 -11.955 Td [(structure)-437(of)-438(this)-437(t)28(yp)-28(e)-437(is)-438(asso)-28(ciated)-437(with)-437(a)-438(discretization)-437(pattern)-437(and)-438(enables)]TJ 0 -11.955 Td [(data)-302(comm)28(unications)-301(and)-302(other)-301(op)-28(erations)-302(that)-301(are)-302(necessary)-301(for)-302(implemen)28(ting)]TJ 0 -11.956 Td [(the)-333(v)55(arious)-333(algorithms)-333(of)-334(in)28(terest)-333(to)-334(us.)]TJ 14.944 -12.034 Td [(The)-281(data)-282(structure)-281(itself)]TJ/F30 9.9626 Tf 107.959 0 Td [(psb_desc_type)]TJ/F8 9.9626 Tf 70.797 0 Td [(can)-281(b)-28(e)-281(treate)-1(d)-281(as)-281(an)-281(opaque)-282(ob)-55(ject)]TJ -193.7 -11.955 Td [(handled)-406(via)-406(the)-406(to)-28(ols)-406(routi)1(nes)-407(of)-405(Sec)-1(.)]TJ 0 0 1 rg 0 0 1 RG - [-339(3.)1(5)]TJ + [-405(6)]TJ 0 g 0 G - [(;)-342(nev)28(ertheless)-339(w)27(e)-339(in)1(c)-1(l)1(ude)-339(here)-339(a)]TJ 0 -11.955 Td [(description)-333(for)-334(the)-333(curious)-333(reader.)]TJ 14.944 -12.034 Td [(First)-248(w)28(e)-248(describ)-28(e)-248(t)1(he)]TJ/F30 9.9626 Tf 91.264 0 Td [(psb_indx_map)]TJ/F8 9.9626 Tf 65.233 0 Td [(t)28(yp)-28(e.)-416(This)-248(is)-248(a)-247(data)-248(structure)-248(that)-248(k)28(eeps)]TJ -171.441 -11.955 Td [(trac)28(k)-334(of)-333(a)-333(certain)-334(n)28(um)28(b)-28(er)-333(of)-333(basic)-334(issues)-333(suc)28(h)-334(as:)]TJ + [-406(or)-406(the)-406(query)-406(routines)-406(detailed)-406(b)-28(elo)28(w;)]TJ 0 -11.955 Td [(nev)28(ertheless)-334(w)28(e)-333(include)-334(here)-333(a)-333(description)-334(for)-333(the)-333(curious)-333(reader.)]TJ 14.944 -12.034 Td [(First)-248(w)28(e)-248(describ)-28(e)-248(t)1(he)]TJ/F30 9.9626 Tf 91.264 0 Td [(psb_indx_map)]TJ/F8 9.9626 Tf 65.233 0 Td [(t)28(yp)-28(e.)-416(This)-248(is)-248(a)-247(data)-248(structure)-248(that)-248(k)28(eeps)]TJ -171.441 -11.955 Td [(trac)28(k)-334(of)-333(a)-333(certain)-334(n)28(um)28(b)-28(er)-333(of)-333(basic)-334(issues)-333(suc)28(h)-334(as:)]TJ 0 g 0 G /F14 9.9626 Tf 14.944 -20.162 Td [(\017)]TJ 0 g 0 G @@ -4390,45 +4458,38 @@ BT ET endstream endobj -732 0 obj << +742 0 obj << /Type /Page -/Contents 733 0 R -/Resources 731 0 R +/Contents 743 0 R +/Resources 741 0 R /MediaBox [0 0 595.276 841.89] -/Parent 723 0 R -/Annots [ 729 0 R 730 0 R ] +/Parent 729 0 R +/Annots [ 740 0 R ] >> endobj -729 0 obj << +740 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [264.639 225.936 271.613 236.784] +/Rect [269.318 225.936 276.292 236.784] /Subtype /Link /A << /S /GoTo /D (section.6) >> >> endobj -730 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [292.423 225.936 307.146 236.784] -/Subtype /Link -/A << /S /GoTo /D (subsection.3.5) >> ->> endobj -734 0 obj << -/D [732 0 R /XYZ 99.895 740.998 null] ->> endobj -34 0 obj << -/D [732 0 R /XYZ 99.895 716.092 null] +744 0 obj << +/D [742 0 R /XYZ 99.895 740.998 null] >> endobj 38 0 obj << -/D [732 0 R /XYZ 99.895 331.305 null] +/D [742 0 R /XYZ 99.895 716.092 null] >> endobj -735 0 obj << -/D [732 0 R /XYZ 342.427 288.724 null] +42 0 obj << +/D [742 0 R /XYZ 99.895 331.305 null] >> endobj -731 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F30 664 0 R /F27 477 0 R /F14 667 0 R >> +745 0 obj << +/D [742 0 R /XYZ 342.427 288.724 null] +>> endobj +741 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F30 669 0 R /F27 481 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -739 0 obj << +749 0 obj << /Length 6708 >> stream @@ -4549,54 +4610,54 @@ BT ET endstream endobj -738 0 obj << +748 0 obj << /Type /Page -/Contents 739 0 R -/Resources 737 0 R +/Contents 749 0 R +/Resources 747 0 R /MediaBox [0 0 595.276 841.89] -/Parent 723 0 R -/Annots [ 736 0 R ] +/Parent 729 0 R +/Annots [ 746 0 R ] >> endobj -736 0 obj << +746 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [452.103 457.229 459.077 469.184] /Subtype /Link /A << /S /GoTo /D (section.6) >> >> endobj -740 0 obj << -/D [738 0 R /XYZ 150.705 740.998 null] +750 0 obj << +/D [748 0 R /XYZ 150.705 740.998 null] >> endobj -741 0 obj << -/D [738 0 R /XYZ 150.705 353.756 null] +751 0 obj << +/D [748 0 R /XYZ 150.705 353.756 null] >> endobj -742 0 obj << -/D [738 0 R /XYZ 150.705 337.982 null] +752 0 obj << +/D [748 0 R /XYZ 150.705 337.982 null] >> endobj -743 0 obj << -/D [738 0 R /XYZ 150.705 322.207 null] +753 0 obj << +/D [748 0 R /XYZ 150.705 322.207 null] >> endobj -744 0 obj << -/D [738 0 R /XYZ 150.705 306.433 null] +754 0 obj << +/D [748 0 R /XYZ 150.705 306.433 null] >> endobj -745 0 obj << -/D [738 0 R /XYZ 150.705 290.659 null] +755 0 obj << +/D [748 0 R /XYZ 150.705 290.659 null] >> endobj -746 0 obj << -/D [738 0 R /XYZ 150.705 163.801 null] +756 0 obj << +/D [748 0 R /XYZ 150.705 163.801 null] >> endobj -747 0 obj << -/D [738 0 R /XYZ 150.705 148.027 null] +757 0 obj << +/D [748 0 R /XYZ 150.705 148.027 null] >> endobj -748 0 obj << -/D [738 0 R /XYZ 150.705 132.253 null] +758 0 obj << +/D [748 0 R /XYZ 150.705 132.253 null] >> endobj -737 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F14 667 0 R >> +747 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -751 0 obj << -/Length 5294 +761 0 obj << +/Length 5012 >> stream 0 g 0 G @@ -4607,96 +4668,75 @@ BT 0 g 0 G [-500(Num)28(b)-28(er)-333(of)-334(p)-27(oin)28(ts)-334(to)-333(b)-28(e)-333(sen)27(t;)]TJ 0 g 0 G - 0 -17.312 Td [(5.)]TJ + 0 -18.499 Td [(5.)]TJ 0 g 0 G - [-500(Indices)-333(of)-334(p)-27(oin)27(ts)-333(to)-333(b)-28(e)-333(sen)27(t;)]TJ -9.188 -22.669 Td [(The)-313(list)-312(ma)27(y)-312(con)27(tain)-312(an)-313(arbitrary)-313(n)28(um)28(b)-28(er)-312(of)-313(groups;)-320(its)-312(end)-313(is)-313(mark)28(ed)-313(b)28(y)]TJ 0 -11.955 Td [(a)-333(-1.)]TJ 0 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(allo)-28(catable)-333(in)28(teger)-333(arra)27(y)-333(of)-333(rank)-334(on)1(e)-1(.)]TJ + [-500(Indices)-333(of)-334(p)-27(oin)27(ts)-333(to)-333(b)-28(e)-333(sen)27(t;)]TJ -9.188 -25.042 Td [(The)-313(list)-312(ma)27(y)-312(con)27(tain)-312(an)-313(arbitrary)-313(n)28(um)28(b)-28(er)-312(of)-313(groups;)-320(its)-312(end)-313(is)-313(mark)28(ed)-313(b)28(y)]TJ 0 -11.955 Td [(a)-333(-1.)]TJ 0 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(allo)-28(catable)-333(in)28(teger)-333(arra)27(y)-333(of)-333(rank)-334(on)1(e)-1(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -22.669 Td [(o)32(vr)]TJ +/F27 9.9626 Tf -24.907 -25.042 Td [(o)32(vr)]TJ ET q -1 0 0 1 116.758 619.769 cm +1 0 0 1 116.758 613.835 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 120.195 619.57 Td [(mst)]TJ +/F27 9.9626 Tf 120.195 613.636 Td [(mst)]TJ ET q -1 0 0 1 139.405 619.769 cm +1 0 0 1 139.405 613.835 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 142.842 619.57 Td [(idx)]TJ +/F27 9.9626 Tf 142.842 613.636 Td [(idx)]TJ 0 g 0 G -/F8 9.9626 Tf 20.575 0 Td [(A)-368(l)1(is)-1(t)-367(to)-368(r)1(e)-1(tri)1(e)-1(v)28(e)-367(the)-368(v)56(alue)-368(of)-367(eac)28(h)-368(o)28(v)28(erlap)-368(elemen)28(t)-368(from)-367(the)-368(re-)]TJ -38.615 -11.956 Td [(sp)-28(ectiv)28(e)-333(mas)-1(ter)-333(pro)-28(cess.)]TJ 0 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(allo)-28(catable)-333(in)28(teger)-333(arra)27(y)-333(of)-333(rank)-334(on)1(e)-1(.)]TJ +/F8 9.9626 Tf 20.575 0 Td [(A)-368(l)1(is)-1(t)-367(to)-368(r)1(e)-1(tri)1(e)-1(v)28(e)-367(the)-368(v)56(alue)-368(of)-367(eac)28(h)-368(o)28(v)28(erlap)-368(elemen)28(t)-368(from)-367(the)-368(re-)]TJ -38.615 -11.955 Td [(sp)-28(ectiv)28(e)-333(mas)-1(ter)-333(pro)-28(cess.)]TJ 0 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(allo)-28(catable)-333(in)28(teger)-333(arra)27(y)-333(of)-333(rank)-334(on)1(e)-1(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -22.668 Td [(o)32(vrlap)]TJ +/F27 9.9626 Tf -24.907 -25.042 Td [(o)32(vrlap)]TJ ET q -1 0 0 1 131.875 573.19 cm +1 0 0 1 131.875 564.883 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 135.312 572.991 Td [(elem)]TJ +/F27 9.9626 Tf 135.312 564.684 Td [(elem)]TJ 0 g 0 G /F8 9.9626 Tf 28.214 0 Td [(F)83(or)-333(all)-333(o)28(v)27(erlap)-333(p)-28(oin)28(ts)-333(b)-28(elonging)-333(to)-334(th)-333(ecurren)28(t)-333(pro)-28(cess:)]TJ 0 g 0 G - -29.536 -22.669 Td [(1.)]TJ + -29.536 -25.042 Td [(1.)]TJ 0 g 0 G [-500(Ov)28(erlap)-333(p)-28(oin)28(t)-334(index;)]TJ 0 g 0 G - 0 -17.312 Td [(2.)]TJ + 0 -18.498 Td [(2.)]TJ 0 g 0 G [-500(Num)28(b)-28(er)-333(of)-334(pr)1(o)-28(cesses)-334(sharing)-333(that)-333(o)27(v)28(erlap)-333(p)-28(oin)28(ts;)]TJ 0 g 0 G - 0 -17.312 Td [(3.)]TJ + 0 -18.499 Td [(3.)]TJ 0 g 0 G - [-500(Index)-333(of)-334(a)-333(\134master")-333(pro)-28(cess:)]TJ -9.188 -22.668 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(allo)-28(catable)-333(in)28(teger)-333(arra)27(y)-333(of)-333(rank)-334(t)28(w)28(o.)]TJ + [-500(Index)-333(of)-334(a)-333(\134master")-333(pro)-28(cess:)]TJ -9.188 -25.042 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(allo)-28(catable)-333(in)28(teger)-333(arra)27(y)-333(of)-333(rank)-334(t)28(w)28(o.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -22.669 Td [(bnd)]TJ +/F27 9.9626 Tf -24.907 -25.042 Td [(bnd)]TJ ET q -1 0 0 1 119.678 470.56 cm +1 0 0 1 119.678 452.761 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 123.115 470.361 Td [(elem)]TJ +/F27 9.9626 Tf 123.115 452.561 Td [(elem)]TJ 0 g 0 G -/F8 9.9626 Tf 28.213 0 Td [(A)-270(list)-269(of)-270(all)-269(b)-28(oundary)-269(p)-28(oin)28(ts,)-283(i.e.)-423(p)-28(oin)28(ts)-269(that)-270(ha)28(v)28(e)-270(a)-269(connection)-270(with)]TJ -26.526 -11.955 Td [(other)-333(pro)-28(cesses.)]TJ -24.907 -21.983 Td [(The)-333(F)83(ortran)-333(2003)-334(declaration)-333(for)]TJ/F30 9.9626 Tf 146.645 0 Td [(psb_desc_type)]TJ/F8 9.9626 Tf 71.315 0 Td [(structures)-333(is)-334(as)-333(follo)28(ws:)]TJ +/F8 9.9626 Tf 28.213 0 Td [(A)-270(list)-269(of)-270(all)-269(b)-28(oundary)-269(p)-28(oin)28(ts,)-283(i.e.)-423(p)-28(oin)28(ts)-269(that)-270(ha)28(v)28(e)-270(a)-269(connection)-270(with)]TJ -26.526 -11.955 Td [(other)-333(pro)-28(cesses.)]TJ -24.907 -23.763 Td [(The)-333(F)83(ortran)-333(2003)-334(declaration)-333(for)]TJ/F30 9.9626 Tf 146.645 0 Td [(psb_desc_type)]TJ/F8 9.9626 Tf 71.315 0 Td [(structures)-333(is)-334(as)-333(follo)28(ws:)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -ET -q -1 0 0 1 107.053 410.721 cm -[]0 d 0 J 0.398 w 0 0 m 329.396 0 l S -Q -q -1 0 0 1 107.252 290.638 cm -[]0 d 0 J 0.398 w 0 0 m 0 119.884 l S -Q 0 g 0 G 0 g 0 G -BT -/F30 9.9626 Tf 115.422 396.463 Td [(type)-525(psb_desc_type)]TJ 20.921 -11.955 Td [(class\050psb_indx_map\051,)-525(allocatable)-525(::)-525(indxmap)]TJ 0 -11.955 Td [(integer,)-525(allocatable)-1050(::)-525(halo_index\050:\051)]TJ 0 -11.956 Td [(integer,)-525(allocatable)-1050(::)-525(ext_index\050:\051)]TJ 0 -11.955 Td [(integer,)-525(allocatable)-1050(::)-525(ovrlap_index\050:\051)]TJ 0 -11.955 Td [(integer,)-525(allocatable)-1050(::)-525(ovrlap_elem\050:,:\051)]TJ 0 -11.955 Td [(integer,)-525(allocatable)-1050(::)-525(ovr_mst_idx\050:\051)]TJ 0 -11.955 Td [(integer,)-525(allocatable)-1050(::)-525(bnd_elem\050:\051)]TJ -20.921 -11.955 Td [(end)-525(type)-525(psb_desc_type)]TJ -ET -q -1 0 0 1 436.25 290.638 cm -[]0 d 0 J 0.398 w 0 0 m 0 119.884 l S -Q -q -1 0 0 1 107.053 290.438 cm -[]0 d 0 J 0.398 w 0 0 m 329.396 0 l S -Q -BT -/F8 9.9626 Tf 99.895 262.399 Td [(Figure)-464(3:)-705(The)-464(PSBLAS)-464(de\014ned)-464(data)-464(t)28(yp)-28(e)-464(that)-463(con)27(tains)-464(th)1(e)-464(com)-1(m)28(unication)]TJ 0 -11.955 Td [(descriptor.)]TJ +/F30 9.9626 Tf -200.773 -22.815 Td [(type)-525(psb_desc_type)]TJ 20.921 -11.956 Td [(class\050psb_indx_map\051,)-525(allocatable)-525(::)-525(indxmap)]TJ 0 -11.955 Td [(integer,)-525(allocatable)-1050(::)-525(halo_index\050:\051)]TJ 0 -11.955 Td [(integer,)-525(allocatable)-1050(::)-525(ext_index\050:\051)]TJ 0 -11.955 Td [(integer,)-525(allocatable)-1050(::)-525(ovrlap_index\050:\051)]TJ 0 -11.955 Td [(integer,)-525(allocatable)-1050(::)-525(ovrlap_elem\050:,:\051)]TJ 0 -11.955 Td [(integer,)-525(allocatable)-1050(::)-525(ovr_mst_idx\050:\051)]TJ 0 -11.956 Td [(integer,)-525(allocatable)-1050(::)-525(bnd_elem\050:\051)]TJ -20.921 -11.955 Td [(end)-525(type)-525(psb_desc_type)]TJ/F8 9.9626 Tf -17.187 -30.054 Td [(Figure)-464(3:)-705(The)-464(PSBLAS)-464(de\014ned)-464(data)-464(t)28(yp)-28(e)-464(that)-463(con)27(tains)-464(th)1(e)-464(com)-1(m)28(unication)]TJ 0 -11.955 Td [(descriptor.)]TJ 0 g 0 G - 14.944 -25.691 Td [(A)-445(comm)28(unication)-445(descriptor)-445(asso)-28(ciated)-445(with)-445(a)-445(sparse)-445(matrix)-445(has)-445(a)-445(state,)]TJ -14.944 -11.955 Td [(whic)28(h)-334(can)-333(tak)28(e)-333(the)-334(follo)28(wing)-333(v)55(alues:)]TJ + 14.944 -27.471 Td [(A)-445(comm)28(unication)-445(descriptor)-445(asso)-28(ciated)-445(with)-445(a)-445(sparse)-445(matrix)-445(has)-445(a)-445(state,)]TJ -14.944 -11.955 Td [(whic)28(h)-334(can)-333(tak)28(e)-333(the)-334(follo)28(wing)-333(v)55(alues:)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -21.983 Td [(Build:)]TJ +/F27 9.9626 Tf 0 -23.763 Td [(Build:)]TJ 0 g 0 G /F8 9.9626 Tf 35.409 0 Td [(State)-306(en)28(tered)-306(after)-307(the)-306(\014rst)-306(allo)-28(cation,)-311(and)-306(b)-28(efore)-306(the)-306(\014rst)-306(assem)27(bly;)-315(in)]TJ -10.502 -11.955 Td [(this)-224(state)-223(it)-224(is)-223(p)-28(ossible)-224(to)-223(add)-224(comm)28(unication)-224(requiremen)28(ts)-224(among)-223(di\013eren)27(t)]TJ 0 -11.955 Td [(pro)-28(cesses.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -22.669 Td [(Assem)32(bled:)]TJ +/F27 9.9626 Tf -24.907 -25.042 Td [(Assem)32(bled:)]TJ 0 g 0 G /F8 9.9626 Tf 61.508 0 Td [(State)-351(en)28(tered)-351(after)-351(the)-350(assem)27(bly;)-359(computations)-351(using)-351(the)-350(ass)-1(o)-27(ci-)]TJ -36.601 -11.955 Td [(ated)-392(sparse)-391(matrix,)-406(suc)28(h)-392(as)-391(m)-1(atr)1(ix-v)27(ector)-391(pro)-28(ducts,)-406(are)-392(only)-391(p)-28(ossible)-391(in)]TJ 0 -11.955 Td [(this)-333(state.)]TJ 0 g 0 G @@ -4705,39 +4745,39 @@ BT ET endstream endobj -750 0 obj << +760 0 obj << /Type /Page -/Contents 751 0 R -/Resources 749 0 R +/Contents 761 0 R +/Resources 759 0 R /MediaBox [0 0 595.276 841.89] -/Parent 723 0 R +/Parent 729 0 R >> endobj -752 0 obj << -/D [750 0 R /XYZ 99.895 740.998 null] +762 0 obj << +/D [760 0 R /XYZ 99.895 740.998 null] >> endobj -753 0 obj << -/D [750 0 R /XYZ 99.895 716.092 null] +763 0 obj << +/D [760 0 R /XYZ 99.895 716.092 null] >> endobj -754 0 obj << -/D [750 0 R /XYZ 99.895 701.513 null] +764 0 obj << +/D [760 0 R /XYZ 99.895 700.92 null] >> endobj -755 0 obj << -/D [750 0 R /XYZ 99.895 563.018 null] +765 0 obj << +/D [760 0 R /XYZ 99.895 552.932 null] >> endobj -756 0 obj << -/D [750 0 R /XYZ 99.895 545.706 null] +766 0 obj << +/D [760 0 R /XYZ 99.895 534.433 null] >> endobj -757 0 obj << -/D [750 0 R /XYZ 99.895 528.395 null] +767 0 obj << +/D [760 0 R /XYZ 99.895 515.935 null] >> endobj -758 0 obj << -/D [750 0 R /XYZ 147.412 274.354 null] +768 0 obj << +/D [760 0 R /XYZ 147.412 280.287 null] >> endobj -749 0 obj << -/Font << /F8 478 0 R /F27 477 0 R /F30 664 0 R >> +759 0 obj << +/Font << /F8 482 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -763 0 obj << +773 0 obj << /Length 5177 >> stream @@ -4864,48 +4904,48 @@ BT ET endstream endobj -762 0 obj << +772 0 obj << /Type /Page -/Contents 763 0 R -/Resources 761 0 R +/Contents 773 0 R +/Resources 771 0 R /MediaBox [0 0 595.276 841.89] -/Parent 723 0 R -/Annots [ 759 0 R 760 0 R ] +/Parent 729 0 R +/Annots [ 769 0 R 770 0 R ] >> endobj -759 0 obj << +769 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [351.231 525.114 358.204 537.069] /Subtype /Link /A << /S /GoTo /D (section.1) >> >> endobj -760 0 obj << +770 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [186.34 315.967 193.314 327.923] /Subtype /Link /A << /S /GoTo /D (section.1) >> >> endobj -764 0 obj << -/D [762 0 R /XYZ 150.705 740.998 null] ->> endobj -42 0 obj << -/D [762 0 R /XYZ 150.705 716.092 null] +774 0 obj << +/D [772 0 R /XYZ 150.705 740.998 null] >> endobj 46 0 obj << -/D [762 0 R /XYZ 150.705 679.209 null] +/D [772 0 R /XYZ 150.705 716.092 null] >> endobj 50 0 obj << -/D [762 0 R /XYZ 150.705 482.017 null] +/D [772 0 R /XYZ 150.705 679.209 null] >> endobj 54 0 obj << -/D [762 0 R /XYZ 150.705 272.871 null] +/D [772 0 R /XYZ 150.705 482.017 null] >> endobj -761 0 obj << -/Font << /F27 477 0 R /F30 664 0 R /F8 478 0 R /F14 667 0 R /F10 666 0 R >> +58 0 obj << +/D [772 0 R /XYZ 150.705 272.871 null] +>> endobj +771 0 obj << +/Font << /F27 481 0 R /F30 669 0 R /F8 482 0 R /F14 672 0 R /F10 671 0 R >> /ProcSet [ /PDF /Text ] >> endobj -767 0 obj << +777 0 obj << /Length 4238 >> stream @@ -5065,33 +5105,33 @@ BT ET endstream endobj -766 0 obj << +776 0 obj << /Type /Page -/Contents 767 0 R -/Resources 765 0 R +/Contents 777 0 R +/Resources 775 0 R /MediaBox [0 0 595.276 841.89] -/Parent 769 0 R +/Parent 779 0 R >> endobj -768 0 obj << -/D [766 0 R /XYZ 99.895 740.998 null] ->> endobj -58 0 obj << -/D [766 0 R /XYZ 99.895 697.426 null] +778 0 obj << +/D [776 0 R /XYZ 99.895 740.998 null] >> endobj 62 0 obj << -/D [766 0 R /XYZ 99.895 469.407 null] +/D [776 0 R /XYZ 99.895 697.426 null] >> endobj 66 0 obj << -/D [766 0 R /XYZ 99.895 288.306 null] +/D [776 0 R /XYZ 99.895 469.407 null] >> endobj 70 0 obj << -/D [766 0 R /XYZ 99.895 175.264 null] +/D [776 0 R /XYZ 99.895 288.306 null] >> endobj -765 0 obj << -/Font << /F27 477 0 R /F30 664 0 R /F8 478 0 R /F16 475 0 R >> -/ProcSet [ /PDF /Text ] +74 0 obj << +/D [776 0 R /XYZ 99.895 175.264 null] >> endobj 775 0 obj << +/Font << /F27 481 0 R /F30 669 0 R /F8 482 0 R /F16 479 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +785 0 obj << /Length 9813 >> stream @@ -5423,56 +5463,56 @@ BT ET endstream endobj -774 0 obj << +784 0 obj << /Type /Page -/Contents 775 0 R -/Resources 773 0 R +/Contents 785 0 R +/Resources 783 0 R /MediaBox [0 0 595.276 841.89] -/Parent 769 0 R -/Annots [ 770 0 R 771 0 R 772 0 R ] +/Parent 779 0 R +/Annots [ 780 0 R 781 0 R 782 0 R ] >> endobj -770 0 obj << +780 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [188.06 320.929 200.015 329.342] /Subtype /Link /A << /S /GoTo /D (cite.DesignPatterns) >> >> endobj -771 0 obj << +781 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [268.904 320.929 280.86 329.342] /Subtype /Link /A << /S /GoTo /D (cite.Sparse03) >> >> endobj -772 0 obj << +782 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [459.496 318.438 466.47 330.393] /Subtype /Link /A << /S /GoTo /D (figure.4) >> >> endobj -776 0 obj << -/D [774 0 R /XYZ 150.705 740.998 null] ->> endobj -74 0 obj << -/D [774 0 R /XYZ 150.705 583.867 null] +786 0 obj << +/D [784 0 R /XYZ 150.705 740.998 null] >> endobj 78 0 obj << -/D [774 0 R /XYZ 150.705 376.504 null] +/D [784 0 R /XYZ 150.705 583.867 null] >> endobj -777 0 obj << -/D [774 0 R /XYZ 171.358 345.835 null] +82 0 obj << +/D [784 0 R /XYZ 150.705 376.504 null] >> endobj -778 0 obj << -/D [774 0 R /XYZ 455.673 208.654 null] +787 0 obj << +/D [784 0 R /XYZ 171.358 345.835 null] >> endobj -773 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R /F16 475 0 R >> -/ProcSet [ /PDF /Text ] +788 0 obj << +/D [784 0 R /XYZ 455.673 208.654 null] >> endobj 783 0 obj << -/Length 4897 +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R /F16 479 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +793 0 obj << +/Length 4702 >> stream 0 g 0 G @@ -5480,229 +5520,211 @@ stream 0 g 0 G 0 g 0 G 0 g 0 G -q -1 0 0 1 115.644 705.93 cm -[]0 d 0 J 0.398 w 0 0 m 312.215 0 l S -Q -q -1 0 0 1 115.843 618.059 cm -[]0 d 0 J 0.398 w 0 0 m 0 87.671 l S -Q 0 g 0 G 0 g 0 G BT -/F30 9.9626 Tf 134.473 685.805 Td [(type)-525(::)-525(psb_Tspmat_type)]TJ 10.461 -23.91 Td [(class\050psb_T_base_sparse_mat\051,)-525(allocatable)-1050(::)-525(a)]TJ -10.461 -23.911 Td [(end)-525(type)-1050(psb_Tspmat_type)]TJ -ET -q -1 0 0 1 427.659 618.059 cm -[]0 d 0 J 0.398 w 0 0 m 0 87.671 l S -Q -q -1 0 0 1 115.644 617.86 cm -[]0 d 0 J 0.398 w 0 0 m 312.215 0 l S -Q +/F30 9.9626 Tf 136.133 704.136 Td [(type)-525(::)-525(psb_Tspmat_type)]TJ 10.461 -23.91 Td [(class\050psb_T_base_sparse_mat\051,)-525(allocatable)-1050(::)-525(a)]TJ -10.461 -23.91 Td [(end)-525(type)-1050(psb_Tspmat_type)]TJ 0 g 0 G -BT -/F8 9.9626 Tf 111.947 589.821 Td [(Figure)-333(4:)-778(The)-333(PSBLAS)-334(de\014ned)-333(data)-333(t)28(yp)-28(e)-334(th)1(at)-334(con)28(tains)-333(a)-334(sparse)-333(matrix.)]TJ +/F8 9.9626 Tf -24.186 -39.796 Td [(Figure)-333(4:)-778(The)-333(PSBLAS)-334(de\014ned)-333(data)-333(t)28(yp)-28(e)-334(th)1(at)-334(con)28(tains)-333(a)-334(sparse)-333(matrix.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F27 9.9626 Tf -12.052 -31.634 Td [(psb)]TJ +/F27 9.9626 Tf -12.052 -31.982 Td [(psb)]TJ ET q -1 0 0 1 117.832 558.386 cm +1 0 0 1 117.832 584.737 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 121.269 558.187 Td [(T)]TJ +/F27 9.9626 Tf 121.269 584.538 Td [(T)]TJ ET q -1 0 0 1 129.926 558.386 cm +1 0 0 1 129.926 584.737 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 133.364 558.187 Td [(csc)]TJ +/F27 9.9626 Tf 133.364 584.538 Td [(csc)]TJ ET q -1 0 0 1 148.754 558.386 cm +1 0 0 1 148.754 584.737 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 152.191 558.187 Td [(sparse)]TJ +/F27 9.9626 Tf 152.191 584.538 Td [(sparse)]TJ ET q -1 0 0 1 183.821 558.386 cm +1 0 0 1 183.821 584.737 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 187.258 558.187 Td [(mat)]TJ +/F27 9.9626 Tf 187.258 584.538 Td [(mat)]TJ 0 g 0 G -/F8 9.9626 Tf 24.553 0 Td [(Compressed)-334(storage)-333(b)28(y)-333(columns;)]TJ -111.916 -19.734 Td [(The)-373(inner)-373(sparse)-373(matrix)-373(has)-373(an)-373(asso)-28(ciated)-373(state,)-383(whic)28(h)-373(can)-373(tak)28(e)-373(the)-373(follo)27(wing)]TJ 0 -11.956 Td [(v)56(alues:)]TJ +/F8 9.9626 Tf 24.553 0 Td [(Compressed)-334(storage)-333(b)28(y)-333(columns;)]TJ -111.916 -20.161 Td [(The)-373(inner)-373(sparse)-373(matrix)-373(has)-373(an)-373(asso)-28(ciated)-373(state,)-383(whic)28(h)-373(can)-373(tak)28(e)-373(the)-373(follo)27(wing)]TJ 0 -11.955 Td [(v)56(alues:)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -19.734 Td [(Build:)]TJ +/F27 9.9626 Tf 0 -20.161 Td [(Build:)]TJ 0 g 0 G /F8 9.9626 Tf 35.409 0 Td [(State)-306(en)28(tered)-306(after)-307(the)-306(\014rst)-306(allo)-28(cation,)-311(and)-306(b)-28(efore)-306(the)-306(\014rst)-306(assem)27(bly;)-315(in)]TJ -10.502 -11.955 Td [(this)-333(state)-334(it)-333(is)-333(p)-28(ossible)-334(to)-333(add)-333(nonzero)-333(en)27(tries.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.829 Td [(Assem)32(bled:)]TJ +/F27 9.9626 Tf -24.907 -20.24 Td [(Assem)32(bled:)]TJ 0 g 0 G -/F8 9.9626 Tf 61.508 0 Td [(State)-373(en)27(tered)-373(after)-373(the)-374(assem)28(bly;)-393(computations)-373(us)-1(i)1(ng)-374(the)-373(sparse)]TJ -36.601 -11.956 Td [(matrix,)-333(suc)27(h)-333(as)-333(matrix-v)28(ec)-1(tor)-333(pro)-28(d)1(ucts)-1(,)-333(are)-333(only)-333(p)-28(ossible)-334(in)-333(this)-333(state;)]TJ +/F8 9.9626 Tf 61.508 0 Td [(State)-373(en)27(tered)-373(after)-373(the)-374(assem)28(bly;)-393(computations)-373(us)-1(i)1(ng)-374(the)-373(sparse)]TJ -36.601 -11.955 Td [(matrix,)-333(suc)27(h)-333(as)-333(matrix-v)28(ec)-1(tor)-333(pro)-28(d)1(ucts)-1(,)-333(are)-333(only)-333(p)-28(ossible)-334(in)-333(this)-333(state;)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.829 Td [(Up)-32(date:)]TJ +/F27 9.9626 Tf -24.907 -20.24 Td [(Up)-32(date:)]TJ 0 g 0 G -/F8 9.9626 Tf 45.302 0 Td [(State)-233(en)27(tered)-233(after)-233(a)-234(reinit)1(aliz)-1(at)1(ion;)-267(this)-233(is)-234(used)-233(to)-233(handle)-234(applications)]TJ -20.395 -11.955 Td [(in)-395(whic)28(h)-396(th)1(e)-396(same)-395(sparsit)28(y)-395(pattern)-396(is)-395(used)-395(m)28(ultiple)-395(times)-396(with)-395(di\013eren)28(t)]TJ 0 -11.956 Td [(co)-28(e\016cien)28(ts.)-427(In)-280(this)-280(state)-280(it)-280(is)-281(only)-280(p)-27(oss)-1(ib)1(le)-281(to)-280(en)28(ter)-280(co)-28(e\016cien)28(ts)-280(for)-281(already)]TJ 0 -11.955 Td [(existing)-333(nonzero)-334(en)28(tries.)]TJ -24.907 -19.734 Td [(The)-358(only)-357(storage)-358(v)56(arian)27(t)-357(supp)-28(orting)-357(the)-358(build)-357(s)-1(tate)-357(is)-358(COO;)-357(all)-358(other)-358(v)56(arian)28(ts)]TJ 0 -11.955 Td [(are)-333(obtained)-334(b)28(y)-333(con)28(v)27(ersion)-333(to/from)-333(it.)]TJ/F27 9.9626 Tf 0 -25.855 Td [(3.2.1)-1150(Metho)-32(ds)]TJ 0 -18.389 Td [(get)]TJ +/F8 9.9626 Tf 45.302 0 Td [(State)-233(en)27(tered)-233(after)-233(a)-234(reinit)1(aliz)-1(at)1(ion;)-267(this)-233(is)-234(used)-233(to)-233(handle)-234(applications)]TJ -20.395 -11.955 Td [(in)-395(whic)28(h)-396(th)1(e)-396(same)-395(sparsit)28(y)-395(pattern)-396(is)-395(used)-395(m)28(ultiple)-395(times)-396(with)-395(di\013eren)28(t)]TJ 0 -11.955 Td [(co)-28(e\016cien)28(ts.)-427(In)-280(this)-280(state)-280(it)-280(is)-281(only)-280(p)-27(oss)-1(ib)1(le)-281(to)-280(en)28(ter)-280(co)-28(e\016cien)28(ts)-280(for)-281(already)]TJ 0 -11.956 Td [(existing)-333(nonzero)-334(en)28(tries.)]TJ -24.907 -20.161 Td [(The)-358(only)-357(storage)-358(v)56(arian)27(t)-357(supp)-28(orting)-357(the)-358(build)-357(s)-1(tate)-357(is)-358(COO;)-357(all)-358(other)-358(v)56(arian)28(ts)]TJ 0 -11.955 Td [(are)-333(obtained)-334(b)28(y)-333(con)28(v)27(ersion)-333(to/from)-333(it.)]TJ/F27 9.9626 Tf 0 -26.313 Td [(3.2.1)-1150(Metho)-32(ds)]TJ 0 -18.536 Td [(get)]TJ ET q -1 0 0 1 116.018 331.594 cm +1 0 0 1 116.018 355.24 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 119.455 331.395 Td [(nro)32(ws)-383(|)-384(Get)-383(n)32(um)32(b)-32(er)-383(of)-384(ro)32(ws)-383(in)-383(a)-384(sparse)-383(matrix)]TJ +/F27 9.9626 Tf 119.455 355.04 Td [(nro)32(ws)-383(|)-384(Get)-383(n)32(um)32(b)-32(er)-383(of)-384(ro)32(ws)-383(in)-383(a)-384(sparse)-383(matrix)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -19.56 -18.389 Td [(nr)-525(=)-525(a%get_nrows\050\051)]TJ +/F30 9.9626 Tf -19.56 -18.535 Td [(nr)-525(=)-525(a%get_nrows\050\051)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -21.679 Td [(T)32(yp)-32(e:)]TJ +/F27 9.9626 Tf 0 -22.154 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G /F8 9.9626 Tf 33.797 0 Td [(Async)28(hronous.)]TJ 0 g 0 G -/F27 9.9626 Tf -33.797 -19.83 Td [(On)-383(En)32(try)]TJ +/F27 9.9626 Tf -33.797 -20.24 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G - 0 -19.83 Td [(a)]TJ + 0 -20.24 Td [(a)]TJ 0 g 0 G /F8 9.9626 Tf 10.551 0 Td [(the)-333(sparse)-334(matrix)]TJ 14.356 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ 0 g 0 G - -57.286 -33.634 Td [(On)-383(Return)]TJ + -57.286 -34.109 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G - 0 -19.829 Td [(F)96(unction)-384(v)64(alue)]TJ + 0 -20.239 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 78.387 0 Td [(The)-333(n)27(u)1(m)27(b)-27(e)-1(r)-333(of)-333(ro)28(ws)-334(of)-333(sparse)-333(matrix)]TJ/F30 9.9626 Tf 164.937 0 Td [(a)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ/F27 9.9626 Tf -248.554 -25.855 Td [(get)]TJ +/F8 9.9626 Tf 78.387 0 Td [(The)-333(n)27(u)1(m)27(b)-27(e)-1(r)-333(of)-333(ro)28(ws)-334(of)-333(sparse)-333(matrix)]TJ/F30 9.9626 Tf 164.937 0 Td [(a)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ/F27 9.9626 Tf -248.554 -26.313 Td [(get)]TJ ET q -1 0 0 1 116.018 160.593 cm +1 0 0 1 116.018 181.454 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 119.455 160.394 Td [(ncols)-383(|)-384(Get)-383(n)32(um)32(b)-32(er)-383(of)-384(columns)-383(in)-383(a)-384(sparse)-383(matrix)]TJ +/F27 9.9626 Tf 119.455 181.255 Td [(ncols)-383(|)-384(Get)-383(n)32(um)32(b)-32(er)-383(of)-384(columns)-383(in)-383(a)-384(sparse)-383(matrix)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -19.56 -18.39 Td [(nc)-525(=)-525(a%get_ncols\050\051)]TJ +/F30 9.9626 Tf -19.56 -18.536 Td [(nc)-525(=)-525(a%get_ncols\050\051)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -21.678 Td [(T)32(yp)-32(e:)]TJ +/F27 9.9626 Tf 0 -22.154 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G /F8 9.9626 Tf 33.797 0 Td [(Async)28(hronous.)]TJ 0 g 0 G - 133.078 -29.888 Td [(15)]TJ +/F27 9.9626 Tf -33.797 -20.239 Td [(On)-383(En)32(try)]TJ +0 g 0 G +0 g 0 G +/F8 9.9626 Tf 166.875 -29.888 Td [(15)]TJ 0 g 0 G ET endstream endobj -782 0 obj << +792 0 obj << /Type /Page -/Contents 783 0 R -/Resources 781 0 R +/Contents 793 0 R +/Resources 791 0 R /MediaBox [0 0 595.276 841.89] -/Parent 769 0 R ->> endobj -784 0 obj << -/D [782 0 R /XYZ 99.895 740.998 null] +/Parent 779 0 R >> endobj -780 0 obj << -/D [782 0 R /XYZ 155.561 601.776 null] +794 0 obj << +/D [792 0 R /XYZ 99.895 740.998 null] >> endobj -82 0 obj << -/D [782 0 R /XYZ 99.895 359.249 null] +790 0 obj << +/D [792 0 R /XYZ 155.561 628.476 null] >> endobj 86 0 obj << -/D [782 0 R /XYZ 99.895 323.023 null] +/D [792 0 R /XYZ 99.895 383.119 null] >> endobj 90 0 obj << -/D [782 0 R /XYZ 99.895 152.022 null] +/D [792 0 R /XYZ 99.895 346.601 null] >> endobj -781 0 obj << -/Font << /F30 664 0 R /F8 478 0 R /F27 477 0 R >> +94 0 obj << +/D [792 0 R /XYZ 99.895 172.816 null] +>> endobj +791 0 obj << +/Font << /F30 669 0 R /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -787 0 obj << -/Length 3553 +797 0 obj << +/Length 3487 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F27 9.9626 Tf 150.705 706.129 Td [(On)-383(En)32(try)]TJ -0 g 0 G -0 g 0 G - 0 -23.725 Td [(a)]TJ +/F27 9.9626 Tf 150.705 706.129 Td [(a)]TJ 0 g 0 G /F8 9.9626 Tf 10.551 0 Td [(the)-333(sparse)-334(matrix)]TJ 14.355 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ 0 g 0 G - -57.285 -36.723 Td [(On)-383(Return)]TJ + -57.285 -37.829 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G - 0 -23.725 Td [(F)96(unction)-384(v)64(alue)]TJ + 0 -25.2 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 78.386 0 Td [(The)-333(n)27(um)28(b)-28(er)-333(of)-333(columns)-334(of)-333(sparse)-333(matrix)]TJ/F30 9.9626 Tf 180.684 0 Td [(a)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ/F27 9.9626 Tf -264.3 -30.935 Td [(get)]TJ +/F8 9.9626 Tf 78.386 0 Td [(The)-333(n)27(um)28(b)-28(er)-333(of)-333(columns)-334(of)-333(sparse)-333(matrix)]TJ/F30 9.9626 Tf 180.684 0 Td [(a)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ/F27 9.9626 Tf -264.3 -32.892 Td [(get)]TJ ET q -1 0 0 1 166.827 579.265 cm +1 0 0 1 166.827 598.452 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 170.264 579.066 Td [(nnzeros)-383(|)-384(Get)-383(n)32(um)32(b)-32(er)-383(of)-384(nonzero)-383(elemen)32(ts)-383(in)-384(a)-383(sparse)-383(m)-1(atrix)]TJ +/F27 9.9626 Tf 170.264 598.253 Td [(nnzeros)-383(|)-384(Get)-383(n)32(um)32(b)-32(er)-383(of)-384(nonzero)-383(elemen)32(ts)-383(in)-384(a)-383(sparse)-383(m)-1(atrix)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -19.559 -20.157 Td [(nz)-525(=)-525(a%get_nnzeros\050\051)]TJ +/F30 9.9626 Tf -19.559 -20.844 Td [(nz)-525(=)-525(a%get_nnzeros\050\051)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -24.768 Td [(T)32(yp)-32(e:)]TJ +/F27 9.9626 Tf 0 -25.874 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G /F8 9.9626 Tf 33.797 0 Td [(Async)28(hronous.)]TJ 0 g 0 G -/F27 9.9626 Tf -33.797 -23.725 Td [(On)-383(En)32(try)]TJ +/F27 9.9626 Tf -33.797 -25.2 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G - 0 -23.725 Td [(a)]TJ + 0 -25.2 Td [(a)]TJ 0 g 0 G /F8 9.9626 Tf 10.551 0 Td [(the)-333(sparse)-334(matrix)]TJ 14.355 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ 0 g 0 G - -57.285 -36.723 Td [(On)-383(Return)]TJ + -57.285 -37.829 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G - 0 -23.724 Td [(F)96(unction)-384(v)64(alue)]TJ + 0 -25.2 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 78.386 0 Td [(The)-333(n)27(um)28(b)-28(er)-333(of)-333(nonzero)-333(e)-1(l)1(e)-1(men)28(ts)-333(stored)-334(in)-333(sparse)-333(matrix)]TJ/F30 9.9626 Tf 249.98 0 Td [(a)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ/F27 9.9626 Tf -333.596 -25.718 Td [(Notes)]TJ +/F8 9.9626 Tf 78.386 0 Td [(The)-333(n)27(um)28(b)-28(er)-333(of)-333(nonzero)-333(e)-1(l)1(e)-1(men)28(ts)-333(stored)-334(in)-333(sparse)-333(matrix)]TJ/F30 9.9626 Tf 249.98 0 Td [(a)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ/F27 9.9626 Tf -333.596 -27.193 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.176 -22.775 Td [(1.)]TJ +/F8 9.9626 Tf 12.176 -23.881 Td [(1.)]TJ 0 g 0 G - [-500(The)-462(function)-462(v)55(alue)-462(is)-462(sp)-28(eci\014c)-462(to)-463(th)1(e)-463(storage)-462(format)-462(of)-462(matrix)]TJ/F30 9.9626 Tf 296.649 0 Td [(a)]TJ/F8 9.9626 Tf 5.23 0 Td [(;)-527(some)]TJ -289.149 -11.955 Td [(storage)-465(formats)-466(emplo)28(y)-465(padding,)-498(th)27(us)-465(the)-465(returned)-465(v)55(alue)-465(for)-465(the)-466(same)]TJ 0 -11.955 Td [(matrix)-333(ma)27(y)-333(b)-28(e)-333(di\013eren)28(t)-334(for)-333(di\013eren)28(t)-333(storage)-334(c)28(hoices.)]TJ/F27 9.9626 Tf -24.906 -30.936 Td [(get)]TJ + [-500(The)-462(function)-462(v)55(alue)-462(is)-462(sp)-28(eci\014c)-462(to)-463(th)1(e)-463(storage)-462(format)-462(of)-462(matrix)]TJ/F30 9.9626 Tf 296.649 0 Td [(a)]TJ/F8 9.9626 Tf 5.23 0 Td [(;)-527(some)]TJ -289.149 -11.955 Td [(storage)-465(formats)-466(emplo)28(y)-465(padding,)-498(th)27(us)-465(the)-465(returned)-465(v)55(alue)-465(for)-465(the)-466(same)]TJ 0 -11.955 Td [(matrix)-333(ma)27(y)-333(b)-28(e)-333(di\013eren)28(t)-334(for)-333(di\013eren)28(t)-333(storage)-334(c)28(hoices.)]TJ/F27 9.9626 Tf -24.906 -32.892 Td [(get)]TJ ET q -1 0 0 1 166.827 311.15 cm +1 0 0 1 166.827 318.474 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 170.264 310.95 Td [(size)-503(|)-503(Get)-503(maxim)32(um)-503(n)32(um)32(b)-32(er)-503(of)-503(nonzero)-503(elemen)32(ts)-503(in)-503(a)-504(sp)1(a)-1(rse)]TJ -19.559 -11.955 Td [(matrix)]TJ +/F27 9.9626 Tf 170.264 318.275 Td [(size)-503(|)-503(Get)-503(maxim)32(um)-503(n)32(um)32(b)-32(er)-503(of)-503(nonzero)-503(elemen)32(ts)-503(in)-503(a)-504(sp)1(a)-1(rse)]TJ -19.559 -11.956 Td [(matrix)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf 0 -20.157 Td [(maxnz)-525(=)-525(a%get_size\050\051)]TJ +/F30 9.9626 Tf 0 -20.843 Td [(maxnz)-525(=)-525(a%get_size\050\051)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -24.768 Td [(T)32(yp)-32(e:)]TJ +/F27 9.9626 Tf 0 -25.874 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G /F8 9.9626 Tf 33.797 0 Td [(Async)28(hronous.)]TJ 0 g 0 G -/F27 9.9626 Tf -33.797 -23.724 Td [(On)-383(En)32(try)]TJ +/F27 9.9626 Tf -33.797 -25.2 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G - 0 -23.725 Td [(a)]TJ + 0 -25.2 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(sparse)-334(matrix)]TJ 14.355 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(sparse)-334(matrix)]TJ 14.355 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ 0 g 0 G - -57.285 -36.722 Td [(On)-383(Return)]TJ + -57.285 -37.829 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G - 0 -23.725 Td [(F)96(unction)-384(v)64(alue)]TJ + 0 -25.2 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G /F8 9.9626 Tf 78.386 0 Td [(The)-253(maxim)27(u)1(m)-254(n)28(um)28(b)-28(er)-253(of)-253(nonzero)-254(elemen)28(ts)-253(that)-253(can)-254(b)-27(e)-254(stored)]TJ -53.48 -11.955 Td [(in)-333(sparse)-334(matrix)]TJ/F30 9.9626 Tf 74.056 0 Td [(a)]TJ/F8 9.9626 Tf 8.551 0 Td [(using)-333(its)-334(curren)28(t)-333(memory)-334(allo)-27(cation.)]TJ 0 g 0 G @@ -5711,30 +5733,30 @@ BT ET endstream endobj -786 0 obj << +796 0 obj << /Type /Page -/Contents 787 0 R -/Resources 785 0 R +/Contents 797 0 R +/Resources 795 0 R /MediaBox [0 0 595.276 841.89] -/Parent 769 0 R +/Parent 779 0 R >> endobj -788 0 obj << -/D [786 0 R /XYZ 150.705 740.998 null] +798 0 obj << +/D [796 0 R /XYZ 150.705 740.998 null] >> endobj -94 0 obj << -/D [786 0 R /XYZ 150.705 569.876 null] +98 0 obj << +/D [796 0 R /XYZ 150.705 588.746 null] >> endobj -789 0 obj << -/D [786 0 R /XYZ 150.705 383.636 null] +799 0 obj << +/D [796 0 R /XYZ 150.705 393.655 null] >> endobj -98 0 obj << -/D [786 0 R /XYZ 150.705 291.743 null] +102 0 obj << +/D [796 0 R /XYZ 150.705 298.75 null] >> endobj -785 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R >> +795 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -792 0 obj << +802 0 obj << /Length 3701 >> stream @@ -5839,31 +5861,31 @@ BT ET endstream endobj -791 0 obj << +801 0 obj << /Type /Page -/Contents 792 0 R -/Resources 790 0 R +/Contents 802 0 R +/Resources 800 0 R /MediaBox [0 0 595.276 841.89] -/Parent 769 0 R ->> endobj -793 0 obj << -/D [791 0 R /XYZ 99.895 740.998 null] +/Parent 779 0 R >> endobj -102 0 obj << -/D [791 0 R /XYZ 99.895 697.187 null] +803 0 obj << +/D [801 0 R /XYZ 99.895 740.998 null] >> endobj 106 0 obj << -/D [791 0 R /XYZ 99.895 508.701 null] +/D [801 0 R /XYZ 99.895 697.187 null] >> endobj 110 0 obj << -/D [791 0 R /XYZ 99.895 308.26 null] +/D [801 0 R /XYZ 99.895 508.701 null] >> endobj -790 0 obj << -/Font << /F27 477 0 R /F30 664 0 R /F8 478 0 R >> +114 0 obj << +/D [801 0 R /XYZ 99.895 308.26 null] +>> endobj +800 0 obj << +/Font << /F27 481 0 R /F30 669 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -798 0 obj << -/Length 7537 +808 0 obj << +/Length 7793 >> stream 0 g 0 G @@ -5871,570 +5893,532 @@ stream BT /F27 9.9626 Tf 150.705 706.129 Td [(3.2.2)-1150(Named)-383(Constan)32(ts)]TJ 0 g 0 G - 0 -18.389 Td [(psb)]TJ + 0 -18.427 Td [(psb)]TJ ET q -1 0 0 1 168.641 687.939 cm +1 0 0 1 168.641 687.901 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 172.078 687.74 Td [(dupl)]TJ +/F27 9.9626 Tf 172.078 687.702 Td [(dupl)]TJ ET q -1 0 0 1 195.043 687.939 cm +1 0 0 1 195.043 687.901 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 198.48 687.74 Td [(o)32(vwrt)]TJ +/F27 9.9626 Tf 198.48 687.702 Td [(o)32(vwrt)]TJ ET q -1 0 0 1 228.073 687.939 cm +1 0 0 1 228.073 687.901 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 236.492 687.74 Td [(Duplicate)-315(co)-28(e\016cien)28(ts)-315(should)-315(b)-28(e)-315(o)28(v)28(erwritten)-315(\050i.e.)-438(ignore)-315(du-)]TJ -60.881 -11.956 Td [(plications\051)]TJ +/F8 9.9626 Tf 236.492 687.702 Td [(Duplicate)-315(co)-28(e\016cien)28(ts)-315(should)-315(b)-28(e)-315(o)28(v)28(erwritten)-315(\050i.e.)-438(ignore)-315(du-)]TJ -60.881 -11.956 Td [(plications\051)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -18.386 Td [(psb)]TJ +/F27 9.9626 Tf -24.906 -20.006 Td [(psb)]TJ ET q -1 0 0 1 168.641 657.597 cm +1 0 0 1 168.641 655.939 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 172.078 657.398 Td [(dupl)]TJ +/F27 9.9626 Tf 172.078 655.74 Td [(dupl)]TJ ET q -1 0 0 1 195.043 657.597 cm +1 0 0 1 195.043 655.939 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 198.48 657.398 Td [(add)]TJ +/F27 9.9626 Tf 198.48 655.74 Td [(add)]TJ ET q -1 0 0 1 217.467 657.597 cm +1 0 0 1 217.467 655.939 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 225.886 657.398 Td [(Duplicate)-333(co)-28(e\016cien)28(ts)-334(should)-333(b)-28(e)-333(added;)]TJ +/F8 9.9626 Tf 225.886 655.74 Td [(Duplicate)-333(co)-28(e\016cien)28(ts)-334(should)-333(b)-28(e)-333(added;)]TJ 0 g 0 G -/F27 9.9626 Tf -75.181 -18.387 Td [(psb)]TJ +/F27 9.9626 Tf -75.181 -20.007 Td [(psb)]TJ ET q -1 0 0 1 168.641 639.21 cm +1 0 0 1 168.641 635.932 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 172.078 639.011 Td [(dupl)]TJ +/F27 9.9626 Tf 172.078 635.733 Td [(dupl)]TJ ET q -1 0 0 1 195.043 639.21 cm +1 0 0 1 195.043 635.932 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 198.48 639.011 Td [(err)]TJ +/F27 9.9626 Tf 198.48 635.733 Td [(err)]TJ ET q -1 0 0 1 213.856 639.21 cm +1 0 0 1 213.856 635.932 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 222.274 639.011 Td [(Duplicate)-333(co)-28(e\016cien)28(ts)-334(should)-333(trigger)-333(an)-334(error)-333(conditino)]TJ +/F8 9.9626 Tf 222.274 635.733 Td [(Duplicate)-333(co)-28(e\016cien)28(ts)-334(should)-333(trigger)-333(an)-334(error)-333(conditino)]TJ 0 g 0 G -/F27 9.9626 Tf -71.569 -18.386 Td [(psb)]TJ +/F27 9.9626 Tf -71.569 -20.007 Td [(psb)]TJ ET q -1 0 0 1 168.641 620.824 cm +1 0 0 1 168.641 615.925 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 172.078 620.625 Td [(up)-32(d)]TJ +/F27 9.9626 Tf 172.078 615.726 Td [(up)-32(d)]TJ ET q -1 0 0 1 192.179 620.824 cm +1 0 0 1 192.179 615.925 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 195.616 620.625 Td [(d\015t)]TJ +/F27 9.9626 Tf 195.616 615.726 Td [(d\015t)]TJ ET q -1 0 0 1 213.489 620.824 cm +1 0 0 1 213.489 615.925 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 221.907 620.625 Td [(Default)-333(up)-28(date)-333(strategy)-334(for)-333(matrix)-333(co)-28(e\016cien)28(ts;)]TJ +/F8 9.9626 Tf 221.907 615.726 Td [(Default)-333(up)-28(date)-333(strategy)-334(for)-333(matrix)-333(co)-28(e\016cien)28(ts;)]TJ 0 g 0 G -/F27 9.9626 Tf -71.202 -18.387 Td [(psb)]TJ +/F27 9.9626 Tf -71.202 -20.007 Td [(psb)]TJ ET q -1 0 0 1 168.641 602.437 cm +1 0 0 1 168.641 595.919 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 172.078 602.238 Td [(up)-32(d)]TJ +/F27 9.9626 Tf 172.078 595.719 Td [(up)-32(d)]TJ ET q -1 0 0 1 192.179 602.437 cm +1 0 0 1 192.179 595.919 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 195.616 602.238 Td [(src)32(h)]TJ +/F27 9.9626 Tf 195.616 595.719 Td [(src)32(h)]TJ ET q -1 0 0 1 216.68 602.437 cm +1 0 0 1 216.68 595.919 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 225.098 602.238 Td [(Up)-28(date)-333(strategy)-333(base)-1(d)-333(on)-333(searc)28(h)-334(in)28(to)-333(the)-334(data)-333(structure;)]TJ +/F8 9.9626 Tf 225.098 595.719 Td [(Up)-28(date)-333(strategy)-333(base)-1(d)-333(on)-333(searc)28(h)-334(in)28(to)-333(the)-334(data)-333(structure;)]TJ 0 g 0 G -/F27 9.9626 Tf -74.393 -18.387 Td [(psb)]TJ +/F27 9.9626 Tf -74.393 -20.007 Td [(psb)]TJ ET q -1 0 0 1 168.641 584.051 cm +1 0 0 1 168.641 575.912 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 172.078 583.851 Td [(up)-32(d)]TJ +/F27 9.9626 Tf 172.078 575.713 Td [(up)-32(d)]TJ ET q -1 0 0 1 192.179 584.051 cm +1 0 0 1 192.179 575.912 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 195.616 583.851 Td [(p)-32(erm)]TJ +/F27 9.9626 Tf 195.616 575.713 Td [(p)-32(erm)]TJ ET q -1 0 0 1 222.504 584.051 cm +1 0 0 1 222.504 575.912 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 230.922 583.851 Td [(Up)-28(date)-398(strategy)-398(based)-398(on)-398(additional)-398(p)-28(erm)28(utation)-398(data)-398(\050s)-1(ee)]TJ -55.311 -11.955 Td [(to)-28(ols)-333(routine)-333(desc)-1(r)1(iption\051.)]TJ/F16 11.9552 Tf -24.906 -27.226 Td [(3.3)-1125(Dense)-375(V)94(ector)-375(Data)-375(Structure)]TJ/F8 9.9626 Tf 0 -18.389 Td [(The)]TJ/F30 9.9626 Tf 21.256 0 Td [(psb)]TJ +/F8 9.9626 Tf 230.922 575.713 Td [(Up)-28(date)-398(strategy)-398(based)-398(on)-398(additional)-398(p)-28(erm)28(utation)-398(data)-398(\050s)-1(ee)]TJ -55.311 -11.956 Td [(to)-28(ols)-333(routine)-333(desc)-1(r)1(iption\051.)]TJ/F16 11.9552 Tf -24.906 -27.996 Td [(3.3)-1125(Dense)-375(V)94(ector)-375(Data)-375(Structure)]TJ/F8 9.9626 Tf 0 -18.427 Td [(The)]TJ/F30 9.9626 Tf 21.256 0 Td [(psb)]TJ +ET +q +1 0 0 1 188.279 517.533 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 191.417 517.334 Td [(T)]TJ +ET +q +1 0 0 1 197.275 517.533 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 200.414 517.334 Td [(vect)]TJ +ET +q +1 0 0 1 221.963 517.533 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 225.101 517.334 Td [(type)]TJ/F8 9.9626 Tf 25.019 0 Td [(data)-411(structure)-412(encapsulates)-411(the)-411(dense)-412(v)28(ectors)-411(in)-412(a)-411(w)28(a)28(y)]TJ -99.415 -11.956 Td [(similar)-434(to)-434(s)-1(p)1(arse)-435(matrices,)-459(i.e.)-748(in)1(c)-1(l)1(uding)-435(a)-434(base)-434(t)28(yp)-28(e)]TJ/F30 9.9626 Tf 242.195 0 Td [(psb)]TJ +ET +q +1 0 0 1 409.218 505.578 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 412.357 505.378 Td [(T)]TJ ET q -1 0 0 1 188.279 526.48 cm +1 0 0 1 418.215 505.578 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 191.417 526.281 Td [(T)]TJ +/F30 9.9626 Tf 421.353 505.378 Td [(base)]TJ ET q -1 0 0 1 197.275 526.48 cm +1 0 0 1 442.902 505.578 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 200.414 526.281 Td [(vect)]TJ +/F30 9.9626 Tf 446.04 505.378 Td [(vect)]TJ ET q -1 0 0 1 221.963 526.48 cm +1 0 0 1 467.589 505.578 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 225.101 526.281 Td [(type)]TJ/F8 9.9626 Tf 25.019 0 Td [(data)-411(structure)-412(encapsulates)-411(the)-411(dense)-412(v)28(ectors)-411(in)-412(a)-411(w)28(a)28(y)]TJ -99.415 -11.955 Td [(similar)-487(to)-486(sparse)-487(matrices.)-904(The)-487(user)-486(will)-487(not,)-525(in)-486(general,)-525(access)-487(the)-487(v)28(ector)]TJ 0 -11.955 Td [(comp)-28(onen)28(ts)-333(directly)84(,)-333(but)-332(rather)-333(via)-333(t)1(he)-333(routines)-333(of)-332(sec.)]TJ +/F30 9.9626 Tf 470.727 505.378 Td [(type)]TJ/F8 9.9626 Tf 20.922 0 Td [(.)]TJ -340.944 -11.955 Td [(The)-330(user)-330(will)-330(not,)-330(in)-330(general,)-331(access)-330(the)-330(v)28(ector)-330(comp)-28(onen)28(ts)-330(directly)83(,)-330(but)-330(rather)]TJ 0 -11.955 Td [(via)-303(the)-304(rou)1(tines)-304(of)-303(sec.)]TJ 0 0 1 rg 0 0 1 RG - [-333(6)]TJ + [-303(6)]TJ 0 g 0 G - [(.)-444(Among)-333(other)-332(simple)]TJ 0 -11.956 Td [(things,)-322(w)28(e)-319(de\014ne)-319(here)-319(an)-319(extraction)-319(metho)-28(d)-319(that)-319(can)-319(b)-28(e)-319(used)-319(to)-319(get)-319(a)-319(full)-319(cop)27(y)]TJ 0 -11.955 Td [(of)-333(the)-334(part)-333(of)-333(the)-333(v)27(ector)-333(stored)-333(on)-334(the)-333(lo)-28(cal)-333(pro)-28(cess.)]TJ 14.944 -11.955 Td [(The)-399(t)28(yp)-28(e)-399(declaration)-398(is)-399(sho)28(wn)-399(in)-399(\014gure)]TJ + [(.)-435(Among)-303(other)-303(sim)-1(p)1(le)-304(things,)-309(w)28(e)-304(de\014ne)-303(here)-303(an)-303(extrac-)]TJ 0 -11.955 Td [(tion)-321(metho)-27(d)-321(that)-321(can)-321(b)-27(e)-321(used)-321(to)-321(get)-320(a)-321(full)-321(cop)28(y)-321(of)-321(th)1(e)-321(part)-321(of)-321(the)-320(v)27(ector)-320(stored)]TJ 0 -11.955 Td [(on)-333(the)-334(lo)-27(cal)-334(pro)-27(ce)-1(ss.)]TJ 14.944 -11.976 Td [(The)-399(t)28(yp)-28(e)-399(declaration)-398(is)-399(sho)28(wn)-399(in)-399(\014gure)]TJ 0 0 1 rg 0 0 1 RG [-399(5)]TJ 0 g 0 G [-399(where)]TJ/F30 9.9626 Tf 216.941 0 Td [(T)]TJ/F8 9.9626 Tf 9.203 0 Td [(is)-399(a)-399(placeholder)-398(for)-399(the)]TJ -241.088 -11.955 Td [(data)-333(t)28(yp)-28(e)-334(and)-333(precision)-333(v)55(arian)28(ts)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -16.848 Td [(I)]TJ +/F27 9.9626 Tf 0 -19.986 Td [(I)]TJ 0 g 0 G /F8 9.9626 Tf 9.326 0 Td [(In)28(teger;)]TJ 0 g 0 G -/F27 9.9626 Tf -9.326 -18.387 Td [(S)]TJ +/F27 9.9626 Tf -9.326 -20.007 Td [(S)]TJ 0 g 0 G /F8 9.9626 Tf 11.346 0 Td [(Single)-333(precision)-334(real;)]TJ 0 g 0 G -/F27 9.9626 Tf -11.346 -18.386 Td [(D)]TJ +/F27 9.9626 Tf -11.346 -20.007 Td [(D)]TJ 0 g 0 G /F8 9.9626 Tf 13.768 0 Td [(Double)-333(precision)-334(real;)]TJ 0 g 0 G -/F27 9.9626 Tf -13.768 -18.387 Td [(C)]TJ +/F27 9.9626 Tf -13.768 -20.007 Td [(C)]TJ 0 g 0 G /F8 9.9626 Tf 13.256 0 Td [(Single)-333(precision)-334(complex;)]TJ 0 g 0 G -/F27 9.9626 Tf -13.256 -18.386 Td [(Z)]TJ -0 g 0 G -/F8 9.9626 Tf 11.983 0 Td [(Double)-333(precision)-334(complex.)]TJ -11.983 -16.848 Td [(The)-280(ac)-1(tu)1(al)-281(data)-280(is)-281(con)28(tained)-280(in)-281(the)-280(p)-28(olymorphic)-280(c)-1(omp)-27(onen)28(t)]TJ/F30 9.9626 Tf 260.737 0 Td [(v%v)]TJ/F8 9.9626 Tf 15.691 0 Td [(;)-298(the)-281(separati)1(o)-1(n)]TJ -276.428 -11.955 Td [(b)-28(et)28(w)28(een)-427(the)-426(application)-427(and)-426(the)-427(actual)-426(data)-426(is)-427(essen)28(tial)-427(for)-426(cases)-427(where)-426(it)-427(is)]TJ 0 -11.956 Td [(necessary)-426(to)-426(link)-425(to)-426(data)-426(storage)-426(made)-425(a)27(v)56(ailable)-426(elsewhere)-426(outside)-425(the)-426(direct)]TJ 0 -11.955 Td [(con)28(trol)-335(of)-335(the)-336(compiler/appl)1(ic)-1(ati)1(on,)-336(e.g.)-450(data)-335(stored)-335(in)-335(a)-335(graphics)-335(ac)-1(celerator's)]TJ 0 -11.955 Td [(priv)56(ate)-334(memory)84(.)]TJ/F27 9.9626 Tf 0 -25.233 Td [(3.3.1)-1150(Metho)-32(ds)]TJ 0 -18.39 Td [(get)]TJ -ET -q -1 0 0 1 166.827 256.064 cm -[]0 d 0 J 0.398 w 0 0 m 3.437 0 l S -Q -BT -/F27 9.9626 Tf 170.264 255.864 Td [(nro)32(ws)-383(|)-384(Get)-383(n)32(um)32(b)-32(er)-383(of)-384(ro)32(ws)-383(in)-383(a)-384(dense)-383(v)32(ector)]TJ -0 g 0 G -0 g 0 G -/F30 9.9626 Tf -19.559 -18.389 Td [(nr)-525(=)-525(v%get_nrows\050\051)]TJ +/F27 9.9626 Tf -13.256 -20.007 Td [(Z)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -18.071 Td [(T)32(yp)-32(e:)]TJ +/F8 9.9626 Tf 11.983 0 Td [(Double)-333(precision)-334(complex.)]TJ -11.983 -19.986 Td [(The)-280(ac)-1(tu)1(al)-281(data)-280(is)-281(con)28(tained)-280(in)-281(the)-280(p)-28(olymorphic)-280(c)-1(omp)-27(onen)28(t)]TJ/F30 9.9626 Tf 260.737 0 Td [(v%v)]TJ/F8 9.9626 Tf 15.691 0 Td [(;)-298(the)-281(separati)1(o)-1(n)]TJ -276.428 -11.955 Td [(b)-28(et)28(w)28(een)-427(the)-426(application)-427(and)-426(the)-427(actual)-426(data)-426(is)-427(essen)28(tial)-427(for)-426(cases)-427(where)-426(it)-427(is)]TJ 0 -11.955 Td [(necessary)-426(to)-426(link)-425(to)-426(data)-426(storage)-426(made)-425(a)27(v)56(ailable)-426(elsewhere)-426(outside)-425(the)-426(direct)]TJ 0 -11.956 Td [(con)28(trol)-335(of)-335(the)-336(compiler/appl)1(ic)-1(ati)1(on,)-336(e.g.)-450(data)-335(stored)-335(in)-335(a)-335(graphics)-335(ac)-1(celerator's)]TJ 0 -11.955 Td [(priv)56(ate)-334(memory)84(.)]TJ 0 g 0 G -/F8 9.9626 Tf 33.797 0 Td [(Async)28(hronous.)]TJ -0 g 0 G -/F27 9.9626 Tf -33.797 -18.387 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G - 0 -18.386 Td [(v)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(dense)-334(v)28(ector)]TJ 13.878 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ 0 g 0 G - -57.285 -30.027 Td [(On)-383(Return)]TJ +/F30 9.9626 Tf 36.238 -20.021 Td [(type)-525(psb_T_base_vect_type)]TJ 10.461 -11.955 Td [(TYPE\050KIND_\051,)-525(allocatable)-525(::)-525(v\050:\051)]TJ -10.461 -11.955 Td [(end)-525(type)-525(psb_T_base_vect_type)]TJ 0 -23.911 Td [(type)-525(psb_T_vect_type)]TJ 10.461 -11.955 Td [(class\050psb_T_base_vect_type\051,)-525(allocatable)-525(::)-525(v)]TJ -10.461 -11.955 Td [(end)-525(type)-1050(psb_T_vect_type)]TJ 0 g 0 G +/F8 9.9626 Tf -21.516 -39.795 Td [(Figure)-333(5:)-778(The)-333(PSBLAS)-334(de\014ned)-333(data)-333(t)28(yp)-28(e)-334(that)-333(con)28(tains)-333(a)-334(dense)-333(v)28(ector.)]TJ 0 g 0 G - 0 -18.386 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 78.386 0 Td [(The)-333(n)27(um)28(b)-28(er)-333(of)-333(ro)28(ws)-334(of)-333(sparse)-333(matrix)]TJ/F30 9.9626 Tf 164.937 0 Td [(a)]TJ/F8 9.9626 Tf 5.231 0 Td [(.)]TJ 0 g 0 G - -81.68 -31.825 Td [(18)]TJ + 152.152 -43.821 Td [(18)]TJ 0 g 0 G ET endstream endobj -797 0 obj << +807 0 obj << /Type /Page -/Contents 798 0 R -/Resources 796 0 R +/Contents 808 0 R +/Resources 806 0 R /MediaBox [0 0 595.276 841.89] -/Parent 769 0 R -/Annots [ 794 0 R 795 0 R ] +/Parent 779 0 R +/Annots [ 804 0 R 805 0 R ] >> endobj -794 0 obj << +804 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [392.897 499.437 399.871 510.285] +/Rect [250.191 478.535 257.165 489.383] /Subtype /Link /A << /S /GoTo /D (section.6) >> >> endobj -795 0 obj << +805 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [343.178 463.572 350.152 474.42] +/Rect [343.178 442.649 350.152 453.497] /Subtype /Link /A << /S /GoTo /D (figure.5) >> >> endobj -799 0 obj << -/D [797 0 R /XYZ 150.705 740.998 null] ->> endobj -114 0 obj << -/D [797 0 R /XYZ 150.705 716.092 null] +809 0 obj << +/D [807 0 R /XYZ 150.705 740.998 null] >> endobj 118 0 obj << -/D [797 0 R /XYZ 150.705 556.127 null] ->> endobj -800 0 obj << -/D [797 0 R /XYZ 171.961 526.281 null] +/D [807 0 R /XYZ 150.705 716.092 null] >> endobj 122 0 obj << -/D [797 0 R /XYZ 150.705 284.272 null] +/D [807 0 R /XYZ 150.705 547.238 null] >> endobj -126 0 obj << -/D [797 0 R /XYZ 150.705 247.493 null] +810 0 obj << +/D [807 0 R /XYZ 171.961 517.334 null] >> endobj -796 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F16 475 0 R /F30 664 0 R >> -/ProcSet [ /PDF /Text ] +811 0 obj << +/D [807 0 R /XYZ 392.9 505.378 null] >> endobj -805 0 obj << -/Length 3559 +812 0 obj << +/D [807 0 R /XYZ 209.041 146.214 null] +>> endobj +806 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F16 479 0 R /F30 669 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +816 0 obj << +/Length 3278 >> stream 0 g 0 G 0 g 0 G +BT +/F27 9.9626 Tf 99.895 706.129 Td [(3.3.1)-1150(Metho)-32(ds)]TJ 0 -19.587 Td [(get)]TJ +ET +q +1 0 0 1 116.018 686.742 cm +[]0 d 0 J 0.398 w 0 0 m 3.437 0 l S +Q +BT +/F27 9.9626 Tf 119.455 686.542 Td [(nro)32(ws)-383(|)-384(Get)-383(n)32(um)32(b)-32(er)-383(of)-384(ro)32(ws)-383(in)-383(a)-384(dense)-383(v)32(ector)]TJ 0 g 0 G 0 g 0 G +/F30 9.9626 Tf -19.56 -19.586 Td [(nr)-525(=)-525(v%get_nrows\050\051)]TJ 0 g 0 G -q -1 0 0 1 115.644 705.93 cm -[]0 d 0 J 0.398 w 0 0 m 312.215 0 l S -Q -q -1 0 0 1 115.843 600.016 cm -[]0 d 0 J 0.398 w 0 0 m 0 105.715 l S -Q +/F27 9.9626 Tf 0 -23.847 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G +/F8 9.9626 Tf 33.797 0 Td [(Async)28(hronous.)]TJ 0 g 0 G -BT -/F30 9.9626 Tf 134.473 691.672 Td [(type)-525(psb_T_base_vect_type)]TJ 10.461 -11.955 Td [(TYPE\050KIND_\051,)-525(allocatable)-525(::)-525(v\050:\051)]TJ -10.461 -11.955 Td [(end)-525(type)-525(psb_T_base_vect_type)]TJ 0 -23.911 Td [(type)-525(psb_T_vect_type)]TJ 10.461 -11.955 Td [(class\050psb_T_base_vect_type\051,)-525(allocatable)-525(::)-525(v)]TJ -10.461 -11.955 Td [(end)-525(type)-1050(psb_T_vect_type)]TJ -ET -q -1 0 0 1 427.659 600.016 cm -[]0 d 0 J 0.398 w 0 0 m 0 105.715 l S -Q -q -1 0 0 1 115.644 599.816 cm -[]0 d 0 J 0.398 w 0 0 m 312.215 0 l S -Q +/F27 9.9626 Tf -33.797 -22.499 Td [(On)-383(En)32(try)]TJ 0 g 0 G -BT -/F8 9.9626 Tf 114.618 571.777 Td [(Figure)-333(5:)-778(The)-333(PSBLAS)-334(de\014ned)-333(data)-333(t)28(yp)-28(e)-333(that)-334(con)28(tains)-333(a)-334(dense)-333(v)28(ector.)]TJ 0 g 0 G + 0 -22.498 Td [(v)]TJ +0 g 0 G +/F8 9.9626 Tf 11.028 0 Td [(the)-333(dense)-334(v)28(ector)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ +0 g 0 G + -57.286 -35.803 Td [(On)-383(Return)]TJ 0 g 0 G -/F27 9.9626 Tf -14.723 -32.301 Td [(get)]TJ +0 g 0 G + 0 -22.498 Td [(F)96(unction)-384(v)64(alue)]TJ +0 g 0 G +/F8 9.9626 Tf 78.387 0 Td [(The)-333(n)28(um)27(b)-27(e)-1(r)-333(of)-333(ro)28(ws)-334(of)-333(sparse)-333(matrix)]TJ/F30 9.9626 Tf 164.937 0 Td [(a)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ/F27 9.9626 Tf -248.554 -29.308 Td [(get)]TJ ET q -1 0 0 1 116.018 539.676 cm +1 0 0 1 116.018 498.747 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 119.455 539.476 Td [(ncols)-383(|)-384(Get)-383(n)32(um)32(b)-32(er)-383(of)-384(columns)-383(in)-383(a)-384(sparse)-383(matrix)]TJ -19.56 -18.832 Td [(sizeof)-383(|)-384(Get)-383(memory)-383(o)-32(ccupation)-384(in)-383(b)32(ytes)-384(of)-383(a)-383(dense)-384(v)32(ector)-383(matrix)]TJ +/F27 9.9626 Tf 119.455 498.548 Td [(ncols)-383(|)-384(Get)-383(n)32(um)32(b)-32(er)-383(of)-384(columns)-383(in)-383(a)-384(sparse)-383(matrix)]TJ -19.56 -19.587 Td [(sizeof)-383(|)-384(Get)-383(memory)-383(o)-32(ccupation)-384(in)-383(b)32(ytes)-384(of)-383(a)-383(dense)-384(v)32(ector)-383(matrix)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf 0 -18.831 Td [(memory_size)-525(=)-525(v%sizeof\050\051)]TJ +/F30 9.9626 Tf 0 -19.586 Td [(memory_size)-525(=)-525(v%sizeof\050\051)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -22.632 Td [(T)32(yp)-32(e:)]TJ +/F27 9.9626 Tf 0 -23.847 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G /F8 9.9626 Tf 33.797 0 Td [(Async)28(hronous.)]TJ 0 g 0 G -/F27 9.9626 Tf -33.797 -20.876 Td [(On)-383(En)32(try)]TJ +/F27 9.9626 Tf -33.797 -22.499 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G - 0 -20.877 Td [(v)]TJ + 0 -22.498 Td [(v)]TJ 0 g 0 G /F8 9.9626 Tf 11.028 0 Td [(the)-333(dense)-334(v)28(ector)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ 0 g 0 G - -57.286 -34.586 Td [(On)-383(Return)]TJ + -57.286 -35.803 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G - 0 -20.877 Td [(F)96(unction)-384(v)64(alue)]TJ + 0 -22.498 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 78.387 0 Td [(The)-333(memory)-334(o)-28(ccupati)1(on)-334(in)-333(b)28(ytes.)]TJ/F27 9.9626 Tf -78.387 -27.158 Td [(get)]TJ +/F8 9.9626 Tf 78.387 0 Td [(The)-333(memory)-334(o)-28(ccupati)1(on)-334(in)-333(b)28(ytes.)]TJ/F27 9.9626 Tf -78.387 -29.308 Td [(get)]TJ ET q -1 0 0 1 116.018 343.052 cm +1 0 0 1 116.018 291.166 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 119.455 342.852 Td [(v)32(ect)-383(|)-384(Get)-383(a)-383(cop)32(y)-384(of)-383(the)-383(v)31(ector)-383(con)32(ten)32(ts)]TJ +/F27 9.9626 Tf 119.455 290.967 Td [(v)32(ect)-383(|)-384(Get)-383(a)-383(cop)32(y)-384(of)-383(the)-383(v)31(ector)-383(con)32(ten)32(ts)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -19.56 -18.831 Td [(extv)-525(=)-525(v%get_vect\050\051)]TJ +/F30 9.9626 Tf -19.56 -19.587 Td [(extv)-525(=)-525(v%get_vect\050\051)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -22.632 Td [(T)32(yp)-32(e:)]TJ +/F27 9.9626 Tf 0 -23.847 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G /F8 9.9626 Tf 33.797 0 Td [(Async)28(hronous.)]TJ 0 g 0 G -/F27 9.9626 Tf -33.797 -20.876 Td [(On)-383(En)32(try)]TJ +/F27 9.9626 Tf -33.797 -22.498 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G - 0 -20.877 Td [(v)]TJ + 0 -22.498 Td [(v)]TJ 0 g 0 G /F8 9.9626 Tf 11.028 0 Td [(the)-333(dense)-334(v)28(ector)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ 0 g 0 G - -57.286 -34.586 Td [(On)-383(Return)]TJ + -57.286 -35.803 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G - 0 -20.877 Td [(F)96(unction)-384(v)64(alue)]TJ + 0 -22.498 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 78.387 0 Td [(An)-353(allo)-28(catable)-354(arra)28(y)-353(holding)-354(a)-353(cop)28(y)-354(of)-353(the)-354(dense)-353(v)28(ector)-354(con-)]TJ -53.48 -11.955 Td [(ten)28(ts.)]TJ/F16 11.9552 Tf -24.907 -29.15 Td [(3.4)-1125(Preconditioner)-375(data)-375(structure)]TJ/F8 9.9626 Tf 0 -18.832 Td [(Our)-383(base)-383(library)-383(o\013ers)-383(supp)-28(ort)-383(for)-383(simple)-383(w)28(ell)-383(kno)27(wn)-383(preconditioners)-383(lik)28(e)-383(Di-)]TJ 0 -11.955 Td [(agonal)-333(Scaling)-334(or)-333(Blo)-28(c)28(k)-333(Jacobi)-334(with)-333(incomplete)-333(factorization)-334(ILU\0500\051.)]TJ +/F8 9.9626 Tf 78.387 0 Td [(An)-353(allo)-28(catable)-354(arra)28(y)-353(holding)-354(a)-353(cop)28(y)-354(of)-353(the)-354(dense)-353(v)28(ector)-354(con-)]TJ -53.48 -11.955 Td [(ten)28(ts.)]TJ 0 g 0 G - 166.875 -29.888 Td [(19)]TJ + 141.968 -29.888 Td [(19)]TJ 0 g 0 G ET endstream endobj -804 0 obj << +815 0 obj << /Type /Page -/Contents 805 0 R -/Resources 803 0 R +/Contents 816 0 R +/Resources 814 0 R /MediaBox [0 0 595.276 841.89] -/Parent 808 0 R +/Parent 819 0 R >> endobj -806 0 obj << -/D [804 0 R /XYZ 99.895 740.998 null] ->> endobj -801 0 obj << -/D [804 0 R /XYZ 158.232 583.732 null] +817 0 obj << +/D [815 0 R /XYZ 99.895 740.998 null] >> endobj -807 0 obj << -/D [804 0 R /XYZ 99.895 530.9 null] +126 0 obj << +/D [815 0 R /XYZ 99.895 716.092 null] >> endobj 130 0 obj << -/D [804 0 R /XYZ 99.895 512.068 null] +/D [815 0 R /XYZ 99.895 677.617 null] +>> endobj +818 0 obj << +/D [815 0 R /XYZ 99.895 489.623 null] >> endobj 134 0 obj << -/D [804 0 R /XYZ 99.895 334.276 null] +/D [815 0 R /XYZ 99.895 470.036 null] >> endobj 138 0 obj << -/D [804 0 R /XYZ 99.895 165.298 null] +/D [815 0 R /XYZ 99.895 282.042 null] >> endobj -803 0 obj << -/Font << /F30 664 0 R /F8 478 0 R /F27 477 0 R /F16 475 0 R >> +814 0 obj << +/Font << /F27 481 0 R /F30 669 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -811 0 obj << -/Length 5085 +822 0 obj << +/Length 2032 >> stream 0 g 0 G 0 g 0 G BT -/F8 9.9626 Tf 165.649 706.129 Td [(A)-427(preconditioner)-428(is)-427(held)-428(in)-427(the)]TJ/F30 9.9626 Tf 142.723 0 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(3.4)-1125(Preconditioner)-375(data)-375(structure)]TJ/F8 9.9626 Tf 0 -18.389 Td [(Our)-383(base)-383(library)-383(o\013ers)-383(supp)-28(ort)-383(for)-383(simple)-383(w)28(ell)-383(kno)27(wn)-383(precondition)1(e)-1(r)1(s)-384(lik)28(e)-383(Di-)]TJ 0 -11.956 Td [(agonal)-333(Scaling)-334(or)-333(Blo)-28(c)28(k)-333(Jacobi)-334(with)-333(incomplete)-333(factorization)-333(ILU\0500\051.)]TJ 14.944 -11.955 Td [(A)-427(preconditioner)-428(is)-427(held)-428(in)-427(the)]TJ/F30 9.9626 Tf 142.723 0 Td [(psb)]TJ ET q -1 0 0 1 324.691 706.328 cm +1 0 0 1 324.691 664.028 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 327.829 706.129 Td [(prec)]TJ +/F30 9.9626 Tf 327.829 663.829 Td [(prec)]TJ ET q -1 0 0 1 349.378 706.328 cm +1 0 0 1 349.378 664.028 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 352.516 706.129 Td [(type)]TJ/F8 9.9626 Tf 25.18 0 Td [(data)-427(structure)-428(rep)-28(orted)-427(in)]TJ -226.991 -11.955 Td [(\014gure)]TJ +/F30 9.9626 Tf 352.516 663.829 Td [(type)]TJ/F8 9.9626 Tf 25.18 0 Td [(data)-427(structure)-428(rep)-28(orted)-427(in)]TJ -226.991 -11.955 Td [(\014gure)]TJ 0 0 1 rg 0 0 1 RG [-361(6)]TJ 0 g 0 G - [(.)-527(The)]TJ/F30 9.9626 Tf 61.729 0 Td [(psb_prec_type)]TJ/F8 9.9626 Tf 71.59 0 Td [(data)-361(t)28(yp)-28(e)-361(ma)28(y)-361(con)28(tain)-361(a)-361(simple)-361(preconditionin)1(g)]TJ -133.319 -11.955 Td [(matrix)-395(with)-396(the)-395(asso)-28(ciated)-396(comm)28(unication)-395(desc)-1(r)1(iptor.The)-396(v)56(alues)-396(con)28(tained)-395(in)]TJ 0 -11.956 Td [(the)]TJ/F30 9.9626 Tf 16.637 0 Td [(iprcparm)]TJ/F8 9.9626 Tf 44.642 0 Td [(and)]TJ/F30 9.9626 Tf 18.851 0 Td [(rprcparm)]TJ/F8 9.9626 Tf 44.642 0 Td [(de\014ne)-281(tha)-281(t)28(yp)-28(e)-281(of)-281(preconditioner)-281(along)-281(with)-281(all)-281(the)]TJ -124.772 -11.955 Td [(parameters)-420(related)-421(to)-420(it;)-464(th)28(us,)]TJ/F30 9.9626 Tf 139.397 0 Td [(iprcparm)]TJ/F8 9.9626 Tf 46.03 0 Td [(and)]TJ/F30 9.9626 Tf 20.239 0 Td [(rprcparm)]TJ/F8 9.9626 Tf 46.03 0 Td [(de\014ne)-420(ho)28(w)-421(the)-420(other)]TJ -251.696 -11.955 Td [(records)-282(ha)28(v)28(e)-282(to)-282(b)-27(e)-282(in)28(terpreted.)-428(This)-281(data)-282(structure)-282(is)-282(the)-281(basis)-282(of)-282(more)-282(complex)]TJ 0 -11.955 Td [(preconditioning)-333(strategies,)-334(whic)28(h)-333(are)-333(the)-334(sub)-55(ject)-334(of)-333(further)-333(researc)28(h.)]TJ + [(.)-527(The)]TJ/F30 9.9626 Tf 61.729 0 Td [(psb_prec_type)]TJ/F8 9.9626 Tf 71.59 0 Td [(data)-361(t)28(yp)-28(e)-361(ma)28(y)-361(con)28(tain)-361(a)-361(simple)-361(preconditionin)1(g)]TJ -133.319 -11.955 Td [(matrix)-488(with)-487(the)-488(asso)-28(ciated)-488(comm)28(unication)-487(des)-1(crip)1(tor.The)-488(in)28(ternal)-488(precondi-)]TJ 0 -11.955 Td [(tioner)-417(is)-417(allo)-28(cated)-417(app)1(ropriately)-417(with)-417(the)-417(dynamic)-417(t)28(yp)-28(e)-417(corresp)-28(onding)-417(to)-417(th)1(e)]TJ 0 -11.956 Td [(desired)-333(preconditioner.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -ET -q -1 0 0 1 157.987 604.997 cm -[]0 d 0 J 0.398 w 0 0 m 329.147 0 l S -Q -q -1 0 0 1 158.186 150.501 cm -[]0 d 0 J 0.398 w 0 0 m 0 454.296 l S -Q 0 g 0 G 0 g 0 G -BT -/F46 8.9664 Tf 175.77 585.869 Td [(type)-525(psb_sprec_type)]TJ 9.415 -10.959 Td [(type\050psb_sspmat_type\051,)-525(allocatable)-525(::)-525(av\050:\051)]TJ 0 -10.959 Td [(real\050psb_spk_\051,)-525(allocatable)-4200(::)-525(d\050:\051)]TJ 0 -10.959 Td [(type\050psb_desc_type\051)-8400(::)-525(desc_data)]TJ 0 -10.959 Td [(integer,)-525(allocatable)-7875(::)-525(iprcparm\050:\051)]TJ 0 -10.959 Td [(real\050psb_spk_\051,)-525(allocatable)-4200(::)-525(rprcparm\050:\051)]TJ 0 -10.959 Td [(integer,)-525(allocatable)-7875(::)-525(perm\050:\051,)-1050(invperm\050:\051)]TJ 0 -10.959 Td [(integer)-14700(::)-525(prec,)-525(base_prec)]TJ -9.415 -10.958 Td [(end)-525(type)-525(psb_sprec_type)]TJ 0 -21.918 Td [(type)-525(psb_dprec_type)]TJ 9.415 -10.959 Td [(type\050psb_dspmat_type\051,)-525(allocatable)-525(::)-525(av\050:\051)]TJ 0 -10.959 Td [(real\050psb_dpk_\051,)-525(allocatable)-4200(::)-525(d\050:\051)]TJ 0 -10.959 Td [(type\050psb_desc_type\051)-8400(::)-525(desc_data)]TJ 0 -10.959 Td [(integer,)-525(allocatable)-7875(::)-525(iprcparm\050:\051)]TJ 0 -10.959 Td [(real\050psb_dpk_\051,)-525(allocatable)-4200(::)-525(rprcparm\050:\051)]TJ 0 -10.959 Td [(integer,)-525(allocatable)-7875(::)-525(perm\050:\051,)-1050(invperm\050:\051)]TJ 0 -10.959 Td [(integer)-14700(::)-525(prec,)-525(base_prec)]TJ -9.415 -10.959 Td [(end)-525(type)-525(psb_dprec_type)]TJ 0 -21.917 Td [(type)-525(psb_cprec_type)]TJ 9.415 -10.959 Td [(type\050psb_cspmat_type\051,)-525(allocatable)-525(::)-525(av\050:\051)]TJ 0 -10.959 Td [(complex\050psb_spk_\051,)-525(allocatable)-2625(::)-525(d\050:\051)]TJ 0 -10.959 Td [(type\050psb_desc_type\051)-8400(::)-525(desc_data)]TJ 0 -10.959 Td [(integer,)-525(allocatable)-7875(::)-525(iprcparm\050:\051)]TJ 0 -10.959 Td [(real\050psb_spk_\051,)-525(allocatable)-4200(::)-525(rprcparm\050:\051)]TJ 0 -10.959 Td [(integer,)-525(allocatable)-7875(::)-525(perm\050:\051,)-1050(invperm\050:\051)]TJ 0 -10.959 Td [(integer)-14700(::)-525(prec,)-525(base_prec)]TJ -9.415 -10.959 Td [(end)-525(type)-525(psb_cprec_type)]TJ 0 -21.917 Td [(type)-525(psb_zprec_type)]TJ 9.415 -10.959 Td [(type\050psb_zspmat_type\051,)-525(allocatable)-525(::)-525(av\050:\051)]TJ 0 -10.959 Td [(complex\050psb_dpk_\051,)-525(allocatable)-2625(::)-525(d\050:\051)]TJ 0 -10.959 Td [(type\050psb_desc_type\051)-8400(::)-525(desc_data)]TJ 0 -10.959 Td [(integer,)-525(allocatable)-7875(::)-525(iprcparm\050:\051)]TJ 0 -10.959 Td [(real\050psb_dpk_\051,)-525(allocatable)-4200(::)-525(rprcparm\050:\051)]TJ 0 -10.959 Td [(integer,)-525(allocatable)-7875(::)-525(perm\050:\051,)-1050(invperm\050:\051)]TJ 0 -10.959 Td [(integer)-14700(::)-525(prec,)-525(base_prec)]TJ -9.415 -10.959 Td [(end)-525(type)-525(psb_zprec_type)]TJ -ET -q -1 0 0 1 486.935 150.501 cm -[]0 d 0 J 0.398 w 0 0 m 0 454.296 l S -Q -q -1 0 0 1 157.987 150.302 cm -[]0 d 0 J 0.398 w 0 0 m 329.147 0 l S -Q +/F46 8.9664 Tf 26.601 -24.851 Td [(type)-525(psb_Tprec_type)]TJ 9.415 -10.959 Td [(class\050psb_T_base_prec_type\051,)-525(allocatable)-525(::)-525(prec)]TJ -9.415 -10.959 Td [(end)-525(type)-525(psb_Tprec_type)]TJ 0 g 0 G -BT -/F8 9.9626 Tf 162.674 122.263 Td [(Figure)-333(6:)-445(The)-333(PSBLAS)-333(de\014ned)-334(d)1(a)-1(t)1(a)-334(t)28(yp)-28(e)-333(that)-333(con)27(tains)-333(a)-333(preconditioner.)]TJ +/F8 9.9626 Tf -14.632 -38.799 Td [(Figure)-333(6:)-445(The)-333(PSBLAS)-333(de\014ned)-334(d)1(a)-1(t)1(a)-334(t)28(yp)-28(e)-333(that)-333(con)27(tains)-333(a)-333(preconditioner.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G - 154.905 -31.825 Td [(20)]TJ + 154.905 -440.002 Td [(20)]TJ 0 g 0 G ET endstream endobj -810 0 obj << +821 0 obj << /Type /Page -/Contents 811 0 R -/Resources 809 0 R +/Contents 822 0 R +/Resources 820 0 R /MediaBox [0 0 595.276 841.89] -/Parent 808 0 R -/Annots [ 802 0 R ] +/Parent 819 0 R +/Annots [ 813 0 R ] >> endobj -802 0 obj << +813 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [177.685 690.964 184.659 702.088] +/Rect [177.685 648.664 184.659 659.789] /Subtype /Link /A << /S /GoTo /D (figure.6) >> >> endobj -812 0 obj << -/D [810 0 R /XYZ 150.705 740.998 null] ->> endobj -813 0 obj << -/D [810 0 R /XYZ 308.372 706.129 null] ->> endobj -815 0 obj << -/D [810 0 R /XYZ 206.288 134.218 null] ->> endobj -809 0 obj << -/Font << /F8 478 0 R /F30 664 0 R /F46 814 0 R >> -/ProcSet [ /PDF /Text ] +823 0 obj << +/D [821 0 R /XYZ 150.705 740.998 null] >> endobj -818 0 obj << -/Length 169 ->> -stream -0 g 0 G -0 g 0 G -BT -/F16 11.9552 Tf 99.895 706.129 Td [(3.5)-1125(Data)-375(structure)-375(Metho)-31(ds)]TJ -0 g 0 G -/F8 9.9626 Tf 166.875 -615.691 Td [(21)]TJ -0 g 0 G -ET -endstream -endobj -817 0 obj << -/Type /Page -/Contents 818 0 R -/Resources 816 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 808 0 R +142 0 obj << +/D [821 0 R /XYZ 150.705 716.092 null] >> endobj -819 0 obj << -/D [817 0 R /XYZ 99.895 740.998 null] +824 0 obj << +/D [821 0 R /XYZ 308.372 663.829 null] >> endobj -142 0 obj << -/D [817 0 R /XYZ 99.895 716.092 null] +826 0 obj << +/D [821 0 R /XYZ 206.288 542.396 null] >> endobj -816 0 obj << -/Font << /F16 475 0 R /F8 478 0 R >> +820 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F30 669 0 R /F46 825 0 R >> /ProcSet [ /PDF /Text ] >> endobj -822 0 obj << -/Length 158 +829 0 obj << +/Length 157 >> stream 0 g 0 G 0 g 0 G BT -/F16 14.3462 Tf 150.705 706.129 Td [(4)-1125(Computational)-375(routines)]TJ +/F16 14.3462 Tf 99.895 706.129 Td [(4)-1125(Computational)-375(routines)]TJ 0 g 0 G -/F8 9.9626 Tf 166.874 -615.691 Td [(22)]TJ +/F8 9.9626 Tf 166.875 -615.691 Td [(21)]TJ 0 g 0 G ET endstream endobj -821 0 obj << +828 0 obj << /Type /Page -/Contents 822 0 R -/Resources 820 0 R +/Contents 829 0 R +/Resources 827 0 R /MediaBox [0 0 595.276 841.89] -/Parent 808 0 R +/Parent 819 0 R >> endobj -823 0 obj << -/D [821 0 R /XYZ 150.705 740.998 null] +830 0 obj << +/D [828 0 R /XYZ 99.895 740.998 null] >> endobj 146 0 obj << -/D [821 0 R /XYZ 150.705 716.092 null] +/D [828 0 R /XYZ 99.895 716.092 null] >> endobj -820 0 obj << -/Font << /F16 475 0 R /F8 478 0 R >> +827 0 obj << +/Font << /F16 479 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -833 0 obj << -/Length 7361 +840 0 obj << +/Length 7321 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(geaxpb)31(y)-375(|)-375(General)-375(Dense)-375(Matrix)-375(Sum)]TJ/F8 9.9626 Tf -25.091 -18.578 Td [(This)-436(subroutine)-436(is)-436(an)-436(in)28(te)-1(r)1(fac)-1(e)-436(to)-436(the)-436(computational)-436(k)28(ernel)-436(for)-436(dense)-436(matrix)]TJ 0 -11.955 Td [(sum:)]TJ/F11 9.9626 Tf 142.538 -12.258 Td [(y)]TJ/F14 9.9626 Tf 8.009 0 Td [(\040)]TJ/F11 9.9626 Tf 12.73 0 Td [(\013)-226(x)]TJ/F8 9.9626 Tf 16.532 0 Td [(+)]TJ/F11 9.9626 Tf 9.962 0 Td [(\014)-53(y)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(geaxpb)31(y)-375(|)-375(General)-375(Dense)-375(Matrix)-375(Sum)]TJ/F8 9.9626 Tf -25.091 -18.578 Td [(This)-436(subroutine)-436(is)-436(an)-436(in)28(terface)-437(to)-436(the)-436(computational)-436(k)28(ernel)-436(for)-436(dense)-436(matrix)]TJ 0 -11.955 Td [(sum:)]TJ/F11 9.9626 Tf 142.537 -12.258 Td [(y)]TJ/F14 9.9626 Tf 8.009 0 Td [(\040)]TJ/F11 9.9626 Tf 12.73 0 Td [(\013)-226(x)]TJ/F8 9.9626 Tf 16.532 0 Td [(+)]TJ/F11 9.9626 Tf 9.963 0 Td [(\014)-53(y)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -189.771 -22.424 Td [(call)-525(psb_geaxpby\050alpha,)-525(x,)-525(beta,)-525(y,)-525(desc_a,)-525(info\051)]TJ @@ -6443,54 +6427,54 @@ BT 0 g 0 G ET q -1 0 0 1 177.988 616.077 cm +1 0 0 1 228.797 616.077 cm []0 d 0 J 0.398 w 0 0 m 187.526 0 l S Q BT -/F11 9.9626 Tf 183.966 607.509 Td [(x)]TJ/F8 9.9626 Tf 5.693 0 Td [(,)]TJ/F11 9.9626 Tf 6.089 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(,)]TJ/F11 9.9626 Tf 6.088 0 Td [(\013)]TJ/F8 9.9626 Tf 6.41 0 Td [(,)]TJ/F11 9.9626 Tf 6.088 0 Td [(\014)]TJ/F27 9.9626 Tf 84.799 0 Td [(Subroutine)]TJ +/F11 9.9626 Tf 234.775 607.509 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(,)]TJ/F11 9.9626 Tf 6.088 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(,)]TJ/F11 9.9626 Tf 6.088 0 Td [(\013)]TJ/F8 9.9626 Tf 6.41 0 Td [(,)]TJ/F11 9.9626 Tf 6.089 0 Td [(\014)]TJ/F27 9.9626 Tf 84.799 0 Td [(Subroutine)]TJ ET q -1 0 0 1 177.988 603.724 cm +1 0 0 1 228.797 603.724 cm []0 d 0 J 0.398 w 0 0 m 187.526 0 l S Q BT -/F8 9.9626 Tf 183.966 595.156 Td [(Short)-333(Precision)-333(R)-1(eal)-3102(psb)]TJ +/F8 9.9626 Tf 234.775 595.156 Td [(Short)-333(Precision)-334(Real)-3102(psb)]TJ ET q -1 0 0 1 319.972 595.355 cm +1 0 0 1 370.782 595.355 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 322.961 595.156 Td [(geaxpb)28(y)]TJ -138.995 -11.955 Td [(Long)-333(Precision)-334(Real)-3314(p)1(s)-1(b)]TJ +/F8 9.9626 Tf 373.771 595.156 Td [(geaxpb)28(y)]TJ -138.996 -11.955 Td [(Long)-333(Precision)-334(Real)-3314(psb)]TJ ET q -1 0 0 1 319.972 583.4 cm +1 0 0 1 370.782 583.4 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 322.961 583.201 Td [(geaxpb)28(y)]TJ -138.995 -11.956 Td [(Short)-333(Precision)-333(C)-1(omplex)-1200(p)1(s)-1(b)]TJ +/F8 9.9626 Tf 373.771 583.201 Td [(geaxpb)28(y)]TJ -138.996 -11.956 Td [(Short)-333(Precision)-334(Complex)-1200(psb)]TJ ET q -1 0 0 1 319.972 571.445 cm +1 0 0 1 370.782 571.445 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 322.961 571.245 Td [(geaxpb)28(y)]TJ -138.995 -11.955 Td [(Long)-333(Precision)-334(Complex)-1411(psb)]TJ +/F8 9.9626 Tf 373.771 571.245 Td [(geaxpb)28(y)]TJ -138.996 -11.955 Td [(Long)-333(Precision)-334(Complex)-1411(psb)]TJ ET q -1 0 0 1 319.972 559.49 cm +1 0 0 1 370.782 559.49 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 322.961 559.29 Td [(geaxpb)28(y)]TJ +/F8 9.9626 Tf 373.771 559.29 Td [(geaxpb)28(y)]TJ ET q -1 0 0 1 177.988 555.504 cm +1 0 0 1 228.797 555.504 cm []0 d 0 J 0.398 w 0 0 m 187.526 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 228.067 527.465 Td [(T)83(able)-333(1:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 278.877 527.465 Td [(T)83(able)-333(1:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -6503,7 +6487,7 @@ BT 0 g 0 G 0 -20.329 Td [(alpha)]TJ 0 g 0 G -/F8 9.9626 Tf 32.033 0 Td [(the)-333(scalar)]TJ/F11 9.9626 Tf 45.468 0 Td [(\013)]TJ/F8 9.9626 Tf 6.41 0 Td [(.)]TJ -59.004 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(n)28(um)28(b)-28(er)-333(of)-334(the)-333(data)-333(t)28(yp)-28(e)-334(ind)1(ic)-1(ated)-333(in)-333(T)83(able)]TJ +/F8 9.9626 Tf 32.032 0 Td [(the)-333(scalar)]TJ/F11 9.9626 Tf 45.469 0 Td [(\013)]TJ/F8 9.9626 Tf 6.41 0 Td [(.)]TJ -59.004 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(n)28(um)28(b)-28(er)-333(of)-334(the)-333(data)-333(t)28(yp)-28(e)-334(in)1(dicate)-1(d)-333(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG [-333(1)]TJ 0 g 0 G @@ -6511,40 +6495,40 @@ BT 0 g 0 G /F27 9.9626 Tf -24.907 -20.33 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)28(o)-255(arra)28(y)-255(or)-255(an)-255(ob)-55(ject)-255(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.742 0 Td [(psb)]TJ ET q -1 0 0 1 385.864 336.932 cm +1 0 0 1 436.673 336.932 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 389.002 336.732 Td [(T)]TJ +/F30 9.9626 Tf 439.811 336.732 Td [(T)]TJ ET q -1 0 0 1 394.86 336.932 cm +1 0 0 1 445.669 336.932 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 397.998 336.732 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 336.732 Td [(vect)]TJ ET q -1 0 0 1 419.547 336.932 cm +1 0 0 1 470.356 336.932 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 422.685 336.732 Td [(type)]TJ +/F30 9.9626 Tf 473.495 336.732 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf -297.883 -11.955 Td [(con)28(taining)-375(n)27(u)1(m)27(b)-27(e)-1(r)1(s)-376(of)-375(t)28(yp)-28(e)-375(sp)-28(eci\014ed)-375(in)-375(T)83(able)]TJ +/F8 9.9626 Tf -297.884 -11.955 Td [(con)28(taining)-375(n)27(um)28(b)-28(ers)-375(of)-375(t)28(yp)-28(e)-375(sp)-28(eci\014ed)-375(in)-375(T)83(able)]TJ 0 0 1 rg 0 0 1 RG [-375(1)]TJ 0 g 0 G - [(.)-570(The)-376(rank)-375(of)]TJ/F11 9.9626 Tf 274.03 0 Td [(x)]TJ/F8 9.9626 Tf 9.432 0 Td [(m)28(ust)-376(b)-27(e)]TJ -283.462 -11.955 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.466 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ + [(.)-570(The)-376(rank)-375(of)]TJ/F11 9.9626 Tf 274.031 0 Td [(x)]TJ/F8 9.9626 Tf 9.432 0 Td [(m)28(ust)-375(b)-28(e)]TJ -283.463 -11.955 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.467 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -83.615 -20.33 Td [(b)-32(eta)]TJ 0 g 0 G -/F8 9.9626 Tf 26.941 0 Td [(the)-333(scalar)]TJ/F11 9.9626 Tf 45.468 0 Td [(\014)]TJ/F8 9.9626 Tf 6.161 0 Td [(.)]TJ -53.663 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(n)28(um)28(b)-28(er)-333(of)-334(the)-333(data)-333(t)28(yp)-28(e)-334(ind)1(ic)-1(ated)-333(in)-333(T)83(able)]TJ +/F8 9.9626 Tf 26.94 0 Td [(the)-333(scalar)]TJ/F11 9.9626 Tf 45.469 0 Td [(\014)]TJ/F8 9.9626 Tf 6.161 0 Td [(.)]TJ -53.663 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(n)28(um)28(b)-28(er)-333(of)-334(the)-333(data)-333(t)28(yp)-28(e)-334(in)1(dicate)-1(d)-333(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG [-333(1)]TJ 0 g 0 G @@ -6552,295 +6536,295 @@ BT 0 g 0 G /F27 9.9626 Tf -24.907 -20.329 Td [(y)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(the)-333(global)-333(dense)-334(matrix)]TJ/F11 9.9626 Tf 193.276 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -184.639 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(the)-333(global)-333(dense)-334(matrix)]TJ/F11 9.9626 Tf 193.276 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -184.639 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)28(o)-255(arra)28(y)-255(or)-255(an)-255(ob)-55(ject)-255(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.742 0 Td [(psb)]TJ ET q -1 0 0 1 385.864 176.72 cm +1 0 0 1 436.673 176.72 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 389.002 176.521 Td [(T)]TJ +/F30 9.9626 Tf 439.811 176.521 Td [(T)]TJ ET q -1 0 0 1 394.86 176.72 cm +1 0 0 1 445.669 176.72 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 397.998 176.521 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 176.521 Td [(vect)]TJ ET q -1 0 0 1 419.547 176.72 cm +1 0 0 1 470.356 176.72 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 422.685 176.521 Td [(type)]TJ +/F30 9.9626 Tf 473.495 176.521 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf -297.883 -11.955 Td [(con)28(taining)-334(n)28(um)27(b)-27(ers)-335(of)-334(the)-334(t)28(yp)-28(e)-334(indicated)-334(in)-334(T)83(able)]TJ +/F8 9.9626 Tf -297.884 -11.955 Td [(con)28(taining)-334(n)27(u)1(m)27(b)-27(e)-1(r)1(s)-335(of)-334(the)-334(t)28(yp)-28(e)-334(indicated)-334(in)-334(T)83(able)]TJ 0 0 1 rg 0 0 1 RG [-334(1)]TJ 0 g 0 G - [(.)-447(The)-334(rank)-334(of)]TJ/F11 9.9626 Tf 288.869 0 Td [(y)]TJ/F8 9.9626 Tf 8.571 0 Td [(m)28(ust)]TJ -297.44 -11.955 Td [(b)-28(e)-333(the)-333(sam)-1(e)-333(of)]TJ/F11 9.9626 Tf 67.027 0 Td [(x)]TJ/F8 9.9626 Tf 5.693 0 Td [(.)]TJ + [(.)-447(The)-334(rank)-335(of)]TJ/F11 9.9626 Tf 288.869 0 Td [(y)]TJ/F8 9.9626 Tf 8.572 0 Td [(m)28(ust)]TJ -297.441 -11.955 Td [(b)-28(e)-333(the)-333(s)-1(ame)-333(of)]TJ/F11 9.9626 Tf 67.027 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -97.627 -20.33 Td [(desc)]TJ ET q -1 0 0 1 121.81 132.48 cm +1 0 0 1 172.619 132.48 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 132.281 Td [(a)]TJ +/F27 9.9626 Tf 176.057 132.281 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(con)28(tains)-334(d)1(ata)-334(structures)-333(for)-333(com)-1(m)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ +/F8 9.9626 Tf 10.55 0 Td [(con)28(tains)-334(data)-333(structures)-333(for)-333(c)-1(omm)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ 0 g 0 G -/F8 9.9626 Tf 109.589 -29.888 Td [(23)]TJ +/F8 9.9626 Tf 109.589 -29.888 Td [(22)]TJ 0 g 0 G ET endstream endobj -832 0 obj << +839 0 obj << /Type /Page -/Contents 833 0 R -/Resources 831 0 R +/Contents 840 0 R +/Resources 838 0 R /MediaBox [0 0 595.276 841.89] -/Parent 808 0 R -/Annots [ 824 0 R 825 0 R 826 0 R 827 0 R 828 0 R 829 0 R ] +/Parent 819 0 R +/Annots [ 831 0 R 832 0 R 833 0 R 834 0 R 835 0 R 836 0 R ] >> endobj -824 0 obj << +831 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [382.088 401.949 389.062 412.798] +/Rect [432.897 401.949 439.871 412.798] /Subtype /Link /A << /S /GoTo /D (table.1) >> >> endobj -825 0 obj << +832 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.549 333.522 444.603 344.647] +/Rect [419.358 333.522 495.412 344.647] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -826 0 obj << +833 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.333 321.844 335.307 332.692] +/Rect [379.142 321.844 386.116 332.692] /Subtype /Link /A << /S /GoTo /D (table.1) >> >> endobj -827 0 obj << +834 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [382.088 241.738 389.062 252.586] +/Rect [432.897 241.738 439.871 252.586] /Subtype /Link /A << /S /GoTo /D (table.1) >> >> endobj -828 0 obj << +835 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.549 173.311 444.603 184.436] +/Rect [419.358 173.311 495.412 184.436] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -829 0 obj << +836 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.625 161.632 352.599 172.481] +/Rect [396.435 161.632 403.409 172.481] /Subtype /Link /A << /S /GoTo /D (table.1) >> >> endobj -834 0 obj << -/D [832 0 R /XYZ 99.895 740.998 null] +841 0 obj << +/D [839 0 R /XYZ 150.705 740.998 null] >> endobj 150 0 obj << -/D [832 0 R /XYZ 99.895 697.283 null] +/D [839 0 R /XYZ 150.705 697.283 null] >> endobj -835 0 obj << -/D [832 0 R /XYZ 267.641 539.42 null] +842 0 obj << +/D [839 0 R /XYZ 318.451 539.42 null] >> endobj -831 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F30 664 0 R /F27 477 0 R >> +838 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -840 0 obj << -/Length 2655 +847 0 obj << +/Length 2659 >> stream 0 g 0 G 0 g 0 G BT -/F8 9.9626 Tf 175.611 706.129 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 124.802 706.129 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 135.659 0 Td [(psb)]TJ +/F30 9.9626 Tf 135.658 0 Td [(psb)]TJ ET q -1 0 0 1 327.588 682.418 cm +1 0 0 1 276.779 682.418 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 330.727 682.219 Td [(desc)]TJ +/F30 9.9626 Tf 279.917 682.219 Td [(desc)]TJ ET q -1 0 0 1 352.275 682.418 cm +1 0 0 1 301.466 682.418 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 355.414 682.219 Td [(type)]TJ +/F30 9.9626 Tf 304.604 682.219 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -225.63 -21.918 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -225.631 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(y)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(result)-333(submatrix)]TJ/F11 9.9626 Tf 162.364 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -153.727 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)28(o)-255(arra)28(y)-255(or)-255(an)-255(ob)-55(ject)-255(of)-255(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(result)-333(submatrix)]TJ/F11 9.9626 Tf 162.364 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -153.727 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 244.742 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ ET q -1 0 0 1 436.673 592.754 cm +1 0 0 1 385.864 592.754 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 439.811 592.555 Td [(T)]TJ +/F30 9.9626 Tf 389.002 592.555 Td [(T)]TJ ET q -1 0 0 1 445.669 592.754 cm +1 0 0 1 394.86 592.754 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 448.807 592.555 Td [(vect)]TJ +/F30 9.9626 Tf 397.998 592.555 Td [(vect)]TJ ET q -1 0 0 1 470.356 592.754 cm +1 0 0 1 419.547 592.754 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 473.495 592.555 Td [(type)]TJ +/F30 9.9626 Tf 422.685 592.555 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf -297.884 -11.955 Td [(con)28(taining)-333(n)27(um)28(b)-28(ers)-333(of)-333(the)-334(t)28(yp)-28(e)-333(indicated)-333(in)-333(T)83(able)]TJ +/F8 9.9626 Tf -297.883 -11.955 Td [(con)28(taining)-333(n)27(um)28(b)-28(ers)-333(of)-333(the)-334(t)28(yp)-28(e)-333(indicated)-333(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-334(1)]TJ + [-333(1)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -19.926 Td [(info)]TJ +/F27 9.9626 Tf -24.907 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ 0 g 0 G - 141.968 -422.416 Td [(24)]TJ + 141.968 -422.416 Td [(23)]TJ 0 g 0 G ET endstream endobj -839 0 obj << +846 0 obj << /Type /Page -/Contents 840 0 R -/Resources 838 0 R +/Contents 847 0 R +/Resources 845 0 R /MediaBox [0 0 595.276 841.89] -/Parent 808 0 R -/Annots [ 830 0 R 836 0 R 837 0 R ] +/Parent 819 0 R +/Annots [ 837 0 R 843 0 R 844 0 R ] >> endobj -830 0 obj << +837 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [310.273 679.008 377.331 690.133] +/Rect [259.464 679.008 326.522 690.133] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -836 0 obj << +843 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [419.358 589.345 495.412 600.47] +/Rect [368.549 589.345 444.603 600.47] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -837 0 obj << +844 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [396.367 577.666 403.341 588.514] +/Rect [345.558 577.666 352.532 588.514] /Subtype /Link /A << /S /GoTo /D (table.1) >> >> endobj -841 0 obj << -/D [839 0 R /XYZ 150.705 740.998 null] +848 0 obj << +/D [846 0 R /XYZ 99.895 740.998 null] >> endobj -838 0 obj << -/Font << /F8 478 0 R /F27 477 0 R /F30 664 0 R /F11 649 0 R >> +845 0 obj << +/Font << /F8 482 0 R /F27 481 0 R /F30 669 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -850 0 obj << -/Length 7903 +857 0 obj << +/Length 7891 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(gedot)-375(|)-375(Dot)-375(Pro)-31(duct)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-333(function)-334(computes)-333(dot)-333(pro)-28(duct)-333(b)-28(et)28(w)27(een)-333(t)28(w)28(o)-334(v)28(ectors)]TJ/F11 9.9626 Tf 252.332 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(and)]TJ/F11 9.9626 Tf 19.372 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -285.961 -11.956 Td [(If)]TJ/F11 9.9626 Tf 9.963 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(and)]TJ/F11 9.9626 Tf 19.372 0 Td [(y)]TJ/F8 9.9626 Tf 8.562 0 Td [(are)-333(real)-334(v)28(ectors)-333(it)-334(computes)-333(dot-pro)-28(duct)-333(as:)]TJ/F11 9.9626 Tf 101.783 -20.45 Td [(dot)]TJ/F14 9.9626 Tf 16.38 0 Td [(\040)]TJ/F11 9.9626 Tf 12.73 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 4.113 Td [(T)]TJ/F11 9.9626 Tf 6.276 -4.113 Td [(y)]TJ/F8 9.9626 Tf -189.775 -20.451 Td [(Else)-333(if)]TJ/F11 9.9626 Tf 30.359 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(and)]TJ/F11 9.9626 Tf 19.371 0 Td [(y)]TJ/F8 9.9626 Tf 8.563 0 Td [(are)-333(complex)-334(v)28(ectors)-333(then)-334(it)-333(computes)-333(dot-pro)-28(duct)-333(as:)]TJ/F11 9.9626 Tf 80.747 -20.451 Td [(dot)]TJ/F14 9.9626 Tf 16.38 0 Td [(\040)]TJ/F11 9.9626 Tf 12.73 0 Td [(x)]TJ/F10 6.9738 Tf 5.693 4.113 Td [(H)]TJ/F11 9.9626 Tf 7.557 -4.113 Td [(y)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(gedot)-375(|)-375(Dot)-375(Pro)-31(duct)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-333(function)-334(computes)-333(dot)-333(pro)-28(duct)-333(b)-28(et)28(w)28(e)-1(en)-333(t)28(w)28(o)-334(v)28(ectors)]TJ/F11 9.9626 Tf 252.332 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(and)]TJ/F11 9.9626 Tf 19.371 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -285.96 -11.956 Td [(If)]TJ/F11 9.9626 Tf 9.963 0 Td [(x)]TJ/F8 9.9626 Tf 9.014 0 Td [(and)]TJ/F11 9.9626 Tf 19.372 0 Td [(y)]TJ/F8 9.9626 Tf 8.563 0 Td [(are)-333(real)-334(v)28(ectors)-333(it)-334(computes)-333(dot-pro)-28(duct)-333(as:)]TJ/F11 9.9626 Tf 101.783 -20.45 Td [(dot)]TJ/F14 9.9626 Tf 16.379 0 Td [(\040)]TJ/F11 9.9626 Tf 12.73 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 4.113 Td [(T)]TJ/F11 9.9626 Tf 6.276 -4.113 Td [(y)]TJ/F8 9.9626 Tf -189.774 -20.451 Td [(Else)-333(if)]TJ/F11 9.9626 Tf 30.358 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(and)]TJ/F11 9.9626 Tf 19.372 0 Td [(y)]TJ/F8 9.9626 Tf 8.563 0 Td [(are)-333(complex)-334(v)28(ectors)-333(then)-334(it)-333(computes)-333(dot-pro)-28(duct)-333(as:)]TJ/F11 9.9626 Tf 80.747 -20.451 Td [(dot)]TJ/F14 9.9626 Tf 16.379 0 Td [(\040)]TJ/F11 9.9626 Tf 12.73 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 4.113 Td [(H)]TJ/F11 9.9626 Tf 7.556 -4.113 Td [(y)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -190.415 -20.451 Td [(psb_gedot\050x,)-525(y,)-525(desc_a,)-525(info\051)]TJ +/F30 9.9626 Tf -190.414 -20.451 Td [(psb_gedot\050x,)-525(y,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G ET q -1 0 0 1 183.665 571.704 cm +1 0 0 1 234.474 571.704 cm []0 d 0 J 0.398 w 0 0 m 176.173 0 l S Q BT -/F11 9.9626 Tf 189.642 563.136 Td [(dot)]TJ/F8 9.9626 Tf 13.612 0 Td [(,)]TJ/F11 9.9626 Tf 6.089 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(,)]TJ/F11 9.9626 Tf 6.088 0 Td [(y)]TJ/F27 9.9626 Tf 88.927 0 Td [(F)96(unction)]TJ +/F11 9.9626 Tf 240.452 563.136 Td [(dot)]TJ/F8 9.9626 Tf 13.612 0 Td [(,)]TJ/F11 9.9626 Tf 6.088 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(,)]TJ/F11 9.9626 Tf 6.088 0 Td [(y)]TJ/F27 9.9626 Tf 88.927 0 Td [(F)96(unction)]TJ ET q -1 0 0 1 183.665 559.35 cm +1 0 0 1 234.474 559.35 cm []0 d 0 J 0.398 w 0 0 m 176.173 0 l S Q BT -/F8 9.9626 Tf 189.642 550.783 Td [(Short)-333(Precision)-334(Real)-3102(psb)]TJ +/F8 9.9626 Tf 240.452 550.783 Td [(Short)-333(Precision)-334(Real)-3102(psb)]TJ ET q -1 0 0 1 325.649 550.982 cm +1 0 0 1 376.459 550.982 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 328.638 550.783 Td [(gedot)]TJ -138.996 -11.956 Td [(Long)-333(Precision)-334(Real)-3314(psb)]TJ +/F8 9.9626 Tf 379.447 550.783 Td [(gedot)]TJ -138.995 -11.956 Td [(Long)-333(Precision)-334(Real)-3314(p)1(s)-1(b)]TJ ET q -1 0 0 1 325.649 539.027 cm +1 0 0 1 376.459 539.027 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 328.638 538.827 Td [(gedot)]TJ -138.996 -11.955 Td [(Short)-333(Precision)-334(Complex)-1200(psb)]TJ +/F8 9.9626 Tf 379.447 538.827 Td [(gedot)]TJ -138.995 -11.955 Td [(Short)-333(Precision)-334(Complex)-1200(psb)]TJ ET q -1 0 0 1 325.649 527.071 cm +1 0 0 1 376.459 527.071 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 328.638 526.872 Td [(gedot)]TJ -138.996 -11.955 Td [(Long)-333(Precision)-334(Complex)-1411(psb)]TJ +/F8 9.9626 Tf 379.447 526.872 Td [(gedot)]TJ -138.995 -11.955 Td [(Long)-333(Precision)-334(Complex)-1411(psb)]TJ ET q -1 0 0 1 325.649 515.116 cm +1 0 0 1 376.459 515.116 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 328.638 514.917 Td [(gedot)]TJ +/F8 9.9626 Tf 379.447 514.917 Td [(gedot)]TJ ET q -1 0 0 1 183.665 511.131 cm +1 0 0 1 234.474 511.131 cm []0 d 0 J 0.398 w 0 0 m 176.173 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 228.067 483.092 Td [(T)83(able)-333(2:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 278.877 483.092 Td [(T)83(able)-333(2:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -6853,224 +6837,224 @@ BT 0 g 0 G 0 -19.338 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)28(o)-255(arra)28(y)-255(or)-255(an)-255(ob)-55(ject)-255(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.742 0 Td [(psb)]TJ ET q -1 0 0 1 385.864 365.251 cm +1 0 0 1 436.673 365.251 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 389.002 365.052 Td [(T)]TJ +/F30 9.9626 Tf 439.811 365.052 Td [(T)]TJ ET q -1 0 0 1 394.86 365.251 cm +1 0 0 1 445.669 365.251 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 397.998 365.052 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 365.052 Td [(vect)]TJ ET q -1 0 0 1 419.547 365.251 cm +1 0 0 1 470.356 365.251 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 422.685 365.052 Td [(type)]TJ +/F30 9.9626 Tf 473.495 365.052 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf -297.883 -11.955 Td [(con)28(taining)-375(n)27(u)1(m)27(b)-27(e)-1(r)1(s)-376(of)-375(t)28(yp)-28(e)-375(sp)-28(eci\014ed)-375(in)-375(T)83(able)]TJ +/F8 9.9626 Tf -297.884 -11.955 Td [(con)28(taining)-375(n)27(um)28(b)-28(ers)-375(of)-375(t)28(yp)-28(e)-375(sp)-28(eci\014ed)-375(in)-375(T)83(able)]TJ 0 0 1 rg 0 0 1 RG [-375(2)]TJ 0 g 0 G - [(.)-570(The)-376(rank)-375(of)]TJ/F11 9.9626 Tf 274.03 0 Td [(x)]TJ/F8 9.9626 Tf 9.432 0 Td [(m)28(ust)-376(b)-27(e)]TJ -283.462 -11.955 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.466 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ + [(.)-570(The)-376(rank)-375(of)]TJ/F11 9.9626 Tf 274.031 0 Td [(x)]TJ/F8 9.9626 Tf 9.432 0 Td [(m)28(ust)-375(b)-28(e)]TJ -283.463 -11.955 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.467 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -83.615 -19.339 Td [(y)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -167.481 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -167.481 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)28(o)-255(arra)28(y)-255(or)-255(an)-255(ob)-55(ject)-255(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.742 0 Td [(psb)]TJ ET q -1 0 0 1 385.864 274.182 cm +1 0 0 1 436.673 274.182 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 389.002 273.982 Td [(T)]TJ +/F30 9.9626 Tf 439.811 273.982 Td [(T)]TJ ET q -1 0 0 1 394.86 274.182 cm +1 0 0 1 445.669 274.182 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 397.998 273.982 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 273.982 Td [(vect)]TJ ET q -1 0 0 1 419.547 274.182 cm +1 0 0 1 470.356 274.182 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 422.685 273.982 Td [(type)]TJ +/F30 9.9626 Tf 473.495 273.982 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf -297.883 -11.955 Td [(con)28(taining)-378(n)27(um)28(b)-28(ers)-378(of)-378(t)28(yp)-28(e)-378(sp)-28(eci\014ed)-378(in)-379(T)84(able)]TJ +/F8 9.9626 Tf -297.884 -11.955 Td [(con)28(taining)-378(n)27(um)28(b)-28(ers)-378(of)-378(t)28(yp)-28(e)-378(sp)-28(eci\014ed)-378(in)-379(T)84(able)]TJ 0 0 1 rg 0 0 1 RG [-378(2)]TJ 0 g 0 G - [(.)-580(The)-378(rank)-378(of)]TJ/F11 9.9626 Tf 274.422 0 Td [(y)]TJ/F8 9.9626 Tf 9.01 0 Td [(m)28(ust)-379(b)-27(e)]TJ -283.432 -11.955 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.466 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ + [(.)-580(The)-378(rank)-378(of)]TJ/F11 9.9626 Tf 274.422 0 Td [(y)]TJ/F8 9.9626 Tf 9.011 0 Td [(m)28(ust)-378(b)-28(e)]TJ -283.433 -11.955 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.467 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -84.067 -19.338 Td [(desc)]TJ ET q -1 0 0 1 121.81 230.933 cm +1 0 0 1 172.619 230.933 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 230.734 Td [(a)]TJ +/F27 9.9626 Tf 176.057 230.734 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(con)28(tains)-334(d)1(ata)-334(structures)-333(for)-333(com)-1(m)28(unications.)]TJ -10.996 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(con)28(tains)-334(data)-333(structures)-333(for)-333(c)-1(omm)28(unications.)]TJ -10.996 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 135.658 0 Td [(psb)]TJ +/F30 9.9626 Tf 135.659 0 Td [(psb)]TJ ET q -1 0 0 1 276.779 183.112 cm +1 0 0 1 327.588 183.112 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 279.917 182.913 Td [(desc)]TJ +/F30 9.9626 Tf 330.727 182.913 Td [(desc)]TJ ET q -1 0 0 1 301.466 183.112 cm +1 0 0 1 352.275 183.112 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 304.604 182.913 Td [(type)]TJ +/F30 9.9626 Tf 355.414 182.913 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -225.631 -19.339 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -225.63 -19.339 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.338 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 78.387 0 Td [(is)-333(the)-334(dot)-333(pro)-28(duct)-333(of)-333(sub)28(v)27(ectors)]TJ/F11 9.9626 Tf 142.189 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(and)]TJ/F11 9.9626 Tf 19.371 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -229.297 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(n)28(um)28(b)-28(er)-333(of)-334(the)-333(data)-333(t)28(yp)-28(e)-334(ind)1(ic)-1(ated)-333(in)-333(T)83(able)]TJ +/F8 9.9626 Tf 78.386 0 Td [(is)-333(the)-334(dot)-333(pro)-28(duct)-333(of)-333(sub)28(v)27(ectors)]TJ/F11 9.9626 Tf 142.189 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(and)]TJ/F11 9.9626 Tf 19.372 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -229.298 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(n)28(um)28(b)-28(er)-333(of)-334(the)-333(data)-333(t)27(yp)-27(e)-334(indicated)-333(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG [-333(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G - 141.968 -29.888 Td [(25)]TJ + 141.968 -29.888 Td [(24)]TJ 0 g 0 G ET endstream endobj -849 0 obj << +856 0 obj << /Type /Page -/Contents 850 0 R -/Resources 848 0 R +/Contents 857 0 R +/Resources 855 0 R /MediaBox [0 0 595.276 841.89] -/Parent 853 0 R -/Annots [ 842 0 R 843 0 R 844 0 R 845 0 R 846 0 R 847 0 R ] +/Parent 819 0 R +/Annots [ 849 0 R 850 0 R 851 0 R 852 0 R 853 0 R 854 0 R ] >> endobj -842 0 obj << +849 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.549 361.842 444.603 372.967] +/Rect [419.358 361.842 495.412 372.967] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -843 0 obj << +850 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.333 350.163 335.307 361.011] +/Rect [379.142 350.163 386.116 361.011] /Subtype /Link /A << /S /GoTo /D (table.2) >> >> endobj -844 0 obj << +851 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.549 270.772 444.603 281.897] +/Rect [419.358 270.772 495.412 281.897] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -845 0 obj << +852 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.544 259.094 335.518 269.942] +/Rect [379.353 259.094 386.327 269.942] /Subtype /Link /A << /S /GoTo /D (table.2) >> >> endobj -846 0 obj << +853 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [259.464 179.703 326.522 190.828] +/Rect [310.273 179.703 377.331 190.828] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -847 0 obj << +854 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [382.088 117.392 389.062 128.24] +/Rect [432.897 117.392 439.871 128.24] /Subtype /Link /A << /S /GoTo /D (table.2) >> >> endobj -851 0 obj << -/D [849 0 R /XYZ 99.895 740.998 null] +858 0 obj << +/D [856 0 R /XYZ 150.705 740.998 null] >> endobj 154 0 obj << -/D [849 0 R /XYZ 99.895 697.37 null] +/D [856 0 R /XYZ 150.705 697.37 null] >> endobj -852 0 obj << -/D [849 0 R /XYZ 267.641 495.047 null] +859 0 obj << +/D [856 0 R /XYZ 318.451 495.047 null] >> endobj -848 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F30 664 0 R /F27 477 0 R >> +855 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -856 0 obj << -/Length 625 +862 0 obj << +/Length 624 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F27 9.9626 Tf 150.705 706.129 Td [(info)]TJ +/F27 9.9626 Tf 99.895 706.129 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ 0 g 0 G - 141.968 -567.87 Td [(26)]TJ + 141.968 -567.87 Td [(25)]TJ 0 g 0 G ET endstream endobj -855 0 obj << +861 0 obj << /Type /Page -/Contents 856 0 R -/Resources 854 0 R +/Contents 862 0 R +/Resources 860 0 R /MediaBox [0 0 595.276 841.89] -/Parent 853 0 R +/Parent 864 0 R >> endobj -857 0 obj << -/D [855 0 R /XYZ 150.705 740.998 null] +863 0 obj << +/D [861 0 R /XYZ 99.895 740.998 null] >> endobj -854 0 obj << -/Font << /F27 477 0 R /F8 478 0 R >> +860 0 obj << +/Font << /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -866 0 obj << -/Length 8468 +873 0 obj << +/Length 8416 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(gedots)-375(|)-375(Generalized)-375(Dot)-375(Pro)-31(duct)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-392(subroutine)-392(computes)-392(a)-392(series)-392(of)-391(dot)-392(pro)-28(ducts)-392(among)-392(the)-392(columns)-392(of)-391(t)27(w)28(o)]TJ 0 -11.956 Td [(dense)-333(matrices)]TJ/F11 9.9626 Tf 67.11 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(and)]TJ/F11 9.9626 Tf 19.372 0 Td [(y)]TJ/F8 9.9626 Tf 5.241 0 Td [(:)]TJ/F11 9.9626 Tf 23.756 -11.955 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.081 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F14 9.9626 Tf 6.642 0 Td [(\040)]TJ/F11 9.9626 Tf 12.73 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\050:)]TJ/F11 9.9626 Tf 6.642 0 Td [(;)-167(i)]TJ/F8 9.9626 Tf 7.86 0 Td [(\051)]TJ/F10 6.9738 Tf 3.874 4.114 Td [(T)]TJ/F11 9.9626 Tf 6.276 -4.114 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(\050:)]TJ/F11 9.9626 Tf 6.642 0 Td [(;)-167(i)]TJ/F8 9.9626 Tf 7.86 0 Td [(\051)]TJ -215.343 -15.687 Td [(If)-245(the)-245(matrices)-245(are)-245(complex,)-262(then)-245(the)-245(usual)-245(con)28(v)28(e)-1(n)28(tion)-245(app)1(lie)-1(s,)-262(i.e.)-415(the)-245(conjugate)]TJ 0 -11.955 Td [(transp)-28(ose)-323(of)]TJ/F11 9.9626 Tf 55.836 0 Td [(x)]TJ/F8 9.9626 Tf 8.913 0 Td [(is)-323(used.)-441(If)]TJ/F11 9.9626 Tf 46.366 0 Td [(x)]TJ/F8 9.9626 Tf 8.913 0 Td [(and)]TJ/F11 9.9626 Tf 19.269 0 Td [(y)]TJ/F8 9.9626 Tf 8.461 0 Td [(are)-323(of)-323(rank)-323(one,)-325(then)]TJ/F11 9.9626 Tf 94.212 0 Td [(r)-28(es)]TJ/F8 9.9626 Tf 17.299 0 Td [(is)-323(a)-323(scalar,)-325(else)-324(it)-323(is)]TJ -259.269 -11.955 Td [(a)-333(rank)-334(one)-333(arra)28(y)83(.)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(gedots)-375(|)-375(Generalized)-375(Dot)-375(Pro)-31(duct)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-392(subroutine)-392(computes)-392(a)-392(series)-392(of)-391(dot)-392(pro)-28(ducts)-392(among)-392(the)-392(columns)-392(of)-391(t)27(w)28(o)]TJ 0 -11.956 Td [(dense)-333(matrices)]TJ/F11 9.9626 Tf 67.109 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(and)]TJ/F11 9.9626 Tf 19.372 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(:)]TJ/F11 9.9626 Tf 23.756 -11.955 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.08 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F14 9.9626 Tf 6.642 0 Td [(\040)]TJ/F11 9.9626 Tf 12.73 0 Td [(x)]TJ/F8 9.9626 Tf 5.693 0 Td [(\050:)]TJ/F11 9.9626 Tf 6.642 0 Td [(;)-167(i)]TJ/F8 9.9626 Tf 7.86 0 Td [(\051)]TJ/F10 6.9738 Tf 3.875 4.114 Td [(T)]TJ/F11 9.9626 Tf 6.276 -4.114 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(\050:)]TJ/F11 9.9626 Tf 6.642 0 Td [(;)-167(i)]TJ/F8 9.9626 Tf 7.86 0 Td [(\051)]TJ -215.343 -15.687 Td [(If)-245(the)-245(matrices)-245(are)-245(complex,)-262(then)-245(the)-245(usual)-245(con)28(v)28(en)27(tion)-245(ap)1(plies)-1(,)-262(i.e.)-415(the)-245(conjugate)]TJ 0 -11.955 Td [(transp)-28(ose)-323(of)]TJ/F11 9.9626 Tf 55.836 0 Td [(x)]TJ/F8 9.9626 Tf 8.913 0 Td [(is)-323(used.)-441(If)]TJ/F11 9.9626 Tf 46.365 0 Td [(x)]TJ/F8 9.9626 Tf 8.913 0 Td [(and)]TJ/F11 9.9626 Tf 19.27 0 Td [(y)]TJ/F8 9.9626 Tf 8.461 0 Td [(are)-323(of)-323(rank)-323(one,)-325(then)]TJ/F11 9.9626 Tf 94.211 0 Td [(r)-28(es)]TJ/F8 9.9626 Tf 17.3 0 Td [(is)-323(a)-323(scalar,)-325(else)-324(it)-323(is)]TJ -259.269 -11.955 Td [(a)-333(rank)-334(one)-333(arra)28(y)83(.)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf 0 -18.175 Td [(call)-525(psb_gedots\050res,)-525(x,)-525(y,)-525(desc_a,)-525(info\051)]TJ @@ -7079,54 +7063,54 @@ BT 0 g 0 G ET q -1 0 0 1 177.988 586.966 cm +1 0 0 1 228.797 586.966 cm []0 d 0 J 0.398 w 0 0 m 187.526 0 l S Q BT -/F11 9.9626 Tf 183.966 578.398 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.08 0 Td [(,)]TJ/F11 9.9626 Tf 6.088 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(,)]TJ/F11 9.9626 Tf 6.088 0 Td [(y)]TJ/F27 9.9626 Tf 88.459 0 Td [(Subroutine)]TJ +/F11 9.9626 Tf 234.775 578.398 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.08 0 Td [(,)]TJ/F11 9.9626 Tf 6.089 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(,)]TJ/F11 9.9626 Tf 6.088 0 Td [(y)]TJ/F27 9.9626 Tf 88.459 0 Td [(Subroutine)]TJ ET q -1 0 0 1 177.988 574.612 cm +1 0 0 1 228.797 574.612 cm []0 d 0 J 0.398 w 0 0 m 187.526 0 l S Q BT -/F8 9.9626 Tf 183.966 566.045 Td [(Short)-333(Precision)-333(R)-1(eal)-3102(psb)]TJ +/F8 9.9626 Tf 234.775 566.045 Td [(Short)-333(Precision)-334(Real)-3102(psb)]TJ ET q -1 0 0 1 319.972 566.244 cm +1 0 0 1 370.782 566.244 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 322.961 566.045 Td [(gedots)]TJ -138.995 -11.956 Td [(Long)-333(Precision)-334(Real)-3314(p)1(s)-1(b)]TJ +/F8 9.9626 Tf 373.771 566.045 Td [(gedots)]TJ -138.996 -11.956 Td [(Long)-333(Precision)-334(Real)-3314(psb)]TJ ET q -1 0 0 1 319.972 554.289 cm +1 0 0 1 370.782 554.289 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 322.961 554.089 Td [(gedots)]TJ -138.995 -11.955 Td [(Short)-333(Precision)-333(C)-1(omplex)-1200(p)1(s)-1(b)]TJ +/F8 9.9626 Tf 373.771 554.089 Td [(gedots)]TJ -138.996 -11.955 Td [(Short)-333(Precision)-334(Complex)-1200(psb)]TJ ET q -1 0 0 1 319.972 542.333 cm +1 0 0 1 370.782 542.333 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 322.961 542.134 Td [(gedots)]TJ -138.995 -11.955 Td [(Long)-333(Precision)-334(Complex)-1411(psb)]TJ +/F8 9.9626 Tf 373.771 542.134 Td [(gedots)]TJ -138.996 -11.955 Td [(Long)-333(Precision)-334(Complex)-1411(psb)]TJ ET q -1 0 0 1 319.972 530.378 cm +1 0 0 1 370.782 530.378 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 322.961 530.179 Td [(gedots)]TJ +/F8 9.9626 Tf 373.771 530.179 Td [(gedots)]TJ ET q -1 0 0 1 177.988 526.393 cm +1 0 0 1 228.797 526.393 cm []0 d 0 J 0.398 w 0 0 m 187.526 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 228.067 498.354 Td [(T)83(able)-333(3:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 278.877 498.354 Td [(T)83(able)-333(3:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -7139,280 +7123,280 @@ BT 0 g 0 G 0 -18.429 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)28(o)-255(arra)28(y)-255(or)-255(an)-255(ob)-55(ject)-255(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.742 0 Td [(psb)]TJ ET q -1 0 0 1 385.864 385.52 cm +1 0 0 1 436.673 385.52 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 389.002 385.321 Td [(T)]TJ +/F30 9.9626 Tf 439.811 385.321 Td [(T)]TJ ET q -1 0 0 1 394.86 385.52 cm +1 0 0 1 445.669 385.52 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 397.998 385.321 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 385.321 Td [(vect)]TJ ET q -1 0 0 1 419.547 385.52 cm +1 0 0 1 470.356 385.52 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 422.685 385.321 Td [(type)]TJ +/F30 9.9626 Tf 473.495 385.321 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf -297.883 -11.955 Td [(con)28(taining)-375(n)27(u)1(m)27(b)-27(e)-1(r)1(s)-376(of)-375(t)28(yp)-28(e)-375(sp)-28(eci\014ed)-375(in)-375(T)83(able)]TJ +/F8 9.9626 Tf -297.884 -11.955 Td [(con)28(taining)-375(n)27(um)28(b)-28(ers)-375(of)-375(t)28(yp)-28(e)-375(sp)-28(eci\014ed)-375(in)-375(T)83(able)]TJ 0 0 1 rg 0 0 1 RG [-375(3)]TJ 0 g 0 G - [(.)-570(The)-376(rank)-375(of)]TJ/F11 9.9626 Tf 274.03 0 Td [(x)]TJ/F8 9.9626 Tf 9.432 0 Td [(m)28(ust)-376(b)-27(e)]TJ -283.462 -11.956 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.466 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ + [(.)-570(The)-376(rank)-375(of)]TJ/F11 9.9626 Tf 274.031 0 Td [(x)]TJ/F8 9.9626 Tf 9.432 0 Td [(m)28(ust)-375(b)-28(e)]TJ -283.463 -11.956 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.467 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -83.615 -18.428 Td [(y)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -167.481 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -167.481 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)28(o)-255(arra)28(y)-255(or)-255(an)-255(ob)-55(ject)-255(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.742 0 Td [(psb)]TJ ET q -1 0 0 1 385.864 295.361 cm +1 0 0 1 436.673 295.361 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 389.002 295.162 Td [(T)]TJ +/F30 9.9626 Tf 439.811 295.162 Td [(T)]TJ ET q -1 0 0 1 394.86 295.361 cm +1 0 0 1 445.669 295.361 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 397.998 295.162 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 295.162 Td [(vect)]TJ ET q -1 0 0 1 419.547 295.361 cm +1 0 0 1 470.356 295.361 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 422.685 295.162 Td [(type)]TJ +/F30 9.9626 Tf 473.495 295.162 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf -297.883 -11.955 Td [(con)28(taining)-378(n)27(um)28(b)-28(ers)-378(of)-378(t)28(yp)-28(e)-378(sp)-28(eci\014ed)-378(in)-379(T)84(able)]TJ +/F8 9.9626 Tf -297.884 -11.955 Td [(con)28(taining)-378(n)27(um)28(b)-28(ers)-378(of)-378(t)28(yp)-28(e)-378(sp)-28(eci\014ed)-378(in)-379(T)84(able)]TJ 0 0 1 rg 0 0 1 RG [-378(3)]TJ 0 g 0 G - [(.)-580(The)-378(rank)-378(of)]TJ/F11 9.9626 Tf 274.422 0 Td [(y)]TJ/F8 9.9626 Tf 9.01 0 Td [(m)28(ust)-379(b)-27(e)]TJ -283.432 -11.956 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.466 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ + [(.)-580(The)-378(rank)-378(of)]TJ/F11 9.9626 Tf 274.422 0 Td [(y)]TJ/F8 9.9626 Tf 9.011 0 Td [(m)28(ust)-378(b)-28(e)]TJ -283.433 -11.956 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.467 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -84.067 -18.428 Td [(desc)]TJ ET q -1 0 0 1 121.81 253.022 cm +1 0 0 1 172.619 253.022 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 252.823 Td [(a)]TJ +/F27 9.9626 Tf 176.057 252.823 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(con)28(tains)-334(d)1(ata)-334(structures)-333(for)-333(com)-1(m)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(con)28(tains)-334(data)-333(structures)-333(for)-333(c)-1(omm)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 135.658 0 Td [(psb)]TJ +/F30 9.9626 Tf 135.659 0 Td [(psb)]TJ ET q -1 0 0 1 276.779 205.202 cm +1 0 0 1 327.588 205.202 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 279.917 205.003 Td [(desc)]TJ +/F30 9.9626 Tf 330.727 205.003 Td [(desc)]TJ ET q -1 0 0 1 301.466 205.202 cm +1 0 0 1 352.275 205.202 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 304.604 205.003 Td [(type)]TJ +/F30 9.9626 Tf 355.414 205.003 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -225.631 -18.429 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -225.63 -18.429 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -18.428 Td [(res)]TJ 0 g 0 G -/F8 9.9626 Tf 19.47 0 Td [(is)-333(the)-334(dot)-333(pro)-28(duct)-333(of)-333(sub)28(v)27(ectors)]TJ/F11 9.9626 Tf 142.19 0 Td [(x)]TJ/F8 9.9626 Tf 9.014 0 Td [(and)]TJ/F11 9.9626 Tf 19.372 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -170.381 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-357(as)-1(:)-493(a)-357(n)27(um)28(b)-28(er)-357(or)-358(a)-358(rank-one)-358(ar)1(ra)27(y)-357(of)-358(the)-358(data)-358(t)28(yp)-27(e)-358(indicated)-358(in)]TJ 0 -11.955 Td [(T)83(able)]TJ +/F8 9.9626 Tf 19.47 0 Td [(is)-333(the)-334(dot)-333(pro)-28(duct)-333(of)-333(sub)28(v)27(ectors)]TJ/F11 9.9626 Tf 142.189 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(and)]TJ/F11 9.9626 Tf 19.372 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -170.381 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.034 -11.955 Td [(Sp)-28(eci\014ed)-357(as:)-494(a)-357(n)27(um)28(b)-28(er)-357(or)-358(a)-358(rank-one)-357(arra)27(y)-357(of)-358(the)-358(data)-357(t)27(yp)-27(e)-358(indicated)-358(in)]TJ 0 -11.955 Td [(T)83(able)]TJ 0 0 1 rg 0 0 1 RG [-333(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G - 141.968 -29.888 Td [(27)]TJ + 141.967 -29.888 Td [(26)]TJ 0 g 0 G ET endstream endobj -865 0 obj << +872 0 obj << /Type /Page -/Contents 866 0 R -/Resources 864 0 R +/Contents 873 0 R +/Resources 871 0 R /MediaBox [0 0 595.276 841.89] -/Parent 853 0 R -/Annots [ 858 0 R 859 0 R 860 0 R 861 0 R 862 0 R 863 0 R ] +/Parent 864 0 R +/Annots [ 865 0 R 866 0 R 867 0 R 868 0 R 869 0 R 870 0 R ] >> endobj -858 0 obj << +865 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.549 382.111 444.603 393.236] +/Rect [419.358 382.111 495.412 393.236] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -859 0 obj << +866 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.333 370.432 335.307 381.28] +/Rect [379.142 370.432 386.116 381.28] /Subtype /Link /A << /S /GoTo /D (table.3) >> >> endobj -860 0 obj << +867 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.549 291.951 444.603 303.076] +/Rect [419.358 291.951 495.412 303.076] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -861 0 obj << +868 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.544 280.273 335.518 291.121] +/Rect [379.353 280.273 386.327 291.121] /Subtype /Link /A << /S /GoTo /D (table.3) >> >> endobj -862 0 obj << +869 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [259.464 201.792 326.522 212.917] +/Rect [310.273 201.792 377.331 212.917] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -863 0 obj << +870 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [151.203 119.329 158.177 128.24] +/Rect [202.013 119.329 208.986 128.24] /Subtype /Link /A << /S /GoTo /D (table.2) >> >> endobj -867 0 obj << -/D [865 0 R /XYZ 99.895 740.998 null] +874 0 obj << +/D [872 0 R /XYZ 150.705 740.998 null] >> endobj 158 0 obj << -/D [865 0 R /XYZ 99.895 697.37 null] +/D [872 0 R /XYZ 150.705 697.37 null] >> endobj -868 0 obj << -/D [865 0 R /XYZ 267.641 510.309 null] +875 0 obj << +/D [872 0 R /XYZ 318.451 510.309 null] >> endobj -864 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F30 664 0 R /F27 477 0 R >> +871 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -871 0 obj << -/Length 625 +878 0 obj << +/Length 624 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F27 9.9626 Tf 150.705 706.129 Td [(info)]TJ +/F27 9.9626 Tf 99.895 706.129 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ 0 g 0 G - 141.968 -567.87 Td [(28)]TJ + 141.968 -567.87 Td [(27)]TJ 0 g 0 G ET endstream endobj -870 0 obj << +877 0 obj << /Type /Page -/Contents 871 0 R -/Resources 869 0 R +/Contents 878 0 R +/Resources 876 0 R /MediaBox [0 0 595.276 841.89] -/Parent 853 0 R +/Parent 864 0 R >> endobj -872 0 obj << -/D [870 0 R /XYZ 150.705 740.998 null] +879 0 obj << +/D [877 0 R /XYZ 99.895 740.998 null] >> endobj -869 0 obj << -/Font << /F27 477 0 R /F8 478 0 R >> +876 0 obj << +/Font << /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -878 0 obj << -/Length 7026 +885 0 obj << +/Length 7033 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(geamax)-375(|)-375(In\014nit)31(y-Norm)-375(of)-375(V)94(ector)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-333(function)-334(computes)-333(the)-333(in\014nit)28(y-norm)-334(of)-333(a)-333(v)27(ector)]TJ/F11 9.9626 Tf 233.182 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -238.876 -11.956 Td [(If)]TJ/F11 9.9626 Tf 9.963 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(a)-334(real)-333(v)28(ector)-334(it)-333(computes)-333(in\014nit)28(y)-334(norm)-333(as:)]TJ/F11 9.9626 Tf 115.269 -21.917 Td [(amax)]TJ/F14 9.9626 Tf 27.741 0 Td [(\040)]TJ/F8 9.9626 Tf 12.73 0 Td [(max)]TJ/F10 6.9738 Tf 7.861 -6.276 Td [(i)]TJ/F14 9.9626 Tf 12.341 6.276 Td [(j)]TJ/F11 9.9626 Tf 2.767 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.495 Td [(i)]TJ/F14 9.9626 Tf 3.317 1.495 Td [(j)]TJ/F8 9.9626 Tf -206.698 -25.149 Td [(else)-333(if)]TJ/F11 9.9626 Tf 28.007 0 Td [(x)]TJ/F8 9.9626 Tf 9.014 0 Td [(is)-333(a)-334(complex)-333(v)28(ector)-334(then)-333(it)-333(computes)-334(the)-333(in\014nit)28(y-norm)-333(as:)]TJ/F11 9.9626 Tf 61.447 -21.918 Td [(amax)]TJ/F14 9.9626 Tf 27.74 0 Td [(\040)]TJ/F8 9.9626 Tf 12.73 0 Td [(max)]TJ/F10 6.9738 Tf 7.862 -6.275 Td [(i)]TJ/F8 9.9626 Tf 12.34 6.275 Td [(\050)]TJ/F14 9.9626 Tf 3.875 0 Td [(j)]TJ/F11 9.9626 Tf 2.767 0 Td [(r)-28(e)]TJ/F8 9.9626 Tf 9.411 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.494 Td [(i)]TJ/F8 9.9626 Tf 3.317 1.494 Td [(\051)]TJ/F14 9.9626 Tf 3.874 0 Td [(j)]TJ/F8 9.9626 Tf 4.981 0 Td [(+)]TJ/F14 9.9626 Tf 9.963 0 Td [(j)]TJ/F11 9.9626 Tf 2.767 0 Td [(im)]TJ/F8 9.9626 Tf 12.18 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.494 Td [(i)]TJ/F8 9.9626 Tf 3.317 1.494 Td [(\051)]TJ/F14 9.9626 Tf 3.874 0 Td [(j)]TJ/F8 9.9626 Tf 2.768 0 Td [(\051)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(geamax)-375(|)-375(In\014nit)31(y-Norm)-375(of)-375(V)94(ector)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-333(function)-334(computes)-333(the)-333(in\014nit)28(y-norm)-334(of)-333(a)-333(v)28(e)-1(ctor)]TJ/F11 9.9626 Tf 233.181 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -238.875 -11.956 Td [(If)]TJ/F11 9.9626 Tf 9.963 0 Td [(x)]TJ/F8 9.9626 Tf 9.014 0 Td [(is)-333(a)-334(real)-333(v)28(ector)-334(it)-333(computes)-333(in\014nit)28(y)-334(norm)-333(as:)]TJ/F11 9.9626 Tf 115.269 -21.917 Td [(amax)]TJ/F14 9.9626 Tf 27.741 0 Td [(\040)]TJ/F8 9.9626 Tf 12.73 0 Td [(max)]TJ/F10 6.9738 Tf 7.861 -6.276 Td [(i)]TJ/F14 9.9626 Tf 12.341 6.276 Td [(j)]TJ/F11 9.9626 Tf 2.767 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.495 Td [(i)]TJ/F14 9.9626 Tf 3.317 1.495 Td [(j)]TJ/F8 9.9626 Tf -206.697 -25.149 Td [(else)-333(if)]TJ/F11 9.9626 Tf 28.006 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(a)-334(complex)-333(v)28(ector)-334(then)-333(it)-333(computes)-334(the)-333(in\014nit)28(y-norm)-333(as:)]TJ/F11 9.9626 Tf 61.446 -21.918 Td [(amax)]TJ/F14 9.9626 Tf 27.741 0 Td [(\040)]TJ/F8 9.9626 Tf 12.73 0 Td [(max)]TJ/F10 6.9738 Tf 7.861 -6.275 Td [(i)]TJ/F8 9.9626 Tf 12.341 6.275 Td [(\050)]TJ/F14 9.9626 Tf 3.874 0 Td [(j)]TJ/F11 9.9626 Tf 2.768 0 Td [(r)-28(e)]TJ/F8 9.9626 Tf 9.41 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.494 Td [(i)]TJ/F8 9.9626 Tf 3.317 1.494 Td [(\051)]TJ/F14 9.9626 Tf 3.875 0 Td [(j)]TJ/F8 9.9626 Tf 4.981 0 Td [(+)]TJ/F14 9.9626 Tf 9.962 0 Td [(j)]TJ/F11 9.9626 Tf 2.768 0 Td [(im)]TJ/F8 9.9626 Tf 12.179 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.494 Td [(i)]TJ/F8 9.9626 Tf 3.317 1.494 Td [(\051)]TJ/F14 9.9626 Tf 3.874 0 Td [(j)]TJ/F8 9.9626 Tf 2.767 0 Td [(\051)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -241.37 -25.149 Td [(psb_geamax\050x,)-525(desc_a,)-525(info\051)]TJ +/F30 9.9626 Tf -241.369 -25.149 Td [(psb_geamax\050x,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G ET q -1 0 0 1 129.083 557.32 cm +1 0 0 1 179.892 557.32 cm []0 d 0 J 0.398 w 0 0 m 285.336 0 l S Q BT -/F11 9.9626 Tf 135.06 548.752 Td [(amax)-7677(x)]TJ/F27 9.9626 Tf 221.863 0 Td [(F)96(unction)]TJ +/F11 9.9626 Tf 185.87 548.752 Td [(amax)-7677(x)]TJ/F27 9.9626 Tf 221.863 0 Td [(F)96(unction)]TJ ET q -1 0 0 1 129.083 544.967 cm +1 0 0 1 179.892 544.967 cm []0 d 0 J 0.398 w 0 0 m 285.336 0 l S Q BT -/F8 9.9626 Tf 135.06 536.399 Td [(Short)-333(Precision)-334(Real)-1200(Short)-333(Precision)-333(Real)-3103(psb)]TJ +/F8 9.9626 Tf 185.87 536.399 Td [(Short)-333(Precision)-334(Real)-1200(Shor)1(t)-334(Precision)-333(Real)-3103(psb)]TJ ET q -1 0 0 1 372.52 536.598 cm +1 0 0 1 423.33 536.598 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 375.509 536.399 Td [(geamax)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Re)-1(al)-3313(psb)]TJ +/F8 9.9626 Tf 426.319 536.399 Td [(geamax)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Real)-3314(psb)]TJ ET q -1 0 0 1 372.52 524.643 cm +1 0 0 1 423.33 524.643 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 375.509 524.444 Td [(geamax)]TJ -240.449 -11.956 Td [(Short)-333(Precision)-334(Real)-1200(Short)-333(Precision)-333(Complex)-1200(psb)]TJ +/F8 9.9626 Tf 426.319 524.444 Td [(geamax)]TJ -240.449 -11.956 Td [(Short)-333(Precision)-334(Real)-1200(Shor)1(t)-334(Precision)-333(Complex)-1200(psb)]TJ ET q -1 0 0 1 372.52 512.688 cm +1 0 0 1 423.33 512.688 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 375.509 512.488 Td [(geamax)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Com)-1(p)1(lex)-1412(psb)]TJ +/F8 9.9626 Tf 426.319 512.488 Td [(geamax)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Complex)-1412(psb)]TJ ET q -1 0 0 1 372.52 500.733 cm +1 0 0 1 423.33 500.733 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 375.509 500.533 Td [(geamax)]TJ +/F8 9.9626 Tf 426.319 500.533 Td [(geamax)]TJ ET q -1 0 0 1 129.083 496.747 cm +1 0 0 1 179.892 496.747 cm []0 d 0 J 0.398 w 0 0 m 285.336 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 228.067 468.708 Td [(T)83(able)-333(4:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 278.877 468.708 Td [(T)83(able)-333(4:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -7425,195 +7409,195 @@ BT 0 g 0 G 0 -19.926 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)28(o)-255(arra)28(y)-255(or)-255(an)-255(ob)-55(ject)-255(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.742 0 Td [(psb)]TJ ET q -1 0 0 1 385.864 347.64 cm +1 0 0 1 436.673 347.64 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 389.002 347.441 Td [(T)]TJ +/F30 9.9626 Tf 439.811 347.441 Td [(T)]TJ ET q -1 0 0 1 394.86 347.64 cm +1 0 0 1 445.669 347.64 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 397.998 347.441 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 347.441 Td [(vect)]TJ ET q -1 0 0 1 419.547 347.64 cm +1 0 0 1 470.356 347.64 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 422.685 347.441 Td [(type)]TJ +/F30 9.9626 Tf 473.495 347.441 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf -297.883 -11.955 Td [(con)28(taining)-333(n)27(um)28(b)-28(ers)-333(of)-333(t)28(yp)-28(e)-334(sp)-27(eci\014ed)-334(in)-333(T)83(able)]TJ +/F8 9.9626 Tf -297.884 -11.955 Td [(con)28(taining)-333(n)27(um)28(b)-28(ers)-333(of)-333(t)27(yp)-27(e)-334(sp)-27(ec)-1(i)1(\014ed)-334(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG [-333(4)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.926 Td [(desc)]TJ +/F27 9.9626 Tf -24.906 -19.926 Td [(desc)]TJ ET q -1 0 0 1 121.81 315.76 cm +1 0 0 1 172.619 315.76 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 315.56 Td [(a)]TJ +/F27 9.9626 Tf 176.057 315.56 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(con)28(tains)-334(d)1(ata)-334(structures)-333(for)-333(com)-1(m)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(con)28(tains)-334(data)-333(structures)-333(for)-333(c)-1(omm)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 135.658 0 Td [(psb)]TJ +/F30 9.9626 Tf 135.659 0 Td [(psb)]TJ ET q -1 0 0 1 276.779 267.939 cm +1 0 0 1 327.588 267.939 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 279.917 267.74 Td [(desc)]TJ +/F30 9.9626 Tf 330.727 267.74 Td [(desc)]TJ ET q -1 0 0 1 301.466 267.939 cm +1 0 0 1 352.275 267.939 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 304.604 267.74 Td [(type)]TJ +/F30 9.9626 Tf 355.414 267.74 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -225.631 -19.926 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -225.63 -19.926 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 78.387 0 Td [(is)-333(the)-334(in\014ni)1(t)27(y)-333(norm)-333(of)-334(sub)28(v)28(ector)]TJ/F11 9.9626 Tf 143.517 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -202.691 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(long)-333(precision)-333(real)-334(n)28(um)28(b)-28(er.)]TJ +/F8 9.9626 Tf 78.386 0 Td [(is)-333(the)-334(in\014nit)28(y)-333(norm)-333(of)-334(sub)28(v)28(ector)]TJ/F11 9.9626 Tf 143.518 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -202.692 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(long)-333(precision)-334(r)1(e)-1(al)-333(n)28(um)28(b)-28(er.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.926 Td [(info)]TJ +/F27 9.9626 Tf -24.906 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ 0 g 0 G - 141.968 -45.795 Td [(29)]TJ + 141.968 -45.795 Td [(28)]TJ 0 g 0 G ET endstream endobj -877 0 obj << +884 0 obj << /Type /Page -/Contents 878 0 R -/Resources 876 0 R +/Contents 885 0 R +/Resources 883 0 R /MediaBox [0 0 595.276 841.89] -/Parent 853 0 R -/Annots [ 873 0 R 874 0 R 875 0 R ] +/Parent 864 0 R +/Annots [ 880 0 R 881 0 R 882 0 R ] >> endobj -873 0 obj << +880 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.549 344.231 444.603 355.355] +/Rect [419.358 344.231 495.412 355.355] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -874 0 obj << +881 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [325.411 332.552 332.385 343.4] +/Rect [376.221 332.552 383.195 343.4] /Subtype /Link /A << /S /GoTo /D (table.4) >> >> endobj -875 0 obj << +882 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [259.464 264.529 326.522 275.654] +/Rect [310.273 264.529 377.331 275.654] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -879 0 obj << -/D [877 0 R /XYZ 99.895 740.998 null] +886 0 obj << +/D [884 0 R /XYZ 150.705 740.998 null] >> endobj 162 0 obj << -/D [877 0 R /XYZ 99.895 697.37 null] +/D [884 0 R /XYZ 150.705 697.37 null] >> endobj -880 0 obj << -/D [877 0 R /XYZ 267.641 480.663 null] +887 0 obj << +/D [884 0 R /XYZ 318.451 480.663 null] >> endobj -876 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F30 664 0 R /F27 477 0 R >> +883 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -886 0 obj << -/Length 6310 +893 0 obj << +/Length 6326 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(geamaxs)-375(|)-375(Generalized)-375(In\014nit)31(y)-375(Norm)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-359(subroutine)-359(computes)-360(a)-359(series)-359(of)-359(in\014nit)28(y)-359(norms)-360(on)-359(the)-359(columns)-359(of)-359(a)-359(dense)]TJ 0 -11.956 Td [(matrix)]TJ/F11 9.9626 Tf 32.406 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(:)]TJ/F11 9.9626 Tf 87.106 -11.955 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.08 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F14 9.9626 Tf 6.642 0 Td [(\040)]TJ/F8 9.9626 Tf 12.73 0 Td [(max)]TJ/F10 6.9738 Tf 7.069 -6.503 Td [(k)]TJ/F14 9.9626 Tf 13.133 6.503 Td [(j)]TJ/F11 9.9626 Tf 2.767 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(k)-31(;)-167(i)]TJ/F8 9.9626 Tf 13.36 0 Td [(\051)]TJ/F14 9.9626 Tf 3.874 0 Td [(j)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(geamaxs)-375(|)-375(Generalized)-375(In\014nit)31(y)-375(Norm)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-359(subroutine)-359(computes)-360(a)-359(series)-359(of)-359(in\014nit)28(y)-359(norms)-360(on)-359(the)-359(columns)-359(of)-359(a)-360(d)1(e)-1(n)1(s)-1(e)]TJ 0 -11.956 Td [(matrix)]TJ/F11 9.9626 Tf 32.407 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(:)]TJ/F11 9.9626 Tf 87.106 -11.955 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.08 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.433 0 Td [(\051)]TJ/F14 9.9626 Tf 6.641 0 Td [(\040)]TJ/F8 9.9626 Tf 12.73 0 Td [(max)]TJ/F10 6.9738 Tf 7.069 -6.503 Td [(k)]TJ/F14 9.9626 Tf 13.133 6.503 Td [(j)]TJ/F11 9.9626 Tf 2.768 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(k)-31(;)-167(i)]TJ/F8 9.9626 Tf 13.36 0 Td [(\051)]TJ/F14 9.9626 Tf 3.875 0 Td [(j)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -215.737 -25.377 Td [(call)-525(psb_geamaxs\050res,)-525(x,)-525(desc_a,)-525(info\051)]TJ +/F30 9.9626 Tf -215.738 -25.377 Td [(call)-525(psb_geamaxs\050res,)-525(x,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G ET q -1 0 0 1 177.927 614.121 cm +1 0 0 1 127.118 614.121 cm []0 d 0 J 0.398 w 0 0 m 289.266 0 l S Q BT -/F11 9.9626 Tf 183.905 605.553 Td [(r)-28(es)-8770(x)]TJ/F27 9.9626 Tf 221.863 0 Td [(Subroutine)]TJ +/F11 9.9626 Tf 133.096 605.553 Td [(r)-28(es)-8770(x)]TJ/F27 9.9626 Tf 221.862 0 Td [(Subroutine)]TJ ET q -1 0 0 1 177.927 601.768 cm +1 0 0 1 127.118 601.768 cm []0 d 0 J 0.398 w 0 0 m 289.266 0 l S Q BT -/F8 9.9626 Tf 183.905 593.2 Td [(Short)-333(Precision)-334(Real)-1200(Shor)1(t)-334(Precision)-333(Real)-3103(psb)]TJ +/F8 9.9626 Tf 133.096 593.2 Td [(Short)-333(Precision)-334(Real)-1200(Sh)1(ort)-334(Precision)-333(Real)-3103(psb)]TJ ET q -1 0 0 1 421.365 593.399 cm +1 0 0 1 370.556 593.399 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 424.354 593.2 Td [(geamaxs)]TJ -240.449 -11.956 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Real)-3314(psb)]TJ +/F8 9.9626 Tf 373.544 593.2 Td [(geamaxs)]TJ -240.448 -11.956 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Real)-3314(psb)]TJ ET q -1 0 0 1 421.365 581.444 cm +1 0 0 1 370.556 581.444 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 424.354 581.244 Td [(geamaxs)]TJ -240.449 -11.955 Td [(Short)-333(Precision)-334(Real)-1200(Shor)1(t)-334(Precision)-333(Complex)-1200(psb)]TJ +/F8 9.9626 Tf 373.544 581.244 Td [(geamaxs)]TJ -240.448 -11.955 Td [(Short)-333(Precision)-334(Real)-1200(Sh)1(ort)-334(Precision)-333(Complex)-1200(psb)]TJ ET q -1 0 0 1 421.365 569.489 cm +1 0 0 1 370.556 569.489 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 424.354 569.289 Td [(geamaxs)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Complex)-1412(psb)]TJ +/F8 9.9626 Tf 373.544 569.289 Td [(geamaxs)]TJ -240.448 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Complex)-1412(p)1(s)-1(b)]TJ ET q -1 0 0 1 421.365 557.533 cm +1 0 0 1 370.556 557.533 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 424.354 557.334 Td [(geamaxs)]TJ +/F8 9.9626 Tf 373.544 557.334 Td [(geamaxs)]TJ ET q -1 0 0 1 177.927 553.548 cm +1 0 0 1 127.118 553.548 cm []0 d 0 J 0.398 w 0 0 m 289.266 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 278.877 525.509 Td [(T)83(able)-333(5:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 228.067 525.509 Td [(T)83(able)-333(5:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -7626,139 +7610,139 @@ BT 0 g 0 G 0 -19.926 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)28(o)-255(arra)28(y)-255(or)-255(an)-255(ob)-55(ject)-255(of)-255(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 244.742 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ ET q -1 0 0 1 436.673 404.441 cm +1 0 0 1 385.864 404.441 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 439.811 404.242 Td [(T)]TJ +/F30 9.9626 Tf 389.002 404.242 Td [(T)]TJ ET q -1 0 0 1 445.669 404.441 cm +1 0 0 1 394.86 404.441 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 448.807 404.242 Td [(vect)]TJ +/F30 9.9626 Tf 397.998 404.242 Td [(vect)]TJ ET q -1 0 0 1 470.356 404.441 cm +1 0 0 1 419.547 404.441 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 473.495 404.242 Td [(type)]TJ +/F30 9.9626 Tf 422.685 404.242 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf -297.884 -11.956 Td [(con)28(taining)-333(n)27(um)28(b)-28(ers)-333(of)-333(t)27(yp)-27(e)-334(sp)-27(ec)-1(i)1(\014ed)-334(in)-333(T)83(able)]TJ +/F8 9.9626 Tf -297.883 -11.956 Td [(con)28(taining)-333(n)27(um)28(b)-28(ers)-333(of)-333(t)28(yp)-28(e)-334(sp)-27(eci\014ed)-334(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG [-333(5)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -19.925 Td [(desc)]TJ +/F27 9.9626 Tf -24.907 -19.925 Td [(desc)]TJ ET q -1 0 0 1 172.619 372.56 cm +1 0 0 1 121.81 372.56 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 372.361 Td [(a)]TJ +/F27 9.9626 Tf 125.247 372.361 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(con)28(tains)-334(data)-333(structures)-333(for)-333(c)-1(omm)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(con)28(tains)-334(d)1(ata)-334(structures)-333(for)-333(com)-1(m)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 135.659 0 Td [(psb)]TJ +/F30 9.9626 Tf 135.658 0 Td [(psb)]TJ ET q -1 0 0 1 327.588 324.74 cm +1 0 0 1 276.779 324.74 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 330.727 324.54 Td [(desc)]TJ +/F30 9.9626 Tf 279.917 324.54 Td [(desc)]TJ ET q -1 0 0 1 352.275 324.74 cm +1 0 0 1 301.466 324.74 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 355.414 324.54 Td [(type)]TJ +/F30 9.9626 Tf 304.604 324.54 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -225.63 -19.925 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -225.631 -19.925 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(res)]TJ 0 g 0 G -/F8 9.9626 Tf 19.47 0 Td [(is)-333(the)-334(in\014nit)28(y)-333(norm)-333(of)-334(the)-333(columns)-333(of)]TJ/F11 9.9626 Tf 166.183 0 Td [(x)]TJ/F8 9.9626 Tf 5.693 0 Td [(.)]TJ -166.44 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.956 Td [(Sp)-28(eci\014ed)-289(as:)-422(a)-289(n)28(um)28(b)-28(er)-289(or)-289(a)-289(rank)1(-)-1(on)1(e)-289(arra)27(y)-288(of)-289(long)-289(precision)-289(real)-289(n)28(um)28(b)-28(ers.)]TJ +/F8 9.9626 Tf 19.47 0 Td [(is)-333(the)-334(in\014nit)28(y)-333(norm)-333(of)-334(the)-333(columns)-333(of)]TJ/F11 9.9626 Tf 166.183 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -166.44 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.956 Td [(Sp)-28(eci\014ed)-289(as:)-422(a)-289(n)28(um)28(b)-28(er)-289(or)-289(a)-289(ran)1(k-one)-289(arra)27(y)-288(of)-289(long)-289(precision)-289(real)-289(n)28(um)28(b)-28(ers.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -19.925 Td [(info)]TJ +/F27 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.956 Td [(An)-333(in)28(te)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.956 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ 0 g 0 G - 141.968 -90.64 Td [(30)]TJ + 141.968 -90.64 Td [(29)]TJ 0 g 0 G ET endstream endobj -885 0 obj << +892 0 obj << /Type /Page -/Contents 886 0 R -/Resources 884 0 R +/Contents 893 0 R +/Resources 891 0 R /MediaBox [0 0 595.276 841.89] -/Parent 853 0 R -/Annots [ 881 0 R 882 0 R 883 0 R ] +/Parent 864 0 R +/Annots [ 888 0 R 889 0 R 890 0 R ] >> endobj -881 0 obj << +888 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [419.358 401.031 495.412 412.156] +/Rect [368.549 401.031 444.603 412.156] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -882 0 obj << +889 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [376.221 389.353 383.195 400.201] +/Rect [325.411 389.353 332.385 400.201] /Subtype /Link /A << /S /GoTo /D (table.5) >> >> endobj -883 0 obj << +890 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [310.273 321.33 377.331 332.455] +/Rect [259.464 321.33 326.522 332.455] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -887 0 obj << -/D [885 0 R /XYZ 150.705 740.998 null] +894 0 obj << +/D [892 0 R /XYZ 99.895 740.998 null] >> endobj 166 0 obj << -/D [885 0 R /XYZ 150.705 697.37 null] +/D [892 0 R /XYZ 99.895 697.37 null] >> endobj -888 0 obj << -/D [885 0 R /XYZ 318.451 537.464 null] +895 0 obj << +/D [892 0 R /XYZ 267.641 537.464 null] >> endobj -884 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F30 664 0 R /F27 477 0 R >> +891 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -894 0 obj << -/Length 6676 +901 0 obj << +/Length 6665 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(geasum)-375(|)-375(1-Norm)-375(of)-375(V)94(ector)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-333(function)-334(computes)-333(the)-333(1-norm)-334(of)-333(a)-333(v)27(ector)]TJ/F11 9.9626 Tf 207.168 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -212.862 -11.956 Td [(If)]TJ/F11 9.9626 Tf 9.963 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(a)-334(real)-333(v)28(ector)-334(it)-333(computes)-333(1-norm)-334(as:)]TJ/F11 9.9626 Tf 123.449 -21.917 Td [(asum)]TJ/F14 9.9626 Tf 27.154 0 Td [(\040)-278(k)]TJ/F11 9.9626 Tf 17.711 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.495 Td [(i)]TJ/F14 9.9626 Tf 3.317 1.495 Td [(k)]TJ/F8 9.9626 Tf -196.303 -21.918 Td [(else)-333(if)]TJ/F11 9.9626 Tf 28.006 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(a)-334(complex)-333(v)28(ector)-334(then)-333(it)-333(computes)-334(1-norm)-333(as:)]TJ/F11 9.9626 Tf 70.135 -21.918 Td [(asum)]TJ/F14 9.9626 Tf 27.154 0 Td [(\040)-278(k)]TJ/F11 9.9626 Tf 17.711 0 Td [(r)-28(e)]TJ/F8 9.9626 Tf 9.411 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\051)]TJ/F14 9.9626 Tf 3.874 0 Td [(k)]TJ/F7 6.9738 Tf 4.982 -1.494 Td [(1)]TJ/F8 9.9626 Tf 6.683 1.494 Td [(+)]TJ/F14 9.9626 Tf 9.962 0 Td [(k)]TJ/F11 9.9626 Tf 4.982 0 Td [(im)]TJ/F8 9.9626 Tf 12.179 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\051)]TJ/F14 9.9626 Tf 3.874 0 Td [(k)]TJ/F7 6.9738 Tf 4.981 -1.494 Td [(1)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(geasum)-375(|)-375(1-Norm)-375(of)-375(V)94(ector)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-333(function)-334(computes)-333(the)-333(1-norm)-334(of)-333(a)-333(v)28(ec)-1(tor)]TJ/F11 9.9626 Tf 207.168 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -212.862 -11.956 Td [(If)]TJ/F11 9.9626 Tf 9.963 0 Td [(x)]TJ/F8 9.9626 Tf 9.014 0 Td [(is)-333(a)-334(real)-333(v)28(ector)-334(it)-333(computes)-333(1-norm)-334(as:)]TJ/F11 9.9626 Tf 123.45 -21.917 Td [(asum)]TJ/F14 9.9626 Tf 27.154 0 Td [(\040)-278(k)]TJ/F11 9.9626 Tf 17.711 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.495 Td [(i)]TJ/F14 9.9626 Tf 3.317 1.495 Td [(k)]TJ/F8 9.9626 Tf -196.303 -21.918 Td [(else)-333(if)]TJ/F11 9.9626 Tf 28.006 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(a)-334(complex)-333(v)28(ector)-334(then)-333(it)-333(computes)-334(1-norm)-333(as:)]TJ/F11 9.9626 Tf 70.135 -21.918 Td [(asum)]TJ/F14 9.9626 Tf 27.154 0 Td [(\040)-278(k)]TJ/F11 9.9626 Tf 17.711 0 Td [(r)-28(e)]TJ/F8 9.9626 Tf 9.41 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\051)]TJ/F14 9.9626 Tf 3.874 0 Td [(k)]TJ/F7 6.9738 Tf 4.981 -1.494 Td [(1)]TJ/F8 9.9626 Tf 6.683 1.494 Td [(+)]TJ/F14 9.9626 Tf 9.963 0 Td [(k)]TJ/F11 9.9626 Tf 4.981 0 Td [(im)]TJ/F8 9.9626 Tf 12.18 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\051)]TJ/F14 9.9626 Tf 3.875 0 Td [(k)]TJ/F7 6.9738 Tf 4.981 -1.494 Td [(1)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -232.086 -20.424 Td [(psb_geasum\050x,)-525(desc_a,)-525(info\051)]TJ @@ -7767,54 +7751,54 @@ BT 0 g 0 G ET q -1 0 0 1 129.47 563.782 cm +1 0 0 1 180.28 563.782 cm []0 d 0 J 0.398 w 0 0 m 284.561 0 l S Q BT -/F11 9.9626 Tf 135.448 555.214 Td [(asum)-7735(x)]TJ/F27 9.9626 Tf 221.863 0 Td [(F)96(unction)]TJ +/F11 9.9626 Tf 186.257 555.214 Td [(asum)-7736(x)]TJ/F27 9.9626 Tf 221.863 0 Td [(F)96(unction)]TJ ET q -1 0 0 1 129.47 551.428 cm +1 0 0 1 180.28 551.428 cm []0 d 0 J 0.398 w 0 0 m 284.561 0 l S Q BT -/F8 9.9626 Tf 135.448 542.861 Td [(Short)-333(Precision)-334(Real)-1200(Sh)1(o)-1(r)1(t)-334(Precision)-333(Real)-3103(psb)]TJ +/F8 9.9626 Tf 186.257 542.861 Td [(Short)-333(Precision)-334(Real)-1200(Short)-333(Precision)-333(Real)-3103(psb)]TJ ET q -1 0 0 1 372.908 543.06 cm +1 0 0 1 423.717 543.06 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 375.897 542.861 Td [(geasum)]TJ -240.449 -11.956 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Real)-3314(psb)]TJ +/F8 9.9626 Tf 426.706 542.861 Td [(geasum)]TJ -240.449 -11.956 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Real)-3314(psb)]TJ ET q -1 0 0 1 372.908 531.105 cm +1 0 0 1 423.717 531.105 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 375.897 530.905 Td [(geasum)]TJ -240.449 -11.955 Td [(Short)-333(Precision)-334(Real)-1200(Sh)1(o)-1(r)1(t)-334(Precision)-333(Complex)-1200(psb)]TJ +/F8 9.9626 Tf 426.706 530.905 Td [(geasum)]TJ -240.449 -11.955 Td [(Short)-333(Precision)-334(Real)-1200(Short)-333(Precision)-333(Complex)-1200(psb)]TJ ET q -1 0 0 1 372.908 519.15 cm +1 0 0 1 423.717 519.15 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 375.897 518.95 Td [(geasum)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Complex)-1412(psb)]TJ +/F8 9.9626 Tf 426.706 518.95 Td [(geasum)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Com)-1(p)1(lex)-1412(psb)]TJ ET q -1 0 0 1 372.908 507.194 cm +1 0 0 1 423.717 507.194 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 375.897 506.995 Td [(geasum)]TJ +/F8 9.9626 Tf 426.706 506.995 Td [(geasum)]TJ ET q -1 0 0 1 129.47 503.209 cm +1 0 0 1 180.28 503.209 cm []0 d 0 J 0.398 w 0 0 m 284.561 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 228.067 475.17 Td [(T)83(able)-333(6:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 278.877 475.17 Td [(T)83(able)-333(6:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -7827,195 +7811,195 @@ BT 0 g 0 G 0 -19.926 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)28(o)-255(arra)28(y)-255(or)-255(an)-255(ob)-55(ject)-255(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.742 0 Td [(psb)]TJ ET q -1 0 0 1 385.864 354.102 cm +1 0 0 1 436.673 354.102 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 389.002 353.903 Td [(T)]TJ +/F30 9.9626 Tf 439.811 353.903 Td [(T)]TJ ET q -1 0 0 1 394.86 354.102 cm +1 0 0 1 445.669 354.102 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 397.998 353.903 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 353.903 Td [(vect)]TJ ET q -1 0 0 1 419.547 354.102 cm +1 0 0 1 470.356 354.102 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 422.685 353.903 Td [(type)]TJ +/F30 9.9626 Tf 473.495 353.903 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf -297.883 -11.956 Td [(con)28(taining)-333(n)27(um)28(b)-28(ers)-333(of)-333(t)28(yp)-28(e)-334(sp)-27(eci\014ed)-334(in)-333(T)83(able)]TJ +/F8 9.9626 Tf -297.884 -11.956 Td [(con)28(taining)-333(n)27(um)28(b)-28(ers)-333(of)-333(t)27(yp)-27(e)-334(sp)-27(ec)-1(i)1(\014ed)-334(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG [-333(6)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.925 Td [(desc)]TJ +/F27 9.9626 Tf -24.906 -19.925 Td [(desc)]TJ ET q -1 0 0 1 121.81 322.221 cm +1 0 0 1 172.619 322.221 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 322.022 Td [(a)]TJ +/F27 9.9626 Tf 176.057 322.022 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(con)28(tains)-334(d)1(ata)-334(structures)-333(for)-333(com)-1(m)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(con)28(tains)-334(data)-333(structures)-333(for)-333(c)-1(omm)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 135.658 0 Td [(psb)]TJ +/F30 9.9626 Tf 135.659 0 Td [(psb)]TJ ET q -1 0 0 1 276.779 274.401 cm +1 0 0 1 327.588 274.401 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 279.917 274.201 Td [(desc)]TJ +/F30 9.9626 Tf 330.727 274.201 Td [(desc)]TJ ET q -1 0 0 1 301.466 274.401 cm +1 0 0 1 352.275 274.401 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 304.604 274.201 Td [(type)]TJ +/F30 9.9626 Tf 355.414 274.201 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -225.631 -19.925 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -225.63 -19.925 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 78.387 0 Td [(is)-333(the)-334(1-norm)-333(of)-333(v)28(e)-1(ctor)]TJ/F11 9.9626 Tf 102.781 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -161.955 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(long)-333(precision)-333(real)-334(n)28(um)28(b)-28(er.)]TJ +/F8 9.9626 Tf 78.386 0 Td [(is)-333(the)-334(1-norm)-333(of)-333(v)27(ector)]TJ/F11 9.9626 Tf 102.781 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -161.955 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(long)-333(precision)-334(r)1(e)-1(al)-333(n)28(um)28(b)-28(er.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.926 Td [(info)]TJ +/F27 9.9626 Tf -24.906 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(te)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ 0 g 0 G - 141.968 -52.257 Td [(31)]TJ + 141.968 -52.257 Td [(30)]TJ 0 g 0 G ET endstream endobj -893 0 obj << +900 0 obj << /Type /Page -/Contents 894 0 R -/Resources 892 0 R +/Contents 901 0 R +/Resources 899 0 R /MediaBox [0 0 595.276 841.89] -/Parent 897 0 R -/Annots [ 889 0 R 890 0 R 891 0 R ] +/Parent 864 0 R +/Annots [ 896 0 R 897 0 R 898 0 R ] >> endobj -889 0 obj << +896 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.549 350.692 444.603 361.817] +/Rect [419.358 350.692 495.412 361.817] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -890 0 obj << +897 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [325.411 339.014 332.385 349.862] +/Rect [376.221 339.014 383.195 349.862] /Subtype /Link /A << /S /GoTo /D (table.6) >> >> endobj -891 0 obj << +898 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [259.464 270.991 326.522 282.116] +/Rect [310.273 270.991 377.331 282.116] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -895 0 obj << -/D [893 0 R /XYZ 99.895 740.998 null] +902 0 obj << +/D [900 0 R /XYZ 150.705 740.998 null] >> endobj 170 0 obj << -/D [893 0 R /XYZ 99.895 697.37 null] +/D [900 0 R /XYZ 150.705 697.37 null] >> endobj -896 0 obj << -/D [893 0 R /XYZ 267.641 487.125 null] +903 0 obj << +/D [900 0 R /XYZ 318.451 487.125 null] >> endobj -892 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F7 665 0 R /F30 664 0 R /F27 477 0 R >> +899 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F7 670 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -903 0 obj << -/Length 7357 +909 0 obj << +/Length 7318 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(geasums)-375(|)-375(Generalized)-375(1-Norm)-375(of)-375(V)94(ector)]TJ/F8 9.9626 Tf -25.091 -19.22 Td [(This)-310(subroutine)-310(computes)-309(a)-310(series)-310(of)-310(1-norms)-310(on)-310(the)-309(c)-1(olu)1(m)-1(n)1(s)-310(of)-310(a)-310(dense)-310(matrix)]TJ/F11 9.9626 Tf 0 -11.955 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(:)]TJ/F11 9.9626 Tf 119.512 -13.293 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.081 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F14 9.9626 Tf 6.642 0 Td [(\040)]TJ/F8 9.9626 Tf 12.73 0 Td [(max)]TJ/F10 6.9738 Tf 7.069 -6.503 Td [(k)]TJ/F14 9.9626 Tf 13.133 6.503 Td [(j)]TJ/F11 9.9626 Tf 2.767 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(k)-31(;)-167(i)]TJ/F8 9.9626 Tf 13.36 0 Td [(\051)]TJ/F14 9.9626 Tf 3.874 0 Td [(j)]TJ/F8 9.9626 Tf -215.737 -22.73 Td [(This)-333(function)-334(computes)-333(the)-333(1-norm)-334(of)-333(a)-333(v)28(ec)-1(tor)]TJ/F11 9.9626 Tf 207.168 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -212.862 -11.955 Td [(If)]TJ/F11 9.9626 Tf 9.963 0 Td [(x)]TJ/F8 9.9626 Tf 9.014 0 Td [(is)-333(a)-334(real)-333(v)28(ector)-334(it)-333(computes)-333(1-norm)-334(as:)]TJ/F11 9.9626 Tf 123.012 -22.81 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.081 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F14 9.9626 Tf 6.642 0 Td [(\040)-278(k)]TJ/F11 9.9626 Tf 17.711 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.495 Td [(i)]TJ/F14 9.9626 Tf 3.317 1.495 Td [(k)]TJ/F8 9.9626 Tf -196.74 -22.81 Td [(else)-333(if)]TJ/F11 9.9626 Tf 28.006 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(a)-334(complex)-333(v)28(ector)-334(then)-333(it)-333(computes)-334(1-norm)-333(as:)]TJ/F11 9.9626 Tf 69.697 -22.81 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.081 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F14 9.9626 Tf 6.642 0 Td [(\040)-278(k)]TJ/F11 9.9626 Tf 17.711 0 Td [(r)-28(e)]TJ/F8 9.9626 Tf 9.411 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\051)]TJ/F14 9.9626 Tf 3.874 0 Td [(k)]TJ/F7 6.9738 Tf 4.982 -1.494 Td [(1)]TJ/F8 9.9626 Tf 6.683 1.494 Td [(+)]TJ/F14 9.9626 Tf 9.962 0 Td [(k)]TJ/F11 9.9626 Tf 4.982 0 Td [(im)]TJ/F8 9.9626 Tf 12.179 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\051)]TJ/F14 9.9626 Tf 3.874 0 Td [(k)]TJ/F7 6.9738 Tf 4.981 -1.494 Td [(1)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(geasums)-375(|)-375(Generalized)-375(1-Norm)-375(of)-375(V)94(ector)]TJ/F8 9.9626 Tf -25.091 -19.22 Td [(This)-310(subroutine)-310(computes)-309(a)-310(series)-310(of)-310(1-norms)-310(on)-310(the)-310(columns)-309(of)-310(a)-310(dense)-310(matrix)]TJ/F11 9.9626 Tf 0 -11.955 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(:)]TJ/F11 9.9626 Tf 119.513 -13.293 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.08 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.433 0 Td [(\051)]TJ/F14 9.9626 Tf 6.641 0 Td [(\040)]TJ/F8 9.9626 Tf 12.73 0 Td [(max)]TJ/F10 6.9738 Tf 7.069 -6.503 Td [(k)]TJ/F14 9.9626 Tf 13.133 6.503 Td [(j)]TJ/F11 9.9626 Tf 2.768 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(k)-31(;)-167(i)]TJ/F8 9.9626 Tf 13.36 0 Td [(\051)]TJ/F14 9.9626 Tf 3.875 0 Td [(j)]TJ/F8 9.9626 Tf -215.738 -22.73 Td [(This)-333(function)-334(computes)-333(the)-333(1-norm)-334(of)-333(a)-333(v)28(e)-1(ctor)]TJ/F11 9.9626 Tf 207.168 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -212.862 -11.955 Td [(If)]TJ/F11 9.9626 Tf 9.963 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(a)-334(real)-333(v)28(ector)-334(it)-333(computes)-333(1-norm)-334(as:)]TJ/F11 9.9626 Tf 123.012 -22.81 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.08 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F14 9.9626 Tf 6.641 0 Td [(\040)-278(k)]TJ/F11 9.9626 Tf 17.712 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.495 Td [(i)]TJ/F14 9.9626 Tf 3.317 1.495 Td [(k)]TJ/F8 9.9626 Tf -196.741 -22.81 Td [(else)-333(if)]TJ/F11 9.9626 Tf 28.006 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(a)-334(complex)-333(v)28(ector)-334(then)-333(it)-333(computes)-334(1-norm)-333(as:)]TJ/F11 9.9626 Tf 69.698 -22.81 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.08 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.433 0 Td [(\051)]TJ/F14 9.9626 Tf 6.641 0 Td [(\040)-278(k)]TJ/F11 9.9626 Tf 17.712 0 Td [(r)-28(e)]TJ/F8 9.9626 Tf 9.41 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\051)]TJ/F14 9.9626 Tf 3.875 0 Td [(k)]TJ/F7 6.9738 Tf 4.981 -1.494 Td [(1)]TJ/F8 9.9626 Tf 6.683 1.494 Td [(+)]TJ/F14 9.9626 Tf 9.963 0 Td [(k)]TJ/F11 9.9626 Tf 4.981 0 Td [(im)]TJ/F8 9.9626 Tf 12.18 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\051)]TJ/F14 9.9626 Tf 3.874 0 Td [(k)]TJ/F7 6.9738 Tf 4.982 -1.494 Td [(1)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -232.523 -21.762 Td [(call)-525(psb_geasums\050res,)-525(x,)-525(desc_a,)-525(info\051)]TJ +/F30 9.9626 Tf -232.524 -21.762 Td [(call)-525(psb_geasums\050res,)-525(x,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G ET q -1 0 0 1 178.071 508.729 cm +1 0 0 1 127.261 508.729 cm []0 d 0 J 0.398 w 0 0 m 288.979 0 l S Q BT -/F11 9.9626 Tf 184.049 500.161 Td [(r)-28(es)-8770(x)]TJ/F27 9.9626 Tf 221.862 0 Td [(Subroutine)]TJ +/F11 9.9626 Tf 133.239 500.161 Td [(r)-28(es)-8770(x)]TJ/F27 9.9626 Tf 221.863 0 Td [(Subroutine)]TJ ET q -1 0 0 1 178.071 496.375 cm +1 0 0 1 127.261 496.375 cm []0 d 0 J 0.398 w 0 0 m 288.979 0 l S Q BT -/F8 9.9626 Tf 184.049 487.807 Td [(Short)-333(Precision)-333(R)-1(eal)-1200(S)1(hort)-334(Precision)-333(Real)-3103(psb)]TJ +/F8 9.9626 Tf 133.239 487.807 Td [(Short)-333(Precision)-334(Real)-1200(Shor)1(t)-334(Precision)-333(Real)-3103(psb)]TJ ET q -1 0 0 1 421.508 488.007 cm +1 0 0 1 370.699 488.007 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 424.497 487.807 Td [(geasums)]TJ -240.448 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Real)-3314(psb)]TJ +/F8 9.9626 Tf 373.688 487.807 Td [(geasums)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Real)-3314(psb)]TJ ET q -1 0 0 1 421.508 476.051 cm +1 0 0 1 370.699 476.051 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 424.497 475.852 Td [(geasums)]TJ -240.448 -11.955 Td [(Short)-333(Precision)-333(R)-1(eal)-1200(S)1(hort)-334(Precision)-333(Complex)-1200(psb)]TJ +/F8 9.9626 Tf 373.688 475.852 Td [(geasums)]TJ -240.449 -11.955 Td [(Short)-333(Precision)-334(Real)-1200(Shor)1(t)-334(Precision)-333(Complex)-1200(psb)]TJ ET q -1 0 0 1 421.508 464.096 cm +1 0 0 1 370.699 464.096 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 424.497 463.897 Td [(geasums)]TJ -240.448 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Complex)-1412(p)1(s)-1(b)]TJ +/F8 9.9626 Tf 373.688 463.897 Td [(geasums)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Complex)-1412(psb)]TJ ET q -1 0 0 1 421.508 452.141 cm +1 0 0 1 370.699 452.141 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 424.497 451.942 Td [(geasums)]TJ +/F8 9.9626 Tf 373.688 451.942 Td [(geasums)]TJ ET q -1 0 0 1 178.071 448.156 cm +1 0 0 1 127.261 448.156 cm []0 d 0 J 0.398 w 0 0 m 288.979 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 278.877 420.117 Td [(T)83(able)-333(7:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 228.067 420.117 Td [(T)83(able)-333(7:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -8028,233 +8012,233 @@ BT 0 g 0 G 0 -21.71 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-222(as:)-389(a)-222(rank)-222(one)-222(or)-223(t)28(w)28(o)-222(arra)28(y)-223(or)-222(an)-222(ob)-56(ject)-222(of)-222(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 240.681 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ ET q -1 0 0 1 432.611 293.25 cm +1 0 0 1 385.864 293.25 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 435.749 293.051 Td [(T)]TJ +/F30 9.9626 Tf 389.002 293.051 Td [(T)]TJ ET q -1 0 0 1 441.607 293.25 cm +1 0 0 1 394.86 293.25 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 444.746 293.051 Td [(vect)]TJ +/F30 9.9626 Tf 397.998 293.051 Td [(vect)]TJ ET q -1 0 0 1 466.295 293.25 cm +1 0 0 1 419.547 293.25 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 469.433 293.051 Td [(type)]TJ +/F30 9.9626 Tf 422.685 293.051 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(con)28(taining)]TJ -314.743 -11.956 Td [(n)28(um)28(b)-28(ers)-334(of)-333(t)28(yp)-28(e)-333(sp)-28(eci\014ed)-333(in)-334(T)84(able)]TJ +/F8 9.9626 Tf -297.883 -11.956 Td [(con)28(taining)-333(n)27(um)28(b)-28(ers)-333(of)-333(t)28(yp)-28(e)-334(sp)-27(eci\014ed)-334(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-334(7)]TJ + [-333(7)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -21.709 Td [(desc)]TJ +/F27 9.9626 Tf -24.907 -21.709 Td [(desc)]TJ ET q -1 0 0 1 172.619 259.585 cm +1 0 0 1 121.81 259.585 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 259.386 Td [(a)]TJ +/F27 9.9626 Tf 125.247 259.386 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(con)28(tains)-334(data)-333(structures)-333(for)-333(c)-1(omm)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(con)28(tains)-334(d)1(ata)-334(structures)-333(for)-333(com)-1(m)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 135.659 0 Td [(psb)]TJ +/F30 9.9626 Tf 135.658 0 Td [(psb)]TJ ET q -1 0 0 1 327.588 211.765 cm +1 0 0 1 276.779 211.765 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 330.727 211.565 Td [(desc)]TJ +/F30 9.9626 Tf 279.917 211.565 Td [(desc)]TJ ET q -1 0 0 1 352.275 211.765 cm +1 0 0 1 301.466 211.765 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 355.414 211.565 Td [(type)]TJ +/F30 9.9626 Tf 304.604 211.565 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -225.63 -21.709 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -225.631 -21.709 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.71 Td [(res)]TJ 0 g 0 G -/F8 9.9626 Tf 19.47 0 Td [(con)28(tains)-334(th)1(e)-334(1-norm)-333(of)-333(\050the)-334(columns)-333(of)-78(\051)]TJ/F11 9.9626 Tf 177.75 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -178.008 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Short)-324(as:)-440(a)-324(long)-324(precision)-325(r)1(e)-1(al)-324(n)28(um)28(b)-28(er.)-441(Sp)-28(eci\014ed)-324(as:)-440(a)-324(long)-324(precision)-325(real)]TJ 0 -11.955 Td [(n)28(um)28(b)-28(er.)]TJ +/F8 9.9626 Tf 19.47 0 Td [(con)28(tains)-334(the)-333(1-norm)-333(of)-334(\050th)1(e)-334(columns)-333(of)-78(\051)]TJ/F11 9.9626 Tf 177.751 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -178.008 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Short)-324(as:)-440(a)-324(long)-324(precision)-324(real)-325(n)28(um)28(b)-28(er.)-441(Sp)-28(eci\014ed)-324(as:)-440(a)-324(long)-324(precision)-325(r)1(e)-1(al)]TJ 0 -11.955 Td [(n)28(um)28(b)-28(er.)]TJ 0 g 0 G - 141.968 -29.888 Td [(32)]TJ + 141.968 -29.888 Td [(31)]TJ 0 g 0 G ET endstream endobj -902 0 obj << +908 0 obj << /Type /Page -/Contents 903 0 R -/Resources 901 0 R +/Contents 909 0 R +/Resources 907 0 R /MediaBox [0 0 595.276 841.89] -/Parent 897 0 R -/Annots [ 898 0 R 899 0 R 900 0 R ] +/Parent 912 0 R +/Annots [ 904 0 R 905 0 R 906 0 R ] >> endobj -898 0 obj << +904 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [415.296 289.84 491.35 300.965] +/Rect [368.549 289.84 444.603 300.965] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -899 0 obj << +905 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [327.791 278.162 334.765 289.01] +/Rect [325.411 278.162 332.385 289.01] /Subtype /Link /A << /S /GoTo /D (table.7) >> >> endobj -900 0 obj << +906 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [310.273 208.355 377.331 219.48] +/Rect [259.464 208.355 326.522 219.48] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -904 0 obj << -/D [902 0 R /XYZ 150.705 740.998 null] +910 0 obj << +/D [908 0 R /XYZ 99.895 740.998 null] >> endobj 174 0 obj << -/D [902 0 R /XYZ 150.705 696.986 null] +/D [908 0 R /XYZ 99.895 696.986 null] >> endobj -905 0 obj << -/D [902 0 R /XYZ 318.451 432.072 null] +911 0 obj << +/D [908 0 R /XYZ 267.641 432.072 null] >> endobj -901 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F7 665 0 R /F30 664 0 R /F27 477 0 R >> +907 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F7 670 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -908 0 obj << -/Length 624 +915 0 obj << +/Length 625 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F27 9.9626 Tf 99.895 706.129 Td [(info)]TJ +/F27 9.9626 Tf 150.705 706.129 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ 0 g 0 G - 141.968 -567.87 Td [(33)]TJ + 141.968 -567.87 Td [(32)]TJ 0 g 0 G ET endstream endobj -907 0 obj << +914 0 obj << /Type /Page -/Contents 908 0 R -/Resources 906 0 R +/Contents 915 0 R +/Resources 913 0 R /MediaBox [0 0 595.276 841.89] -/Parent 897 0 R +/Parent 912 0 R >> endobj -909 0 obj << -/D [907 0 R /XYZ 99.895 740.998 null] +916 0 obj << +/D [914 0 R /XYZ 150.705 740.998 null] >> endobj -906 0 obj << -/Font << /F27 477 0 R /F8 478 0 R >> +913 0 obj << +/Font << /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -915 0 obj << -/Length 6695 +922 0 obj << +/Length 6709 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(genrm2)-375(|)-375(2-Norm)-375(of)-375(V)94(ector)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-333(function)-334(computes)-333(the)-333(2-norm)-334(of)-333(a)-333(v)28(ec)-1(tor)]TJ/F11 9.9626 Tf 207.168 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -212.862 -11.956 Td [(If)]TJ/F11 9.9626 Tf 9.963 0 Td [(x)]TJ/F8 9.9626 Tf 9.014 0 Td [(is)-333(a)-334(real)-333(v)28(ector)-334(it)-333(computes)-333(2-norm)-334(as:)]TJ/F11 9.9626 Tf 119.907 -22.668 Td [(nr)-28(m)]TJ/F8 9.9626 Tf 19.498 0 Td [(2)]TJ/F14 9.9626 Tf 7.749 0 Td [(\040)]TJ 12.73 9.34 Td [(p)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(genrm2)-375(|)-375(2-Norm)-375(of)-375(V)94(ector)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-333(function)-334(computes)-333(the)-333(2-norm)-334(of)-333(a)-333(v)27(ector)]TJ/F11 9.9626 Tf 207.168 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -212.862 -11.956 Td [(If)]TJ/F11 9.9626 Tf 9.963 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(a)-334(real)-333(v)28(ector)-334(it)-333(computes)-333(2-norm)-334(as:)]TJ/F11 9.9626 Tf 119.906 -22.668 Td [(nr)-28(m)]TJ/F8 9.9626 Tf 19.499 0 Td [(2)]TJ/F14 9.9626 Tf 7.749 0 Td [(\040)]TJ 12.73 9.34 Td [(p)]TJ ET q -1 0 0 1 337.868 662.655 cm +1 0 0 1 287.059 662.655 cm []0 d 0 J 0.398 w 0 0 m 17.664 0 l S Q BT -/F11 9.9626 Tf 337.868 653.116 Td [(x)]TJ/F10 6.9738 Tf 5.694 2.878 Td [(T)]TJ/F11 9.9626 Tf 6.276 -2.878 Td [(x)]TJ/F8 9.9626 Tf -199.133 -21.553 Td [(else)-333(if)]TJ/F11 9.9626 Tf 28.006 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(a)-334(complex)-333(v)28(ector)-334(then)-333(it)-333(computes)-334(2-norm)-333(as:)]TJ/F11 9.9626 Tf 101.222 -22.668 Td [(nr)-28(m)]TJ/F8 9.9626 Tf 19.499 0 Td [(2)]TJ/F14 9.9626 Tf 7.749 0 Td [(\040)]TJ 12.73 9.339 Td [(p)]TJ +/F11 9.9626 Tf 287.059 653.116 Td [(x)]TJ/F10 6.9738 Tf 5.694 2.878 Td [(T)]TJ/F11 9.9626 Tf 6.276 -2.878 Td [(x)]TJ/F8 9.9626 Tf -199.134 -21.553 Td [(else)-333(if)]TJ/F11 9.9626 Tf 28.006 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(a)-334(complex)-333(v)28(ector)-334(then)-333(it)-333(computes)-334(2-norm)-333(as:)]TJ/F11 9.9626 Tf 101.223 -22.668 Td [(nr)-28(m)]TJ/F8 9.9626 Tf 19.499 0 Td [(2)]TJ/F14 9.9626 Tf 7.748 0 Td [(\040)]TJ 12.73 9.339 Td [(p)]TJ ET q -1 0 0 1 337.228 618.433 cm +1 0 0 1 286.419 618.433 cm []0 d 0 J 0.398 w 0 0 m 18.944 0 l S Q BT -/F11 9.9626 Tf 337.228 608.895 Td [(x)]TJ/F10 6.9738 Tf 5.694 2.878 Td [(H)]TJ/F11 9.9626 Tf 7.556 -2.878 Td [(x)]TJ +/F11 9.9626 Tf 286.419 608.895 Td [(x)]TJ/F10 6.9738 Tf 5.694 2.878 Td [(H)]TJ/F11 9.9626 Tf 7.556 -2.878 Td [(x)]TJ 0 g 0 G 0 g 0 G 0 g 0 G ET q -1 0 0 1 180.294 587.063 cm +1 0 0 1 129.484 587.063 cm []0 d 0 J 0.398 w 0 0 m 284.534 0 l S Q BT -/F11 9.9626 Tf 186.271 578.495 Td [(nr)-28(m)]TJ/F8 9.9626 Tf 19.499 0 Td [(2)]TJ/F11 9.9626 Tf 81.954 0 Td [(x)]TJ/F27 9.9626 Tf 120.41 0 Td [(F)96(unction)]TJ +/F11 9.9626 Tf 135.462 578.495 Td [(nr)-28(m)]TJ/F8 9.9626 Tf 19.499 0 Td [(2)]TJ/F11 9.9626 Tf 81.954 0 Td [(x)]TJ/F27 9.9626 Tf 120.41 0 Td [(F)96(unction)]TJ ET q -1 0 0 1 180.294 574.709 cm +1 0 0 1 129.484 574.709 cm []0 d 0 J 0.398 w 0 0 m 284.534 0 l S Q BT -/F8 9.9626 Tf 186.271 566.141 Td [(Short)-333(Precision)-334(Real)-1200(Shor)1(t)-334(Precision)-333(Real)-3103(psb)]TJ +/F8 9.9626 Tf 135.462 566.141 Td [(Short)-333(Precision)-334(Real)-1200(Sh)1(ort)-334(Precision)-333(Real)-3103(psb)]TJ ET q -1 0 0 1 423.731 566.34 cm +1 0 0 1 372.922 566.34 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 426.72 566.141 Td [(genrm2)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Real)-3314(psb)]TJ +/F8 9.9626 Tf 375.911 566.141 Td [(genrm2)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Real)-3314(psb)]TJ ET q -1 0 0 1 423.731 554.385 cm +1 0 0 1 372.922 554.385 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 426.72 554.186 Td [(genrm2)]TJ -240.449 -11.955 Td [(Short)-333(Precision)-334(Real)-1200(Short)-333(Precision)-333(Complex)-1200(psb)]TJ +/F8 9.9626 Tf 375.911 554.186 Td [(genrm2)]TJ -240.449 -11.955 Td [(Short)-333(Precision)-334(Real)-1200(Sh)1(ort)-334(Precision)-333(Complex)-1200(psb)]TJ ET q -1 0 0 1 423.731 542.43 cm +1 0 0 1 372.922 542.43 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 426.72 542.231 Td [(genrm2)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Complex)-1412(psb)]TJ +/F8 9.9626 Tf 375.911 542.231 Td [(genrm2)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Complex)-1412(p)1(s)-1(b)]TJ ET q -1 0 0 1 423.731 530.475 cm +1 0 0 1 372.922 530.475 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 426.72 530.276 Td [(genrm2)]TJ +/F8 9.9626 Tf 375.911 530.276 Td [(genrm2)]TJ ET q -1 0 0 1 180.294 526.49 cm +1 0 0 1 129.484 526.49 cm []0 d 0 J 0.398 w 0 0 m 284.534 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 278.877 498.45 Td [(T)83(able)-333(8:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 228.067 498.45 Td [(T)83(able)-333(8:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -8270,195 +8254,195 @@ BT 0 g 0 G 0 -19.78 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-222(as:)-389(a)-222(rank)-222(one)-222(or)-223(t)28(w)28(o)-222(arra)28(y)-223(or)-222(an)-222(ob)-56(ject)-222(of)-222(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 240.681 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ ET q -1 0 0 1 432.611 354.641 cm +1 0 0 1 385.864 354.641 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 435.749 354.442 Td [(T)]TJ +/F30 9.9626 Tf 389.002 354.442 Td [(T)]TJ ET q -1 0 0 1 441.607 354.641 cm +1 0 0 1 394.86 354.641 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 444.746 354.442 Td [(vect)]TJ +/F30 9.9626 Tf 397.998 354.442 Td [(vect)]TJ ET q -1 0 0 1 466.295 354.641 cm +1 0 0 1 419.547 354.641 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 469.433 354.442 Td [(type)]TJ +/F30 9.9626 Tf 422.685 354.442 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(con)28(taining)]TJ -314.743 -11.956 Td [(n)28(um)28(b)-28(ers)-334(of)-333(t)28(yp)-28(e)-333(sp)-28(eci\014ed)-333(in)-334(T)84(able)]TJ +/F8 9.9626 Tf -297.883 -11.956 Td [(con)28(taining)-333(n)27(um)28(b)-28(ers)-333(of)-333(t)28(yp)-28(e)-334(sp)-27(eci\014ed)-334(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-334(8)]TJ + [-333(8)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -19.779 Td [(desc)]TJ +/F27 9.9626 Tf -24.907 -19.779 Td [(desc)]TJ ET q -1 0 0 1 172.619 322.906 cm +1 0 0 1 121.81 322.906 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 322.707 Td [(a)]TJ +/F27 9.9626 Tf 125.247 322.707 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(con)28(tains)-334(data)-333(structures)-333(for)-333(c)-1(omm)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(con)28(tains)-334(d)1(ata)-334(structures)-333(for)-333(com)-1(m)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 135.659 0 Td [(psb)]TJ +/F30 9.9626 Tf 135.658 0 Td [(psb)]TJ ET q -1 0 0 1 327.588 275.085 cm +1 0 0 1 276.779 275.085 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 330.727 274.886 Td [(desc)]TJ +/F30 9.9626 Tf 279.917 274.886 Td [(desc)]TJ ET q -1 0 0 1 352.275 275.085 cm +1 0 0 1 301.466 275.085 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 355.414 274.886 Td [(type)]TJ +/F30 9.9626 Tf 304.604 274.886 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -225.63 -19.779 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -225.631 -19.779 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.78 Td [(F)96(unction)-384(V)96(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 80.683 0 Td [(is)-333(the)-334(2-norm)-333(of)-333(sub)27(v)28(ector)]TJ/F11 9.9626 Tf 117.504 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -178.974 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(long)-333(precision)-333(real)-334(n)28(um)28(b)-28(er.)]TJ +/F8 9.9626 Tf 80.684 0 Td [(is)-333(the)-334(2-norm)-333(of)-333(sub)28(v)27(ector)]TJ/F11 9.9626 Tf 117.503 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -178.974 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(long)-333(precision)-333(real)-334(n)28(um)28(b)-28(er.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.779 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.034 -11.955 Td [(An)-333(in)28(teger)-334(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detected.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ 0 g 0 G - 141.967 -41.423 Td [(34)]TJ + 141.968 -41.423 Td [(33)]TJ 0 g 0 G ET endstream endobj -914 0 obj << +921 0 obj << /Type /Page -/Contents 915 0 R -/Resources 913 0 R +/Contents 922 0 R +/Resources 920 0 R /MediaBox [0 0 595.276 841.89] -/Parent 897 0 R -/Annots [ 910 0 R 911 0 R 912 0 R ] +/Parent 912 0 R +/Annots [ 917 0 R 918 0 R 919 0 R ] >> endobj -910 0 obj << +917 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [415.296 351.231 491.35 362.356] +/Rect [368.549 351.231 444.603 362.356] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -911 0 obj << +918 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [327.791 339.553 334.765 350.401] +/Rect [325.411 339.553 332.385 350.401] /Subtype /Link /A << /S /GoTo /D (table.8) >> >> endobj -912 0 obj << +919 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [310.273 271.676 377.331 282.801] +/Rect [259.464 271.676 326.522 282.801] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -916 0 obj << -/D [914 0 R /XYZ 150.705 740.998 null] +923 0 obj << +/D [921 0 R /XYZ 99.895 740.998 null] >> endobj 178 0 obj << -/D [914 0 R /XYZ 150.705 697.37 null] +/D [921 0 R /XYZ 99.895 697.37 null] >> endobj -917 0 obj << -/D [914 0 R /XYZ 318.451 510.406 null] +924 0 obj << +/D [921 0 R /XYZ 267.641 510.406 null] >> endobj -913 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F27 477 0 R /F30 664 0 R >> +920 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -923 0 obj << -/Length 6139 +930 0 obj << +/Length 6162 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(genrm2s)-375(|)-375(Generalized)-375(2-Norm)-375(of)-375(V)94(ector)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-310(subroutine)-310(computes)-309(a)-310(series)-310(of)-310(2-norms)-310(on)-310(the)-310(columns)-309(of)-310(a)-310(dense)-310(matrix)]TJ/F11 9.9626 Tf 0 -11.956 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(:)]TJ/F11 9.9626 Tf 126.531 -11.955 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.081 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F14 9.9626 Tf 6.642 0 Td [(\040)-278(k)]TJ/F11 9.9626 Tf 17.711 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\050:)]TJ/F11 9.9626 Tf 6.642 0 Td [(;)-167(i)]TJ/F8 9.9626 Tf 7.86 0 Td [(\051)]TJ/F14 9.9626 Tf 3.875 0 Td [(k)]TJ/F7 6.9738 Tf 4.981 -1.494 Td [(2)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(genrm2s)-375(|)-375(Generalized)-375(2-Norm)-375(of)-375(V)94(ector)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-310(subroutine)-310(computes)-309(a)-310(series)-310(of)-310(2-norms)-310(on)-310(the)-309(c)-1(olu)1(m)-1(n)1(s)-310(of)-310(a)-310(dense)-310(matrix)]TJ/F11 9.9626 Tf 0 -11.956 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(:)]TJ/F11 9.9626 Tf 126.531 -11.955 Td [(r)-28(es)]TJ/F8 9.9626 Tf 14.08 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F14 9.9626 Tf 6.642 0 Td [(\040)-278(k)]TJ/F11 9.9626 Tf 17.711 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\050:)]TJ/F11 9.9626 Tf 6.642 0 Td [(;)-167(i)]TJ/F8 9.9626 Tf 7.86 0 Td [(\051)]TJ/F14 9.9626 Tf 3.874 0 Td [(k)]TJ/F7 6.9738 Tf 4.981 -1.494 Td [(2)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -207.017 -20.424 Td [(call)-525(psb_genrm2s\050res,)-525(x,)-525(desc_a,)-525(info\051)]TJ +/F30 9.9626 Tf -207.016 -20.424 Td [(call)-525(psb_genrm2s\050res,)-525(x,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G ET q -1 0 0 1 127.261 617.58 cm +1 0 0 1 178.071 617.58 cm []0 d 0 J 0.398 w 0 0 m 288.979 0 l S Q BT -/F11 9.9626 Tf 133.239 609.013 Td [(r)-28(es)-8770(x)]TJ/F27 9.9626 Tf 221.863 0 Td [(Subroutine)]TJ +/F11 9.9626 Tf 184.049 609.013 Td [(r)-28(es)-8770(x)]TJ/F27 9.9626 Tf 221.862 0 Td [(Subroutine)]TJ ET q -1 0 0 1 127.261 605.227 cm +1 0 0 1 178.071 605.227 cm []0 d 0 J 0.398 w 0 0 m 288.979 0 l S Q BT -/F8 9.9626 Tf 133.239 596.659 Td [(Short)-333(Precision)-334(Real)-1200(Shor)1(t)-334(Precision)-333(Real)-3103(psb)]TJ +/F8 9.9626 Tf 184.049 596.659 Td [(Short)-333(Precision)-333(R)-1(eal)-1200(S)1(hort)-334(Precision)-333(Real)-3103(psb)]TJ ET q -1 0 0 1 370.699 596.858 cm +1 0 0 1 421.508 596.858 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 373.688 596.659 Td [(genrm2s)]TJ -240.449 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Real)-3314(psb)]TJ +/F8 9.9626 Tf 424.497 596.659 Td [(genrm2s)]TJ -240.448 -11.955 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Real)-3314(psb)]TJ ET q -1 0 0 1 370.699 584.903 cm +1 0 0 1 421.508 584.903 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 373.688 584.704 Td [(genrm2s)]TJ -240.449 -11.955 Td [(Short)-333(Precision)-334(Real)-1200(Shor)1(t)-334(Precision)-333(Complex)-1200(psb)]TJ +/F8 9.9626 Tf 424.497 584.704 Td [(genrm2s)]TJ -240.448 -11.955 Td [(Short)-333(Precision)-333(R)-1(eal)-1200(S)1(hort)-334(Precision)-333(Complex)-1200(psb)]TJ ET q -1 0 0 1 370.699 572.948 cm +1 0 0 1 421.508 572.948 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 373.688 572.749 Td [(genrm2s)]TJ -240.449 -11.956 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Complex)-1412(psb)]TJ +/F8 9.9626 Tf 424.497 572.749 Td [(genrm2s)]TJ -240.448 -11.956 Td [(Long)-333(Precision)-334(Real)-1411(Long)-333(Precision)-333(Complex)-1412(p)1(s)-1(b)]TJ ET q -1 0 0 1 370.699 560.993 cm +1 0 0 1 421.508 560.993 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 373.688 560.793 Td [(genrm2s)]TJ +/F8 9.9626 Tf 424.497 560.793 Td [(genrm2s)]TJ ET q -1 0 0 1 127.261 557.008 cm +1 0 0 1 178.071 557.008 cm []0 d 0 J 0.398 w 0 0 m 288.979 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 228.067 528.968 Td [(T)83(able)-333(9:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 278.877 528.968 Td [(T)83(able)-333(9:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -8471,135 +8455,322 @@ BT 0 g 0 G 0 -19.926 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-222(as:)-389(a)-222(rank)-222(one)-222(or)-223(t)28(w)28(o)-222(arra)27(y)-222(or)-222(an)-222(ob)-56(ject)-222(of)-222(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)28(o)-255(arra)28(y)-255(or)-255(an)-255(ob)-55(ject)-255(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 240.681 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.742 0 Td [(psb)]TJ ET q -1 0 0 1 381.802 407.9 cm +1 0 0 1 436.673 407.9 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 384.94 407.701 Td [(T)]TJ +/F30 9.9626 Tf 439.811 407.701 Td [(T)]TJ ET q -1 0 0 1 390.798 407.9 cm +1 0 0 1 445.669 407.9 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 393.936 407.701 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 407.701 Td [(vect)]TJ ET q -1 0 0 1 415.485 407.9 cm +1 0 0 1 470.356 407.9 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 418.623 407.701 Td [(type)]TJ +/F30 9.9626 Tf 473.495 407.701 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(con)28(taining)]TJ -314.743 -11.955 Td [(n)28(um)28(b)-28(ers)-334(of)-333(t)28(yp)-28(e)-333(sp)-28(eci\014ed)-333(in)-334(T)84(able)]TJ +/F8 9.9626 Tf -297.884 -11.955 Td [(con)28(taining)-333(n)27(um)28(b)-28(ers)-333(of)-333(t)27(yp)-27(e)-334(sp)-27(ec)-1(i)1(\014ed)-334(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-334(9)]TJ + [-333(9)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.926 Td [(desc)]TJ +/F27 9.9626 Tf -24.906 -19.926 Td [(desc)]TJ ET q -1 0 0 1 121.81 376.02 cm +1 0 0 1 172.619 376.02 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 375.82 Td [(a)]TJ +/F27 9.9626 Tf 176.057 375.82 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(con)28(tains)-334(d)1(ata)-334(structures)-333(for)-333(com)-1(m)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(con)28(tains)-334(data)-333(structures)-333(for)-333(c)-1(omm)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 135.658 0 Td [(psb)]TJ +/F30 9.9626 Tf 135.659 0 Td [(psb)]TJ ET q -1 0 0 1 276.779 328.199 cm +1 0 0 1 327.588 328.199 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 279.917 328 Td [(desc)]TJ +/F30 9.9626 Tf 330.727 328 Td [(desc)]TJ ET q -1 0 0 1 301.466 328.199 cm +1 0 0 1 352.275 328.199 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 304.604 328 Td [(type)]TJ +/F30 9.9626 Tf 355.414 328 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -225.631 -19.926 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -225.63 -19.926 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(res)]TJ 0 g 0 G -/F8 9.9626 Tf 19.47 0 Td [(con)28(tains)-334(the)-333(1-norm)-333(of)-334(\050th)1(e)-334(columns)-333(of)-78(\051)]TJ/F11 9.9626 Tf 177.751 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -178.008 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(long)-333(precision)-333(real)-334(n)28(um)28(b)-28(er.)]TJ +/F8 9.9626 Tf 19.47 0 Td [(con)28(tains)-334(th)1(e)-334(1-norm)-333(of)-333(\050the)-334(columns)-333(of)-78(\051)]TJ/F11 9.9626 Tf 177.75 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -178.008 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(long)-333(precision)-334(r)1(e)-1(al)-333(n)28(um)28(b)-28(er.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.926 Td [(info)]TJ +/F27 9.9626 Tf -24.906 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(te)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ 0 g 0 G - 141.968 -94.1 Td [(35)]TJ + 141.968 -94.1 Td [(34)]TJ 0 g 0 G ET endstream endobj -922 0 obj << +929 0 obj << /Type /Page -/Contents 923 0 R -/Resources 921 0 R +/Contents 930 0 R +/Resources 928 0 R /MediaBox [0 0 595.276 841.89] -/Parent 897 0 R -/Annots [ 918 0 R 919 0 R 920 0 R ] +/Parent 912 0 R +/Annots [ 925 0 R 926 0 R 927 0 R ] >> endobj -918 0 obj << +925 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [364.487 404.491 440.541 415.616] +/Rect [419.358 404.491 495.412 415.616] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -919 0 obj << +926 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [276.982 392.812 283.955 403.66] +/Rect [376.221 392.812 383.195 403.66] /Subtype /Link /A << /S /GoTo /D (table.9) >> >> endobj -920 0 obj << +927 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [259.464 324.789 326.522 335.914] +/Rect [310.273 324.789 377.331 335.914] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -924 0 obj << -/D [922 0 R /XYZ 99.895 740.998 null] +931 0 obj << +/D [929 0 R /XYZ 150.705 740.998 null] >> endobj 182 0 obj << -/D [922 0 R /XYZ 99.895 697.37 null] +/D [929 0 R /XYZ 150.705 697.37 null] >> endobj -925 0 obj << -/D [922 0 R /XYZ 267.641 540.923 null] +932 0 obj << +/D [929 0 R /XYZ 318.451 540.923 null] >> endobj -921 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F7 665 0 R /F30 664 0 R /F27 477 0 R >> +928 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F7 670 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -930 0 obj << -/Length 5462 +937 0 obj << +/Length 5455 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 4.035 0 l S +Q +BT +/F16 11.9552 Tf 124.986 706.129 Td [(spnrm1)-375(|)-375(1-Norm)-375(of)-375(Sparse)-375(Matrix)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-333(function)-334(computes)-333(the)-333(1-norm)-334(of)-333(a)-333(matrix)]TJ/F11 9.9626 Tf 209.659 0 Td [(A)]TJ/F8 9.9626 Tf 7.472 0 Td [(:)]TJ/F11 9.9626 Tf -76.216 -33.873 Td [(nr)-28(m)]TJ/F8 9.9626 Tf 19.499 0 Td [(1)]TJ/F14 9.9626 Tf 7.749 0 Td [(\040)-278(k)]TJ/F11 9.9626 Tf 17.711 0 Td [(A)]TJ/F14 9.9626 Tf 7.472 0 Td [(k)]TJ/F7 6.9738 Tf 4.981 -1.495 Td [(1)]TJ/F8 9.9626 Tf -198.327 -20.423 Td [(where:)]TJ +0 g 0 G +/F11 9.9626 Tf 0 -19.926 Td [(A)]TJ +0 g 0 G +/F8 9.9626 Tf 12.454 0 Td [(represen)28(ts)-334(the)-333(global)-333(matrix)]TJ/F11 9.9626 Tf 125.834 0 Td [(A)]TJ +0 g 0 G +0 g 0 G +0 g 0 G +ET +q +1 0 0 1 180.183 589.962 cm +[]0 d 0 J 0.398 w 0 0 m 183.136 0 l S +Q +BT +/F11 9.9626 Tf 186.161 581.394 Td [(A)]TJ/F27 9.9626 Tf 120.409 0 Td [(F)96(unction)]TJ +ET +q +1 0 0 1 180.183 577.608 cm +[]0 d 0 J 0.398 w 0 0 m 183.136 0 l S +Q +BT +/F8 9.9626 Tf 186.161 569.04 Td [(Short)-333(Precision)-334(Real)-3102(psb)]TJ +ET +q +1 0 0 1 322.167 569.24 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F8 9.9626 Tf 325.156 569.04 Td [(spnrm1)]TJ -138.995 -11.955 Td [(Long)-333(Precision)-334(Real)-3314(p)1(s)-1(b)]TJ +ET +q +1 0 0 1 322.167 557.284 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F8 9.9626 Tf 325.156 557.085 Td [(spnrm1)]TJ -138.995 -11.955 Td [(Short)-333(Precision)-334(Complex)-1200(psb)]TJ +ET +q +1 0 0 1 322.167 545.329 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F8 9.9626 Tf 325.156 545.13 Td [(spnrm1)]TJ -138.995 -11.955 Td [(Long)-333(Precision)-334(Complex)-1411(psb)]TJ +ET +q +1 0 0 1 322.167 533.374 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F8 9.9626 Tf 325.156 533.175 Td [(spnrm1)]TJ +ET +q +1 0 0 1 180.183 529.389 cm +[]0 d 0 J 0.398 w 0 0 m 183.136 0 l S +Q +0 g 0 G +BT +/F8 9.9626 Tf 225.577 501.35 Td [(T)83(able)-333(10:)-444(Data)-334(t)28(yp)-28(es)]TJ +0 g 0 G +0 g 0 G +0 g 0 G +0 g 0 G +/F30 9.9626 Tf -125.682 -33.873 Td [(psb_spnrm1\050A,)-525(desc_a,)-525(info\051)]TJ +0 g 0 G +/F27 9.9626 Tf 0 -21.918 Td [(T)32(yp)-32(e:)]TJ +0 g 0 G +/F8 9.9626 Tf 33.797 0 Td [(Sync)28(hronous.)]TJ +0 g 0 G +/F27 9.9626 Tf -33.797 -19.925 Td [(On)-383(En)32(try)]TJ +0 g 0 G +0 g 0 G + 0 -19.926 Td [(a)]TJ +0 g 0 G +/F8 9.9626 Tf 10.551 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(the)-333(global)-333(sparse)-334(matrix)]TJ/F11 9.9626 Tf 196.126 0 Td [(A)]TJ/F8 9.9626 Tf 7.472 0 Td [(.)]TJ -189.242 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 135.658 0 Td [(psb)]TJ +ET +q +1 0 0 1 276.779 358.087 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 279.917 357.888 Td [(Tspmat)]TJ +ET +q +1 0 0 1 311.927 358.087 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 315.065 357.888 Td [(type)]TJ +0 g 0 G +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F27 9.9626 Tf -236.091 -19.926 Td [(desc)]TJ +ET +q +1 0 0 1 121.81 338.162 cm +[]0 d 0 J 0.398 w 0 0 m 3.437 0 l S +Q +BT +/F27 9.9626 Tf 125.247 337.962 Td [(a)]TJ +0 g 0 G +/F8 9.9626 Tf 10.551 0 Td [(con)28(tains)-334(d)1(ata)-334(structures)-333(for)-333(com)-1(m)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 135.658 0 Td [(psb)]TJ +ET +q +1 0 0 1 276.779 290.341 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 279.917 290.142 Td [(desc)]TJ +ET +q +1 0 0 1 301.466 290.341 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 304.604 290.142 Td [(type)]TJ +0 g 0 G +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F27 9.9626 Tf -225.631 -19.926 Td [(On)-383(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.925 Td [(F)96(unction)-384(v)64(alue)]TJ +0 g 0 G +/F8 9.9626 Tf 78.387 0 Td [(is)-333(the)-334(1-norm)-333(of)-333(sparse)-334(submatrix)]TJ/F11 9.9626 Tf 150.297 0 Td [(A)]TJ/F8 9.9626 Tf 7.472 0 Td [(.)]TJ -211.249 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(long)-333(precision)-333(real)-334(n)28(um)28(b)-28(er.)]TJ +0 g 0 G +/F27 9.9626 Tf -24.907 -19.926 Td [(info)]TJ +0 g 0 G +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +0 g 0 G + 141.968 -68.197 Td [(35)]TJ +0 g 0 G +ET +endstream +endobj +936 0 obj << +/Type /Page +/Contents 937 0 R +/Resources 935 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 912 0 R +/Annots [ 933 0 R 934 0 R ] +>> endobj +933 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [259.464 354.677 336.983 365.802] +/Subtype /Link +/A << /S /GoTo /D (spdata) >> +>> endobj +934 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [259.464 286.931 326.522 298.056] +/Subtype /Link +/A << /S /GoTo /D (descdata) >> +>> endobj +938 0 obj << +/D [936 0 R /XYZ 99.895 740.998 null] +>> endobj +186 0 obj << +/D [936 0 R /XYZ 99.895 697.37 null] +>> endobj +939 0 obj << +/D [936 0 R /XYZ 270.132 513.305 null] +>> endobj +935 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F7 670 0 R /F27 481 0 R /F30 669 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +944 0 obj << +/Length 5462 +>> +stream +0 g 0 G +0 g 0 G +BT +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +ET +q +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT @@ -8660,7 +8831,7 @@ q Q 0 g 0 G BT -/F8 9.9626 Tf 276.386 501.35 Td [(T)83(able)-333(10:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 276.386 501.35 Td [(T)83(able)-333(11:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -8741,43 +8912,43 @@ BT ET endstream endobj -929 0 obj << +943 0 obj << /Type /Page -/Contents 930 0 R -/Resources 928 0 R +/Contents 944 0 R +/Resources 942 0 R /MediaBox [0 0 595.276 841.89] -/Parent 897 0 R -/Annots [ 926 0 R 927 0 R ] +/Parent 912 0 R +/Annots [ 940 0 R 941 0 R ] >> endobj -926 0 obj << +940 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.273 354.677 387.792 365.802] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -927 0 obj << +941 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.273 286.931 377.331 298.056] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -931 0 obj << -/D [929 0 R /XYZ 150.705 740.998 null] +945 0 obj << +/D [943 0 R /XYZ 150.705 740.998 null] >> endobj -186 0 obj << -/D [929 0 R /XYZ 150.705 697.37 null] +190 0 obj << +/D [943 0 R /XYZ 150.705 697.37 null] >> endobj -933 0 obj << -/D [929 0 R /XYZ 320.941 513.305 null] +947 0 obj << +/D [943 0 R /XYZ 320.941 513.305 null] >> endobj -928 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F13 932 0 R /F27 477 0 R /F30 664 0 R >> +942 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F13 946 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -941 0 obj << -/Length 7326 +955 0 obj << +/Length 7328 >> stream 0 g 0 G @@ -8867,7 +9038,7 @@ q Q 0 g 0 G BT -/F8 9.9626 Tf 225.577 443.603 Td [(T)83(able)-333(11:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 225.577 443.603 Td [(T)83(able)-333(12:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -8885,7 +9056,7 @@ BT 0 g 0 G /F8 9.9626 Tf 32.033 0 Td [(the)-333(scalar)]TJ/F11 9.9626 Tf 45.468 0 Td [(\013)]TJ/F8 9.9626 Tf 6.41 0 Td [(.)]TJ -59.004 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(n)28(um)28(b)-28(er)-333(of)-334(the)-333(data)-333(t)28(yp)-28(e)-334(ind)1(ic)-1(ated)-333(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-333(11)]TJ + [-333(12)]TJ 0 g 0 G [(.)]TJ 0 g 0 G @@ -8913,102 +9084,102 @@ BT 0 g 0 G /F27 9.9626 Tf -236.091 -19.575 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-222(as:)-389(a)-222(rank)-222(one)-222(or)-223(t)28(w)28(o)-222(arra)27(y)-222(or)-222(an)-222(ob)-56(ject)-222(of)-222(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.933 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 240.681 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ ET q -1 0 0 1 381.802 144.435 cm +1 0 0 1 385.864 144.435 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 384.94 144.236 Td [(T)]TJ +/F30 9.9626 Tf 389.002 144.236 Td [(T)]TJ ET q -1 0 0 1 390.798 144.435 cm +1 0 0 1 394.86 144.435 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 393.936 144.236 Td [(vect)]TJ +/F30 9.9626 Tf 397.998 144.236 Td [(vect)]TJ ET q -1 0 0 1 415.485 144.435 cm +1 0 0 1 419.547 144.435 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 418.623 144.236 Td [(type)]TJ +/F30 9.9626 Tf 422.685 144.236 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(con)28(taining)]TJ -314.743 -11.955 Td [(n)28(um)28(b)-28(ers)-307(of)-307(t)28(yp)-28(e)-307(sp)-28(eci\014ed)-307(in)-307(T)83(able)]TJ +/F8 9.9626 Tf -297.883 -11.955 Td [(con)28(taining)-342(n)28(um)28(b)-28(ers)-342(of)-342(t)28(yp)-28(e)-342(sp)-28(eci\014ed)-342(in)-341(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-307(11)]TJ + [-342(12)]TJ 0 g 0 G - [(.)-435(The)-307(rank)-307(of)]TJ/F11 9.9626 Tf 222.709 0 Td [(x)]TJ/F8 9.9626 Tf 8.753 0 Td [(m)28(ust)-307(b)-28(e)-307(the)-307(same)-307(of)]TJ/F11 9.9626 Tf -231.462 -11.955 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ + [(.)-470(The)-342(rank)-342(of)]TJ/F11 9.9626 Tf 274.694 0 Td [(x)]TJ/F8 9.9626 Tf 9.101 0 Td [(m)28(ust)-342(b)-28(e)]TJ -283.795 -11.955 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.466 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ 0 g 0 G - 136.726 -29.888 Td [(37)]TJ + 83.26 -29.888 Td [(37)]TJ 0 g 0 G ET endstream endobj -940 0 obj << +954 0 obj << /Type /Page -/Contents 941 0 R -/Resources 939 0 R +/Contents 955 0 R +/Resources 953 0 R /MediaBox [0 0 595.276 841.89] -/Parent 947 0 R -/Annots [ 934 0 R 935 0 R 936 0 R 937 0 R ] +/Parent 961 0 R +/Annots [ 948 0 R 949 0 R 950 0 R 951 0 R ] >> endobj -934 0 obj << +948 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [382.088 276.095 394.043 286.943] /Subtype /Link -/A << /S /GoTo /D (table.11) >> +/A << /S /GoTo /D (table.12) >> >> endobj -935 0 obj << +949 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [259.464 208.422 336.983 219.547] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -936 0 obj << +950 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [364.487 141.026 440.541 152.151] +/Rect [368.549 141.026 444.603 152.151] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -937 0 obj << +951 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [275.409 129.347 287.364 140.196] +/Rect [326.008 129.347 337.963 140.196] /Subtype /Link -/A << /S /GoTo /D (table.11) >> +/A << /S /GoTo /D (table.12) >> >> endobj -942 0 obj << -/D [940 0 R /XYZ 99.895 740.998 null] +956 0 obj << +/D [954 0 R /XYZ 99.895 740.998 null] >> endobj -190 0 obj << -/D [940 0 R /XYZ 99.895 697.37 null] +194 0 obj << +/D [954 0 R /XYZ 99.895 697.37 null] >> endobj -943 0 obj << -/D [940 0 R /XYZ 239.804 675.784 null] +957 0 obj << +/D [954 0 R /XYZ 239.804 675.784 null] >> endobj -944 0 obj << -/D [940 0 R /XYZ 236.666 658.376 null] +958 0 obj << +/D [954 0 R /XYZ 236.666 658.376 null] >> endobj -945 0 obj << -/D [940 0 R /XYZ 236.025 640.968 null] +959 0 obj << +/D [954 0 R /XYZ 236.025 640.968 null] >> endobj -946 0 obj << -/D [940 0 R /XYZ 270.132 455.558 null] +960 0 obj << +/D [954 0 R /XYZ 270.132 455.558 null] >> endobj -939 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F7 665 0 R /F27 477 0 R /F30 664 0 R >> +953 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F7 670 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -957 0 obj << -/Length 6966 +971 0 obj << +/Length 6975 >> stream 0 g 0 G @@ -9019,44 +9190,44 @@ BT 0 g 0 G /F8 9.9626 Tf 26.94 0 Td [(the)-333(scalar)]TJ/F11 9.9626 Tf 45.469 0 Td [(\014)]TJ/F8 9.9626 Tf 6.161 0 Td [(.)]TJ -53.664 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(n)28(um)28(b)-28(er)-333(of)-334(the)-333(data)-333(t)27(yp)-27(e)-334(indicated)-333(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-333(11)]TJ + [-333(12)]TJ 0 g 0 G [(.)]TJ 0 g 0 G /F27 9.9626 Tf -24.906 -18.453 Td [(y)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -167.482 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-222(as:)-389(a)-222(rank)-222(one)-223(or)-222(t)28(w)28(o)-222(arra)27(y)-222(or)-222(an)-222(ob)-56(ject)-222(of)-222(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -167.482 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-56(j)1(e)-1(ct)-254(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 240.682 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ ET q -1 0 0 1 432.611 592.233 cm +1 0 0 1 436.673 592.233 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 435.749 592.034 Td [(T)]TJ +/F30 9.9626 Tf 439.811 592.034 Td [(T)]TJ ET q -1 0 0 1 441.607 592.233 cm +1 0 0 1 445.669 592.233 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 444.746 592.034 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 592.034 Td [(vect)]TJ ET q -1 0 0 1 466.295 592.233 cm +1 0 0 1 470.356 592.233 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 469.433 592.034 Td [(type)]TJ +/F30 9.9626 Tf 473.495 592.034 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(con)28(taining)]TJ -314.743 -11.955 Td [(n)28(um)28(b)-28(ers)-310(of)-311(t)28(yp)-28(e)-310(sp)-28(eci\014ed)-310(in)-310(T)83(able)]TJ +/F8 9.9626 Tf -297.884 -11.955 Td [(con)28(taining)-345(n)28(um)28(b)-28(ers)-345(of)-345(t)28(yp)-28(e)-345(sp)-28(eci\014ed)-345(in)-345(T)84(able)]TJ 0 0 1 rg 0 0 1 RG - [-310(11)]TJ + [-345(12)]TJ 0 g 0 G - [(.)-436(The)-311(rank)-310(of)]TJ/F11 9.9626 Tf 223.004 0 Td [(y)]TJ/F8 9.9626 Tf 8.332 0 Td [(m)28(ust)-310(b)-28(e)-310(the)-311(same)-310(of)]TJ/F11 9.9626 Tf -231.336 -11.955 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ + [(.)-479(The)-345(rank)-345(of)]TJ/F11 9.9626 Tf 275.087 0 Td [(y)]TJ/F8 9.9626 Tf 8.678 0 Td [(m)28(ust)-345(b)-28(e)]TJ -283.765 -11.955 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.467 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -30.6 -18.454 Td [(desc)]TJ +/F27 9.9626 Tf -84.067 -18.454 Td [(desc)]TJ ET q 1 0 0 1 172.619 549.87 cm @@ -9122,7 +9293,7 @@ BT 0 g 0 G /F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(result)-333(matrix)]TJ/F11 9.9626 Tf 147.364 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -138.728 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-474(as:)-727(an)-475(arra)28(y)-475(of)-474(rank)-475(one)-474(or)-475(t)28(w)28(o)-475(con)28(taining)-474(n)27(um)28(b)-28(ers)-474(of)-475(t)28(yp)-28(e)]TJ 0 -11.955 Td [(sp)-28(eci\014ed)-333(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-333(11)]TJ + [-333(12)]TJ 0 g 0 G [(.)]TJ 0 g 0 G @@ -9135,78 +9306,78 @@ BT ET endstream endobj -956 0 obj << +970 0 obj << /Type /Page -/Contents 957 0 R -/Resources 955 0 R +/Contents 971 0 R +/Resources 969 0 R /MediaBox [0 0 595.276 841.89] -/Parent 947 0 R -/Annots [ 938 0 R 948 0 R 949 0 R 950 0 R 951 0 R 952 0 R 953 0 R 954 0 R ] +/Parent 961 0 R +/Annots [ 952 0 R 962 0 R 963 0 R 964 0 R 965 0 R 966 0 R 967 0 R 968 0 R ] >> endobj -938 0 obj << +952 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [432.897 655.375 444.852 666.223] /Subtype /Link -/A << /S /GoTo /D (table.11) >> +/A << /S /GoTo /D (table.12) >> >> endobj -948 0 obj << +962 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [415.296 588.824 491.35 599.949] +/Rect [419.358 588.824 495.412 599.949] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -949 0 obj << +963 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [326.407 577.145 338.363 587.994] +/Rect [377.029 577.145 388.984 587.994] /Subtype /Link -/A << /S /GoTo /D (table.11) >> +/A << /S /GoTo /D (table.12) >> >> endobj -950 0 obj << +964 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.273 498.639 377.331 509.764] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -951 0 obj << +965 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.199 462.009 404.172 472.858] /Subtype /Link /A << /S /GoTo /D (equation.1) >> >> endobj -952 0 obj << +966 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [396.202 447.541 403.176 458.389] /Subtype /Link /A << /S /GoTo /D (equation.2) >> >> endobj -953 0 obj << +967 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [396.507 433.073 403.481 443.921] /Subtype /Link /A << /S /GoTo /D (equation.3) >> >> endobj -954 0 obj << +968 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [253.818 191.887 265.774 202.735] /Subtype /Link -/A << /S /GoTo /D (table.11) >> +/A << /S /GoTo /D (table.12) >> >> endobj -958 0 obj << -/D [956 0 R /XYZ 150.705 740.998 null] +972 0 obj << +/D [970 0 R /XYZ 150.705 740.998 null] >> endobj -955 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F11 649 0 R /F30 664 0 R >> +969 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F11 654 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -963 0 obj << +977 0 obj << /Length 6787 >> stream @@ -9292,7 +9463,7 @@ q Q 0 g 0 G BT -/F8 9.9626 Tf 225.577 246.522 Td [(T)83(able)-333(12:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 225.577 246.522 Td [(T)83(able)-333(13:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -9307,7 +9478,7 @@ BT 0 g 0 G /F8 9.9626 Tf 32.033 0 Td [(the)-333(scalar)]TJ/F11 9.9626 Tf 45.468 0 Td [(\013)]TJ/F8 9.9626 Tf 6.41 0 Td [(.)]TJ -59.004 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(n)28(um)28(b)-28(er)-333(of)-334(the)-333(data)-333(t)28(yp)-28(e)-334(ind)1(ic)-1(ated)-333(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-333(12)]TJ + [-333(13)]TJ 0 g 0 G [(.)]TJ 0 g 0 G @@ -9316,36 +9487,36 @@ BT ET endstream endobj -962 0 obj << +976 0 obj << /Type /Page -/Contents 963 0 R -/Resources 961 0 R +/Contents 977 0 R +/Resources 975 0 R /MediaBox [0 0 595.276 841.89] -/Parent 947 0 R -/Annots [ 959 0 R ] +/Parent 961 0 R +/Annots [ 973 0 R ] >> endobj -959 0 obj << +973 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [382.088 117.392 394.043 128.24] /Subtype /Link -/A << /S /GoTo /D (table.12) >> +/A << /S /GoTo /D (table.13) >> >> endobj -964 0 obj << -/D [962 0 R /XYZ 99.895 740.998 null] +978 0 obj << +/D [976 0 R /XYZ 99.895 740.998 null] >> endobj -194 0 obj << -/D [962 0 R /XYZ 99.895 697.044 null] +198 0 obj << +/D [976 0 R /XYZ 99.895 697.044 null] >> endobj -965 0 obj << -/D [962 0 R /XYZ 270.132 258.477 null] +979 0 obj << +/D [976 0 R /XYZ 270.132 258.477 null] >> endobj -961 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F13 932 0 R /F7 665 0 R /F10 666 0 R /F30 664 0 R /F27 477 0 R >> +975 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F13 946 0 R /F7 670 0 R /F10 671 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -974 0 obj << -/Length 7781 +988 0 obj << +/Length 7789 >> stream 0 g 0 G @@ -9362,79 +9533,79 @@ BT 0 g 0 G /F27 9.9626 Tf -208.773 -20.65 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.934 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-222(as:)-389(a)-222(rank)-222(one)-223(or)-222(t)28(w)28(o)-222(arra)27(y)-222(or)-222(an)-222(ob)-56(ject)-222(of)-222(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -167.934 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-56(j)1(e)-1(ct)-254(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 240.682 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ ET q -1 0 0 1 432.611 590.037 cm +1 0 0 1 436.673 590.037 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 435.749 589.838 Td [(T)]TJ +/F30 9.9626 Tf 439.811 589.838 Td [(T)]TJ ET q -1 0 0 1 441.607 590.037 cm +1 0 0 1 445.669 590.037 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 444.746 589.838 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 589.838 Td [(vect)]TJ ET q -1 0 0 1 466.295 590.037 cm +1 0 0 1 470.356 590.037 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 469.433 589.838 Td [(type)]TJ +/F30 9.9626 Tf 473.495 589.838 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(con)28(taining)]TJ -314.743 -11.955 Td [(n)28(um)28(b)-28(ers)-307(of)-307(t)28(yp)-28(e)-307(sp)-28(eci\014ed)-307(in)-307(T)83(able)]TJ +/F8 9.9626 Tf -297.884 -11.955 Td [(con)28(taining)-342(n)28(um)28(b)-28(ers)-342(of)-342(t)28(yp)-28(e)-342(sp)-28(eci\014ed)-342(in)-341(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-307(12)]TJ + [-342(13)]TJ 0 g 0 G - [(.)-435(The)-307(rank)-307(of)]TJ/F11 9.9626 Tf 222.71 0 Td [(x)]TJ/F8 9.9626 Tf 8.753 0 Td [(m)28(ust)-307(b)-28(e)-307(the)-307(same)-307(of)]TJ/F11 9.9626 Tf -231.463 -11.956 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ + [(.)-470(The)-342(rank)-342(of)]TJ/F11 9.9626 Tf 274.695 0 Td [(x)]TJ/F8 9.9626 Tf 9.1 0 Td [(m)28(ust)-342(b)-28(e)]TJ -283.795 -11.956 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.467 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -30.148 -20.649 Td [(b)-32(eta)]TJ +/F27 9.9626 Tf -83.615 -20.649 Td [(b)-32(eta)]TJ 0 g 0 G /F8 9.9626 Tf 26.94 0 Td [(the)-333(scalar)]TJ/F11 9.9626 Tf 45.469 0 Td [(\014)]TJ/F8 9.9626 Tf 6.161 0 Td [(.)]TJ -53.663 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(n)28(um)28(b)-28(er)-333(of)-334(the)-333(data)-333(t)28(yp)-28(e)-334(in)1(dicate)-1(d)-333(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-333(12)]TJ + [-333(13)]TJ 0 g 0 G [(.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -20.65 Td [(y)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -167.481 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-222(as:)-389(a)-222(rank)-222(one)-222(or)-223(t)28(w)28(o)-222(arra)28(y)-223(or)-222(an)-222(ob)-56(ject)-222(of)-222(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -167.481 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)28(o)-255(arra)28(y)-255(or)-255(an)-255(ob)-55(ject)-255(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 240.681 0 Td [(psb)]TJ +/F30 9.9626 Tf 244.742 0 Td [(psb)]TJ ET q -1 0 0 1 432.611 429.186 cm +1 0 0 1 436.673 429.186 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 435.749 428.986 Td [(T)]TJ +/F30 9.9626 Tf 439.811 428.986 Td [(T)]TJ ET q -1 0 0 1 441.607 429.186 cm +1 0 0 1 445.669 429.186 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 444.746 428.986 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 428.986 Td [(vect)]TJ ET q -1 0 0 1 466.295 429.186 cm +1 0 0 1 470.356 429.186 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 469.433 428.986 Td [(type)]TJ +/F30 9.9626 Tf 473.495 428.986 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(con)28(taining)]TJ -314.743 -11.955 Td [(n)28(um)28(b)-28(ers)-310(of)-311(t)28(yp)-28(e)-310(sp)-28(eci\014ed)-310(in)-310(T)83(able)]TJ +/F8 9.9626 Tf -297.884 -11.955 Td [(con)28(taining)-345(n)28(um)28(b)-28(ers)-345(of)-345(t)28(yp)-28(e)-345(sp)-28(eci\014ed)-345(in)-345(T)84(able)]TJ 0 0 1 rg 0 0 1 RG - [-310(12)]TJ + [-345(13)]TJ 0 g 0 G - [(.)-436(The)-311(rank)-310(of)]TJ/F11 9.9626 Tf 223.004 0 Td [(y)]TJ/F8 9.9626 Tf 8.332 0 Td [(m)28(ust)-310(b)-28(e)-310(the)-311(same)-310(of)]TJ/F11 9.9626 Tf -231.336 -11.955 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ + [(.)-479(The)-345(rank)-345(of)]TJ/F11 9.9626 Tf 275.087 0 Td [(y)]TJ/F8 9.9626 Tf 8.678 0 Td [(m)28(ust)-345(b)-28(e)]TJ -283.765 -11.955 Td [(the)-333(same)-334(of)]TJ/F11 9.9626 Tf 53.467 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -30.6 -20.65 Td [(desc)]TJ +/F27 9.9626 Tf -84.067 -20.65 Td [(desc)]TJ ET q 1 0 0 1 172.619 384.625 cm @@ -9500,71 +9671,71 @@ BT ET endstream endobj -973 0 obj << +987 0 obj << /Type /Page -/Contents 974 0 R -/Resources 972 0 R +/Contents 988 0 R +/Resources 986 0 R /MediaBox [0 0 595.276 841.89] -/Parent 947 0 R -/Annots [ 960 0 R 966 0 R 967 0 R 968 0 R 969 0 R 970 0 R 971 0 R ] +/Parent 961 0 R +/Annots [ 974 0 R 980 0 R 981 0 R 982 0 R 983 0 R 984 0 R 985 0 R ] >> endobj -960 0 obj << +974 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [358.482 655.375 365.455 666.223] /Subtype /Link /A << /S /GoTo /D (section.3) >> >> endobj -966 0 obj << +980 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [415.296 586.627 491.35 597.752] +/Rect [419.358 586.627 495.412 597.752] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -967 0 obj << +981 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [326.218 574.949 338.173 585.797] +/Rect [376.818 574.949 388.773 585.797] /Subtype /Link -/A << /S /GoTo /D (table.12) >> +/A << /S /GoTo /D (table.13) >> >> endobj -968 0 obj << +982 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [432.897 494.523 444.852 505.372] /Subtype /Link -/A << /S /GoTo /D (table.12) >> +/A << /S /GoTo /D (table.13) >> >> endobj -969 0 obj << +983 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [415.296 425.776 491.35 436.901] +/Rect [419.358 425.776 495.412 436.901] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -970 0 obj << +984 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [326.407 414.098 338.363 424.946] +/Rect [377.029 414.098 388.984 424.946] /Subtype /Link -/A << /S /GoTo /D (table.12) >> +/A << /S /GoTo /D (table.13) >> >> endobj -971 0 obj << +985 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.273 333.395 377.331 344.52] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -975 0 obj << -/D [973 0 R /XYZ 150.705 740.998 null] +989 0 obj << +/D [987 0 R /XYZ 150.705 740.998 null] >> endobj -972 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F30 664 0 R /F17 629 0 R >> +986 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F30 669 0 R /F17 634 0 R >> /ProcSet [ /PDF /Text ] >> endobj -980 0 obj << +994 0 obj << /Length 4663 >> stream @@ -9593,7 +9764,7 @@ BT 0 g 0 G /F8 9.9626 Tf 25.827 0 Td [(the)-333(diagonal)-334(scaling)-333(matrix.)]TJ -0.92 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Default:)]TJ/F11 9.9626 Tf 39.436 0 Td [(diag)]TJ/F8 9.9626 Tf 18.993 0 Td [(\0501\051)-278(=)-277(1\050)]TJ/F11 9.9626 Tf 34.869 0 Td [(noscal)-20(ing)]TJ/F8 9.9626 Tf 42.747 0 Td [(\051)]TJ -136.045 -11.955 Td [(Sp)-28(eci\014ed)-382(as:)-543(a)-382(rank)-382(one)-383(arra)28(y)-382(con)27(taining)-382(n)28(um)28(b)-28(ers)-383(of)-382(the)-382(t)27(yp)-27(e)-383(indicated)]TJ 0 -11.955 Td [(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-333(12)]TJ + [-333(13)]TJ 0 g 0 G [(.)]TJ 0 g 0 G @@ -9608,7 +9779,7 @@ BT 0 g 0 G /F8 9.9626 Tf 11.028 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(dense)-333(matrix)]TJ/F11 9.9626 Tf 176.118 0 Td [(y)]TJ/F8 9.9626 Tf 5.242 0 Td [(.)]TJ -167.481 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-474(as:)-727(an)-475(arra)28(y)-474(of)-475(rank)-475(on)1(e)-475(or)-475(t)28(w)28(o)-475(con)28(taining)-474(n)27(u)1(m)27(b)-27(e)-1(r)1(s)-475(of)-475(t)28(yp)-28(e)]TJ 0 -11.955 Td [(sp)-28(eci\014ed)-333(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-333(12)]TJ + [-333(13)]TJ 0 g 0 G [(.)]TJ 0 g 0 G @@ -9621,36 +9792,36 @@ BT ET endstream endobj -979 0 obj << +993 0 obj << /Type /Page -/Contents 980 0 R -/Resources 978 0 R +/Contents 994 0 R +/Resources 992 0 R /MediaBox [0 0 595.276 841.89] -/Parent 947 0 R -/Annots [ 976 0 R 977 0 R ] +/Parent 961 0 R +/Annots [ 990 0 R 991 0 R ] >> endobj -976 0 obj << +990 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [162.826 410.238 174.781 419.149] /Subtype /Link -/A << /S /GoTo /D (table.12) >> +/A << /S /GoTo /D (table.13) >> >> endobj -977 0 obj << +991 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [203.009 228.974 214.964 239.822] /Subtype /Link -/A << /S /GoTo /D (table.12) >> +/A << /S /GoTo /D (table.13) >> >> endobj -981 0 obj << -/D [979 0 R /XYZ 99.895 740.998 null] +995 0 obj << +/D [993 0 R /XYZ 99.895 740.998 null] >> endobj -978 0 obj << -/Font << /F8 478 0 R /F27 477 0 R /F11 649 0 R /F30 664 0 R >> +992 0 obj << +/Font << /F8 482 0 R /F27 481 0 R /F11 654 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -985 0 obj << +999 0 obj << /Length 651 >> stream @@ -9668,33 +9839,33 @@ BT ET endstream endobj -984 0 obj << +998 0 obj << /Type /Page -/Contents 985 0 R -/Resources 983 0 R +/Contents 999 0 R +/Resources 997 0 R /MediaBox [0 0 595.276 841.89] -/Parent 947 0 R -/Annots [ 982 0 R ] +/Parent 961 0 R +/Annots [ 996 0 R ] >> endobj -982 0 obj << +996 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [350.345 657.464 357.319 668.312] /Subtype /Link /A << /S /GoTo /D (section.6) >> >> endobj -986 0 obj << -/D [984 0 R /XYZ 150.705 740.998 null] +1000 0 obj << +/D [998 0 R /XYZ 150.705 740.998 null] >> endobj -198 0 obj << -/D [984 0 R /XYZ 150.705 716.092 null] +202 0 obj << +/D [998 0 R /XYZ 150.705 716.092 null] >> endobj -983 0 obj << -/Font << /F16 475 0 R /F8 478 0 R >> +997 0 obj << +/Font << /F16 479 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -992 0 obj << -/Length 6023 +1007 0 obj << +/Length 6399 >> stream 0 g 0 G @@ -9707,9 +9878,9 @@ q []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(halo)-375(|)-375(Halo)-375(Data)-375(Comm)31(unication)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(These)-257(subroutines)-257(gathers)-258(the)-257(v)56(alues)-258(of)-257(the)-257(halo)-257(elemen)28(ts,)-273(and)-257(\050optionally\051)-257(scale)]TJ 0 -11.956 Td [(the)-333(result:)]TJ/F11 9.9626 Tf 155.208 -18.887 Td [(x)]TJ/F14 9.9626 Tf 8.462 0 Td [(\040)]TJ/F11 9.9626 Tf 12.73 0 Td [(\013)-4(x)]TJ/F8 9.9626 Tf -176.4 -18.888 Td [(where:)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(halo)-375(|)-375(Halo)-375(Data)-375(Comm)31(unication)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(These)-257(subroutines)-257(gathers)-258(the)-257(v)56(alues)-258(of)-257(the)-257(halo)-257(elemen)28(ts,)-273(and)-257(\050optionally\051)-257(scale)]TJ 0 -11.956 Td [(the)-333(result:)]TJ/F11 9.9626 Tf 155.208 -20.311 Td [(x)]TJ/F14 9.9626 Tf 8.462 0 Td [(\040)]TJ/F11 9.9626 Tf 12.73 0 Td [(\013)-4(x)]TJ/F8 9.9626 Tf -176.4 -20.311 Td [(where:)]TJ 0 g 0 G -/F11 9.9626 Tf 0 -17.502 Td [(x)]TJ +/F11 9.9626 Tf 0 -18.64 Td [(x)]TJ 0 g 0 G /F8 9.9626 Tf 10.676 0 Td [(is)-333(a)-334(global)-333(dense)-333(submatrix.)]TJ 0 g 0 G @@ -9717,171 +9888,203 @@ BT 0 g 0 G ET q -1 0 0 1 177.988 602.082 cm +1 0 0 1 177.988 596.389 cm []0 d 0 J 0.398 w 0 0 m 187.526 0 l S Q BT -/F11 9.9626 Tf 183.966 593.514 Td [(\013)]TJ/F8 9.9626 Tf 6.41 0 Td [(,)]TJ/F11 9.9626 Tf 6.088 0 Td [(x)]TJ/F27 9.9626 Tf 107.911 0 Td [(Subroutine)]TJ +/F11 9.9626 Tf 183.966 587.821 Td [(\013)]TJ/F8 9.9626 Tf 6.41 0 Td [(,)]TJ/F11 9.9626 Tf 6.088 0 Td [(x)]TJ/F27 9.9626 Tf 107.911 0 Td [(Subroutine)]TJ ET q -1 0 0 1 177.988 589.728 cm +1 0 0 1 177.988 584.035 cm []0 d 0 J 0.398 w 0 0 m 187.526 0 l S Q BT -/F8 9.9626 Tf 183.966 581.16 Td [(In)28(teger)-9028(psb)]TJ +/F8 9.9626 Tf 183.966 575.467 Td [(In)28(teger)-9028(psb)]TJ ET q -1 0 0 1 319.972 581.359 cm +1 0 0 1 319.972 575.666 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 322.961 581.16 Td [(halo)]TJ -138.995 -11.955 Td [(Short)-333(Precision)-333(R)-1(eal)-3102(psb)]TJ +/F8 9.9626 Tf 322.961 575.467 Td [(halo)]TJ -138.995 -11.955 Td [(Short)-333(Precision)-333(R)-1(eal)-3102(psb)]TJ ET q -1 0 0 1 319.972 569.404 cm +1 0 0 1 319.972 563.711 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 322.961 569.205 Td [(halo)]TJ -138.995 -11.955 Td [(Long)-333(Precision)-334(Real)-3314(p)1(s)-1(b)]TJ +/F8 9.9626 Tf 322.961 563.512 Td [(halo)]TJ -138.995 -11.955 Td [(Long)-333(Precision)-334(Real)-3314(p)1(s)-1(b)]TJ ET q -1 0 0 1 319.972 557.449 cm +1 0 0 1 319.972 551.756 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 322.961 557.25 Td [(halo)]TJ -138.995 -11.955 Td [(Short)-333(Precision)-333(C)-1(omplex)-1200(p)1(s)-1(b)]TJ +/F8 9.9626 Tf 322.961 551.557 Td [(halo)]TJ -138.995 -11.955 Td [(Short)-333(Precision)-333(C)-1(omplex)-1200(p)1(s)-1(b)]TJ ET q -1 0 0 1 319.972 545.494 cm +1 0 0 1 319.972 539.801 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 322.961 545.295 Td [(halo)]TJ -138.995 -11.956 Td [(Long)-333(Precision)-334(Complex)-1411(psb)]TJ +/F8 9.9626 Tf 322.961 539.602 Td [(halo)]TJ -138.995 -11.955 Td [(Long)-333(Precision)-334(Complex)-1411(psb)]TJ ET q -1 0 0 1 319.972 533.539 cm +1 0 0 1 319.972 527.846 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 322.961 533.339 Td [(halo)]TJ +/F8 9.9626 Tf 322.961 527.647 Td [(halo)]TJ ET q -1 0 0 1 177.988 529.554 cm +1 0 0 1 177.988 523.861 cm []0 d 0 J 0.398 w 0 0 m 187.526 0 l S Q 0 g 0 G BT -/F8 9.9626 Tf 225.577 501.514 Td [(T)83(able)-333(13:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 225.577 495.821 Td [(T)83(able)-333(14:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -125.682 -29.631 Td [(call)-525(psb_halo\050x,)-525(desc_a,)-525(info\051)]TJ 0 -11.955 Td [(call)-525(psb_halo\050x,)-525(desc_a,)-525(info,)-525(alpha,)-525(work,)-525(data\051)]TJ +/F30 9.9626 Tf -125.682 -31.623 Td [(call)-525(psb_halo\050x,)-525(desc_a,)-525(info\051)]TJ 0 -11.955 Td [(call)-525(psb_halo\050x,)-525(desc_a,)-525(info,)-525(alpha,)-525(work,)-525(data\051)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -18.888 Td [(T)32(yp)-32(e:)]TJ +/F27 9.9626 Tf 0 -20.311 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G /F8 9.9626 Tf 33.797 0 Td [(Sync)28(hronous.)]TJ 0 g 0 G -/F27 9.9626 Tf -33.797 -18.713 Td [(On)-383(En)32(try)]TJ +/F27 9.9626 Tf -33.797 -19.283 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G - 0 -18.713 Td [(x)]TJ + 0 -19.283 Td [(x)]TJ +0 g 0 G +/F8 9.9626 Tf 11.028 0 Td [(global)-333(dense)-334(matrix)]TJ/F11 9.9626 Tf 88.917 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -80.732 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-55(jec)-1(t)-254(of)-255(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ +ET +q +1 0 0 1 385.864 345.745 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 389.002 345.546 Td [(T)]TJ +ET +q +1 0 0 1 394.86 345.745 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 397.998 345.546 Td [(vect)]TJ +ET +q +1 0 0 1 419.547 345.745 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 422.685 345.546 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(global)-333(dense)-334(matrix)]TJ/F11 9.9626 Tf 88.917 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -80.732 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-395(as:)-569(a)-395(rank)-395(one)-396(or)-395(t)27(w)28(o)-395(arra)28(y)-396(with)-395(the)-395(T)83(AR)28(GET)-396(attribute)-395(con-)]TJ 0 -11.955 Td [(taining)-333(n)28(um)27(b)-27(ers)-334(of)-333(t)28(yp)-28(e)-333(sp)-28(eci\014ed)-334(i)1(n)-334(T)84(able)]TJ +/F8 9.9626 Tf -297.883 -11.955 Td [(con)28(taining)-333(n)27(um)28(b)-28(ers)-333(of)-333(t)28(yp)-28(e)-334(sp)-27(eci\014ed)-334(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-334(13)]TJ + [-333(14)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -18.713 Td [(desc)]TJ +/F27 9.9626 Tf -24.907 -19.283 Td [(desc)]TJ ET q -1 0 0 1 121.81 325.324 cm +1 0 0 1 121.81 314.507 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 325.125 Td [(a)]TJ +/F27 9.9626 Tf 125.247 314.308 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(con)28(tains)-334(d)1(ata)-334(structures)-333(for)-333(com)-1(m)28(unications.)]TJ -10.996 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(con)28(tains)-334(d)1(ata)-334(structures)-333(for)-333(com)-1(m)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 277.503 cm +1 0 0 1 312.036 266.687 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 277.304 Td [(desc)]TJ +/F30 9.9626 Tf 315.174 266.487 Td [(desc)]TJ ET q -1 0 0 1 336.723 277.503 cm +1 0 0 1 336.723 266.687 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 339.861 277.304 Td [(type)]TJ +/F30 9.9626 Tf 339.861 266.487 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -260.887 -18.713 Td [(alpha)]TJ +/F27 9.9626 Tf -260.887 -19.282 Td [(alpha)]TJ 0 g 0 G -/F8 9.9626 Tf 32.033 0 Td [(the)-333(scalar)]TJ/F11 9.9626 Tf 45.468 0 Td [(\013)]TJ/F8 9.9626 Tf 6.41 0 Td [(.)]TJ -59.004 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Default:)]TJ/F11 9.9626 Tf 39.436 0 Td [(al)-20(pha)]TJ/F8 9.9626 Tf 27.22 0 Td [(=)-278(1)]TJ -66.656 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(n)28(um)28(b)-28(er)-333(of)-334(the)-333(data)-333(t)28(yp)-28(e)-334(ind)1(ic)-1(ated)-333(in)-333(T)83(able)]TJ +/F8 9.9626 Tf 32.033 0 Td [(the)-333(scalar)]TJ/F11 9.9626 Tf 45.468 0 Td [(\013)]TJ/F8 9.9626 Tf 6.41 0 Td [(.)]TJ -59.004 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Default:)]TJ/F11 9.9626 Tf 39.436 0 Td [(al)-20(pha)]TJ/F8 9.9626 Tf 27.22 0 Td [(=)-278(1)]TJ -66.656 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(n)28(um)28(b)-28(er)-333(of)-334(the)-333(data)-333(t)28(yp)-28(e)-334(ind)1(ic)-1(ated)-333(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-333(13)]TJ + [-333(14)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -18.714 Td [(w)32(ork)]TJ +/F27 9.9626 Tf -24.907 -19.283 Td [(w)32(ork)]TJ 0 g 0 G -/F8 9.9626 Tf 29.432 0 Td [(the)-333(w)27(ork)-333(arra)28(y)83(.)]TJ -4.525 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-348(as:)-475(a)-349(rank)-348(one)-349(arra)28(y)-349(of)-348(the)-349(same)-348(t)27(yp)-27(e)-349(of)]TJ/F11 9.9626 Tf 222.576 0 Td [(x)]TJ/F8 9.9626 Tf 9.167 0 Td [(with)-349(th)1(e)-349(POINTER)]TJ -231.743 -11.955 Td [(attribute.)]TJ +/F8 9.9626 Tf 29.432 0 Td [(the)-333(w)27(ork)-333(arra)28(y)83(.)]TJ -4.525 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-333(arra)27(y)-333(of)-333(the)-334(same)-333(t)28(yp)-28(e)-333(of)]TJ/F11 9.9626 Tf 220.756 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ 0 g 0 G - 141.968 -29.888 Td [(43)]TJ + -84.482 -29.888 Td [(43)]TJ 0 g 0 G ET endstream endobj -991 0 obj << +1006 0 obj << /Type /Page -/Contents 992 0 R -/Resources 990 0 R +/Contents 1007 0 R +/Resources 1005 0 R /MediaBox [0 0 595.276 841.89] -/Parent 995 0 R -/Annots [ 987 0 R 988 0 R 989 0 R ] +/Parent 1010 0 R +/Annots [ 1001 0 R 1002 0 R 1003 0 R 1004 0 R ] >> endobj -987 0 obj << +1001 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [310.744 340.904 322.699 351.753] +/Rect [368.549 342.336 444.603 353.461] /Subtype /Link -/A << /S /GoTo /D (table.13) >> +/A << /S /GoTo /D (vdata) >> >> endobj -988 0 obj << +1002 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.411 330.657 337.366 341.505] +/Subtype /Link +/A << /S /GoTo /D (table.14) >> +>> endobj +1003 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 274.094 361.779 285.219] +/Rect [294.721 263.277 361.779 274.402] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -989 0 obj << +1004 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [382.088 195.881 394.043 206.73] +/Rect [382.088 184.495 394.043 195.344] /Subtype /Link -/A << /S /GoTo /D (table.13) >> +/A << /S /GoTo /D (table.14) >> >> endobj -993 0 obj << -/D [991 0 R /XYZ 99.895 740.998 null] +1008 0 obj << +/D [1006 0 R /XYZ 99.895 740.998 null] >> endobj -202 0 obj << -/D [991 0 R /XYZ 99.895 697.37 null] +206 0 obj << +/D [1006 0 R /XYZ 99.895 697.37 null] >> endobj -994 0 obj << -/D [991 0 R /XYZ 270.132 513.469 null] +1009 0 obj << +/D [1006 0 R /XYZ 270.132 507.777 null] >> endobj -990 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F27 477 0 R /F30 664 0 R >> +1005 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1001 0 obj << +1016 0 obj << /Length 4119 >> stream @@ -9900,7 +10103,7 @@ BT 0 g 0 G /F8 9.9626 Tf 11.028 0 Td [(global)-333(dense)-334(result)-333(matrix)]TJ/F11 9.9626 Tf 116.674 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -108.49 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Returned)-271(as:)-414(a)-271(rank)-271(one)-271(or)-272(t)28(w)28(o)-271(arra)28(y)-272(con)28(taining)-271(n)28(um)28(b)-28(ers)-271(of)-272(t)28(yp)-28(e)-271(sp)-28(eci\014ed)]TJ 0 -11.955 Td [(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-333(13)]TJ + [-333(14)]TJ 0 g 0 G [(.)]TJ 0 g 0 G @@ -9939,29 +10142,29 @@ BT ET endstream endobj -1000 0 obj << +1015 0 obj << /Type /Page -/Contents 1001 0 R -/Resources 999 0 R +/Contents 1016 0 R +/Resources 1014 0 R /MediaBox [0 0 595.276 841.89] -/Parent 995 0 R -/Annots [ 996 0 R 998 0 R ] +/Parent 1010 0 R +/Annots [ 1011 0 R 1013 0 R ] >> endobj -997 0 obj << +1012 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1004 0 R +/PTEX.InfoDict 1019 0 R /BBox [0 0 436 496] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1005 0 R ->>/Font << /R8 1006 0 R/R9 1007 0 R>> +/R7 1020 0 R +>>/Font << /R8 1021 0 R/R9 1022 0 R>> >> -/Length 1008 0 R +/Length 1023 0 R /Filter /FlateDecode >> stream @@ -9977,62 +10180,62 @@ QI* d)eI%}QÉ'?+ä°~I*écÂ\‚?XO#~Ã[!©äX‚?fJÇüÁaî‹J8ù9â÷%©¤ s‰ù`=ø Ÿ× ,ªƒ1Œ|?ª$6ŠázžAª@}¡J¢¿R©’#‡z|]ñd•9ÔãýL G„z8¯—÷¬’Ï€äcD¾P%ùàgÌcå‘#<¾®x²J2³jˆÏÕpD„ó¢¼g•mø»ãoÇßþžŸúö§Ç6Úë¸w¶W~ûùñéØ?ûçãK߯åÌÞ>Øíƒ]?Øeµûü`ŸìqÛ{éÏ/m;±ù"×~¢WëÖëj¾Z…3lï²ÛÂ?|Ïz¼Ú½m[{힦„iÿb¬m»¦øóe•Ï¿{üáÛã¯×¿ÿ-3‡à endstream endobj -1004 0 obj +1019 0 obj << /Producer (ESP Ghostscript 815.03) /CreationDate (D:20070118112257) /ModDate (D:20070118112257) >> endobj -1005 0 obj +1020 0 obj << /Type /ExtGState /OPM 1 >> endobj -1006 0 obj +1021 0 obj << /BaseFont /Times-Roman /Type /Font /Subtype /Type1 >> endobj -1007 0 obj +1022 0 obj << /BaseFont /Times-Bold /Type /Font /Subtype /Type1 >> endobj -1008 0 obj +1023 0 obj 3571 endobj -996 0 obj << +1011 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [213.636 545.73 225.591 554.641] /Subtype /Link -/A << /S /GoTo /D (table.13) >> +/A << /S /GoTo /D (table.14) >> >> endobj -998 0 obj << +1013 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [457.906 203.856 464.88 216.476] /Subtype /Link /A << /S /GoTo /D (figure.7) >> >> endobj -1002 0 obj << -/D [1000 0 R /XYZ 150.705 740.998 null] +1017 0 obj << +/D [1015 0 R /XYZ 150.705 740.998 null] >> endobj -1003 0 obj << -/D [1000 0 R /XYZ 283.692 243.043 null] +1018 0 obj << +/D [1015 0 R /XYZ 283.692 243.043 null] >> endobj -999 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R /F11 649 0 R /F16 475 0 R >> -/XObject << /Im3 997 0 R >> +1014 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R /F11 654 0 R /F16 479 0 R >> +/XObject << /Im3 1012 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1011 0 obj << +1026 0 obj << /Length 3050 >> stream @@ -10050,22 +10253,22 @@ BT ET endstream endobj -1010 0 obj << +1025 0 obj << /Type /Page -/Contents 1011 0 R -/Resources 1009 0 R +/Contents 1026 0 R +/Resources 1024 0 R /MediaBox [0 0 595.276 841.89] -/Parent 995 0 R +/Parent 1010 0 R >> endobj -1012 0 obj << -/D [1010 0 R /XYZ 99.895 740.998 null] +1027 0 obj << +/D [1025 0 R /XYZ 99.895 740.998 null] >> endobj -1009 0 obj << -/Font << /F45 1013 0 R /F8 478 0 R >> +1024 0 obj << +/Font << /F45 1028 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1018 0 obj << -/Length 6993 +1034 0 obj << +/Length 7493 >> stream 0 g 0 G @@ -10139,7 +10342,7 @@ q Q 0 g 0 G BT -/F8 9.9626 Tf 276.386 498.233 Td [(T)83(able)-333(14:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 276.386 498.233 Td [(T)83(able)-333(15:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -10155,13 +10358,38 @@ BT 0 g 0 G 0 -19.308 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(global)-333(dense)-334(matrix)]TJ/F11 9.9626 Tf 88.917 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -80.732 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-289(as:)-423(a)-290(r)1(ank)-290(one)-290(or)-289(t)28(w)27(o)-289(arra)28(y)-290(con)28(taining)-290(n)28(um)28(b)-28(ers)-290(of)-289(t)28(yp)-28(e)-290(sp)-28(eci\014ed)]TJ 0 -11.955 Td [(in)-333(T)83(able)]TJ +/F8 9.9626 Tf 11.028 0 Td [(global)-333(dense)-334(matrix)]TJ/F11 9.9626 Tf 88.917 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -80.732 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)28(o)-255(arra)28(y)-255(or)-255(an)-255(ob)-55(ject)-255(of)-255(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG - [-333(14)]TJ +/F30 9.9626 Tf 244.742 0 Td [(psb)]TJ +ET +q +1 0 0 1 436.673 347.954 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 439.811 347.755 Td [(T)]TJ +ET +q +1 0 0 1 445.669 347.954 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 448.807 347.755 Td [(vect)]TJ +ET +q +1 0 0 1 470.356 347.954 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 473.495 347.755 Td [(type)]TJ +0 g 0 G +/F8 9.9626 Tf -297.884 -11.955 Td [(con)28(taining)-333(n)27(um)28(b)-28(ers)-333(of)-333(t)27(yp)-27(e)-334(sp)-27(ec)-1(i)1(\014ed)-334(in)-333(T)83(able)]TJ +0 0 1 rg 0 0 1 RG + [-333(15)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.308 Td [(desc)]TJ +/F27 9.9626 Tf -24.906 -19.308 Td [(desc)]TJ ET q 1 0 0 1 172.619 316.691 cm @@ -10271,42 +10499,49 @@ BT ET endstream endobj -1017 0 obj << +1033 0 obj << /Type /Page -/Contents 1018 0 R -/Resources 1016 0 R +/Contents 1034 0 R +/Resources 1032 0 R /MediaBox [0 0 595.276 841.89] -/Parent 995 0 R -/Annots [ 1014 0 R 1015 0 R ] +/Parent 1010 0 R +/Annots [ 1029 0 R 1030 0 R 1031 0 R ] >> endobj -1014 0 obj << +1029 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [213.636 334.803 225.591 343.714] +/Rect [419.358 344.545 495.412 355.67] /Subtype /Link -/A << /S /GoTo /D (table.14) >> +/A << /S /GoTo /D (vdata) >> >> endobj -1015 0 obj << +1030 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [376.221 332.866 388.176 343.714] +/Subtype /Link +/A << /S /GoTo /D (table.15) >> +>> endobj +1031 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 265.461 412.588 276.586] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1019 0 obj << -/D [1017 0 R /XYZ 150.705 740.998 null] +1035 0 obj << +/D [1033 0 R /XYZ 150.705 740.998 null] >> endobj -206 0 obj << -/D [1017 0 R /XYZ 150.705 697.37 null] +210 0 obj << +/D [1033 0 R /XYZ 150.705 697.37 null] >> endobj -1020 0 obj << -/D [1017 0 R /XYZ 320.941 510.188 null] +1036 0 obj << +/D [1033 0 R /XYZ 320.941 510.188 null] >> endobj -1016 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F27 477 0 R /F30 664 0 R >> +1032 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1027 0 obj << +1043 0 obj << /Length 5866 >> stream @@ -10325,7 +10560,7 @@ BT 0 g 0 G /F8 9.9626 Tf 11.028 0 Td [(global)-333(dense)-334(result)-333(matrix)]TJ/F11 9.9626 Tf 116.674 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -108.489 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-474(as:)-727(an)-475(arra)28(y)-474(of)-475(rank)-475(on)1(e)-475(or)-475(t)28(w)28(o)-475(con)28(taining)-474(n)27(u)1(m)27(b)-27(e)-1(r)1(s)-475(of)-475(t)28(yp)-28(e)]TJ 0 -11.955 Td [(sp)-28(eci\014ed)-333(in)-333(T)83(able)]TJ 0 0 1 rg 0 0 1 RG - [-333(14)]TJ + [-333(15)]TJ 0 g 0 G [(.)]TJ 0 g 0 G @@ -10358,52 +10593,52 @@ BT ET endstream endobj -1026 0 obj << +1042 0 obj << /Type /Page -/Contents 1027 0 R -/Resources 1025 0 R +/Contents 1043 0 R +/Resources 1041 0 R /MediaBox [0 0 595.276 841.89] -/Parent 995 0 R -/Annots [ 1021 0 R 1023 0 R 1024 0 R ] +/Parent 1010 0 R +/Annots [ 1037 0 R 1039 0 R 1040 0 R ] >> endobj -1021 0 obj << +1037 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [203.009 555.748 214.964 566.597] /Subtype /Link -/A << /S /GoTo /D (table.14) >> +/A << /S /GoTo /D (table.15) >> >> endobj -1023 0 obj << +1039 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [407.019 326.22 413.993 338.84] /Subtype /Link /A << /S /GoTo /D (figure.8) >> >> endobj -1024 0 obj << +1040 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [306.759 302.697 313.733 313.546] /Subtype /Link /A << /S /GoTo /D (figure.7) >> >> endobj -1028 0 obj << -/D [1026 0 R /XYZ 99.895 740.998 null] +1044 0 obj << +/D [1042 0 R /XYZ 99.895 740.998 null] >> endobj -1029 0 obj << -/D [1026 0 R /XYZ 99.895 465.033 null] +1045 0 obj << +/D [1042 0 R /XYZ 99.895 465.033 null] >> endobj -1030 0 obj << -/D [1026 0 R /XYZ 99.895 431.215 null] +1046 0 obj << +/D [1042 0 R /XYZ 99.895 431.215 null] >> endobj -1031 0 obj << -/D [1026 0 R /XYZ 99.895 387.38 null] +1047 0 obj << +/D [1042 0 R /XYZ 99.895 387.38 null] >> endobj -1025 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F11 649 0 R /F16 475 0 R /F10 666 0 R /F30 664 0 R >> +1041 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F11 654 0 R /F16 479 0 R /F10 671 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1035 0 obj << +1051 0 obj << /Length 3619 >> stream @@ -10421,21 +10656,21 @@ BT ET endstream endobj -1034 0 obj << +1050 0 obj << /Type /Page -/Contents 1035 0 R -/Resources 1033 0 R +/Contents 1051 0 R +/Resources 1049 0 R /MediaBox [0 0 595.276 841.89] -/Parent 995 0 R +/Parent 1010 0 R >> endobj -1036 0 obj << -/D [1034 0 R /XYZ 150.705 740.998 null] +1052 0 obj << +/D [1050 0 R /XYZ 150.705 740.998 null] >> endobj -1033 0 obj << -/Font << /F31 670 0 R /F8 478 0 R >> +1049 0 obj << +/Font << /F31 675 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1039 0 obj << +1055 0 obj << /Length 347 >> stream @@ -10467,28 +10702,28 @@ BT ET endstream endobj -1038 0 obj << +1054 0 obj << /Type /Page -/Contents 1039 0 R -/Resources 1037 0 R +/Contents 1055 0 R +/Resources 1053 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1041 0 R +/Parent 1057 0 R >> endobj -1022 0 obj << +1038 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8_ov.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1042 0 R +/PTEX.InfoDict 1058 0 R /BBox [0 0 436 514] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1043 0 R ->>/Font << /R8 1044 0 R/R9 1045 0 R>> +/R7 1059 0 R +>>/Font << /R8 1060 0 R/R9 1061 0 R>> >> -/Length 1046 0 R +/Length 1062 0 R /Filter /FlateDecode >> stream @@ -10502,49 +10737,49 @@ V óá!Zäÿ/L)ÇÇ8ú:ß=þ êë¼® endstream endobj -1042 0 obj +1058 0 obj << /Producer (ESP Ghostscript 815.03) /CreationDate (D:20070118114343) /ModDate (D:20070118114343) >> endobj -1043 0 obj +1059 0 obj << /Type /ExtGState /OPM 1 >> endobj -1044 0 obj +1060 0 obj << /BaseFont /Times-Roman /Type /Font /Subtype /Type1 >> endobj -1045 0 obj +1061 0 obj << /BaseFont /Times-Bold /Type /Font /Subtype /Type1 >> endobj -1046 0 obj +1062 0 obj 3652 endobj -1040 0 obj << -/D [1038 0 R /XYZ 99.895 740.998 null] +1056 0 obj << +/D [1054 0 R /XYZ 99.895 740.998 null] >> endobj -1032 0 obj << -/D [1038 0 R /XYZ 232.883 275.514 null] +1048 0 obj << +/D [1054 0 R /XYZ 232.883 275.514 null] >> endobj -1037 0 obj << -/Font << /F8 478 0 R >> -/XObject << /Im4 1022 0 R >> +1053 0 obj << +/Font << /F8 482 0 R >> +/XObject << /Im4 1038 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1051 0 obj << -/Length 7588 +1068 0 obj << +/Length 8006 >> stream 0 g 0 G @@ -10664,7 +10899,7 @@ q Q 0 g 0 G BT -/F8 9.9626 Tf 276.386 453.438 Td [(T)83(able)-333(15:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 276.386 453.438 Td [(T)83(able)-333(16:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -10694,9 +10929,34 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F11 9.9626 Tf 377.266 346.5 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -207.349 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-472(as:)-723(a)-472(rank)-473(one)-472(or)-473(t)28(w)28(o)-472(arra)27(y)-472(con)28(taining)-473(n)28(um)28(b)-28(ers)-472(of)-473(the)-472(t)28(yp)-28(e)]TJ 0 -11.956 Td [(indicated)-333(in)-334(T)84(able)]TJ +/F11 9.9626 Tf 377.266 346.5 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -207.349 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-255(rank)-254(one)-255(or)-255(t)28(w)27(o)-254(arra)27(y)-254(or)-255(an)-255(ob)-56(j)1(e)-1(ct)-254(of)-255(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 244.743 0 Td [(psb)]TJ +ET +q +1 0 0 1 436.673 298.879 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 439.811 298.68 Td [(T)]TJ +ET +q +1 0 0 1 445.669 298.879 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 448.807 298.68 Td [(vect)]TJ +ET +q +1 0 0 1 470.356 298.879 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 473.495 298.68 Td [(type)]TJ +0 g 0 G +/F8 9.9626 Tf -297.884 -11.956 Td [(indicated)-333(in)-334(T)84(able)]TJ 0 0 1 rg 0 0 1 RG - [-334(15)]TJ + [-334(16)]TJ 0 g 0 G [(.)]TJ 0 g 0 G @@ -10741,43 +11001,50 @@ BT ET endstream endobj -1050 0 obj << +1067 0 obj << /Type /Page -/Contents 1051 0 R -/Resources 1049 0 R +/Contents 1068 0 R +/Resources 1066 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1041 0 R -/Annots [ 1047 0 R 1048 0 R ] +/Parent 1057 0 R +/Annots [ 1063 0 R 1064 0 R 1065 0 R ] >> endobj -1047 0 obj << +1063 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.358 295.469 495.412 306.594] +/Subtype /Link +/A << /S /GoTo /D (vdata) >> +>> endobj +1064 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [256.807 285.728 268.762 294.639] /Subtype /Link -/A << /S /GoTo /D (table.15) >> +/A << /S /GoTo /D (table.16) >> >> endobj -1048 0 obj << +1065 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 216.093 412.588 227.218] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1052 0 obj << -/D [1050 0 R /XYZ 150.705 740.998 null] +1069 0 obj << +/D [1067 0 R /XYZ 150.705 740.998 null] >> endobj -210 0 obj << -/D [1050 0 R /XYZ 150.705 697.37 null] +214 0 obj << +/D [1067 0 R /XYZ 150.705 697.37 null] >> endobj -1053 0 obj << -/D [1050 0 R /XYZ 320.941 465.393 null] +1070 0 obj << +/D [1067 0 R /XYZ 320.941 465.393 null] >> endobj -1049 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F7 665 0 R /F27 477 0 R /F30 664 0 R >> +1066 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F7 670 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1056 0 obj << -/Length 1355 +1073 0 obj << +/Length 1455 >> stream 0 g 0 G @@ -10793,9 +11060,9 @@ Q BT /F27 9.9626 Tf 125.024 706.129 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(The)-333(arra)27(y)-333(where)-333(the)-334(lo)-27(cal)-334(parts)-333(m)28(ust)-334(b)-27(e)-334(gathered.)]TJ -11.25 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-333(or)-334(t)28(w)28(o)-334(arra)28(y)84(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(The)-333(arra)27(y)-333(where)-333(the)-334(lo)-27(cal)-334(parts)-333(m)28(ust)-334(b)-27(e)-334(gathered.)]TJ -11.25 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-333(or)-334(t)28(w)28(o)-334(arra)28(y)-333(with)-333(the)]TJ/F30 9.9626 Tf 204.4 0 Td [(ALLOCATABLE)]TJ/F8 9.9626 Tf 60.855 0 Td [(attribute.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +/F27 9.9626 Tf -290.162 -19.925 Td [(info)]TJ 0 g 0 G /F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ 0 g 0 G @@ -10804,21 +11071,21 @@ BT ET endstream endobj -1055 0 obj << +1072 0 obj << /Type /Page -/Contents 1056 0 R -/Resources 1054 0 R +/Contents 1073 0 R +/Resources 1071 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1041 0 R +/Parent 1057 0 R >> endobj -1057 0 obj << -/D [1055 0 R /XYZ 99.895 740.998 null] +1074 0 obj << +/D [1072 0 R /XYZ 99.895 740.998 null] >> endobj -1054 0 obj << -/Font << /F27 477 0 R /F8 478 0 R >> +1071 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1062 0 obj << +1079 0 obj << /Length 7211 >> stream @@ -10939,7 +11206,7 @@ q Q 0 g 0 G BT -/F8 9.9626 Tf 276.386 447.613 Td [(T)83(able)-333(16:)-444(Data)-334(t)28(yp)-28(es)]TJ +/F8 9.9626 Tf 276.386 447.613 Td [(T)83(able)-333(17:)-444(Data)-334(t)28(yp)-28(es)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -11005,35 +11272,35 @@ BT ET endstream endobj -1061 0 obj << +1078 0 obj << /Type /Page -/Contents 1062 0 R -/Resources 1060 0 R +/Contents 1079 0 R +/Resources 1077 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1041 0 R -/Annots [ 1058 0 R ] +/Parent 1057 0 R +/Annots [ 1075 0 R ] >> endobj -1058 0 obj << +1075 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 217.448 412.588 228.573] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1063 0 obj << -/D [1061 0 R /XYZ 150.705 740.998 null] +1080 0 obj << +/D [1078 0 R /XYZ 150.705 740.998 null] >> endobj -214 0 obj << -/D [1061 0 R /XYZ 150.705 697.294 null] +218 0 obj << +/D [1078 0 R /XYZ 150.705 697.294 null] >> endobj -1064 0 obj << -/D [1061 0 R /XYZ 320.941 459.569 null] +1081 0 obj << +/D [1078 0 R /XYZ 320.941 459.569 null] >> endobj -1060 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F10 666 0 R /F14 667 0 R /F7 665 0 R /F27 477 0 R /F30 664 0 R >> +1077 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F10 671 0 R /F14 672 0 R /F7 670 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1067 0 obj << +1084 0 obj << /Length 1718 >> stream @@ -11059,7 +11326,7 @@ Q BT /F11 9.9626 Tf 326.456 706.129 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ -207.348 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-472(as:)-723(a)-472(rank)-473(one)-472(or)-472(t)27(w)28(o)-472(arra)27(y)-472(con)28(taining)-472(n)27(um)28(b)-28(ers)-472(of)-473(th)1(e)-473(t)28(yp)-28(e)]TJ 0 -11.955 Td [(indicated)-333(in)-334(T)84(able)]TJ 0 0 1 rg 0 0 1 RG - [-334(16)]TJ + [-334(17)]TJ 0 g 0 G [(.)]TJ 0 g 0 G @@ -11072,30 +11339,30 @@ BT ET endstream endobj -1066 0 obj << +1083 0 obj << /Type /Page -/Contents 1067 0 R -/Resources 1065 0 R +/Contents 1084 0 R +/Resources 1082 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1041 0 R -/Annots [ 1059 0 R ] +/Parent 1057 0 R +/Annots [ 1076 0 R ] >> endobj -1059 0 obj << +1076 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [205.998 645.357 217.953 654.268] /Subtype /Link -/A << /S /GoTo /D (table.16) >> +/A << /S /GoTo /D (table.17) >> >> endobj -1068 0 obj << -/D [1066 0 R /XYZ 99.895 740.998 null] +1085 0 obj << +/D [1083 0 R /XYZ 99.895 740.998 null] >> endobj -1065 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1082 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1071 0 obj << -/Length 6529 +1088 0 obj << +/Length 6539 >> stream 0 g 0 G @@ -11111,7 +11378,7 @@ BT /F16 11.9552 Tf 175.796 682.315 Td [(cdall)-375(|)-375(Allo)-31(cates)-375(a)-375(comm)31(unication)-375(descriptor)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,mg=mg,parts=parts\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,vg=vg,[mg=mg,flag=flag]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,vl=vl,[nl=nl,globalcheck=.true.]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,nl=nl\051)]TJ 0 -11.956 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,mg=mg,repl=.true.\051)]TJ/F8 9.9626 Tf 14.944 -20.107 Td [(This)-314(subroutine)-314(initializes)-315(th)1(e)-315(comm)28(unication)-314(descriptor)-314(ass)-1(o)-27(ciated)-315(with)-314(an)]TJ -14.944 -11.955 Td [(index)-326(space.)-442(One)-326(of)-326(the)-327(op)1(tional)-327(argu)1(m)-1(en)28(ts)]TJ/F30 9.9626 Tf 193.679 0 Td [(parts)]TJ/F8 9.9626 Tf 26.152 0 Td [(,)]TJ/F30 9.9626 Tf 6.031 0 Td [(vg)]TJ/F8 9.9626 Tf 10.461 0 Td [(,)]TJ/F30 9.9626 Tf 6.031 0 Td [(vl)]TJ/F8 9.9626 Tf 10.46 0 Td [(,)]TJ/F30 9.9626 Tf 6.031 0 Td [(nl)]TJ/F8 9.9626 Tf 13.71 0 Td [(or)]TJ/F30 9.9626 Tf 12.133 0 Td [(repl)]TJ/F8 9.9626 Tf 24.17 0 Td [(m)28(ust)-326(b)-28(e)]TJ -308.858 -11.955 Td [(sp)-28(eci\014ed,)-333(thereb)28(y)-334(c)28(ho)-28(osing)-333(the)-333(sp)-28(eci\014c)-333(initialization)-334(strategy)84(.)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,mg=mg,parts=parts\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,vg=vg,[mg=mg,flag=flag]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,vl=vl,[nl=nl,globalcheck=.true.,lidx=lidx]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,nl=nl\051)]TJ 0 -11.956 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,mg=mg,repl=.true.\051)]TJ/F8 9.9626 Tf 14.944 -20.107 Td [(This)-314(subroutine)-314(initializes)-315(th)1(e)-315(comm)28(unication)-314(descriptor)-314(ass)-1(o)-27(ciated)-315(with)-314(an)]TJ -14.944 -11.955 Td [(index)-326(space.)-442(One)-326(of)-326(the)-327(op)1(tional)-327(argu)1(m)-1(en)28(ts)]TJ/F30 9.9626 Tf 193.679 0 Td [(parts)]TJ/F8 9.9626 Tf 26.152 0 Td [(,)]TJ/F30 9.9626 Tf 6.031 0 Td [(vg)]TJ/F8 9.9626 Tf 10.461 0 Td [(,)]TJ/F30 9.9626 Tf 6.031 0 Td [(vl)]TJ/F8 9.9626 Tf 10.46 0 Td [(,)]TJ/F30 9.9626 Tf 6.031 0 Td [(nl)]TJ/F8 9.9626 Tf 13.71 0 Td [(or)]TJ/F30 9.9626 Tf 12.133 0 Td [(repl)]TJ/F8 9.9626 Tf 24.17 0 Td [(m)28(ust)-326(b)-28(e)]TJ -308.858 -11.955 Td [(sp)-28(eci\014ed,)-333(thereb)28(y)-334(c)28(ho)-28(osing)-333(the)-333(sp)-28(eci\014c)-333(initialization)-334(strategy)84(.)]TJ 0 g 0 G /F27 9.9626 Tf 0 -18.477 Td [(On)-383(En)32(try)]TJ 0 g 0 G @@ -11149,28 +11416,28 @@ BT ET endstream endobj -1070 0 obj << +1087 0 obj << /Type /Page -/Contents 1071 0 R -/Resources 1069 0 R +/Contents 1088 0 R +/Resources 1086 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1041 0 R ->> endobj -1072 0 obj << -/D [1070 0 R /XYZ 150.705 740.998 null] +/Parent 1057 0 R >> endobj -218 0 obj << -/D [1070 0 R /XYZ 150.705 716.092 null] +1089 0 obj << +/D [1087 0 R /XYZ 150.705 740.998 null] >> endobj 222 0 obj << -/D [1070 0 R /XYZ 150.705 673.557 null] +/D [1087 0 R /XYZ 150.705 716.092 null] >> endobj -1069 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +226 0 obj << +/D [1087 0 R /XYZ 150.705 673.557 null] +>> endobj +1086 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1076 0 obj << -/Length 6340 +1093 0 obj << +/Length 6637 >> stream 0 g 0 G @@ -11181,232 +11448,253 @@ BT 0 g 0 G /F8 9.9626 Tf 14.529 0 Td [(Data)-223(allo)-28(cation:)-389(in)-222(a)-223(generalized)-223(blo)-28(c)28(k-ro)28(w)-223(distribution)-223(the)-222(n)27(um)28(b)-28(er)-222(of)-223(indices)]TJ 10.378 -11.955 Td [(b)-28(elonging)-333(to)-333(the)-334(curren)28(t)-333(pro)-28(cess.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)-444(Ma)28(y)-334(b)-27(e)-334(sp)-28(eci\014ed)-333(together)-333(with)]TJ/F30 9.9626 Tf 272.479 0 Td [(vl)]TJ/F8 9.9626 Tf 10.46 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -307.846 -19.925 Td [(repl)]TJ +/F27 9.9626 Tf -307.846 -20.135 Td [(repl)]TJ 0 g 0 G -/F8 9.9626 Tf 24.499 0 Td [(Data)-351(allo)-28(cation:)-480(build)-351(a)-351(replicated)-351(index)-351(space)-351(\050i.e.)-498(all)-351(pro)-28(cesses)-351(o)27(wn)-351(all)]TJ 0.408 -11.955 Td [(indices\051.)]TJ 0 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -57.707 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(th)1(e)-334(logical)-333(v)55(alue)]TJ/F30 9.9626 Tf 131.784 0 Td [(.true.)]TJ +/F8 9.9626 Tf 24.499 0 Td [(Data)-351(allo)-28(cation:)-480(build)-351(a)-351(replicated)-351(index)-351(space)-351(\050i.e.)-498(all)-351(pro)-28(cesses)-351(o)27(wn)-351(all)]TJ 0.408 -11.955 Td [(indices\051.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -57.707 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(th)1(e)-334(logical)-333(v)55(alue)]TJ/F30 9.9626 Tf 131.784 0 Td [(.true.)]TJ 0 g 0 G -/F27 9.9626 Tf -156.691 -19.925 Td [(globalc)32(hec)32(k)]TJ +/F27 9.9626 Tf -156.691 -20.135 Td [(globalc)32(hec)32(k)]TJ 0 g 0 G -/F8 9.9626 Tf 61.948 0 Td [(Data)-333(allo)-28(cation:)-445(d)1(o)-334(global)-333(c)28(hec)27(ks)-333(on)-333(the)-334(lo)-27(cal)-334(index)-333(lists)]TJ/F30 9.9626 Tf 250.201 0 Td [(vl)]TJ/F8 9.9626 Tf -287.242 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -57.707 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(logical)-333(v)55(alue,)-333(default:)]TJ/F30 9.9626 Tf 163.056 0 Td [(.true.)]TJ +/F8 9.9626 Tf 61.948 0 Td [(Data)-333(allo)-28(cation:)-445(d)1(o)-334(global)-333(c)28(hec)27(ks)-333(on)-333(the)-334(lo)-27(cal)-334(index)-333(lists)]TJ/F30 9.9626 Tf 250.201 0 Td [(vl)]TJ/F8 9.9626 Tf -287.242 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -57.707 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(logical)-333(v)55(alue,)-333(default:)]TJ/F30 9.9626 Tf 163.056 0 Td [(.true.)]TJ 0 g 0 G -/F27 9.9626 Tf -187.963 -21.918 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -187.963 -20.135 Td [(lidx)]TJ 0 g 0 G +/F8 9.9626 Tf 23.758 0 Td [(Data)-353(allo)-28(cation:)-484(the)-353(set)-353(of)-353(lo)-28(cal)-353(indices)]TJ/F11 9.9626 Tf 176.172 0 Td [(l)-20(idx)]TJ/F8 9.9626 Tf 17.48 0 Td [(\0501)-311(:)]TJ/F11 9.9626 Tf 17.814 0 Td [(nl)]TJ/F8 9.9626 Tf 9.149 0 Td [(\051)-353(to)-353(b)-28(e)-353(assigned)-353(to)-353(the)]TJ -219.466 -11.955 Td [(global)-333(indices)]TJ/F11 9.9626 Tf 62.045 0 Td [(v)-36(l)]TJ/F8 9.9626 Tf 8.355 0 Td [(.)]TJ -70.4 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)84(.)]TJ 0 g 0 G - 0 -19.925 Td [(desc)]TJ +/F27 9.9626 Tf -24.907 -22.127 Td [(On)-383(Return)]TJ +0 g 0 G +0 g 0 G + 0 -20.135 Td [(desc)]TJ ET q -1 0 0 1 121.81 457.262 cm +1 0 0 1 121.81 376.512 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 457.063 Td [(a)]TJ +/F27 9.9626 Tf 125.247 376.313 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 409.441 cm +1 0 0 1 312.036 328.692 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 409.242 Td [(desc)]TJ +/F30 9.9626 Tf 315.174 328.492 Td [(desc)]TJ ET q -1 0 0 1 336.723 409.441 cm +1 0 0 1 336.723 328.692 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 339.861 409.242 Td [(type)]TJ +/F30 9.9626 Tf 339.861 328.492 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -260.887 -19.925 Td [(info)]TJ -0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F27 9.9626 Tf -260.887 -20.135 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ -0 g 0 G - [-500(One)-241(of)-241(the)-240(optional)-241(argumen)28(ts)]TJ/F30 9.9626 Tf 144.914 0 Td [(parts)]TJ/F8 9.9626 Tf 26.152 0 Td [(,)]TJ/F30 9.9626 Tf 5.351 0 Td [(vg)]TJ/F8 9.9626 Tf 10.461 0 Td [(,)]TJ/F30 9.9626 Tf 5.351 0 Td [(vl)]TJ/F8 9.9626 Tf 10.46 0 Td [(,)]TJ/F30 9.9626 Tf 5.351 0 Td [(nl)]TJ/F8 9.9626 Tf 12.86 0 Td [(or)]TJ/F30 9.9626 Tf 11.283 0 Td [(repl)]TJ/F8 9.9626 Tf 23.32 0 Td [(m)28(ust)-241(b)-28(e)-241(sp)-27(e)-1(ci\014)1(e)-1(d)1(,)]TJ -242.773 -11.955 Td [(thereb)28(y)-334(c)28(ho)-28(osing)-333(the)-333(initialization)-333(strategy)-334(as)-333(follo)28(ws:)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -22.128 Td [(Notes)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -19.925 Td [(parts)]TJ +/F8 9.9626 Tf 12.177 -20.082 Td [(1.)]TJ 0 g 0 G -/F8 9.9626 Tf 30.609 0 Td [(In)-337(this)-338(case)-338(w)28(e)-337(ha)28(v)27(e)-337(a)-338(subroutine)-337(sp)-28(ecifying)-337(the)-338(mapping)-337(b)-28(et)28(w)28(een)]TJ -8.691 -11.956 Td [(global)-225(indices)-225(and)-225(pro)-28(cess/lo)-27(c)-1(al)-225(i)1(ndex)-225(pairs.)-409(If)-225(this)-225(optional)-225(ar)1(gume)-1(n)28(t)]TJ 0 -11.955 Td [(is)-316(sp)-28(eci\014ed,)-320(then)-316(it)-317(is)-316(mandatory)-316(to)-317(sp)-28(ecify)-316(the)-316(argumen)28(t)]TJ/F30 9.9626 Tf 251.562 0 Td [(mg)]TJ/F8 9.9626 Tf 13.613 0 Td [(as)-316(w)27(ell.)]TJ -265.175 -11.955 Td [(The)-333(subroutine)-334(m)28(ust)-333(conform)-333(to)-334(the)-333(follo)28(wing)-334(in)28(terface:)]TJ + [-500(One)-241(of)-241(the)-240(optional)-241(argumen)28(ts)]TJ/F30 9.9626 Tf 144.914 0 Td [(parts)]TJ/F8 9.9626 Tf 26.152 0 Td [(,)]TJ/F30 9.9626 Tf 5.351 0 Td [(vg)]TJ/F8 9.9626 Tf 10.461 0 Td [(,)]TJ/F30 9.9626 Tf 5.351 0 Td [(vl)]TJ/F8 9.9626 Tf 10.46 0 Td [(,)]TJ/F30 9.9626 Tf 5.351 0 Td [(nl)]TJ/F8 9.9626 Tf 12.86 0 Td [(or)]TJ/F30 9.9626 Tf 11.283 0 Td [(repl)]TJ/F8 9.9626 Tf 23.32 0 Td [(m)28(ust)-241(b)-28(e)-241(sp)-27(e)-1(ci\014)1(e)-1(d)1(,)]TJ -242.773 -11.956 Td [(thereb)28(y)-334(c)28(ho)-28(osing)-333(the)-333(initialization)-333(strategy)-334(as)-333(follo)28(ws:)]TJ 0 g 0 G +/F27 9.9626 Tf 0 -20.135 Td [(parts)]TJ 0 g 0 G -/F30 9.9626 Tf 10.461 -17.933 Td [(interface)]TJ 15.691 -11.955 Td [(subroutine)-525(psb_parts\050glob_index,mg,np,pv,nv\051)]TJ 10.46 -11.955 Td [(integer,)-525(intent)-525(\050in\051)-1050(::)-525(glob_index,np,mg)]TJ 0 -11.955 Td [(integer,)-525(intent)-525(\050out\051)-525(::)-525(nv,)-525(pv\050*\051)]TJ -10.46 -11.955 Td [(end)-525(subroutine)-525(psb_parts)]TJ -15.691 -11.956 Td [(end)-525(interface)]TJ/F8 9.9626 Tf -10.461 -17.932 Td [(The)-333(input)-334(argu)1(m)-1(en)28(ts)-333(are:)]TJ +/F8 9.9626 Tf 30.609 0 Td [(In)-337(this)-338(case)-338(w)28(e)-337(ha)28(v)27(e)-337(a)-338(subroutine)-337(sp)-28(ecifying)-337(the)-338(mapping)-337(b)-28(et)28(w)28(een)]TJ -8.691 -11.955 Td [(global)-225(indices)-225(and)-225(pro)-28(cess/lo)-27(c)-1(al)-225(i)1(ndex)-225(pairs.)-409(If)-225(this)-225(optional)-225(ar)1(gume)-1(n)28(t)]TJ 0 -11.955 Td [(is)-316(sp)-28(eci\014ed,)-320(then)-316(it)-317(is)-316(mandatory)-316(to)-317(sp)-28(ecify)-316(the)-316(argumen)28(t)]TJ/F30 9.9626 Tf 251.562 0 Td [(mg)]TJ/F8 9.9626 Tf 13.613 0 Td [(as)-316(w)27(ell.)]TJ -265.175 -11.955 Td [(The)-333(subroutine)-334(m)28(ust)-333(conform)-333(to)-334(the)-333(follo)28(wing)-334(in)28(terface:)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -15.94 Td [(glob)]TJ -ET -q -1 0 0 1 168.412 120.525 cm -[]0 d 0 J 0.398 w 0 0 m 3.437 0 l S -Q -BT -/F27 9.9626 Tf 171.849 120.326 Td [(index)]TJ 0 g 0 G -/F8 9.9626 Tf 32.191 0 Td [(The)-333(global)-334(index)-333(to)-333(b)-28(e)-333(mapp)-28(ed;)]TJ +/F30 9.9626 Tf 10.461 -18.09 Td [(interface)]TJ 15.691 -11.955 Td [(subroutine)-525(psb_parts\050glob_index,mg,np,pv,nv\051)]TJ 0 g 0 G - 62.73 -29.888 Td [(55)]TJ +/F8 9.9626 Tf 93.898 -29.888 Td [(55)]TJ 0 g 0 G ET endstream endobj -1075 0 obj << +1092 0 obj << /Type /Page -/Contents 1076 0 R -/Resources 1074 0 R +/Contents 1093 0 R +/Resources 1091 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1079 0 R -/Annots [ 1073 0 R ] +/Parent 1096 0 R +/Annots [ 1090 0 R ] >> endobj -1073 0 obj << +1090 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 406.032 361.779 417.157] +/Rect [294.721 325.282 361.779 336.407] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1077 0 obj << -/D [1075 0 R /XYZ 99.895 740.998 null] +1094 0 obj << +/D [1092 0 R /XYZ 99.895 740.998 null] >> endobj -1078 0 obj << -/D [1075 0 R /XYZ 99.895 315.593 null] +1095 0 obj << +/D [1092 0 R /XYZ 99.895 234.372 null] >> endobj -1074 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R /F16 475 0 R >> +1091 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R /F11 654 0 R /F16 479 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1082 0 obj << -/Length 10027 +1100 0 obj << +/Length 10049 >> stream 0 g 0 G 0 g 0 G +BT +/F30 9.9626 Tf 234.142 706.129 Td [(integer,)-525(intent)-525(\050in\051)-1050(::)-525(glob_index,np,mg)]TJ 0 -11.955 Td [(integer,)-525(intent)-525(\050out\051)-525(::)-525(nv,)-525(pv\050*\051)]TJ -10.461 -11.955 Td [(end)-525(subroutine)-525(psb_parts)]TJ -15.691 -11.956 Td [(end)-525(interface)]TJ/F8 9.9626 Tf -10.461 -17.586 Td [(The)-333(input)-334(argumen)28(ts)-333(are:)]TJ 0 g 0 G +/F27 9.9626 Tf 0 -15.594 Td [(glob)]TJ +ET +q +1 0 0 1 219.221 637.283 cm +[]0 d 0 J 0.398 w 0 0 m 3.437 0 l S +Q BT -/F27 9.9626 Tf 197.529 706.129 Td [(np)]TJ +/F27 9.9626 Tf 222.658 637.083 Td [(index)]TJ +0 g 0 G +/F8 9.9626 Tf 32.192 0 Td [(The)-333(global)-334(index)-333(to)-333(b)-28(e)-333(mapp)-28(ed;)]TJ +0 g 0 G +/F27 9.9626 Tf -57.321 -13.774 Td [(np)]TJ 0 g 0 G /F8 9.9626 Tf 17.712 0 Td [(The)-333(n)27(u)1(m)27(b)-27(e)-1(r)-333(of)-333(pro)-28(cesses)-333(in)-334(the)-333(mapping;)]TJ 0 g 0 G -/F27 9.9626 Tf -17.712 -14.065 Td [(mg)]TJ +/F27 9.9626 Tf -17.712 -13.774 Td [(mg)]TJ 0 g 0 G -/F8 9.9626 Tf 20.258 0 Td [(The)-333(total)-334(n)28(um)28(b)-28(er)-333(of)-333(global)-334(ro)28(ws)-333(in)-334(th)1(e)-334(mapping;)]TJ -20.258 -16.175 Td [(The)-333(output)-334(argumen)28(ts)-333(are:)]TJ +/F8 9.9626 Tf 20.258 0 Td [(The)-333(total)-334(n)28(um)28(b)-28(er)-333(of)-333(global)-334(ro)28(ws)-333(in)-334(th)1(e)-334(mapping;)]TJ -20.258 -15.594 Td [(The)-333(output)-334(argumen)28(ts)-333(are:)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -16.174 Td [(n)32(v)]TJ +/F27 9.9626 Tf 0 -15.594 Td [(n)32(v)]TJ 0 g 0 G /F8 9.9626 Tf 17.075 0 Td [(The)-333(n)27(um)28(b)-28(er)-333(of)-333(en)28(tries)-334(in)]TJ/F30 9.9626 Tf 111.637 0 Td [(pv)]TJ/F8 9.9626 Tf 10.461 0 Td [(;)]TJ 0 g 0 G -/F27 9.9626 Tf -139.173 -14.065 Td [(p)32(v)]TJ +/F27 9.9626 Tf -139.173 -13.774 Td [(p)32(v)]TJ 0 g 0 G /F8 9.9626 Tf 17.075 0 Td [(A)-481(v)28(ector)-481(con)28(taining)-481(the)-481(indi)1(c)-1(es)-480(of)-481(the)-481(pro)-28(cesses)-481(to)-481(whic)28(h)-481(the)]TJ 1.555 -11.955 Td [(global)-468(index)-468(should)-468(b)-28(e)-468(assigend;)-536(eac)28(h)-468(en)28(try)-468(m)28(ust)-469(satisfy)-468(0)]TJ/F14 9.9626 Tf 270.508 0 Td [(\024)]TJ/F11 9.9626 Tf -270.508 -11.956 Td [(pv)]TJ/F8 9.9626 Tf 10.199 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F11 9.9626 Tf 8.603 0 Td [(<)-475(np)]TJ/F8 9.9626 Tf 23.47 0 Td [(;)-511(i)1(f)]TJ/F11 9.9626 Tf 18.163 0 Td [(nv)-511(>)]TJ/F8 9.9626 Tf 28.373 0 Td [(1)-451(w)27(e)-451(ha)28(v)27(e)-451(an)-452(in)1(dex)-452(assigned)-451(to)-452(m)28(ultiple)]TJ -96.115 -11.955 Td [(pro)-28(cesses,)-333(i.e.)-445(w)28(e)-333(ha)27(v)28(e)-333(an)-333(o)27(v)28(erlap)-333(among)-334(t)1(he)-334(sub)-28(domains.)]TJ 0 g 0 G -/F27 9.9626 Tf -40.548 -16.174 Td [(vg)]TJ -0 g 0 G -/F8 9.9626 Tf 16.757 0 Td [(In)-398(th)1(is)-398(case)-398(the)-397(asso)-28(ciation)-398(b)-27(e)-1(t)28(w)28(een)-398(an)-397(index)-398(and)-397(a)-398(pro)-27(ces)-1(s)-397(is)-398(sp)-28(ec-)]TJ 5.161 -11.956 Td [(i\014ed)-456(via)-456(an)-456(in)28(tege)-1(r)-456(v)28(ector)]TJ/F30 9.9626 Tf 120.743 0 Td [(vg\0501:mg\051)]TJ/F8 9.9626 Tf 41.842 0 Td [(;)-518(eac)28(h)-456(index)]TJ/F11 9.9626 Tf 59.63 0 Td [(i)]TJ/F14 9.9626 Tf 8.238 0 Td [(2)-482(f)]TJ/F8 9.9626 Tf 16.429 0 Td [(1)]TJ/F11 9.9626 Tf 6.642 0 Td [(:)-167(:)-166(:)-167(mg)]TJ/F14 9.9626 Tf 27.14 0 Td [(g)]TJ/F8 9.9626 Tf 9.526 0 Td [(is)]TJ -290.19 -11.955 Td [(assigned)-449(to)-449(pro)-28(cess)]TJ/F11 9.9626 Tf 89.776 0 Td [(v)-36(g)]TJ/F8 9.9626 Tf 10.296 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051.)-792(The)-449(v)28(ector)]TJ/F30 9.9626 Tf 67.232 0 Td [(vg)]TJ/F8 9.9626 Tf 14.935 0 Td [(m)28(ust)-449(b)-28(e)-449(iden)28(tica)-1(l)-449(on)-449(all)]TJ -189.546 -11.955 Td [(calling)-452(pro)-28(cesses;)-513(it)1(s)-453(en)28(tries)-453(ma)28(y)-453(ha)28(v)28(e)-453(th)1(e)-453(ranges)-453(\0500)]TJ/F11 9.9626 Tf 236.604 0 Td [(:)-167(:)-166(:)-167(np)]TJ/F14 9.9626 Tf 27.281 0 Td [(\000)]TJ/F8 9.9626 Tf 10.754 0 Td [(1\051)-453(or)]TJ -274.639 -11.955 Td [(\0501)]TJ/F11 9.9626 Tf 10.516 0 Td [(:)-167(:)-166(:)-167(np)]TJ/F8 9.9626 Tf 24.276 0 Td [(\051)-347(according)-347(to)-347(the)-347(v)55(alu)1(e)-348(of)]TJ/F30 9.9626 Tf 119.292 0 Td [(flag)]TJ/F8 9.9626 Tf 20.921 0 Td [(.)-486(The)-347(size)]TJ/F11 9.9626 Tf 47.231 0 Td [(mg)]TJ/F8 9.9626 Tf 17.314 0 Td [(ma)28(y)-347(b)-28(e)-347(sp)-28(ec-)]TJ -239.55 -11.955 Td [(i\014ed)-414(via)-414(the)-415(option)1(al)-415(argumen)28(t)]TJ/F30 9.9626 Tf 142.427 0 Td [(mg)]TJ/F8 9.9626 Tf 10.461 0 Td [(;)-455(the)-414(default)-414(is)-414(to)-414(use)-415(the)-414(en)28(tire)]TJ -152.888 -11.955 Td [(v)28(ector)]TJ/F30 9.9626 Tf 29.916 0 Td [(vg)]TJ/F8 9.9626 Tf 10.46 0 Td [(,)-333(th)27(u)1(s)-334(ha)28(ving)]TJ/F30 9.9626 Tf 60.108 0 Td [(mg=size\050vg\051)]TJ/F8 9.9626 Tf 57.534 0 Td [(.)]TJ -0 g 0 G -/F27 9.9626 Tf -179.936 -16.175 Td [(vl)]TJ +/F27 9.9626 Tf -40.548 -15.594 Td [(vg)]TJ 0 g 0 G -/F8 9.9626 Tf 14.211 0 Td [(In)-356(this)-357(case)-356(w)28(e)-357(are)-356(sp)-28(ecifying)-356(the)-357(list)-356(of)-356(indices)]TJ/F30 9.9626 Tf 210.708 0 Td [(vl\0501:nl\051)]TJ/F8 9.9626 Tf 45.393 0 Td [(assigned)-356(to)]TJ -248.394 -11.955 Td [(the)-462(curren)28(t)-462(pro)-27(ce)-1(ss;)-526(th)28(us,)-494(the)-461(global)-462(problem)-462(size)]TJ/F11 9.9626 Tf 229.323 0 Td [(mg)]TJ/F8 9.9626 Tf 18.457 0 Td [(is)-462(giv)28(en)-462(b)28(y)]TJ -247.78 -11.955 Td [(the)-405(range)-405(of)-404(the)-405(aggregate)-405(of)-405(the)-405(in)1(dividual)-405(v)28(ectors)]TJ/F30 9.9626 Tf 233.196 0 Td [(vl)]TJ/F8 9.9626 Tf 14.494 0 Td [(sp)-28(eci\014ed)-405(in)]TJ -247.69 -11.956 Td [(the)-481(calling)-481(p)1(ro)-28(cesses.)-887(The)-481(size)-481(ma)28(y)-481(b)-28(e)-481(sp)-27(eci\014ed)-481(via)-481(the)-481(optional)]TJ 0 -11.955 Td [(argumen)28(t)]TJ/F30 9.9626 Tf 44.85 0 Td [(nl)]TJ/F8 9.9626 Tf 10.461 0 Td [(;)-373(the)-361(default)-360(is)-360(to)-360(use)-360(the)-360(en)28(tire)-361(v)28(ector)]TJ/F30 9.9626 Tf 173.727 0 Td [(vl)]TJ/F8 9.9626 Tf 10.461 0 Td [(,)-367(th)28(us)-360(ha)28(ving)]TJ/F30 9.9626 Tf -239.499 -11.955 Td [(nl=size\050vl\051)]TJ/F8 9.9626 Tf 57.534 0 Td [(.)-419(If)]TJ/F30 9.9626 Tf 16.133 0 Td [(globalcheck=.true.)]TJ/F8 9.9626 Tf 96.698 0 Td [(the)-256(subroutine)-256(will)-256(c)27(hec)28(k)-256(ho)28(w)]TJ -170.365 -11.955 Td [(man)28(y)-255(times)-255(eac)28(h)-254(en)27(try)-254(in)-255(the)-254(global)-255(index)-254(s)-1(p)1(ac)-1(e)-254(\0501)]TJ/F11 9.9626 Tf 217.24 0 Td [(:)-167(:)-166(:)-167(mg)]TJ/F8 9.9626 Tf 27.14 0 Td [(\051)-255(is)-254(sp)-28(eci\014ed)]TJ -244.38 -11.955 Td [(in)-331(the)-331(input)-331(lists)]TJ/F30 9.9626 Tf 75.842 0 Td [(vl)]TJ/F8 9.9626 Tf 10.461 0 Td [(,)-331(th)27(us)-331(all)1(o)27(wing)-331(for)-331(t)1(he)-331(prese)-1(n)1(c)-1(e)-331(of)-330(o)27(v)28(erlap)-331(in)-331(the)]TJ -86.303 -11.955 Td [(input,)-338(and)-337(c)28(hec)27(king)-337(for)-337(\134orphan")-337(indices.)-456(If)]TJ/F30 9.9626 Tf 194.743 0 Td [(globalcheck=.false.)]TJ/F8 9.9626 Tf 99.376 0 Td [(,)]TJ -294.119 -11.956 Td [(the)-409(s)-1(u)1(broutine)-410(will)-409(not)-410(c)28(hec)28(k)-410(for)-409(o)28(v)27(erlap,)-428(and)-409(ma)27(y)-409(b)-28(e)-409(signi\014can)27(tly)]TJ 0 -11.955 Td [(faster,)-362(but)-357(the)-357(user)-356(is)-357(implicitly)-357(gu)1(aran)27(teeing)-356(that)-357(there)-357(ar)1(e)-357(neither)]TJ 0 -11.955 Td [(orphan)-333(nor)-333(o)27(v)28(erlap)-333(indices.)]TJ +/F8 9.9626 Tf 16.757 0 Td [(In)-398(th)1(is)-398(case)-398(the)-397(asso)-28(ciation)-398(b)-27(e)-1(t)28(w)28(een)-398(an)-397(index)-398(and)-397(a)-398(pro)-27(ces)-1(s)-397(is)-398(sp)-28(ec-)]TJ 5.161 -11.955 Td [(i\014ed)-456(via)-456(an)-456(in)28(tege)-1(r)-456(v)28(ector)]TJ/F30 9.9626 Tf 120.743 0 Td [(vg\0501:mg\051)]TJ/F8 9.9626 Tf 41.842 0 Td [(;)-518(eac)28(h)-456(index)]TJ/F11 9.9626 Tf 59.63 0 Td [(i)]TJ/F14 9.9626 Tf 8.238 0 Td [(2)-482(f)]TJ/F8 9.9626 Tf 16.429 0 Td [(1)]TJ/F11 9.9626 Tf 6.642 0 Td [(:)-167(:)-166(:)-167(mg)]TJ/F14 9.9626 Tf 27.14 0 Td [(g)]TJ/F8 9.9626 Tf 9.526 0 Td [(is)]TJ -290.19 -11.955 Td [(assigned)-449(to)-449(pro)-28(cess)]TJ/F11 9.9626 Tf 89.776 0 Td [(v)-36(g)]TJ/F8 9.9626 Tf 10.296 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051.)-792(The)-449(v)28(ector)]TJ/F30 9.9626 Tf 67.232 0 Td [(vg)]TJ/F8 9.9626 Tf 14.935 0 Td [(m)28(ust)-449(b)-28(e)-449(iden)28(tica)-1(l)-449(on)-449(all)]TJ -189.546 -11.955 Td [(calling)-452(pro)-28(cesses;)-513(it)1(s)-453(en)28(tries)-453(ma)28(y)-453(ha)28(v)28(e)-453(th)1(e)-453(ranges)-453(\0500)]TJ/F11 9.9626 Tf 236.604 0 Td [(:)-167(:)-166(:)-167(np)]TJ/F14 9.9626 Tf 27.281 0 Td [(\000)]TJ/F8 9.9626 Tf 10.754 0 Td [(1\051)-453(or)]TJ -274.639 -11.955 Td [(\0501)]TJ/F11 9.9626 Tf 10.516 0 Td [(:)-167(:)-166(:)-167(np)]TJ/F8 9.9626 Tf 24.276 0 Td [(\051)-347(according)-347(to)-347(the)-347(v)55(alu)1(e)-348(of)]TJ/F30 9.9626 Tf 119.292 0 Td [(flag)]TJ/F8 9.9626 Tf 20.921 0 Td [(.)-486(The)-347(size)]TJ/F11 9.9626 Tf 47.231 0 Td [(mg)]TJ/F8 9.9626 Tf 17.314 0 Td [(ma)28(y)-347(b)-28(e)-347(sp)-28(ec-)]TJ -239.55 -11.955 Td [(i\014ed)-414(via)-414(the)-415(option)1(al)-415(argumen)28(t)]TJ/F30 9.9626 Tf 142.427 0 Td [(mg)]TJ/F8 9.9626 Tf 10.461 0 Td [(;)-455(the)-414(default)-414(is)-414(to)-414(use)-415(the)-414(en)28(tire)]TJ -152.888 -11.956 Td [(v)28(ector)]TJ/F30 9.9626 Tf 29.916 0 Td [(vg)]TJ/F8 9.9626 Tf 10.46 0 Td [(,)-333(th)27(u)1(s)-334(ha)28(ving)]TJ/F30 9.9626 Tf 60.108 0 Td [(mg=size\050vg\051)]TJ/F8 9.9626 Tf 57.534 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -21.918 -16.175 Td [(nl)]TJ +/F27 9.9626 Tf -179.936 -15.593 Td [(vl)]TJ 0 g 0 G -/F8 9.9626 Tf 14.529 0 Td [(If)-307(this)-308(argumen)28(t)-307(is)-308(sp)-28(eci\014ed)-307(alone)-308(\050i.e.)-435(without)]TJ/F30 9.9626 Tf 206.41 0 Td [(vl)]TJ/F8 9.9626 Tf 10.461 0 Td [(\051)-307(the)-308(result)-307(is)-308(a)-307(gen-)]TJ -209.482 -11.955 Td [(eralized)-313(ro)27(w-blo)-27(c)27(k)-313(distribution)-313(in)-314(whic)28(h)-313(eac)27(h)-313(pro)-28(cess)]TJ/F11 9.9626 Tf 232.18 0 Td [(I)]TJ/F8 9.9626 Tf 8.284 0 Td [(gets)-313(a)-1(ssigned)]TJ -240.464 -11.955 Td [(a)-333(consecutiv)27(e)-333(c)28(h)28(unk)-334(of)]TJ/F11 9.9626 Tf 101.342 0 Td [(N)]TJ/F10 6.9738 Tf 8.005 -1.494 Td [(I)]TJ/F8 9.9626 Tf 7.338 1.494 Td [(=)]TJ/F11 9.9626 Tf 10.517 0 Td [(nl)]TJ/F8 9.9626 Tf 12.469 0 Td [(global)-333(indices.)]TJ +/F8 9.9626 Tf 14.211 0 Td [(In)-356(this)-357(case)-356(w)28(e)-357(are)-356(sp)-28(ecifying)-356(the)-357(list)-356(of)-356(indices)]TJ/F30 9.9626 Tf 210.708 0 Td [(vl\0501:nl\051)]TJ/F8 9.9626 Tf 45.393 0 Td [(assigned)-356(to)]TJ -248.394 -11.955 Td [(the)-462(curren)28(t)-462(pro)-27(ce)-1(ss;)-526(th)28(us,)-494(the)-461(global)-462(problem)-462(size)]TJ/F11 9.9626 Tf 229.323 0 Td [(mg)]TJ/F8 9.9626 Tf 18.457 0 Td [(is)-462(giv)28(en)-462(b)28(y)]TJ -247.78 -11.956 Td [(the)-405(range)-405(of)-404(the)-405(aggregate)-405(of)-405(the)-405(in)1(dividual)-405(v)28(ectors)]TJ/F30 9.9626 Tf 233.196 0 Td [(vl)]TJ/F8 9.9626 Tf 14.494 0 Td [(sp)-28(eci\014ed)-405(in)]TJ -247.69 -11.955 Td [(the)-481(calling)-481(p)1(ro)-28(cesses.)-887(The)-481(size)-481(ma)28(y)-481(b)-28(e)-481(sp)-27(eci\014ed)-481(via)-481(the)-481(optional)]TJ 0 -11.955 Td [(argumen)28(t)]TJ/F30 9.9626 Tf 44.85 0 Td [(nl)]TJ/F8 9.9626 Tf 10.461 0 Td [(;)-373(the)-361(default)-360(is)-360(to)-360(use)-360(the)-360(en)28(tire)-361(v)28(ector)]TJ/F30 9.9626 Tf 173.727 0 Td [(vl)]TJ/F8 9.9626 Tf 10.461 0 Td [(,)-367(th)28(us)-360(ha)28(ving)]TJ/F30 9.9626 Tf -239.499 -11.955 Td [(nl=size\050vl\051)]TJ/F8 9.9626 Tf 57.534 0 Td [(.)-419(If)]TJ/F30 9.9626 Tf 16.133 0 Td [(globalcheck=.true.)]TJ/F8 9.9626 Tf 96.698 0 Td [(the)-256(subroutine)-256(will)-256(c)27(hec)28(k)-256(ho)28(w)]TJ -170.365 -11.955 Td [(man)28(y)-255(times)-255(eac)28(h)-254(en)27(try)-254(in)-255(the)-254(global)-255(index)-254(s)-1(p)1(ac)-1(e)-254(\0501)]TJ/F11 9.9626 Tf 217.24 0 Td [(:)-167(:)-166(:)-167(mg)]TJ/F8 9.9626 Tf 27.14 0 Td [(\051)-255(is)-254(sp)-28(eci\014ed)]TJ -244.38 -11.955 Td [(in)-331(the)-331(input)-331(lists)]TJ/F30 9.9626 Tf 75.842 0 Td [(vl)]TJ/F8 9.9626 Tf 10.461 0 Td [(,)-331(th)27(us)-331(all)1(o)27(wing)-331(for)-331(t)1(he)-331(prese)-1(n)1(c)-1(e)-331(of)-330(o)27(v)28(erlap)-331(in)-331(the)]TJ -86.303 -11.956 Td [(input,)-338(and)-337(c)28(hec)27(king)-337(for)-337(\134orphan")-337(indices.)-456(If)]TJ/F30 9.9626 Tf 194.743 0 Td [(globalcheck=.false.)]TJ/F8 9.9626 Tf 99.376 0 Td [(,)]TJ -294.119 -11.955 Td [(the)-409(s)-1(u)1(broutine)-410(will)-409(not)-410(c)28(hec)28(k)-410(for)-409(o)28(v)27(erlap,)-428(and)-409(ma)27(y)-409(b)-28(e)-409(signi\014can)27(tly)]TJ 0 -11.955 Td [(faster,)-362(but)-357(the)-357(user)-356(is)-357(implicitly)-357(gu)1(aran)27(teeing)-356(that)-357(there)-357(ar)1(e)-357(neither)]TJ 0 -11.955 Td [(orphan)-333(nor)-333(o)27(v)28(erlap)-333(indices.)]TJ 0 g 0 G -/F27 9.9626 Tf -161.589 -16.175 Td [(repl)]TJ -0 g 0 G -/F8 9.9626 Tf 24.498 0 Td [(This)-239(argumen)28(ts)-240(sp)-27(e)-1(ci\014es)-239(to)-239(replicate)-239(all)-239(indices)-240(on)-239(all)-239(pro)-28(cesses.)-413(This)]TJ -2.58 -11.955 Td [(is)-312(a)-311(sp)-28(ecial)-312(purp)-27(ose)-312(data)-312(allo)-27(cation)-312(that)-311(is)-312(useful)-312(in)-311(the)-312(construction)]TJ 0 -11.955 Td [(of)-333(some)-334(m)28(ultilev)28(el)-334(p)1(rec)-1(on)1(ditioners.)]TJ -0 g 0 G - -34.648 -20.394 Td [(2.)]TJ -0 g 0 G - [-500(On)-333(exit)-334(from)-333(this)-333(routine)-333(the)-334(descriptor)-333(is)-333(in)-334(the)-333(build)-333(state.)]TJ +/F27 9.9626 Tf -21.918 -15.594 Td [(lidx)]TJ 0 g 0 G - 0 -20.394 Td [(3.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(The)-463(optional)-462(argumen)28(t)]TJ/F30 9.9626 Tf 107.67 0 Td [(lidx)]TJ/F8 9.9626 Tf 25.531 0 Td [(is)-463(a)28(v)56(ailable)-463(for)-462(those)-463(cases)-463(in)-463(whi)1(c)27(h)]TJ -135.041 -11.955 Td [(the)-446(user)-446(has)-446(already)-446(established)-446(a)-446(global-to-lo)-28(cal)-446(mapping;)-502(if)-446(it)-446(is)]TJ 0 -11.955 Td [(sp)-28(eci\014ed,)-373(eac)28(h)-365(index)-365(in)]TJ/F30 9.9626 Tf 105.175 0 Td [(vl\050i\051)]TJ/F8 9.9626 Tf 29.789 0 Td [(will)-365(b)-28(e)-365(mapp)-28(ed)-365(to)-365(the)-365(corresp)-27(onding)]TJ -134.964 -11.955 Td [(lo)-28(cal)-392(index)]TJ/F30 9.9626 Tf 51.539 0 Td [(lidx\050i\051)]TJ/F8 9.9626 Tf 36.613 0 Td [(.)-621(When)-392(sp)-28(ecifying)-392(the)-392(argumen)28(t)]TJ/F30 9.9626 Tf 148.368 0 Td [(lidx)]TJ/F8 9.9626 Tf 24.828 0 Td [(the)-392(user)]TJ -261.348 -11.956 Td [(w)28(ould)-420(also)-420(lik)28(ely)-419(e)-1(mpl)1(o)27(y)]TJ/F30 9.9626 Tf 113.086 0 Td [(lidx)]TJ/F8 9.9626 Tf 25.103 0 Td [(in)-420(calls)-419(to)]TJ/F30 9.9626 Tf 48.576 0 Td [(psb_cdins)]TJ/F8 9.9626 Tf 51.254 0 Td [(and)]TJ/F30 9.9626 Tf 20.232 0 Td [(local)]TJ/F8 9.9626 Tf 30.333 0 Td [(in)]TJ -288.584 -11.955 Td [(calls)-333(to)]TJ/F30 9.9626 Tf 34.371 0 Td [(psb_spins)]TJ/F8 9.9626 Tf 50.394 0 Td [(and)]TJ/F30 9.9626 Tf 19.372 0 Td [(psb_geins)]TJ/F8 9.9626 Tf 47.073 0 Td [(;)-333(see)-334(also)-333(sec.)]TJ +0 0 1 rg 0 0 1 RG + [-334(2.3.1)]TJ 0 g 0 G - [-500(Calling)-339(the)-339(routine)-339(with)]TJ/F30 9.9626 Tf 121.471 0 Td [(vg)]TJ/F8 9.9626 Tf 13.839 0 Td [(or)]TJ/F30 9.9626 Tf 12.262 0 Td [(parts)]TJ/F8 9.9626 Tf 29.53 0 Td [(implies)-339(that)-339(ev)28(e)-1(r)1(y)-340(pro)-27(cess)-340(will)-339(scan)]TJ -164.372 -11.955 Td [(the)-333(en)27(tire)-333(index)-333(space)-334(to)-333(\014gure)-333(out)-333(the)-334(lo)-28(cal)-333(indices.)]TJ + [(.)]TJ 0 g 0 G - -12.73 -20.394 Td [(4.)]TJ +/F27 9.9626 Tf -173.128 -15.593 Td [(nl)]TJ 0 g 0 G - [-500(Ov)28(erlapp)-28(ed)-333(indices)-334(are)-333(p)-28(ossible)-333(with)-333(b)-28(oth)]TJ/F30 9.9626 Tf 199.198 0 Td [(parts)]TJ/F8 9.9626 Tf 29.472 0 Td [(and)]TJ/F30 9.9626 Tf 19.372 0 Td [(vl)]TJ/F8 9.9626 Tf 13.782 0 Td [(in)28(v)28(o)-28(cations.)]TJ +/F8 9.9626 Tf 14.529 0 Td [(If)-307(this)-308(argumen)28(t)-307(is)-308(sp)-28(eci\014ed)-307(alone)-308(\050i.e.)-435(without)]TJ/F30 9.9626 Tf 206.41 0 Td [(vl)]TJ/F8 9.9626 Tf 10.461 0 Td [(\051)-307(the)-308(result)-307(is)-308(a)-307(gen-)]TJ -209.482 -11.956 Td [(eralized)-313(ro)27(w-blo)-27(c)27(k)-313(distribution)-313(in)-314(whic)28(h)-313(eac)27(h)-313(pro)-28(cess)]TJ/F11 9.9626 Tf 232.18 0 Td [(I)]TJ/F8 9.9626 Tf 8.284 0 Td [(gets)-313(as)-1(signed)]TJ -240.464 -11.955 Td [(a)-333(consecutiv)27(e)-333(c)28(h)28(unk)-334(of)]TJ/F11 9.9626 Tf 101.342 0 Td [(N)]TJ/F10 6.9738 Tf 8.005 -1.494 Td [(I)]TJ/F8 9.9626 Tf 7.338 1.494 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(nl)]TJ/F8 9.9626 Tf 12.47 0 Td [(global)-333(indices.)]TJ 0 g 0 G - -261.824 -20.395 Td [(5.)]TJ +/F27 9.9626 Tf -161.589 -15.593 Td [(repl)]TJ 0 g 0 G - [-500(When)-222(the)-222(subroutine)-222(is)-223(in)28(v)28(ok)28(ed)-223(with)]TJ/F30 9.9626 Tf 170.611 0 Td [(vl)]TJ/F8 9.9626 Tf 12.674 0 Td [(in)-222(conjunction)-222(with)]TJ/F30 9.9626 Tf 84.96 0 Td [(globalcheck=.true.)]TJ/F8 9.9626 Tf 94.146 0 Td [(,)]TJ -349.661 -11.955 Td [(it)-368(will)-369(p)-28(erform)-368(a)-368(s)-1(can)-368(of)-368(the)-369(index)-368(space)-369(to)-368(searc)27(h)-368(for)-368(o)27(v)28(erlap)-368(or)-369(orph)1(an)]TJ 0 -11.955 Td [(indices.)]TJ +/F8 9.9626 Tf 24.498 0 Td [(This)-239(argumen)28(ts)-240(sp)-27(e)-1(ci\014es)-239(to)-239(replicate)-239(all)-239(indices)-240(on)-239(all)-239(pro)-28(cesses.)-413(This)]TJ -2.58 -11.956 Td [(is)-312(a)-311(sp)-28(ecial)-312(purp)-27(ose)-312(data)-312(allo)-27(cation)-312(that)-311(is)-312(useful)-312(in)-311(the)-312(construction)]TJ 0 -11.955 Td [(of)-333(some)-334(m)28(ultilev)28(el)-334(p)1(rec)-1(on)1(ditioners.)]TJ 0 g 0 G - -12.73 -20.394 Td [(6.)]TJ + -34.648 -19.579 Td [(2.)]TJ 0 g 0 G - [-500(When)-222(the)-222(subroutine)-222(is)-223(in)28(v)28(ok)28(ed)-223(with)]TJ/F30 9.9626 Tf 170.611 0 Td [(vl)]TJ/F8 9.9626 Tf 12.674 0 Td [(in)-222(conjunction)-222(with)]TJ/F30 9.9626 Tf 84.959 0 Td [(globalcheck=.false.)]TJ/F8 9.9626 Tf 99.377 0 Td [(,)]TJ -354.891 -11.955 Td [(no)-405(index)-405(space)-405(scan)-405(will)-405(tak)28(e)-405(place.)-660(Th)28(us)-405(it)-405(is)-405(the)-405(resp)-28(onsibilit)28(y)-405(of)-405(the)]TJ 0 -11.955 Td [(user)-419(to)-418(mak)28(e)-419(sure)-418(that)-419(the)-418(indices)-419(sp)-28(eci\014ed)-418(in)]TJ/F30 9.9626 Tf 211.319 0 Td [(vl)]TJ/F8 9.9626 Tf 14.63 0 Td [(ha)28(v)28(e)-419(neither)-418(orphans)]TJ -225.949 -11.956 Td [(nor)-333(o)27(v)28(erlaps;)-333(if)-333(this)-334(assumption)-333(fails,)-333(results)-334(will)-333(b)-28(e)-333(unpredictable.)]TJ + [-500(On)-333(exit)-334(from)-333(this)-333(routine)-333(the)-334(descriptor)-333(is)-333(in)-334(the)-333(build)-333(state.)]TJ 0 g 0 G - 141.968 -29.887 Td [(56)]TJ + 154.698 -29.888 Td [(56)]TJ 0 g 0 G ET endstream endobj -1081 0 obj << +1099 0 obj << /Type /Page -/Contents 1082 0 R -/Resources 1080 0 R +/Contents 1100 0 R +/Resources 1098 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1079 0 R ->> endobj -1083 0 obj << -/D [1081 0 R /XYZ 150.705 740.998 null] +/Parent 1096 0 R +/Annots [ 1097 0 R ] >> endobj -1084 0 obj << -/D [1081 0 R /XYZ 150.705 287.871 null] ->> endobj -1085 0 obj << -/D [1081 0 R /XYZ 150.705 267.476 null] ->> endobj -1086 0 obj << -/D [1081 0 R /XYZ 150.705 235.127 null] +1097 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [408.792 215.702 431.263 226.827] +/Subtype /Link +/A << /S /GoTo /D (subsubsection.2.3.1) >> >> endobj -1087 0 obj << -/D [1081 0 R /XYZ 150.705 214.456 null] +1101 0 obj << +/D [1099 0 R /XYZ 150.705 740.998 null] >> endobj -1088 0 obj << -/D [1081 0 R /XYZ 150.705 172.366 null] +1102 0 obj << +/D [1099 0 R /XYZ 150.705 134.155 null] >> endobj -1080 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R /F14 667 0 R /F11 649 0 R /F10 666 0 R >> +1098 0 obj << +/Font << /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R /F10 671 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1091 0 obj << -/Length 507 +1105 0 obj << +/Length 2660 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F8 9.9626 Tf 112.072 706.129 Td [(7.)]TJ +/F8 9.9626 Tf 112.072 706.129 Td [(3.)]TJ +0 g 0 G + [-500(Calling)-339(the)-339(routine)-339(with)]TJ/F30 9.9626 Tf 121.471 0 Td [(vg)]TJ/F8 9.9626 Tf 13.839 0 Td [(or)]TJ/F30 9.9626 Tf 12.262 0 Td [(parts)]TJ/F8 9.9626 Tf 29.53 0 Td [(implies)-339(that)-339(ev)28(ery)-340(pr)1(o)-28(cess)-340(will)-339(scan)]TJ -164.372 -11.955 Td [(the)-333(en)27(tire)-333(index)-333(space)-334(to)-333(\014gure)-333(out)-333(the)-334(lo)-28(cal)-333(indices.)]TJ +0 g 0 G + -12.73 -19.926 Td [(4.)]TJ +0 g 0 G + [-500(Ov)28(erlapp)-28(ed)-333(indices)-334(are)-333(p)-28(ossible)-333(with)-333(b)-28(oth)]TJ/F30 9.9626 Tf 199.198 0 Td [(parts)]TJ/F8 9.9626 Tf 29.472 0 Td [(and)]TJ/F30 9.9626 Tf 19.372 0 Td [(vl)]TJ/F8 9.9626 Tf 13.782 0 Td [(in)28(v)28(o)-28(cations.)]TJ +0 g 0 G + -261.824 -19.925 Td [(5.)]TJ +0 g 0 G + [-500(When)-222(the)-222(subroutine)-222(is)-223(in)28(v)28(ok)28(ed)-223(with)]TJ/F30 9.9626 Tf 170.61 0 Td [(vl)]TJ/F8 9.9626 Tf 12.675 0 Td [(in)-222(conjunction)-222(with)]TJ/F30 9.9626 Tf 84.959 0 Td [(globalcheck=.true.)]TJ/F8 9.9626 Tf 94.147 0 Td [(,)]TJ -349.661 -11.955 Td [(it)-368(will)-369(p)-28(erform)-368(a)-368(s)-1(can)-368(of)-368(the)-369(index)-368(space)-369(to)-368(searc)27(h)-368(for)-368(o)27(v)28(erlap)-368(or)-369(orp)1(han)]TJ 0 -11.955 Td [(indices.)]TJ +0 g 0 G + -12.73 -19.925 Td [(6.)]TJ +0 g 0 G + [-500(When)-222(the)-222(subroutine)-222(is)-223(in)28(v)28(ok)28(ed)-223(with)]TJ/F30 9.9626 Tf 170.61 0 Td [(vl)]TJ/F8 9.9626 Tf 12.675 0 Td [(in)-222(conjunction)-222(with)]TJ/F30 9.9626 Tf 84.959 0 Td [(globalcheck=.false.)]TJ/F8 9.9626 Tf 99.377 0 Td [(,)]TJ -354.891 -11.956 Td [(no)-405(index)-405(space)-405(scan)-405(will)-405(tak)28(e)-405(place.)-660(Th)28(us)-405(it)-405(is)-405(the)-405(resp)-28(onsibilit)28(y)-405(of)-405(the)]TJ 0 -11.955 Td [(user)-419(to)-418(mak)28(e)-419(sure)-418(that)-419(the)-418(indices)-419(sp)-28(eci\014ed)-418(in)]TJ/F30 9.9626 Tf 211.319 0 Td [(vl)]TJ/F8 9.9626 Tf 14.63 0 Td [(ha)28(v)28(e)-419(neither)-418(orphans)]TJ -225.949 -11.955 Td [(nor)-333(o)28(v)27(erlaps;)-333(if)-333(this)-334(assumption)-333(fails,)-333(results)-334(will)-333(b)-28(e)-333(unpredictable.)]TJ +0 g 0 G + -12.73 -19.925 Td [(7.)]TJ 0 g 0 G [-500(Orphan)-313(and)-312(o)27(v)28(erlap)-312(indices)-313(are)-313(imp)-28(ossible)-313(b)28(y)-313(construction)-312(when)-313(the)-313(sub-)]TJ 12.73 -11.955 Td [(routine)-333(is)-334(in)28(v)28(ok)28(ed)-334(with)]TJ/F30 9.9626 Tf 103.307 0 Td [(nl)]TJ/F8 9.9626 Tf 13.782 0 Td [(\050alone\051,)-333(or)]TJ/F30 9.9626 Tf 48.734 0 Td [(vg)]TJ/F8 9.9626 Tf 10.46 0 Td [(.)]TJ 0 g 0 G - -34.315 -603.736 Td [(57)]TJ + -34.315 -452.304 Td [(57)]TJ 0 g 0 G ET endstream endobj -1090 0 obj << +1104 0 obj << /Type /Page -/Contents 1091 0 R -/Resources 1089 0 R +/Contents 1105 0 R +/Resources 1103 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1079 0 R +/Parent 1096 0 R >> endobj -1092 0 obj << -/D [1090 0 R /XYZ 99.895 740.998 null] +1106 0 obj << +/D [1104 0 R /XYZ 99.895 740.998 null] >> endobj -1093 0 obj << -/D [1090 0 R /XYZ 99.895 716.092 null] +1107 0 obj << +/D [1104 0 R /XYZ 99.895 716.092 null] >> endobj -1089 0 obj << -/Font << /F8 478 0 R /F30 664 0 R >> +1108 0 obj << +/D [1104 0 R /XYZ 99.895 688.251 null] +>> endobj +1109 0 obj << +/D [1104 0 R /XYZ 99.895 668.049 null] +>> endobj +1110 0 obj << +/D [1104 0 R /XYZ 99.895 626.428 null] +>> endobj +1111 0 obj << +/D [1104 0 R /XYZ 99.895 568.7 null] +>> endobj +1103 0 obj << +/Font << /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1097 0 obj << -/Length 5575 +1115 0 obj << +/Length 7171 >> stream 0 g 0 G @@ -11422,122 +11710,184 @@ BT /F16 11.9552 Tf 175.796 706.129 Td [(cdins)-375(|)-375(Comm)31(unication)-375(descriptor)-375(insert)-375(routine)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_cdins\050nz,)-525(ia,)-525(ja,)-525(desc_a,)-525(info\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-428(subroutine)-427(examines)-428(the)-428(edges)-428(of)-428(the)-427(graph)-428(asso)-28(ciated)-428(with)-428(t)1(he)-428(dis-)]TJ -14.944 -11.955 Td [(cretization)-481(mesh)-480(\050and)-481(isomorphic)-480(to)-481(the)-480(sparsit)27(y)-480(pattern)-481(of)-480(a)-481(lin)1(e)-1(ar)-480(system)]TJ 0 -11.956 Td [(co)-28(e\016cien)28(t)-359(matrix\051,)-366(storing)-359(them)-359(as)-359(necess)-1(ar)1(y)-360(in)28(to)-359(the)-359(comm)28(unication)-359(des)-1(crip)1(-)]TJ 0 -11.955 Td [(tor.)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_cdins\050nz,)-525(ia,)-525(ja,)-525(desc_a,)-525(info)-525([,ila,jla]\051)]TJ 0 -11.956 Td [(call)-525(psb_cdins\050nz,ja,desc,info[,jla,mask,lidx]\051)]TJ/F8 9.9626 Tf 14.944 -20.465 Td [(This)-428(subroutine)-427(examines)-428(the)-428(edges)-428(of)-428(the)-427(graph)-428(asso)-28(ciated)-428(with)-428(t)1(he)-428(dis-)]TJ -14.944 -11.955 Td [(cretization)-481(mesh)-480(\050and)-481(isomorphic)-480(to)-481(the)-480(sparsit)27(y)-480(pattern)-481(of)-480(a)-481(lin)1(e)-1(ar)-480(system)]TJ 0 -11.955 Td [(co)-28(e\016cien)28(t)-359(matrix\051,)-366(storing)-359(them)-359(as)-359(necess)-1(ar)1(y)-360(in)28(to)-359(the)-359(comm)28(unication)-359(des)-1(crip)1(-)]TJ 0 -11.955 Td [(tor.)-506(In)-353(the)-354(\014rst)-354(form)-354(the)-354(edges)-353(are)-354(sp)-28(eci\014ed)-354(as)-354(pairs)-353(of)-354(indices)]TJ/F11 9.9626 Tf 278.053 0 Td [(ia)]TJ/F8 9.9626 Tf 8.698 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F11 9.9626 Tf 3.874 0 Td [(;)-167(j)-57(a)]TJ/F8 9.9626 Tf 14.367 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.433 0 Td [(\051;)-364(the)]TJ -319.606 -11.955 Td [(starting)-394(index)]TJ/F11 9.9626 Tf 65.222 0 Td [(ia)]TJ/F8 9.9626 Tf 8.699 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)-394(should)-394(b)-28(elong)-394(to)-394(the)-395(cur)1(re)-1(n)28(t)-394(pro)-28(cess.)-627(In)-394(the)-394(second)-394(form)]TJ -81.227 -11.955 Td [(only)-333(the)-334(remote)-333(indices)]TJ/F11 9.9626 Tf 104.968 0 Td [(j)-57(a)]TJ/F8 9.9626 Tf 9.939 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)-333(are)-334(sp)-27(e)-1(ci\014ed.)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -21.918 Td [(T)32(yp)-32(e:)]TJ +/F27 9.9626 Tf -122.213 -20.465 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G /F8 9.9626 Tf 33.797 0 Td [(Async)28(hronous.)]TJ 0 g 0 G -/F27 9.9626 Tf -33.797 -19.925 Td [(On)-383(En)32(try)]TJ +/F27 9.9626 Tf -33.797 -19.345 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G - 0 -19.925 Td [(nz)]TJ + 0 -19.344 Td [(nz)]TJ 0 g 0 G -/F8 9.9626 Tf 16.438 0 Td [(the)-333(n)27(u)1(m)27(b)-27(e)-1(r)-333(of)-333(p)-28(oin)28(ts)-333(b)-28(eing)-333(inserted.)]TJ 8.469 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue.)]TJ +/F8 9.9626 Tf 16.438 0 Td [(the)-333(n)27(u)1(m)27(b)-27(e)-1(r)-333(of)-333(p)-28(oin)28(ts)-333(b)-28(eing)-333(inserte)-1(d)1(.)]TJ 8.469 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.925 Td [(ia)]TJ +/F27 9.9626 Tf -24.907 -19.344 Td [(ia)]TJ 0 g 0 G -/F8 9.9626 Tf 13.733 0 Td [(the)-333(indices)-334(of)-333(the)-333(starting)-334(v)28(ertex)-333(of)-333(the)-334(edges)-333(b)-28(eing)-333(inserted.)]TJ 11.174 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(arra)27(y)-333(of)-333(length)]TJ/F11 9.9626 Tf 172.547 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(.)]TJ +/F8 9.9626 Tf 13.733 0 Td [(the)-333(indices)-334(of)-333(the)-333(starting)-334(v)28(ertex)-333(of)-333(the)-334(edges)-333(b)-28(eing)-333(inserted.)]TJ 11.174 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(arra)27(y)-333(of)-333(length)]TJ/F11 9.9626 Tf 172.547 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -208.505 -19.925 Td [(ja)]TJ +/F27 9.9626 Tf -208.505 -19.344 Td [(ja)]TJ 0 g 0 G -/F8 9.9626 Tf 14.051 0 Td [(the)-333(indices)-334(of)-333(the)-333(end)-334(v)28(ertex)-333(of)-333(the)-334(edges)-333(b)-28(eing)-333(inserted.)]TJ 10.856 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(arra)27(y)-333(of)-333(length)]TJ/F11 9.9626 Tf 172.547 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(.)]TJ +/F8 9.9626 Tf 14.051 0 Td [(the)-333(indices)-334(of)-333(the)-333(end)-334(v)28(ertex)-333(of)-334(t)1(he)-334(edges)-333(b)-28(eing)-333(inserted.)]TJ 10.856 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(arra)27(y)-333(of)-333(length)]TJ/F11 9.9626 Tf 172.547 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -208.505 -21.918 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -208.505 -19.344 Td [(mask)]TJ 0 g 0 G +/F8 9.9626 Tf 30.664 0 Td [(Mask)-329(e)-1(n)28(tries)-329(in)]TJ/F30 9.9626 Tf 70.038 0 Td [(ja)]TJ/F8 9.9626 Tf 10.461 0 Td [(,)-330(they)-330(are)-329(inserted)-330(only)-329(when)-329(the)-330(corresp)-28(onding)]TJ/F30 9.9626 Tf 211.627 0 Td [(mask)]TJ/F8 9.9626 Tf -297.883 -11.955 Td [(en)28(tries)-334(are)]TJ/F30 9.9626 Tf 48.54 0 Td [(.true.)]TJ/F8 9.9626 Tf -48.54 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(logical)-333(arra)28(y)-334(of)-333(length)]TJ/F11 9.9626 Tf 165.048 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(,)-333(default)]TJ/F30 9.9626 Tf 39.574 0 Td [(.true.)]TJ/F8 9.9626 Tf 31.382 0 Td [(.)]TJ 0 g 0 G - 0 -19.925 Td [(desc)]TJ +/F27 9.9626 Tf -271.962 -19.344 Td [(lidx)]TJ +0 g 0 G +/F8 9.9626 Tf 23.758 0 Td [(User)-333(de\014ned)-334(lo)-27(cal)-334(indices)-333(for)]TJ/F30 9.9626 Tf 128.85 0 Td [(ja)]TJ/F8 9.9626 Tf 10.461 0 Td [(.)]TJ -138.162 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)-333(of)-333(length)]TJ/F11 9.9626 Tf 172.547 0 Td [(nz)]TJ/F8 9.9626 Tf 11.052 0 Td [(.)]TJ +0 g 0 G +/F27 9.9626 Tf -208.506 -20.465 Td [(On)-383(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.344 Td [(desc)]TJ ET q -1 0 0 1 172.619 343.231 cm +1 0 0 1 172.619 168.346 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 343.032 Td [(a)]TJ +/F27 9.9626 Tf 176.057 168.146 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(the)-333(up)-28(dated)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(the)-333(up)-28(dated)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 295.411 cm +1 0 0 1 362.845 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 295.211 Td [(desc)]TJ +/F30 9.9626 Tf 365.983 120.326 Td [(desc)]TJ ET q -1 0 0 1 387.532 295.411 cm +1 0 0 1 387.532 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 390.67 295.211 Td [(type)]TJ +/F30 9.9626 Tf 390.67 120.326 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -260.887 -19.925 Td [(info)]TJ + -94.013 -29.888 Td [(58)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ/F16 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +ET +endstream +endobj +1114 0 obj << +/Type /Page +/Contents 1115 0 R +/Resources 1113 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1096 0 R +/Annots [ 1112 0 R ] +>> endobj +1112 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [345.53 117.115 412.588 128.24] +/Subtype /Link +/A << /S /GoTo /D (descdata) >> +>> endobj +1116 0 obj << +/D [1114 0 R /XYZ 150.705 740.998 null] +>> endobj +230 0 obj << +/D [1114 0 R /XYZ 150.705 697.37 null] +>> endobj +1113 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F11 654 0 R /F27 481 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1120 0 obj << +/Length 3156 +>> +stream 0 g 0 G -/F8 9.9626 Tf 12.176 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(This)-333(routine)-334(ma)28(y)-333(only)-333(b)-28(e)-334(called)-333(if)-333(the)-334(d)1(e)-1(scriptor)-333(is)-333(in)-333(the)-334(build)-333(state;)]TJ +0 g 0 G +BT +/F27 9.9626 Tf 99.895 706.129 Td [(info)]TJ +0 g 0 G +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +0 g 0 G +/F27 9.9626 Tf -24.907 -19.925 Td [(ila)]TJ +0 g 0 G +/F8 9.9626 Tf 16.916 0 Td [(the)-333(lo)-28(cal)-333(indices)-334(of)-333(the)-333(starting)-334(v)28(ertex)-333(of)-334(the)-333(edges)-333(b)-28(eing)-333(inserted.)]TJ 7.991 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)-333(of)-333(length)]TJ/F11 9.9626 Tf 172.548 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(.)]TJ +0 g 0 G +/F27 9.9626 Tf -208.506 -19.925 Td [(jla)]TJ +0 g 0 G +/F8 9.9626 Tf 17.234 0 Td [(the)-333(lo)-28(cal)-333(indices)-334(of)-333(the)-333(end)-334(v)28(ertex)-333(of)-334(the)-333(edges)-333(b)-28(eing)-333(inserted.)]TJ 7.673 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)-333(of)-333(length)]TJ/F11 9.9626 Tf 172.548 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(.)]TJ/F16 11.9552 Tf -208.506 -21.918 Td [(Notes)]TJ +0 g 0 G +/F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ +0 g 0 G + [-500(This)-333(routine)-334(ma)28(y)-333(only)-333(b)-28(e)-334(called)-333(if)-333(the)-333(des)-1(crip)1(tor)-334(is)-333(in)-333(the)-334(build)-333(state;)]TJ 0 g 0 G 0 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(This)-305(rout)1(ine)-305(automatically)-305(ign)1(ores)-305(edges)-305(that)-304(do)-305(not)-304(insist)-305(on)-304(the)-305(curren)28(t)]TJ 12.73 -11.955 Td [(pro)-28(cess,)-285(i.e.)-424(edges)-272(for)-273(whic)28(h)-272(neither)-273(the)-272(starting)-272(nor)-273(the)-272(end)-273(v)28(ertex)-272(b)-28(elong)]TJ 0 -11.955 Td [(to)-333(the)-334(curren)28(t)-333(pro)-28(cess.)]TJ + [-500(This)-305(r)1(o)-1(u)1(tine)-305(automatically)-304(ignores)-305(edges)-305(that)-304(do)-305(not)-304(insist)-305(on)-304(the)-305(curren)28(t)]TJ 12.73 -11.955 Td [(pro)-28(cess,)-284(i.e)-1(.)-424(edges)-272(for)-273(whic)28(h)-272(neither)-273(the)-272(starting)-272(nor)-273(the)-272(end)-273(v)28(ertex)-272(b)-28(elong)]TJ 0 -11.955 Td [(to)-333(the)-334(curren)28(t)-333(pro)-28(cess.)]TJ +0 g 0 G + -12.73 -19.926 Td [(3.)]TJ +0 g 0 G + [-500(The)-437(second)-438(form)-437(of)-437(this)-437(routine)-437(will)-438(b)-27(e)-438(useful)-437(when)-437(dealing)-437(with)-438(user-)]TJ 12.73 -11.955 Td [(sp)-28(eci\014ed)-333(index)-333(mappings;)-334(see)-333(also)]TJ +0 0 1 rg 0 0 1 RG + [-334(2.)1(3.1)]TJ +0 g 0 G + [(.)]TJ 0 g 0 G - 141.968 -51.349 Td [(58)]TJ + 141.968 -314.819 Td [(59)]TJ 0 g 0 G ET endstream endobj -1096 0 obj << +1119 0 obj << /Type /Page -/Contents 1097 0 R -/Resources 1095 0 R +/Contents 1120 0 R +/Resources 1118 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1079 0 R -/Annots [ 1094 0 R ] +/Parent 1096 0 R +/Annots [ 1117 0 R ] >> endobj -1094 0 obj << +1117 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 292.001 412.588 303.126] +/Rect [274.574 402.324 297.045 413.172] /Subtype /Link -/A << /S /GoTo /D (descdata) >> +/A << /S /GoTo /D (subsubsection.2.3.1) >> >> endobj -1098 0 obj << -/D [1096 0 R /XYZ 150.705 740.998 null] +1121 0 obj << +/D [1119 0 R /XYZ 99.895 740.998 null] >> endobj -226 0 obj << -/D [1096 0 R /XYZ 150.705 697.37 null] +1122 0 obj << +/D [1119 0 R /XYZ 99.895 496.913 null] >> endobj -1099 0 obj << -/D [1096 0 R /XYZ 150.705 201.563 null] +1123 0 obj << +/D [1119 0 R /XYZ 99.895 475.051 null] >> endobj -1100 0 obj << -/D [1096 0 R /XYZ 150.705 179.7 null] +1124 0 obj << +/D [1119 0 R /XYZ 99.895 431.215 null] >> endobj -1095 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R >> +1118 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F11 654 0 R /F16 479 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1105 0 obj << -/Length 3494 +1129 0 obj << +/Length 3493 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(cdasb)-375(|)-375(Comm)31(unication)-375(descriptor)-375(assem)31(bly)-375(routine)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(cdasb)-375(|)-375(Comm)31(unication)-375(descriptor)-375(assem)31(bly)-375(routine)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_cdasb\050desc_a,)-525(info\051)]TJ @@ -11552,31 +11902,31 @@ BT 0 -19.925 Td [(desc)]TJ ET q -1 0 0 1 121.81 626.17 cm +1 0 0 1 172.619 626.17 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 625.971 Td [(a)]TJ +/F27 9.9626 Tf 176.057 625.971 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 578.35 cm +1 0 0 1 362.845 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 578.15 Td [(desc)]TJ +/F30 9.9626 Tf 365.983 578.15 Td [(desc)]TJ ET q -1 0 0 1 336.723 578.35 cm +1 0 0 1 387.532 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 339.861 578.15 Td [(type)]TJ +/F30 9.9626 Tf 390.67 578.15 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -21.917 Td [(On)-383(Return)]TJ 0 g 0 G @@ -11584,95 +11934,95 @@ BT 0 -19.926 Td [(desc)]TJ ET q -1 0 0 1 121.81 536.507 cm +1 0 0 1 172.619 536.507 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 536.307 Td [(a)]TJ +/F27 9.9626 Tf 176.057 536.307 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 488.686 cm +1 0 0 1 362.845 488.686 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 488.487 Td [(desc)]TJ +/F30 9.9626 Tf 365.983 488.487 Td [(desc)]TJ ET q -1 0 0 1 336.723 488.686 cm +1 0 0 1 387.532 488.686 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 339.861 488.487 Td [(type)]TJ +/F30 9.9626 Tf 390.67 488.487 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ/F16 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ +/F8 9.9626 Tf 12.176 -19.925 Td [(1.)]TJ 0 g 0 G [-500(On)-333(exit)-334(from)-333(this)-333(routine)-333(the)-334(descriptor)-333(is)-333(in)-334(the)-333(assem)28(bled)-334(state.)]TJ 0 g 0 G - 154.698 -288.46 Td [(59)]TJ + 154.698 -288.46 Td [(60)]TJ 0 g 0 G ET endstream endobj -1104 0 obj << +1128 0 obj << /Type /Page -/Contents 1105 0 R -/Resources 1103 0 R +/Contents 1129 0 R +/Resources 1127 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1079 0 R -/Annots [ 1101 0 R 1102 0 R ] +/Parent 1096 0 R +/Annots [ 1125 0 R 1126 0 R ] >> endobj -1101 0 obj << +1125 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 574.94 361.779 586.065] +/Rect [345.53 574.94 412.588 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1102 0 obj << +1126 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 485.277 361.779 496.401] +/Rect [345.53 485.277 412.588 496.401] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1106 0 obj << -/D [1104 0 R /XYZ 99.895 740.998 null] +1130 0 obj << +/D [1128 0 R /XYZ 150.705 740.998 null] >> endobj -230 0 obj << -/D [1104 0 R /XYZ 99.895 697.37 null] +234 0 obj << +/D [1128 0 R /XYZ 150.705 697.37 null] >> endobj -1107 0 obj << -/D [1104 0 R /XYZ 99.895 394.838 null] +1131 0 obj << +/D [1128 0 R /XYZ 150.705 394.838 null] >> endobj -1103 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1127 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1112 0 obj << -/Length 3278 +1136 0 obj << +/Length 3277 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(cdcp)31(y)-375(|)-375(Copies)-375(a)-375(comm)31(unication)-375(descriptor)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(cdcp)31(y)-375(|)-375(Copies)-375(a)-375(comm)31(unication)-375(descriptor)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_cdcpy\050desc_in,)-525(desc_out,)-525(info\051)]TJ @@ -11687,31 +12037,31 @@ BT 0 -19.925 Td [(desc)]TJ ET q -1 0 0 1 172.619 626.17 cm +1 0 0 1 121.81 626.17 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 625.971 Td [(in)]TJ +/F27 9.9626 Tf 125.247 625.971 Td [(in)]TJ 0 g 0 G -/F8 9.9626 Tf 14.528 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -14.974 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 14.529 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -14.974 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 578.35 cm +1 0 0 1 312.036 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 578.15 Td [(desc)]TJ +/F30 9.9626 Tf 315.174 578.15 Td [(desc)]TJ ET q -1 0 0 1 387.532 578.35 cm +1 0 0 1 336.723 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 390.67 578.15 Td [(type)]TJ +/F30 9.9626 Tf 339.861 578.15 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -21.917 Td [(On)-383(Return)]TJ 0 g 0 G @@ -11719,88 +12069,88 @@ BT 0 -19.926 Td [(desc)]TJ ET q -1 0 0 1 172.619 536.507 cm +1 0 0 1 121.81 536.507 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 536.307 Td [(out)]TJ +/F27 9.9626 Tf 125.247 536.307 Td [(out)]TJ 0 g 0 G -/F8 9.9626 Tf 21.53 0 Td [(the)-333(comm)27(unication)-333(descriptor)-333(cop)28(y)83(.)]TJ -21.976 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 21.53 0 Td [(the)-333(comm)27(unication)-333(descriptor)-333(cop)28(y)83(.)]TJ -21.975 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 488.686 cm +1 0 0 1 312.036 488.686 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 488.487 Td [(desc)]TJ +/F30 9.9626 Tf 315.174 488.487 Td [(desc)]TJ ET q -1 0 0 1 387.532 488.686 cm +1 0 0 1 336.723 488.686 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 390.67 488.487 Td [(type)]TJ +/F30 9.9626 Tf 339.861 488.487 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ 0 g 0 G - 141.968 -330.303 Td [(60)]TJ + 141.968 -330.303 Td [(61)]TJ 0 g 0 G ET endstream endobj -1111 0 obj << +1135 0 obj << /Type /Page -/Contents 1112 0 R -/Resources 1110 0 R +/Contents 1136 0 R +/Resources 1134 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1079 0 R -/Annots [ 1108 0 R 1109 0 R ] +/Parent 1138 0 R +/Annots [ 1132 0 R 1133 0 R ] >> endobj -1108 0 obj << +1132 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 574.94 412.588 586.065] +/Rect [294.721 574.94 361.779 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1109 0 obj << +1133 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 485.277 412.588 496.401] +/Rect [294.721 485.277 361.779 496.401] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1113 0 obj << -/D [1111 0 R /XYZ 150.705 740.998 null] +1137 0 obj << +/D [1135 0 R /XYZ 99.895 740.998 null] >> endobj -234 0 obj << -/D [1111 0 R /XYZ 150.705 697.37 null] +238 0 obj << +/D [1135 0 R /XYZ 99.895 697.37 null] >> endobj -1110 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1134 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1117 0 obj << +1142 0 obj << /Length 2243 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(cdfree)-375(|)-375(F)94(rees)-375(a)-375(comm)31(unication)-375(descriptor)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(cdfree)-375(|)-375(F)94(rees)-375(a)-375(comm)31(unication)-375(descriptor)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_cdfree\050desc_a,)-525(info\051)]TJ @@ -11815,87 +12165,87 @@ BT 0 -19.925 Td [(desc)]TJ ET q -1 0 0 1 121.81 626.17 cm +1 0 0 1 172.619 626.17 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 625.971 Td [(a)]TJ +/F27 9.9626 Tf 176.057 625.971 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor)-333(to)-333(b)-28(e)-334(freed.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor)-333(to)-334(b)-27(e)-334(freed.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 578.35 cm +1 0 0 1 362.845 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 578.15 Td [(desc)]TJ +/F30 9.9626 Tf 365.983 578.15 Td [(desc)]TJ ET q -1 0 0 1 336.723 578.35 cm +1 0 0 1 387.532 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 339.861 578.15 Td [(type)]TJ +/F30 9.9626 Tf 390.67 578.15 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -21.917 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ 0 g 0 G - 141.968 -398.049 Td [(61)]TJ + 141.968 -398.049 Td [(62)]TJ 0 g 0 G ET endstream endobj -1116 0 obj << +1141 0 obj << /Type /Page -/Contents 1117 0 R -/Resources 1115 0 R +/Contents 1142 0 R +/Resources 1140 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1119 0 R -/Annots [ 1114 0 R ] +/Parent 1138 0 R +/Annots [ 1139 0 R ] >> endobj -1114 0 obj << +1139 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 574.94 361.779 586.065] +/Rect [345.53 574.94 412.588 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1118 0 obj << -/D [1116 0 R /XYZ 99.895 740.998 null] +1143 0 obj << +/D [1141 0 R /XYZ 150.705 740.998 null] >> endobj -238 0 obj << -/D [1116 0 R /XYZ 99.895 697.37 null] +242 0 obj << +/D [1141 0 R /XYZ 150.705 697.37 null] >> endobj -1115 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1140 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1124 0 obj << -/Length 5916 +1148 0 obj << +/Length 5927 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(cdbldext)-282(|)-283(Build)-282(an)-282(extended)-283(comm)31(unication)-282(descrip-)]TJ -25.091 -13.948 Td [(tor)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(cdbldext)-282(|)-283(Build)-282(an)-282(ex)-1(tended)-282(comm)31(unication)-282(descrip-)]TJ -25.091 -13.948 Td [(tor)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf 0 -19.114 Td [(call)-525(psb_cdbldext\050a,desc_a,nl,desc_out,)-525(info,)-525(extype\051)]TJ/F8 9.9626 Tf 14.944 -23.476 Td [(This)-298(subroutin)1(e)-298(builds)-298(an)-297(extended)-298(comm)28(unication)-298(descriptor,)-305(based)-297(on)-298(the)]TJ -14.944 -11.955 Td [(input)-389(descriptor)]TJ/F30 9.9626 Tf 74.287 0 Td [(desc_a)]TJ/F8 9.9626 Tf 35.261 0 Td [(and)-389(on)-390(the)-389(stencil)-390(sp)-27(eci\014ed)-390(through)-389(the)-389(input)-390(sparse)]TJ -109.548 -11.956 Td [(matrix)]TJ/F30 9.9626 Tf 32.406 0 Td [(a)]TJ/F8 9.9626 Tf 5.231 0 Td [(.)]TJ +/F30 9.9626 Tf 0 -19.114 Td [(call)-525(psb_cdbldext\050a,desc_a,nl,desc_out,)-525(info,)-525(extype\051)]TJ/F8 9.9626 Tf 14.944 -23.476 Td [(This)-298(subroutine)-297(builds)-298(an)-297(extended)-298(comm)28(unication)-298(descriptor,)-305(based)-297(on)-298(the)]TJ -14.944 -11.955 Td [(input)-389(descriptor)]TJ/F30 9.9626 Tf 74.288 0 Td [(desc_a)]TJ/F8 9.9626 Tf 35.261 0 Td [(and)-389(on)-390(the)-389(stencil)-389(s)-1(p)-27(eci\014ed)-390(through)-389(the)-389(input)-390(sparse)]TJ -109.549 -11.956 Td [(matrix)]TJ/F30 9.9626 Tf 32.407 0 Td [(a)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -37.637 -21.094 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -11906,174 +12256,174 @@ BT 0 g 0 G 0 -21.484 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(A)-333(sparse)-334(matrix)-333(Scop)-28(e:)]TJ/F27 9.9626 Tf 101.176 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -109.893 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.081 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(structured)-333(data)-333(t)27(yp)-27(e.)]TJ +/F8 9.9626 Tf 10.551 0 Td [(A)-333(sparse)-334(matrix)-333(Scop)-28(e:)]TJ/F27 9.9626 Tf 101.176 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -109.893 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(t)27(yp)-27(e.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -21.484 Td [(desc)]TJ ET q -1 0 0 1 172.619 504.47 cm +1 0 0 1 121.81 504.47 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 504.27 Td [(a)]TJ +/F27 9.9626 Tf 125.247 504.27 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 456.649 cm +1 0 0 1 312.036 456.649 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 456.45 Td [(Tspmat)]TJ +/F30 9.9626 Tf 315.174 456.45 Td [(Tspmat)]TJ ET q -1 0 0 1 397.993 456.649 cm +1 0 0 1 347.183 456.649 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 401.131 456.45 Td [(type)]TJ +/F30 9.9626 Tf 350.322 456.45 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -271.347 -21.484 Td [(nl)]TJ +/F27 9.9626 Tf -271.348 -21.484 Td [(nl)]TJ 0 g 0 G -/F8 9.9626 Tf 14.529 0 Td [(the)-333(n)28(um)27(b)-27(er)-334(of)-333(additional)-333(la)28(y)27(ers)-333(desired.)]TJ 10.377 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -57.708 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)]TJ/F11 9.9626 Tf 130.428 0 Td [(nl)]TJ/F14 9.9626 Tf 11.916 0 Td [(\025)]TJ/F8 9.9626 Tf 10.516 0 Td [(0.)]TJ +/F8 9.9626 Tf 14.529 0 Td [(the)-333(n)27(u)1(m)27(b)-27(e)-1(r)-333(of)-333(additional)-333(la)28(y)27(ers)-333(desired.)]TJ 10.378 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -57.707 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)]TJ/F11 9.9626 Tf 130.428 0 Td [(nl)]TJ/F14 9.9626 Tf 11.916 0 Td [(\025)]TJ/F8 9.9626 Tf 10.516 0 Td [(0.)]TJ 0 g 0 G -/F27 9.9626 Tf -177.766 -21.483 Td [(ext)32(yp)-32(e)]TJ +/F27 9.9626 Tf -177.767 -21.483 Td [(ext)32(yp)-32(e)]TJ 0 g 0 G -/F8 9.9626 Tf 38.397 0 Td [(the)-333(kind)-334(of)-333(estension)-333(required.)]TJ -13.491 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -57.708 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(optional)]TJ/F8 9.9626 Tf 44.396 0 Td [(.)]TJ -69.58 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-419(as:)-616(an)-420(in)28(teger)-419(v)55(alue)]TJ/F30 9.9626 Tf 135.566 0 Td [(psb_ovt_xhal_)]TJ/F8 9.9626 Tf 67.995 0 Td [(,)]TJ/F30 9.9626 Tf 7.159 0 Td [(psb_ovt_asov_)]TJ/F8 9.9626 Tf 67.994 0 Td [(,)-441(default:)]TJ/F30 9.9626 Tf -278.714 -11.955 Td [(psb_ovt_xhal_)]TJ +/F8 9.9626 Tf 38.398 0 Td [(the)-333(kind)-334(of)-333(estension)-333(required.)]TJ -13.491 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -57.707 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 44.396 0 Td [(.)]TJ -69.579 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-419(as:)-616(an)-420(in)28(teger)-419(v)55(alue)]TJ/F30 9.9626 Tf 135.566 0 Td [(psb_ovt_xhal_)]TJ/F8 9.9626 Tf 67.994 0 Td [(,)]TJ/F30 9.9626 Tf 7.159 0 Td [(psb_ovt_asov_)]TJ/F8 9.9626 Tf 67.995 0 Td [(,)-441(default:)]TJ/F30 9.9626 Tf -278.714 -11.955 Td [(psb_ovt_xhal_)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -23.476 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -24.907 -23.476 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.484 Td [(desc)]TJ ET q -1 0 0 1 172.619 261.126 cm +1 0 0 1 121.81 261.126 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 260.927 Td [(out)]TJ +/F27 9.9626 Tf 125.247 260.927 Td [(out)]TJ 0 g 0 G -/F8 9.9626 Tf 21.53 0 Td [(the)-333(extended)-334(comm)28(unication)-333(descriptor.)]TJ -21.976 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 21.53 0 Td [(the)-333(extended)-334(comm)28(unication)-333(descriptor.)]TJ -21.975 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 213.305 cm +1 0 0 1 312.036 213.305 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 213.106 Td [(desc)]TJ +/F30 9.9626 Tf 315.174 213.106 Td [(desc)]TJ ET q -1 0 0 1 387.532 213.305 cm +1 0 0 1 336.723 213.305 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 390.67 213.106 Td [(type)]TJ +/F30 9.9626 Tf 339.861 213.106 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -21.484 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ/F16 11.9552 Tf -24.906 -23.476 Td [(Notes)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -23.476 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 166.874 -29.888 Td [(62)]TJ +/F8 9.9626 Tf 166.875 -29.888 Td [(63)]TJ 0 g 0 G ET endstream endobj -1123 0 obj << +1147 0 obj << /Type /Page -/Contents 1124 0 R -/Resources 1122 0 R +/Contents 1148 0 R +/Resources 1146 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1119 0 R -/Annots [ 1120 0 R 1121 0 R ] +/Parent 1138 0 R +/Annots [ 1144 0 R 1145 0 R ] >> endobj -1120 0 obj << +1144 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 453.24 423.049 464.364] +/Rect [294.721 453.24 372.239 464.364] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1121 0 obj << +1145 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 209.896 412.588 221.021] +/Rect [294.721 209.896 361.779 221.021] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1125 0 obj << -/D [1123 0 R /XYZ 150.705 740.998 null] +1149 0 obj << +/D [1147 0 R /XYZ 99.895 740.998 null] >> endobj -242 0 obj << -/D [1123 0 R /XYZ 150.705 685.412 null] +246 0 obj << +/D [1147 0 R /XYZ 99.895 685.412 null] >> endobj -1122 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +1146 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1128 0 obj << -/Length 1591 +1152 0 obj << +/Length 1587 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F8 9.9626 Tf 112.072 706.129 Td [(1.)]TJ +/F8 9.9626 Tf 162.881 706.129 Td [(1.)]TJ 0 g 0 G - [-500(Sp)-28(ecifying)]TJ/F30 9.9626 Tf 60.091 0 Td [(psb_ovt_xhal_)]TJ/F8 9.9626 Tf 70.801 0 Td [(for)-282(the)]TJ/F30 9.9626 Tf 31.377 0 Td [(extype)]TJ/F8 9.9626 Tf 34.188 0 Td [(argumen)28(t)-282(the)-282(user)-281(will)-282(obtain)-281(a)]TJ -183.727 -11.955 Td [(descriptor)-258(f)1(o)-1(r)-257(a)-258(domain)-257(partition)-258(in)-257(whic)28(h)-258(the)-257(additional)-258(la)28(y)28(ers)-258(are)-257(fetc)27(hed)]TJ 0 -11.955 Td [(as)-415(part)-415(of)-415(an)-415(\050extended\051)-415(halo;)-456(ho)28(w)27(ev)28(er)-415(the)-415(index-to-pro)-28(cess)-415(mapping)-415(is)]TJ 0 -11.956 Td [(iden)28(tical)-334(t)1(o)-334(that)-333(of)-333(the)-334(base)-333(descriptor;)]TJ + [-500(Sp)-28(ecifying)]TJ/F30 9.9626 Tf 60.092 0 Td [(psb_ovt_xhal_)]TJ/F8 9.9626 Tf 70.801 0 Td [(for)-282(the)]TJ/F30 9.9626 Tf 31.376 0 Td [(extype)]TJ/F8 9.9626 Tf 34.189 0 Td [(argumen)28(t)-282(the)-282(u)1(s)-1(er)-281(will)-282(obtain)-281(a)]TJ -183.728 -11.955 Td [(descriptor)-258(for)-257(a)-258(domain)-257(partition)-258(in)-257(whic)28(h)-258(the)-257(additional)-258(la)28(y)28(ers)-258(are)-257(fetc)27(hed)]TJ 0 -11.955 Td [(as)-415(part)-415(of)-415(an)-415(\050extended\051)-415(halo;)-456(ho)28(w)27(ev)28(er)-415(the)-415(index-to-pro)-28(cess)-415(mapping)-415(is)]TJ 0 -11.956 Td [(iden)28(tical)-334(to)-333(that)-333(of)-333(the)-334(base)-333(descriptor;)]TJ 0 g 0 G -12.73 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(Sp)-28(ecifying)]TJ/F30 9.9626 Tf 60.957 0 Td [(psb_ovt_asov_)]TJ/F8 9.9626 Tf 71.666 0 Td [(for)-368(the)]TJ/F30 9.9626 Tf 33.107 0 Td [(extype)]TJ/F8 9.9626 Tf 35.054 0 Td [(argumen)28(t)-369(the)-368(user)-369(will)-368(obtain)]TJ -188.054 -11.955 Td [(a)-458(descriptor)-459(with)-458(an)-458(o)28(v)27(erlapp)-27(ed)-459(decomp)-27(os)-1(iti)1(on:)-695(the)-458(additional)-458(la)27(y)28(er)-458(is)]TJ 0 -11.955 Td [(aggregated)-413(to)-413(the)-413(lo)-28(cal)-413(sub)-28(domain)-413(\050and)-413(th)28(us)-414(is)-413(an)-413(o)28(v)28(erlap\051,)-433(and)-413(a)-414(new)]TJ 0 -11.955 Td [(halo)-333(extending)-334(b)-27(ey)27(on)1(d)-334(the)-333(last)-333(additional)-334(la)28(y)28(er)-333(is)-334(formed.)]TJ + [-500(Sp)-28(ecifying)]TJ/F30 9.9626 Tf 60.957 0 Td [(psb_ovt_asov_)]TJ/F8 9.9626 Tf 71.666 0 Td [(for)-368(the)]TJ/F30 9.9626 Tf 33.108 0 Td [(extype)]TJ/F8 9.9626 Tf 35.053 0 Td [(argumen)28(t)-369(the)-368(user)-369(will)-368(obtain)]TJ -188.054 -11.955 Td [(a)-458(descriptor)-459(with)-458(an)-458(o)28(v)27(erlapp)-27(ed)-459(decomp)-28(osition:)-694(the)-458(additional)-458(la)27(y)28(er)-458(is)]TJ 0 -11.955 Td [(aggregated)-413(to)-413(the)-414(l)1(o)-28(cal)-413(sub)-28(domain)-413(\050and)-413(th)27(u)1(s)-414(is)-413(an)-413(o)28(v)28(erlap\051,)-433(and)-413(a)-414(new)]TJ 0 -11.955 Td [(halo)-333(extending)-334(b)-27(ey)27(ond)-333(the)-333(last)-334(ad)1(ditional)-334(la)28(y)28(er)-333(is)-334(formed.)]TJ 0 g 0 G - 141.968 -524.035 Td [(63)]TJ + 141.968 -524.035 Td [(64)]TJ 0 g 0 G ET endstream endobj -1127 0 obj << +1151 0 obj << /Type /Page -/Contents 1128 0 R -/Resources 1126 0 R +/Contents 1152 0 R +/Resources 1150 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1119 0 R +/Parent 1138 0 R >> endobj -1129 0 obj << -/D [1127 0 R /XYZ 99.895 740.998 null] +1153 0 obj << +/D [1151 0 R /XYZ 150.705 740.998 null] >> endobj -1130 0 obj << -/D [1127 0 R /XYZ 99.895 716.092 null] +1154 0 obj << +/D [1151 0 R /XYZ 150.705 716.092 null] >> endobj -1131 0 obj << -/D [1127 0 R /XYZ 99.895 664.341 null] +1155 0 obj << +/D [1151 0 R /XYZ 150.705 664.341 null] >> endobj -1126 0 obj << -/Font << /F8 478 0 R /F30 664 0 R >> +1150 0 obj << +/Font << /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1136 0 obj << -/Length 4890 +1160 0 obj << +/Length 4887 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(spall)-375(|)-375(Allo)-31(cates)-375(a)-375(sparse)-375(matrix)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(spall)-375(|)-375(Allo)-31(cates)-375(a)-375(sparse)-375(matrix)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_spall\050a,)-525(desc_a,)-525(info,)-525(nnz\051)]TJ @@ -12088,380 +12438,406 @@ BT 0 -19.925 Td [(desc)]TJ ET q -1 0 0 1 172.619 626.17 cm +1 0 0 1 121.81 626.17 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 625.971 Td [(a)]TJ +/F27 9.9626 Tf 125.247 625.971 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 578.35 cm +1 0 0 1 312.036 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 578.15 Td [(desc)]TJ +/F30 9.9626 Tf 315.174 578.15 Td [(desc)]TJ ET q -1 0 0 1 387.532 578.35 cm +1 0 0 1 336.723 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 390.67 578.15 Td [(type)]TJ +/F30 9.9626 Tf 339.861 578.15 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -19.925 Td [(nnz)]TJ 0 g 0 G -/F8 9.9626 Tf 22.803 0 Td [(An)-309(estimate)-309(of)-308(the)-309(n)28(um)27(b)-27(er)-309(of)-309(nonzero)-28(es)-308(in)-309(the)-309(lo)-28(cal)-308(part)-309(of)-309(the)-309(assem)28(bled)]TJ 2.103 -11.955 Td [(matrix.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf 40.576 0 Td [(.)]TJ -70.188 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)]TJ +/F8 9.9626 Tf 22.804 0 Td [(An)-309(estimate)-309(of)-308(the)-309(n)28(um)28(b)-28(er)-309(of)-309(nonzero)-27(es)-309(in)-309(the)-309(lo)-28(cal)-308(part)-309(of)-309(the)-308(as)-1(sem)28(bled)]TJ 2.103 -11.955 Td [(matrix.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -21.918 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -24.907 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(the)-333(matrix)-334(to)-333(b)-28(e)-333(allo)-28(cated.)]TJ 14.356 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf -25.184 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(matrix)-334(to)-333(b)-28(e)-333(allo)-28(cated.)]TJ 14.356 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 408.985 cm +1 0 0 1 312.036 408.985 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 408.786 Td [(Tspmat)]TJ +/F30 9.9626 Tf 315.174 408.786 Td [(Tspmat)]TJ ET q -1 0 0 1 397.993 408.985 cm +1 0 0 1 347.183 408.985 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 401.131 408.786 Td [(type)]TJ +/F30 9.9626 Tf 350.322 408.786 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -271.347 -19.926 Td [(info)]TJ +/F27 9.9626 Tf -271.348 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ/F16 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.176 -19.925 Td [(1.)]TJ +/F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(On)-333(exit)-334(from)-333(this)-333(routine)-333(the)-334(sparse)-333(matrix)-334(i)1(s)-334(in)-333(the)-333(build)-334(state.)]TJ + [-500(On)-333(exit)-334(from)-333(this)-333(routine)-333(the)-334(sparse)-333(matrix)-333(is)-334(in)-333(the)-333(build)-334(state.)]TJ 0 g 0 G 0 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(The)-333(descriptor)-334(ma)28(y)-333(b)-28(e)-333(in)-334(either)-333(the)-333(build)-333(or)-334(assem)28(bled)-333(s)-1(tat)1(e)-1(.)]TJ + [-500(The)-333(descriptor)-334(ma)28(y)-333(b)-28(e)-333(in)-334(either)-333(the)-333(build)-333(or)-334(assem)28(bled)-333(state.)]TJ 0 g 0 G 0 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(Pro)28(viding)-307(a)-308(go)-27(o)-28(d)-307(e)-1(stimate)-307(for)-307(the)-307(n)27(um)28(b)-28(er)-307(of)-307(nonzero)-28(es)]TJ/F11 9.9626 Tf 254.288 0 Td [(nnz)]TJ/F8 9.9626 Tf 20.093 0 Td [(in)-307(the)-308(assem-)]TJ -261.651 -11.955 Td [(bled)-402(matrix)-401(ma)28(y)-402(substan)28(tially)-401(impro)27(v)28(e)-401(p)-28(erformance)-402(in)-401(the)-402(matrix)-401(build)]TJ 0 -11.955 Td [(phase,)-458(as)-433(it)-432(will)-433(reduce)-433(or)-433(eliminate)-433(the)-433(need)-432(for)-433(\050p)-28(oten)28(tially)-433(m)28(ultiple\051)]TJ 0 -11.956 Td [(data)-333(reallo)-28(cations.)]TJ + [-500(Pro)28(viding)-307(a)-308(go)-27(o)-28(d)-307(es)-1(timate)-307(for)-307(the)-307(n)27(um)28(b)-28(er)-307(of)-307(nonzero)-28(es)]TJ/F11 9.9626 Tf 254.288 0 Td [(nnz)]TJ/F8 9.9626 Tf 20.092 0 Td [(in)-307(the)-308(assem-)]TJ -261.65 -11.955 Td [(bled)-401(m)-1(atr)1(ix)-402(ma)28(y)-402(substan)28(tially)-401(impro)27(v)28(e)-401(p)-28(erformance)-402(in)-401(the)-402(matrix)-401(build)]TJ 0 -11.955 Td [(phase,)-458(as)-433(it)-432(will)-433(reduce)-433(or)-433(eliminate)-433(the)-433(need)-432(for)-433(\050p)-28(oten)28(tially)-433(m)28(ultiple\051)]TJ 0 -11.956 Td [(data)-333(reallo)-28(cations.)]TJ 0 g 0 G - 141.968 -133.042 Td [(64)]TJ + 141.968 -133.042 Td [(65)]TJ 0 g 0 G ET endstream endobj -1135 0 obj << +1159 0 obj << /Type /Page -/Contents 1136 0 R -/Resources 1134 0 R +/Contents 1160 0 R +/Resources 1158 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1119 0 R -/Annots [ 1132 0 R 1133 0 R ] +/Parent 1138 0 R +/Annots [ 1156 0 R 1157 0 R ] >> endobj -1132 0 obj << +1156 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 574.94 412.588 586.065] +/Rect [294.721 574.94 361.779 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1133 0 obj << +1157 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 405.575 423.049 416.7] +/Rect [294.721 405.575 372.239 416.7] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1137 0 obj << -/D [1135 0 R /XYZ 150.705 740.998 null] +1161 0 obj << +/D [1159 0 R /XYZ 99.895 740.998 null] >> endobj -246 0 obj << -/D [1135 0 R /XYZ 150.705 697.37 null] +250 0 obj << +/D [1159 0 R /XYZ 99.895 697.37 null] >> endobj -1138 0 obj << -/D [1135 0 R /XYZ 150.705 315.137 null] +1162 0 obj << +/D [1159 0 R /XYZ 99.895 315.137 null] >> endobj -1139 0 obj << -/D [1135 0 R /XYZ 150.705 293.274 null] +1163 0 obj << +/D [1159 0 R /XYZ 99.895 293.274 null] >> endobj -1140 0 obj << -/D [1135 0 R /XYZ 150.705 273.349 null] +1164 0 obj << +/D [1159 0 R /XYZ 99.895 273.349 null] >> endobj -1134 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1158 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1146 0 obj << -/Length 6673 +1170 0 obj << +/Length 6453 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(spins)-306(|)-307(Insert)-306(a)-306(cloud)-306(of)-307(elemen)32(ts)-307(in)32(to)-307(a)-306(sparse)-306(matrix)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(spins)-306(|)-307(Insert)-306(a)-306(cloud)-306(of)-306(elemen)31(ts)-307(in)32(to)-306(a)-307(sparse)-306(matrix)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_spins\050nz,)-525(ia,)-525(ja,)-525(val,)-525(a,)-525(desc_a,)-525(info\051)]TJ +/F30 9.9626 Tf -25.091 -18.647 Td [(call)-525(psb_spins\050nz,)-525(ia,)-525(ja,)-525(val,)-525(a,)-525(desc_a,)-525(info)-525([,local]\051)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -20.681 Td [(T)32(yp)-32(e:)]TJ +/F27 9.9626 Tf 0 -22.334 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G /F8 9.9626 Tf 33.797 0 Td [(Async)28(hronous.)]TJ 0 g 0 G -/F27 9.9626 Tf -33.797 -19.43 Td [(On)-383(En)32(try)]TJ +/F27 9.9626 Tf -33.797 -20.479 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G - 0 -19.431 Td [(nz)]TJ + 0 -20.479 Td [(nz)]TJ 0 g 0 G -/F8 9.9626 Tf 16.439 0 Td [(the)-333(n)28(um)27(b)-27(er)-334(of)-333(elemen)28(ts)-334(to)-333(b)-28(e)-333(inserted.)]TJ 8.468 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(scalar.)]TJ +/F8 9.9626 Tf 16.438 0 Td [(the)-333(n)27(u)1(m)27(b)-27(e)-1(r)-333(of)-333(elemen)28(ts)-334(to)-333(b)-28(e)-333(inserted.)]TJ 8.469 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.95 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(sc)-1(alar)1(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.431 Td [(ia)]TJ +/F27 9.9626 Tf -24.906 -20.479 Td [(ia)]TJ 0 g 0 G -/F8 9.9626 Tf 13.734 0 Td [(the)-333(ro)28(w)-334(indices)-333(of)-333(the)-334(elemen)28(ts)-334(to)-333(b)-28(e)-333(inserted.)]TJ 11.173 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)-333(of)-333(size)]TJ/F11 9.9626 Tf 160.98 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(.)]TJ +/F8 9.9626 Tf 13.733 0 Td [(the)-333(ro)27(w)-333(indices)-333(of)-334(th)1(e)-334(elemen)28(ts)-334(to)-333(b)-28(e)-333(inserted.)]TJ 11.173 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)-333(of)-333(size)]TJ/F11 9.9626 Tf 160.98 0 Td [(nz)]TJ/F8 9.9626 Tf 11.052 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -196.938 -19.431 Td [(ja)]TJ +/F27 9.9626 Tf -196.938 -20.479 Td [(ja)]TJ 0 g 0 G -/F8 9.9626 Tf 14.052 0 Td [(the)-333(column)-334(indices)-333(of)-333(the)-334(elemen)28(ts)-333(to)-334(b)-27(e)-334(inserted.)]TJ 10.855 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)-333(of)-333(size)]TJ/F11 9.9626 Tf 160.98 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(.)]TJ +/F8 9.9626 Tf 14.051 0 Td [(the)-333(column)-334(indices)-333(of)-333(the)-334(elemen)28(ts)-333(to)-334(b)-27(e)-334(inserted.)]TJ 10.855 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)-333(of)-333(size)]TJ/F11 9.9626 Tf 160.98 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -196.938 -19.431 Td [(v)64(al)]TJ +/F27 9.9626 Tf -196.937 -20.479 Td [(v)64(al)]TJ 0 g 0 G -/F8 9.9626 Tf 19.144 0 Td [(the)-333(elemen)27(ts)-333(to)-333(b)-28(e)-333(inserted.)]TJ 5.763 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-375(as:)-528(an)-375(arra)28(y)-375(of)-375(size)]TJ/F11 9.9626 Tf 130.933 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(.)-570(Must)-375(b)-28(e)-375(of)-375(the)-375(same)-375(t)28(yp)-28(e)-375(and)-375(kind)-375(of)]TJ -141.984 -11.956 Td [(the)]TJ/F30 9.9626 Tf 17.158 0 Td [(aspk)]TJ/F8 9.9626 Tf 24.242 0 Td [(comp)-28(onen)28(t)-333(of)-334(the)-333(sparse)-333(matrix)]TJ/F11 9.9626 Tf 141.857 0 Td [(a)]TJ/F8 9.9626 Tf 5.266 0 Td [(.)]TJ +/F8 9.9626 Tf 19.143 0 Td [(the)-333(elemen)27(ts)-333(to)-333(b)-28(e)-333(inse)-1(r)1(te)-1(d)1(.)]TJ 5.763 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-375(as:)-528(an)-375(arra)28(y)-375(of)-375(size)]TJ/F11 9.9626 Tf 130.933 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(.)-570(Must)-375(b)-28(e)-375(of)-375(the)-375(same)-375(t)28(yp)-28(e)-375(and)-375(kind)-375(of)]TJ -141.984 -11.955 Td [(the)-333(co)-28(e\016cien)27(ts)-333(of)-333(the)-334(spar)1(s)-1(e)-333(matrix)]TJ/F11 9.9626 Tf 158.517 0 Td [(a)]TJ/F8 9.9626 Tf 5.266 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -213.43 -19.43 Td [(desc)]TJ +/F27 9.9626 Tf -188.689 -20.479 Td [(desc)]TJ ET q -1 0 0 1 121.81 347.438 cm +1 0 0 1 172.619 339.234 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 347.239 Td [(a)]TJ +/F27 9.9626 Tf 176.057 339.035 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(The)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(v)56(ariable)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(The)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.51 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(v)56(ariable)-334(of)-333(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 137.346 0 Td [(psb)]TJ +/F30 9.9626 Tf 137.347 0 Td [(psb)]TJ ET q -1 0 0 1 278.467 299.618 cm +1 0 0 1 329.276 291.413 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 281.605 299.418 Td [(desc)]TJ +/F30 9.9626 Tf 332.415 291.214 Td [(desc)]TJ ET q -1 0 0 1 303.154 299.618 cm +1 0 0 1 353.964 291.413 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 306.292 299.418 Td [(type)]TJ -0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F30 9.9626 Tf 357.102 291.214 Td [(type)]TJ 0 g 0 G -/F27 9.9626 Tf -227.319 -32.635 Td [(On)-383(Return)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G +/F27 9.9626 Tf -227.318 -32.434 Td [(lo)-32(cal)]TJ 0 g 0 G - 0 -19.431 Td [(a)]TJ +/F8 9.9626 Tf 28.054 0 Td [(Whether)-465(the)-464(en)27(tries)-464(in)-465(the)-465(ind)1(ic)-1(es)-464(v)28(e)-1(ctors)]TJ/F30 9.9626 Tf 194.825 0 Td [(ia)]TJ/F8 9.9626 Tf 10.461 0 Td [(,)]TJ/F30 9.9626 Tf 7.724 0 Td [(ja)]TJ/F8 9.9626 Tf 15.09 0 Td [(are)-465(already)-464(in)-465(lo)-28(cal)]TJ -231.248 -11.956 Td [(n)28(um)28(b)-28(ering.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.761 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(logical)-333(v)55(alue;)-333(default:)]TJ/F30 9.9626 Tf 163.056 0 Td [(.false.)]TJ/F8 9.9626 Tf 36.612 0 Td [(.)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(matrix)-334(in)28(to)-333(whic)28(h)-334(elemen)28(ts)-333(will)-334(b)-27(e)-334(inserted.)]TJ 14.356 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ -0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 170.915 0 Td [(psb)]TJ -ET -q -1 0 0 1 312.036 199.731 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F30 9.9626 Tf 315.174 199.532 Td [(Tspmat)]TJ -ET -q -1 0 0 1 347.183 199.731 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F30 9.9626 Tf 350.322 199.532 Td [(type)]TJ +/F27 9.9626 Tf -224.574 -22.333 Td [(On)-383(Return)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -271.348 -19.431 Td [(desc)]TJ -ET -q -1 0 0 1 121.81 180.301 cm -[]0 d 0 J 0.398 w 0 0 m 3.437 0 l S -Q -BT -/F27 9.9626 Tf 125.247 180.101 Td [(a)]TJ + 0 -20.48 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(The)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(v)56(ariable)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(the)-333(matrix)-334(in)28(to)-333(whic)28(h)-334(elemen)28(ts)-333(will)-334(b)-27(e)-334(inserted.)]TJ 14.356 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf -25.184 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 137.346 0 Td [(psb)]TJ +/F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 278.467 132.48 cm +1 0 0 1 362.845 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 281.605 132.281 Td [(desc)]TJ +/F30 9.9626 Tf 365.983 120.326 Td [(Tspmat)]TJ ET q -1 0 0 1 303.154 132.48 cm +1 0 0 1 397.993 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 306.292 132.281 Td [(type)]TJ +/F30 9.9626 Tf 401.131 120.326 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G - -60.444 -41.843 Td [(65)]TJ + -104.473 -29.888 Td [(66)]TJ 0 g 0 G ET endstream endobj -1145 0 obj << +1169 0 obj << /Type /Page -/Contents 1146 0 R -/Resources 1144 0 R +/Contents 1170 0 R +/Resources 1168 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1119 0 R -/Annots [ 1141 0 R 1142 0 R 1143 0 R ] +/Parent 1138 0 R +/Annots [ 1165 0 R 1166 0 R ] >> endobj -1141 0 obj << +1165 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [261.152 296.208 328.21 307.333] +/Rect [311.962 288.004 379.019 299.129] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1142 0 obj << +1166 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 196.322 372.239 207.447] +/Rect [345.53 117.115 423.049 128.24] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1143 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [261.152 129.071 328.21 140.196] -/Subtype /Link -/A << /S /GoTo /D (descdata) >> ->> endobj -1147 0 obj << -/D [1145 0 R /XYZ 99.895 740.998 null] +1171 0 obj << +/D [1169 0 R /XYZ 150.705 740.998 null] >> endobj -250 0 obj << -/D [1145 0 R /XYZ 99.895 697.37 null] +254 0 obj << +/D [1169 0 R /XYZ 150.705 697.251 null] >> endobj -1144 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1168 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1150 0 obj << -/Length 3014 +1174 0 obj << +/Length 6087 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F27 9.9626 Tf 150.705 706.129 Td [(info)]TJ +/F27 9.9626 Tf 99.895 706.129 Td [(desc)]TJ +ET +q +1 0 0 1 121.81 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.437 0 l S +Q +BT +/F27 9.9626 Tf 125.247 706.129 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ/F16 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +/F8 9.9626 Tf 10.551 0 Td [(The)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(v)56(ariable)-334(of)-333(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 137.346 0 Td [(psb)]TJ +ET +q +1 0 0 1 278.467 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 281.605 658.308 Td [(desc)]TJ +ET +q +1 0 0 1 303.154 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 306.292 658.308 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 12.176 -19.925 Td [(1.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F27 9.9626 Tf -227.319 -31.88 Td [(info)]TJ +0 g 0 G +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +0 g 0 G +/F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ 0 g 0 G [-500(On)-487(en)28(try)-487(to)-488(this)-487(routine)-487(the)-487(descriptor)-487(ma)28(y)-488(b)-27(e)-488(in)-487(either)-487(the)-487(build)-487(or)]TJ 12.73 -11.955 Td [(assem)28(bled)-334(state.)]TJ 0 g 0 G -12.73 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(On)-363(en)28(try)-363(to)-362(this)-363(routine)-362(the)-363(sparse)-363(matrix)-363(ma)28(y)-363(b)-27(e)-363(in)-363(either)-362(the)-363(build)-363(or)]TJ 12.73 -11.956 Td [(up)-28(date)-333(state.)]TJ + [-500(On)-363(en)28(try)-362(to)-363(this)-363(routine)-362(the)-363(sparse)-363(matrix)-363(ma)28(y)-363(b)-27(e)-363(in)-363(either)-362(the)-363(build)-363(or)]TJ 12.73 -11.956 Td [(up)-28(date)-333(state.)]TJ 0 g 0 G -12.73 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(If)-230(the)-231(descriptor)-230(is)-231(in)-230(the)-231(build)-230(state,)-251(then)-231(the)-230(sparse)-231(matrix)-230(m)28(ust)-231(also)-230(b)-28(e)-231(in)]TJ 12.73 -11.955 Td [(the)-327(build)-327(state;)-329(the)-328(action)-327(of)-327(the)-327(routine)-327(is)-327(to)-327(\050implicitly\051)-327(call)]TJ/F30 9.9626 Tf 271.732 0 Td [(psb_cdins)]TJ/F8 9.9626 Tf -271.732 -11.955 Td [(to)-419(add)-419(en)28(tries)-419(to)-419(the)-418(sparsit)27(y)-418(pattern;)-462(eac)28(h)-419(sparse)-419(matrix)-419(en)28(try)-419(implic-)]TJ 0 -11.955 Td [(itly)-360(d)1(e)-1(\014)1(nes)-360(a)-360(graph)-359(edge,)-366(that)-360(is)-359(passed)-360(to)-359(the)-360(descriptor)-359(routine)-360(for)-359(the)]TJ 0 -11.956 Td [(appropriate)-333(pro)-28(cessing.)]TJ + [-500(If)-230(the)-231(descriptor)-230(is)-231(in)-230(the)-231(build)-230(state,)-251(then)-231(the)-230(sparse)-231(matrix)-230(m)28(ust)-231(also)-230(b)-28(e)-231(in)]TJ 12.73 -11.955 Td [(the)-327(build)-327(state;)-329(the)-328(action)-327(of)-327(the)-327(routine)-327(is)-327(to)-327(\050implicitly\051)-327(call)]TJ/F30 9.9626 Tf 271.731 0 Td [(psb_cdins)]TJ/F8 9.9626 Tf -271.731 -11.955 Td [(to)-419(add)-419(en)28(tries)-419(to)-419(th)1(e)-419(sparsit)27(y)-418(pattern;)-462(eac)28(h)-419(sparse)-419(matrix)-419(en)28(try)-419(implic-)]TJ 0 -11.955 Td [(itly)-359(de\014nes)-360(a)-360(grap)1(h)-360(edge,)-366(that)-360(is)-359(passed)-360(to)-359(the)-360(descriptor)-359(routine)-360(for)-359(the)]TJ 0 -11.956 Td [(appropriate)-333(pro)-28(cessing;)]TJ 0 g 0 G -12.73 -19.925 Td [(4.)]TJ 0 g 0 G - [-500(An)28(y)-352(co)-28(e\016cien)28(ts)-352(from)-352(matrix)-351(ro)27(ws)-351(not)-352(assigned)-352(to)-352(the)-351(calling)-352(pro)-28(cess)-352(are)]TJ 12.73 -11.955 Td [(silen)28(tly)-334(ignor)1(e)-1(d)1(;)]TJ + [-500(The)-540(co)-28(e\016cien)28(ts)-541(to)-540(b)-28(e)-540(inserted)-540(are)-541(represen)28(ted)-540(b)28(y)-541(the)-540(ordered)-540(triples)]TJ/F11 9.9626 Tf 12.73 -11.955 Td [(ia)]TJ/F8 9.9626 Tf 8.698 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F11 9.9626 Tf 3.874 0 Td [(;)-167(j)-57(a)]TJ/F8 9.9626 Tf 14.367 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F11 9.9626 Tf 3.874 0 Td [(;)-167(v)-36(al)]TJ/F8 9.9626 Tf 18.049 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051,)-503(for)]TJ/F11 9.9626 Tf 28.256 0 Td [(i)]TJ/F8 9.9626 Tf 8.455 0 Td [(=)-504(1)]TJ/F11 9.9626 Tf 17.753 0 Td [(;)-167(:)-166(:)-167(:)-167(;)-166(nz)]TJ/F8 9.9626 Tf 33.19 0 Td [(;)-537(these)-469(triples)-469(s)-1(h)1(ould)-470(b)-27(elong)-469(to)-470(the)]TJ -158.437 -11.955 Td [(curren)28(t)-351(pro)-28(cess,)-356(i.e.)]TJ/F11 9.9626 Tf 90.238 0 Td [(ia)]TJ/F8 9.9626 Tf 8.698 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)-351(should)-351(b)-28(e)-351(one)-351(of)-352(the)-351(lo)-28(cal)-351(indices,)-355(but)-352(ar)1(e)-352(oth-)]TJ -106.243 -11.955 Td [(erwise)-333(arbitrary;)]TJ 0 g 0 G - -12.73 -19.925 Td [(5.)]TJ + -12.73 -19.926 Td [(5.)]TJ 0 g 0 G - [-500(If)-358(the)-359(descriptor)-358(is)-359(in)-358(the)-359(assem)28(bled)-359(state,)-365(t)1(hen)-359(an)28(y)-359(en)28(tries)-358(in)-359(the)-358(sparse)]TJ 12.73 -11.955 Td [(matrix)-398(that)-399(w)28(ould)-398(generate)-399(additional)-398(comm)28(unication)-399(requiremen)28(ts)-398(will)]TJ 0 -11.956 Td [(b)-28(e)-333(ignored;)]TJ + [-500(There)-386(is)-385(no)-386(requiremen)28(t)-386(that)-386(a)-385(giv)28(en)-386(ro)28(w)-386(m)28(ust)-386(b)-28(e)-385(passe)-1(d)-385(in)-386(its)-385(e)-1(n)28(tiret)28(y)]TJ 12.73 -11.955 Td [(to)-355(a)-354(single)-355(call)-354(to)-355(this)-354(routine:)-487(the)-355(buildup)-354(of)-355(a)-354(ro)28(w)-355(ma)28(y)-355(b)-28(e)-354(split)-355(in)28(to)-354(as)]TJ 0 -11.955 Td [(man)28(y)-334(calls)-333(as)-333(desired;)]TJ 0 g 0 G -12.73 -19.925 Td [(6.)]TJ 0 g 0 G - [-500(If)-309(the)-308(matrix)-309(is)-308(in)-309(the)-308(up)-28(date)-309(state,)-313(an)28(y)-309(en)28(tries)-309(in)-308(p)-28(ositions)-309(that)-308(w)28(ere)-309(not)]TJ 12.73 -11.955 Td [(presen)28(t)-334(in)-333(the)-333(original)-333(matrix)-334(will)-333(b)-28(e)-333(ignored.)]TJ + [-500(Co)-28(e\016cien)28(ts)-409(from)-410(di\013eren)28(t)-409(ro)28(ws)-410(ma)28(y)-409(also)-409(b)-28(e)-409(mixed)-410(up)-409(freely)-409(in)-409(a)-410(single)]TJ 12.73 -11.956 Td [(call,)-333(according)-334(to)-333(the)-333(application)-333(nee)-1(d)1(s)-1(;)]TJ +0 g 0 G + -12.73 -19.925 Td [(7.)]TJ +0 g 0 G + [-500(An)28(y)-416(co)-28(e\016cien)28(ts)-416(from)-416(matrix)-416(ro)28(ws)-416(not)-416(o)28(wned)-416(b)28(y)-416(the)-416(calling)-416(pro)-28(cess)-416(are)]TJ 12.73 -11.955 Td [(silen)28(tly)-334(i)1(g)-1(n)1(ored;)]TJ +0 g 0 G + -12.73 -19.925 Td [(8.)]TJ +0 g 0 G + [-500(If)-358(the)-359(descriptor)-358(is)-359(in)-358(the)-359(assem)28(bled)-359(state,)-364(then)-359(an)28(y)-359(en)28(tries)-358(in)-359(the)-358(sparse)]TJ 12.73 -11.955 Td [(matrix)-430(that)-429(w)27(ould)-429(generate)-430(additional)-430(comm)28(unication)-430(requiremen)28(ts)-430(are)]TJ 0 -11.956 Td [(ignored;)]TJ +0 g 0 G + -12.73 -19.925 Td [(9.)]TJ +0 g 0 G + [-500(If)-309(th)1(e)-309(matrix)-309(is)-308(in)-309(the)-308(up)-28(date)-309(state,)-313(an)28(y)-309(en)28(tries)-309(in)-308(p)-28(ositions)-309(that)-308(w)28(ere)-309(not)]TJ 12.73 -11.955 Td [(presen)28(t)-334(in)-333(the)-333(original)-333(matrix)-334(are)-333(ignored.)]TJ 0 g 0 G - 141.968 -306.849 Td [(66)]TJ + 141.968 -95.641 Td [(67)]TJ 0 g 0 G ET endstream endobj -1149 0 obj << +1173 0 obj << /Type /Page -/Contents 1150 0 R -/Resources 1148 0 R +/Contents 1174 0 R +/Resources 1172 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1119 0 R +/Parent 1185 0 R +/Annots [ 1167 0 R ] >> endobj -1151 0 obj << -/D [1149 0 R /XYZ 150.705 740.998 null] +1167 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [261.152 655.098 328.21 666.223] +/Subtype /Link +/A << /S /GoTo /D (descdata) >> >> endobj -1152 0 obj << -/D [1149 0 R /XYZ 150.705 632.405 null] +1175 0 obj << +/D [1173 0 R /XYZ 99.895 740.998 null] >> endobj -1153 0 obj << -/D [1149 0 R /XYZ 150.705 600.525 null] +1176 0 obj << +/D [1173 0 R /XYZ 99.895 552.704 null] >> endobj -1154 0 obj << -/D [1149 0 R /XYZ 150.705 566.707 null] +1177 0 obj << +/D [1173 0 R /XYZ 99.895 520.824 null] >> endobj -1155 0 obj << -/D [1149 0 R /XYZ 150.705 498.961 null] +1178 0 obj << +/D [1173 0 R /XYZ 99.895 487.006 null] >> endobj -1156 0 obj << -/D [1149 0 R /XYZ 150.705 467.081 null] +1179 0 obj << +/D [1173 0 R /XYZ 99.895 419.26 null] >> endobj -1157 0 obj << -/D [1149 0 R /XYZ 150.705 423.245 null] +1180 0 obj << +/D [1173 0 R /XYZ 99.895 363.469 null] >> endobj -1148 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F16 475 0 R /F30 664 0 R >> +1181 0 obj << +/D [1173 0 R /XYZ 99.895 319.634 null] +>> endobj +1182 0 obj << +/D [1173 0 R /XYZ 99.895 287.753 null] +>> endobj +1183 0 obj << +/D [1173 0 R /XYZ 99.895 255.873 null] +>> endobj +1184 0 obj << +/D [1173 0 R /XYZ 99.895 212.037 null] +>> endobj +1172 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R /F16 479 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1162 0 obj << -/Length 6641 +1190 0 obj << +/Length 6648 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(spasb)-375(|)-375(Sparse)-375(matrix)-375(assem)31(bly)-375(routine)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(spasb)-375(|)-375(Sparse)-375(matrix)-375(assem)31(bly)-375(routine)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_spasb\050a,)-525(desc_a,)-525(info,)-525(afmt,)-525(upd,)-525(dupl,)-525(mold\051)]TJ @@ -12476,153 +12852,153 @@ BT 0 -19.638 Td [(desc)]TJ ET q -1 0 0 1 121.81 627.46 cm +1 0 0 1 172.619 627.46 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 627.261 Td [(a)]TJ +/F27 9.9626 Tf 176.057 627.261 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 579.639 cm +1 0 0 1 362.845 579.639 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 579.44 Td [(desc)]TJ +/F30 9.9626 Tf 365.983 579.44 Td [(desc)]TJ ET q -1 0 0 1 336.723 579.639 cm +1 0 0 1 387.532 579.639 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 339.861 579.44 Td [(type)]TJ +/F30 9.9626 Tf 390.67 579.44 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -19.639 Td [(afm)32(t)]TJ 0 g 0 G -/F8 9.9626 Tf 27.737 0 Td [(the)-333(storage)-334(format)-333(for)-333(the)-334(sparse)-333(matrix.)]TJ -2.83 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(arra)28(y)-333(of)-334(c)28(haracters.)-444(Defalt:)-445('CSR'.)]TJ +/F8 9.9626 Tf 27.736 0 Td [(the)-333(storage)-334(format)-333(for)-333(the)-334(sparse)-333(matrix.)]TJ -2.829 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(arra)28(y)-333(of)-334(c)28(haracters.)-444(Defalt:)-445('CSR'.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.639 Td [(up)-32(d)]TJ 0 g 0 G -/F8 9.9626 Tf 24.395 0 Td [(Pro)28(vide)-333(for)-334(up)-27(dates)-334(to)-333(the)-333(matrix)-334(co)-28(e\016cien)28(ts.)]TJ 0.512 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(in)28(teger,)-333(p)-28(ossible)-333(v)55(alues:)]TJ/F30 9.9626 Tf 164.633 0 Td [(psb_upd_srch_)]TJ/F8 9.9626 Tf 67.994 0 Td [(,)]TJ/F30 9.9626 Tf 6.089 0 Td [(psb_upd_perm_)]TJ +/F8 9.9626 Tf 24.394 0 Td [(Pro)28(vide)-334(f)1(or)-334(up)-27(dates)-334(to)-333(the)-334(matri)1(x)-334(co)-28(e\016cien)28(ts.)]TJ 0.513 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(in)27(teger,)-333(p)-28(ossible)-333(v)55(alues:)]TJ/F30 9.9626 Tf 164.632 0 Td [(psb_upd_srch_)]TJ/F8 9.9626 Tf 67.995 0 Td [(,)]TJ/F30 9.9626 Tf 6.088 0 Td [(psb_upd_perm_)]TJ 0 g 0 G -/F27 9.9626 Tf -263.623 -19.639 Td [(dupl)]TJ +/F27 9.9626 Tf -263.622 -19.639 Td [(dupl)]TJ 0 g 0 G -/F8 9.9626 Tf 27.259 0 Td [(Ho)28(w)-334(to)-333(handle)-333(duplicate)-333(co)-28(e\016cien)27(ts.)]TJ -2.352 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-308(as:)-432(in)27(teger,)-313(p)-28(ossible)-309(v)56(alues:)]TJ/F30 9.9626 Tf 163.696 0 Td [(psb_dupl_ovwrt_)]TJ/F8 9.9626 Tf 78.456 0 Td [(,)]TJ/F30 9.9626 Tf 5.891 0 Td [(psb_dupl_add_)]TJ/F8 9.9626 Tf 67.994 0 Td [(,)]TJ/F30 9.9626 Tf -316.037 -11.955 Td [(psb_dupl_err_)]TJ/F8 9.9626 Tf 67.994 0 Td [(.)]TJ +/F8 9.9626 Tf 27.259 0 Td [(Ho)28(w)-334(to)-333(handle)-333(duplicate)-333(co)-28(e\016cien)27(ts.)]TJ -2.352 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-308(as:)-432(in)27(teger,)-313(p)-28(ossible)-309(v)56(alues:)]TJ/F30 9.9626 Tf 163.696 0 Td [(psb_dupl_ovwrt_)]TJ/F8 9.9626 Tf 78.455 0 Td [(,)]TJ/F30 9.9626 Tf 5.891 0 Td [(psb_dupl_add_)]TJ/F8 9.9626 Tf 67.995 0 Td [(,)]TJ/F30 9.9626 Tf -316.037 -11.955 Td [(psb_dupl_err_)]TJ/F8 9.9626 Tf 67.994 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -92.901 -19.639 Td [(mold)]TJ 0 g 0 G -/F8 9.9626 Tf 29.805 0 Td [(The)-333(desired)-334(dynamic)-333(t)28(yp)-28(e)-333(for)-334(the)-333(in)28(ternal)-333(matrix)-334(storage.)]TJ -4.898 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(a)-333(class)-334(deriv)28(ed)-333(from)]TJ/F30 9.9626 Tf 203.349 0 Td [(psb)]TJ +/F8 9.9626 Tf 29.805 0 Td [(The)-333(desired)-334(dynamic)-333(t)28(yp)-28(e)-333(for)-334(the)-333(in)28(ternal)-333(matrix)-334(storage.)]TJ -4.898 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(a)-333(class)-334(deriv)28(ed)-333(from)]TJ/F30 9.9626 Tf 203.349 0 Td [(psb)]TJ ET q -1 0 0 1 344.47 297.847 cm +1 0 0 1 395.279 297.847 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 347.608 297.647 Td [(T)]TJ +/F30 9.9626 Tf 398.417 297.647 Td [(T)]TJ ET q -1 0 0 1 353.466 297.847 cm +1 0 0 1 404.275 297.847 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 356.604 297.647 Td [(base)]TJ +/F30 9.9626 Tf 407.413 297.647 Td [(base)]TJ ET q -1 0 0 1 378.153 297.847 cm +1 0 0 1 428.962 297.847 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 381.291 297.647 Td [(sparse)]TJ +/F30 9.9626 Tf 432.101 297.647 Td [(sparse)]TJ ET q -1 0 0 1 413.301 297.847 cm +1 0 0 1 464.11 297.847 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 416.439 297.647 Td [(mat)]TJ/F8 9.9626 Tf 15.691 0 Td [(.)]TJ +/F30 9.9626 Tf 467.248 297.647 Td [(mat)]TJ/F8 9.9626 Tf 15.691 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -332.235 -21.201 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -332.234 -21.201 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.639 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(matrix)-334(to)-333(b)-28(e)-333(assem)28(bled.)]TJ 14.356 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(matrix)-334(to)-333(b)-28(e)-333(assem)28(bled.)]TJ 14.355 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf -25.184 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 209.186 cm +1 0 0 1 362.845 209.186 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 208.986 Td [(Tspmat)]TJ +/F30 9.9626 Tf 365.983 208.986 Td [(Tspmat)]TJ ET q -1 0 0 1 347.183 209.186 cm +1 0 0 1 397.993 209.186 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 350.322 208.986 Td [(type)]TJ +/F30 9.9626 Tf 401.131 208.986 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -271.348 -19.638 Td [(info)]TJ +/F27 9.9626 Tf -271.347 -19.638 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -21.201 Td [(Notes)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ/F16 11.9552 Tf -24.906 -21.201 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 166.875 -29.888 Td [(67)]TJ +/F8 9.9626 Tf 166.874 -29.888 Td [(68)]TJ 0 g 0 G ET endstream endobj -1161 0 obj << +1189 0 obj << /Type /Page -/Contents 1162 0 R -/Resources 1160 0 R +/Contents 1190 0 R +/Resources 1188 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1164 0 R -/Annots [ 1158 0 R 1159 0 R ] +/Parent 1185 0 R +/Annots [ 1186 0 R 1187 0 R ] >> endobj -1158 0 obj << +1186 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 576.23 361.779 587.355] +/Rect [345.53 576.23 412.588 587.355] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1159 0 obj << +1187 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 205.776 372.239 216.901] +/Rect [345.53 205.776 423.049 216.901] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1163 0 obj << -/D [1161 0 R /XYZ 99.895 740.998 null] +1191 0 obj << +/D [1189 0 R /XYZ 150.705 740.998 null] >> endobj -254 0 obj << -/D [1161 0 R /XYZ 99.895 697.37 null] +258 0 obj << +/D [1189 0 R /XYZ 150.705 697.37 null] >> endobj -1160 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1188 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1167 0 obj << -/Length 2255 +1194 0 obj << +/Length 2248 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F8 9.9626 Tf 162.881 706.129 Td [(1.)]TJ +/F8 9.9626 Tf 112.072 706.129 Td [(1.)]TJ 0 g 0 G - [-500(On)-406(en)28(try)-406(to)-406(this)-406(routine)-406(the)-406(descriptor)-406(m)28(ust)-406(b)-28(e)-406(in)-406(the)-406(assem)27(b)1(led)-406(s)-1(tate,)]TJ 12.73 -11.955 Td [(i.e.)]TJ/F30 9.9626 Tf 17.158 0 Td [(psb_cdasb)]TJ/F8 9.9626 Tf 50.394 0 Td [(m)28(ust)-334(already)-333(ha)28(v)28(e)-334(b)-27(een)-334(called.)]TJ + [-500(On)-406(en)28(try)-406(to)-406(this)-406(routine)-406(the)-406(descriptor)-406(m)28(ust)-406(b)-28(e)-406(in)-406(the)-406(assem)28(bled)-406(state)-1(,)]TJ 12.73 -11.955 Td [(i.e.)]TJ/F30 9.9626 Tf 17.158 0 Td [(psb_cdasb)]TJ/F8 9.9626 Tf 50.394 0 Td [(m)28(ust)-334(already)-333(ha)28(v)28(e)-334(b)-27(een)-334(called.)]TJ 0 g 0 G -80.282 -19.926 Td [(2.)]TJ 0 g 0 G @@ -12630,11 +13006,11 @@ BT 0 g 0 G 0 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(Duplicate)-250(en)28(tries)-250(are)-249(dete)-1(cted)-249(and)-250(handled)-250(in)-249(b)-28(oth)-250(build)-249(and)-250(up)-28(date)-249(state,)]TJ 12.73 -11.955 Td [(with)-282(the)-283(exception)-282(of)-282(the)-283(error)-282(action)-282(that)-283(is)-282(only)-282(tak)28(en)-283(in)-282(the)-282(build)-283(state,)]TJ 0 -11.955 Td [(i.e.)-444(on)-334(the)-333(\014rst)-333(asse)-1(m)28(bly;)]TJ + [-500(Duplicate)-250(en)28(tries)-250(are)-249(detec)-1(ted)-249(and)-250(handled)-250(in)-249(b)-28(oth)-250(build)-249(and)-250(up)-28(date)-249(state,)]TJ 12.73 -11.955 Td [(with)-282(the)-283(exception)-282(of)-282(the)-283(error)-282(action)-282(that)-283(i)1(s)-283(only)-282(tak)28(en)-283(in)-282(the)-282(build)-282(s)-1(tate,)]TJ 0 -11.955 Td [(i.e.)-444(on)-334(the)-333(\014rst)-333(assem)27(bly;)]TJ 0 g 0 G -12.73 -19.925 Td [(4.)]TJ 0 g 0 G - [-500(If)-224(the)-224(up)-28(date)-223(c)27(hoice)-224(is)]TJ/F30 9.9626 Tf 107.516 0 Td [(psb_upd_perm_)]TJ/F8 9.9626 Tf 67.994 0 Td [(,)-246(then)-224(subsequen)28(t)-224(calls)-224(to)]TJ/F30 9.9626 Tf 108.952 0 Td [(psb_spins)]TJ/F8 9.9626 Tf -271.732 -11.956 Td [(to)-246(up)-28(date)-246(the)-246(matrix)-246(m)28(ust)-246(b)-28(e)-246(arranged)-246(in)-246(suc)28(h)-246(a)-246(w)28(a)27(y)-246(as)-246(to)-246(pro)-27(duce)-246(exactly)]TJ 0 -11.955 Td [(the)-228(same)-229(sequence)-228(of)-228(co)-28(e\016cien)27(t)-228(v)56(alues)-229(as)-228(encoun)28(tered)-228(at)-229(the)-228(\014rst)-228(assem)27(b)1(ly;)]TJ + [-500(If)-224(the)-224(up)-28(d)1(ate)-224(c)27(hoice)-224(is)]TJ/F30 9.9626 Tf 107.516 0 Td [(psb_upd_perm_)]TJ/F8 9.9626 Tf 67.994 0 Td [(,)-246(then)-224(subsequen)28(t)-224(calls)-224(to)]TJ/F30 9.9626 Tf 108.951 0 Td [(psb_spins)]TJ/F8 9.9626 Tf -271.731 -11.956 Td [(to)-246(up)-28(date)-246(the)-246(matrix)-246(m)28(ust)-246(b)-28(e)-246(arranged)-246(in)-246(suc)28(h)-246(a)-246(w)28(a)27(y)-246(as)-246(to)-246(pro)-27(duce)-246(exactly)]TJ 0 -11.955 Td [(the)-228(same)-229(sequence)-228(of)-228(co)-28(e\016cien)28(t)-229(v)56(alues)-228(as)-229(encoun)28(tered)-228(at)-229(the)-228(\014rst)-228(assem)28(bly;)]TJ 0 g 0 G -12.73 -19.925 Td [(5.)]TJ 0 g 0 G @@ -12642,60 +13018,60 @@ BT 0 g 0 G 0 -19.925 Td [(6.)]TJ 0 g 0 G - [-500(On)-370(exit)-370(from)-370(this)-370(routine)-370(the)-370(matrix)-370(is)-370(in)-370(the)-370(assem)28(bled)-370(state,)-380(an)1(d)-370(th)27(us)]TJ 12.73 -11.956 Td [(is)-333(suitable)-334(for)-333(the)-333(computational)-334(rou)1(tines)-1(.)]TJ + [-500(On)-370(exit)-370(from)-370(this)-370(routine)-370(the)-370(matrix)-370(is)-370(in)-370(the)-370(assem)28(bled)-370(state,)-379(and)-370(th)27(us)]TJ 12.73 -11.956 Td [(is)-333(suitable)-334(for)-333(the)-333(computational)-334(r)1(outines.)]TJ 0 g 0 G - 141.968 -444.333 Td [(68)]TJ + 141.968 -444.333 Td [(69)]TJ 0 g 0 G ET endstream endobj -1166 0 obj << +1193 0 obj << /Type /Page -/Contents 1167 0 R -/Resources 1165 0 R +/Contents 1194 0 R +/Resources 1192 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1164 0 R +/Parent 1185 0 R >> endobj -1168 0 obj << -/D [1166 0 R /XYZ 150.705 740.998 null] +1195 0 obj << +/D [1193 0 R /XYZ 99.895 740.998 null] >> endobj -1169 0 obj << -/D [1166 0 R /XYZ 150.705 716.092 null] +1196 0 obj << +/D [1193 0 R /XYZ 99.895 716.092 null] >> endobj -1170 0 obj << -/D [1166 0 R /XYZ 150.705 687.975 null] +1197 0 obj << +/D [1193 0 R /XYZ 99.895 687.975 null] >> endobj -1171 0 obj << -/D [1166 0 R /XYZ 150.705 668.326 null] +1198 0 obj << +/D [1193 0 R /XYZ 99.895 668.326 null] >> endobj -1172 0 obj << -/D [1166 0 R /XYZ 150.705 624.491 null] +1199 0 obj << +/D [1193 0 R /XYZ 99.895 624.491 null] >> endobj -1173 0 obj << -/D [1166 0 R /XYZ 150.705 580.655 null] +1200 0 obj << +/D [1193 0 R /XYZ 99.895 580.655 null] >> endobj -1174 0 obj << -/D [1166 0 R /XYZ 150.705 560.73 null] +1201 0 obj << +/D [1193 0 R /XYZ 99.895 560.73 null] >> endobj -1165 0 obj << -/Font << /F8 478 0 R /F30 664 0 R >> +1192 0 obj << +/Font << /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1179 0 obj << -/Length 3086 +1206 0 obj << +/Length 3084 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(spfree)-375(|)-375(F)94(rees)-375(a)-375(sparse)-375(matrix)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(spfree)-375(|)-375(F)94(rees)-375(a)-375(sparse)-375(matrix)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_spfree\050a,)-525(desc_a,)-525(info\051)]TJ @@ -12709,114 +13085,114 @@ BT 0 g 0 G 0 -19.925 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(matrix)-334(to)-333(b)-28(e)-333(freed.)]TJ 14.356 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(matrix)-334(to)-333(b)-28(e)-333(freed.)]TJ 14.356 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.95 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.95 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 170.915 0 Td [(psb)]TJ +/F30 9.9626 Tf 170.914 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 578.35 cm +1 0 0 1 362.845 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 578.15 Td [(Tspmat)]TJ +/F30 9.9626 Tf 365.983 578.15 Td [(Tspmat)]TJ ET q -1 0 0 1 347.183 578.35 cm +1 0 0 1 397.993 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 350.322 578.15 Td [(type)]TJ +/F30 9.9626 Tf 401.131 578.15 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -271.348 -19.925 Td [(desc)]TJ +/F27 9.9626 Tf -271.347 -19.925 Td [(desc)]TJ ET q -1 0 0 1 121.81 558.424 cm +1 0 0 1 172.619 558.424 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 558.225 Td [(a)]TJ +/F27 9.9626 Tf 176.057 558.225 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 510.604 cm +1 0 0 1 362.845 510.604 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 510.405 Td [(desc)]TJ +/F30 9.9626 Tf 365.983 510.405 Td [(desc)]TJ ET q -1 0 0 1 336.723 510.604 cm +1 0 0 1 387.532 510.604 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 339.861 510.405 Td [(type)]TJ +/F30 9.9626 Tf 390.67 510.405 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ 0 g 0 G - 141.968 -330.303 Td [(69)]TJ + 141.968 -330.303 Td [(70)]TJ 0 g 0 G ET endstream endobj -1178 0 obj << +1205 0 obj << /Type /Page -/Contents 1179 0 R -/Resources 1177 0 R +/Contents 1206 0 R +/Resources 1204 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1164 0 R -/Annots [ 1175 0 R 1176 0 R ] +/Parent 1185 0 R +/Annots [ 1202 0 R 1203 0 R ] >> endobj -1175 0 obj << +1202 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 574.94 372.239 586.065] +/Rect [345.53 574.94 423.049 586.065] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1176 0 obj << +1203 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 507.194 361.779 518.319] +/Rect [345.53 507.194 412.588 518.319] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1180 0 obj << -/D [1178 0 R /XYZ 99.895 740.998 null] +1207 0 obj << +/D [1205 0 R /XYZ 150.705 740.998 null] >> endobj -258 0 obj << -/D [1178 0 R /XYZ 99.895 697.37 null] +262 0 obj << +/D [1205 0 R /XYZ 150.705 697.37 null] >> endobj -1177 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1204 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1185 0 obj << -/Length 3976 +1212 0 obj << +/Length 3991 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(sprn)-391(|)-391(Reinit)-391(sparse)-391(matrix)-391(structure)-391(for)-391(psblas)-391(rou-)]TJ -25.091 -13.948 Td [(tines.)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(sprn)-391(|)-391(Reinit)-391(sparse)-391(matrix)-391(structure)-391(for)-391(psblas)-391(rou-)]TJ -25.091 -13.948 Td [(tines.)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf 0 -18.389 Td [(call)-525(psb_sprn\050a,)-525(decsc_a,)-525(info,)-525(clear\051)]TJ @@ -12830,125 +13206,125 @@ BT 0 g 0 G 0 -19.926 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(matrix)-334(to)-333(b)-28(e)-333(reinitialized.)]TJ 14.356 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.95 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.95 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(matrix)-334(to)-333(b)-28(e)-333(reinitialized.)]TJ 14.356 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 170.914 0 Td [(psb)]TJ +/F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 564.402 cm +1 0 0 1 312.036 564.402 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 564.203 Td [(Tspmat)]TJ +/F30 9.9626 Tf 315.174 564.203 Td [(Tspmat)]TJ ET q -1 0 0 1 397.993 564.402 cm +1 0 0 1 347.183 564.402 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 401.131 564.203 Td [(type)]TJ +/F30 9.9626 Tf 350.322 564.203 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -271.347 -19.925 Td [(desc)]TJ +/F27 9.9626 Tf -271.348 -19.925 Td [(desc)]TJ ET q -1 0 0 1 172.619 544.477 cm +1 0 0 1 121.81 544.477 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 544.278 Td [(a)]TJ +/F27 9.9626 Tf 125.247 544.278 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 496.656 cm +1 0 0 1 312.036 496.656 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 496.457 Td [(desc)]TJ +/F30 9.9626 Tf 315.174 496.457 Td [(desc)]TJ ET q -1 0 0 1 387.532 496.656 cm +1 0 0 1 336.723 496.656 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 390.67 496.457 Td [(type)]TJ +/F30 9.9626 Tf 339.861 496.457 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -19.925 Td [(clear)]TJ 0 g 0 G -/F8 9.9626 Tf 28.795 0 Td [(Cho)-28(ose)-333(whether)-333(to)-334(zero)-333(out)-333(m)-1(atr)1(ix)-334(co)-28(e\016cien)28(ts)]TJ -3.888 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.95 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Default:)-444(true.)]TJ +/F8 9.9626 Tf 28.795 0 Td [(Cho)-28(ose)-333(whether)-334(to)-333(zero)-333(out)-334(matrix)-333(co)-28(e\016cien)28(ts)]TJ -3.888 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Default:)-444(true.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.034 -11.955 Td [(An)-333(in)28(teger)-334(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detected.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.176 -19.925 Td [(1.)]TJ +/F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(On)-333(exit)-334(from)-333(this)-333(routine)-334(t)1(he)-334(sparse)-333(matrix)-334(is)-333(in)-333(the)-333(up)-28(date)-334(state.)]TJ + [-500(On)-333(exit)-334(from)-333(this)-333(routine)-333(the)-334(sparse)-333(matrix)-333(is)-334(in)-333(the)-333(up)-28(date)-333(s)-1(tat)1(e)-1(.)]TJ 0 g 0 G - 154.698 -206.766 Td [(70)]TJ + 154.698 -206.766 Td [(71)]TJ 0 g 0 G ET endstream endobj -1184 0 obj << +1211 0 obj << /Type /Page -/Contents 1185 0 R -/Resources 1183 0 R +/Contents 1212 0 R +/Resources 1210 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1164 0 R -/Annots [ 1181 0 R 1182 0 R ] +/Parent 1185 0 R +/Annots [ 1208 0 R 1209 0 R ] >> endobj -1181 0 obj << +1208 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 560.993 423.049 572.118] +/Rect [294.721 560.993 372.239 572.118] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1182 0 obj << +1209 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 493.247 412.588 504.372] +/Rect [294.721 493.247 361.779 504.372] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1186 0 obj << -/D [1184 0 R /XYZ 150.705 740.998 null] +1213 0 obj << +/D [1211 0 R /XYZ 99.895 740.998 null] >> endobj -262 0 obj << -/D [1184 0 R /XYZ 150.705 685.747 null] +266 0 obj << +/D [1211 0 R /XYZ 99.895 685.747 null] >> endobj -1187 0 obj << -/D [1184 0 R /XYZ 150.705 313.144 null] +1214 0 obj << +/D [1211 0 R /XYZ 99.895 313.144 null] >> endobj -1183 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1210 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1191 0 obj << -/Length 4603 +1219 0 obj << +/Length 5111 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(geall)-375(|)-375(Allo)-31(cates)-375(a)-375(dense)-375(matrix)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(geall)-375(|)-375(Allo)-31(cates)-375(a)-375(dense)-375(matrix)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_geall\050x,)-525(desc_a,)-525(info,)-525(n,)-525(lb\051)]TJ @@ -12963,99 +13339,131 @@ BT 0 -19.925 Td [(desc)]TJ ET q -1 0 0 1 121.81 626.17 cm +1 0 0 1 172.619 626.17 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 625.971 Td [(a)]TJ +/F27 9.9626 Tf 176.057 625.971 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(The)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(v)56(ariable)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(The)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(v)56(ariable)-334(of)-333(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 137.346 0 Td [(psb)]TJ +/F30 9.9626 Tf 137.347 0 Td [(psb)]TJ ET q -1 0 0 1 278.467 578.35 cm +1 0 0 1 329.276 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 281.605 578.15 Td [(desc)]TJ +/F30 9.9626 Tf 332.415 578.15 Td [(desc)]TJ ET q -1 0 0 1 303.154 578.35 cm +1 0 0 1 353.964 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 306.292 578.15 Td [(type)]TJ +/F30 9.9626 Tf 357.102 578.15 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -227.319 -31.88 Td [(n)]TJ +/F27 9.9626 Tf -227.318 -31.88 Td [(n)]TJ 0 g 0 G -/F8 9.9626 Tf 11.347 0 Td [(The)-333(n)27(u)1(m)27(b)-27(e)-1(r)-333(of)-333(columns)-333(of)-334(the)-333(dense)-333(m)-1(atr)1(ix)-334(to)-333(b)-28(e)-333(allo)-28(cated.)]TJ 13.56 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-343(as:)-463(In)27(teger)-343(scalar,)-345(default)-343(1.)-473(It)-343(is)-343(not)-343(a)-343(v)56(alid)-343(argumen)28(t)-343(if)]TJ/F11 9.9626 Tf 294.599 0 Td [(x)]TJ/F8 9.9626 Tf 9.11 0 Td [(is)-343(a)]TJ -303.709 -11.955 Td [(rank-1)-333(arra)28(y)83(.)]TJ +/F8 9.9626 Tf 11.346 0 Td [(The)-333(n)27(um)28(b)-28(er)-333(of)-333(columns)-334(of)-333(the)-333(dense)-334(matrix)-333(to)-333(b)-28(e)-333(allo)-28(cated.)]TJ 13.56 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-343(as:)-463(In)27(teger)-343(scalar,)-345(default)-343(1.)-473(It)-343(is)-343(not)-343(a)-343(v)56(alid)-343(argumen)27(t)-342(if)]TJ/F11 9.9626 Tf 294.599 0 Td [(x)]TJ/F8 9.9626 Tf 9.111 0 Td [(is)-343(a)]TJ -303.71 -11.955 Td [(rank-1)-333(arra)28(y)83(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.925 Td [(lb)]TJ +/F27 9.9626 Tf -24.906 -19.925 Td [(lb)]TJ 0 g 0 G -/F8 9.9626 Tf 14.529 0 Td [(The)-489(lo)28(w)27(er)-489(b)-27(ound)-489(for)-489(the)-490(column)-489(index)-489(range)-489(of)-489(the)-489(dense)-489(matrix)-489(to)-489(b)-28(e)]TJ 10.378 -11.955 Td [(allo)-28(cated.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-343(as:)-463(In)27(teger)-343(scalar,)-345(default)-343(1.)-473(It)-343(is)-343(not)-343(a)-343(v)56(alid)-343(argumen)28(t)-343(if)]TJ/F11 9.9626 Tf 294.599 0 Td [(x)]TJ/F8 9.9626 Tf 9.11 0 Td [(is)-343(a)]TJ -303.709 -11.955 Td [(rank-1)-333(arra)28(y)83(.)]TJ +/F8 9.9626 Tf 14.529 0 Td [(The)-489(lo)28(w)27(er)-489(b)-27(ound)-489(for)-489(the)-490(colu)1(m)-1(n)-489(ind)1(e)-1(x)-489(range)-489(of)-489(the)-489(dense)-489(matrix)-489(to)-489(b)-28(e)]TJ 10.377 -11.955 Td [(allo)-28(cated.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-343(as:)-463(In)27(teger)-343(scalar,)-345(default)-343(1.)-473(It)-343(is)-343(not)-343(a)-343(v)56(alid)-343(argumen)27(t)-342(if)]TJ/F11 9.9626 Tf 294.599 0 Td [(x)]TJ/F8 9.9626 Tf 9.111 0 Td [(is)-343(a)]TJ -303.71 -11.955 Td [(rank-1)-333(arra)28(y)83(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -21.918 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -24.906 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(The)-333(dense)-334(matrix)-333(to)-333(b)-28(e)-334(all)1(o)-28(cated.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-277(as:)-416(a)-278(rank)-277(one)-277(or)-277(t)27(w)28(o)-277(arra)28(y)-277(with)-278(the)-277(ALLOCA)83(T)84(ABLE)-277(attribute,)]TJ 0 -11.955 Td [(of)-333(t)27(y)1(p)-28(e)-334(real,)-333(complex)-333(or)-334(in)28(teger.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(The)-333(dense)-334(matrix)-333(to)-333(b)-28(e)-333(allo)-28(cated.)]TJ 13.878 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-303(as)-1(:)-429(a)-304(rank)-303(one)-304(or)-304(t)28(w)28(o)-304(arra)28(y)-304(with)-304(th)1(e)-304(ALLOCA)83(T)83(ABLE)-303(attribute)]TJ 0 -11.955 Td [(or)-333(an)-334(ob)-55(ject)-334(of)-333(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 89.969 0 Td [(psb)]TJ +ET +q +1 0 0 1 281.898 293.418 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 285.037 293.219 Td [(T)]TJ +ET +q +1 0 0 1 290.895 293.418 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 294.033 293.219 Td [(vect)]TJ +ET +q +1 0 0 1 315.582 293.418 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 318.72 293.219 Td [(type)]TJ +0 g 0 G +/F8 9.9626 Tf 20.921 0 Td [(,)-333(of)-334(t)28(yp)-28(e)-333(real,)-333(complex)-334(or)-333(in)28(teger.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -31.881 Td [(info)]TJ +/F27 9.9626 Tf -188.936 -31.88 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ 0 g 0 G - 141.968 -123.08 Td [(71)]TJ + 141.968 -123.08 Td [(72)]TJ 0 g 0 G ET endstream endobj -1190 0 obj << +1218 0 obj << /Type /Page -/Contents 1191 0 R -/Resources 1189 0 R +/Contents 1219 0 R +/Resources 1217 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1164 0 R -/Annots [ 1188 0 R ] +/Parent 1185 0 R +/Annots [ 1215 0 R 1216 0 R ] >> endobj -1188 0 obj << +1215 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [261.152 574.94 328.21 586.065] +/Rect [311.962 574.94 379.019 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1192 0 obj << -/D [1190 0 R /XYZ 99.895 740.998 null] +1216 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.584 290.009 340.638 301.134] +/Subtype /Link +/A << /S /GoTo /D (vdata) >> >> endobj -266 0 obj << -/D [1190 0 R /XYZ 99.895 697.37 null] +1220 0 obj << +/D [1218 0 R /XYZ 150.705 740.998 null] >> endobj -1189 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +270 0 obj << +/D [1218 0 R /XYZ 150.705 697.37 null] +>> endobj +1217 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1196 0 obj << -/Length 6176 +1225 0 obj << +/Length 6817 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(geins)-375(|)-375(Dense)-375(matrix)-375(insertion)-375(routine)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(geins)-375(|)-375(Dense)-375(matrix)-375(insertion)-375(routine)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_geins\050m,)-525(irw,)-525(val,)-525(x,)-525(desc_a,)-525(info,dupl\051)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_geins\050m,)-525(irw,)-525(val,)-525(x,)-525(desc_a,)-525(info)-525([,dupl,local]\051)]TJ 0 g 0 G /F27 9.9626 Tf 0 -20.681 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -13066,150 +13474,185 @@ BT 0 g 0 G 0 -19.431 Td [(m)]TJ 0 g 0 G -/F8 9.9626 Tf 14.529 0 Td [(Num)28(b)-28(er)-333(of)-334(ro)28(ws)-333(in)]TJ/F11 9.9626 Tf 84.516 0 Td [(v)-36(al)]TJ/F8 9.9626 Tf 16.942 0 Td [(to)-333(b)-28(e)-333(inse)-1(r)1(te)-1(d)1(.)]TJ -91.081 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)]TJ +/F8 9.9626 Tf 14.529 0 Td [(Num)28(b)-28(er)-333(of)-334(ro)28(ws)-333(in)]TJ/F11 9.9626 Tf 84.517 0 Td [(v)-36(al)]TJ/F8 9.9626 Tf 16.942 0 Td [(to)-333(b)-28(e)-333(inserted.)]TJ -91.081 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -19.431 Td [(irw)]TJ +/F27 9.9626 Tf -24.907 -19.431 Td [(irw)]TJ 0 g 0 G -/F8 9.9626 Tf 21.157 0 Td [(Indices)-444(of)-445(the)-444(ro)27(ws)-444(to)-445(b)-27(e)-445(inserted.)-778(Sp)-28(eci\014cally)84(,)-472(ro)27(w)]TJ/F11 9.9626 Tf 237.973 0 Td [(i)]TJ/F8 9.9626 Tf 7.861 0 Td [(of)]TJ/F11 9.9626 Tf 12.454 0 Td [(v)-36(al)]TJ/F8 9.9626 Tf 18.049 0 Td [(will)-444(b)-28(e)-445(in-)]TJ -272.588 -11.955 Td [(serted)-435(in)28(to)-436(th)1(e)-436(lo)-27(cal)-436(ro)28(w)-435(corresp)-28(onding)-435(to)-435(the)-435(global)-435(ro)28(w)-435(index)]TJ/F11 9.9626 Tf 289.252 0 Td [(ir)-28(w)]TJ/F8 9.9626 Tf 15.605 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051.)]TJ -312.163 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)84(.)]TJ +/F8 9.9626 Tf 21.157 0 Td [(Indices)-445(of)-444(the)-444(ro)27(ws)-444(to)-445(b)-27(e)-445(inserted.)-778(Sp)-28(eci\014cally)84(,)-473(r)1(o)27(w)]TJ/F11 9.9626 Tf 237.974 0 Td [(i)]TJ/F8 9.9626 Tf 7.861 0 Td [(of)]TJ/F11 9.9626 Tf 12.453 0 Td [(v)-36(al)]TJ/F8 9.9626 Tf 18.05 0 Td [(will)-444(b)-28(e)-445(in-)]TJ -272.588 -11.955 Td [(serted)-435(in)28(to)-435(the)-436(lo)-27(cal)-436(r)1(o)27(w)-435(corresp)-28(onding)-435(to)-435(the)-435(global)-435(ro)28(w)-435(index)]TJ/F11 9.9626 Tf 289.252 0 Td [(ir)-28(w)]TJ/F8 9.9626 Tf 15.604 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.433 0 Td [(\051.)]TJ -312.163 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)84(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -19.43 Td [(v)64(al)]TJ +/F27 9.9626 Tf -24.907 -19.43 Td [(v)64(al)]TJ 0 g 0 G -/F8 9.9626 Tf 19.143 0 Td [(the)-333(dense)-334(submatrix)-333(to)-333(b)-28(e)-333(inserted.)]TJ 5.763 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(1)-333(o)-1(r)-333(2)-333(arra)28(y)83(.)-444(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-334(v)56(alue.)]TJ +/F8 9.9626 Tf 19.144 0 Td [(the)-333(dense)-334(submatrix)-333(to)-333(b)-28(e)-333(inserted.)]TJ 5.763 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(1)-333(or)-334(2)-333(arra)28(y)83(.)-444(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-334(v)56(alue.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -19.43 Td [(desc)]TJ +/F27 9.9626 Tf -24.907 -19.43 Td [(desc)]TJ ET q -1 0 0 1 172.619 414.689 cm +1 0 0 1 121.81 414.689 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 414.49 Td [(a)]TJ +/F27 9.9626 Tf 125.247 414.49 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 366.869 cm +1 0 0 1 312.036 366.869 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 366.669 Td [(desc)]TJ +/F30 9.9626 Tf 315.174 366.669 Td [(desc)]TJ ET q -1 0 0 1 387.532 366.869 cm +1 0 0 1 336.723 366.869 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 390.67 366.669 Td [(type)]TJ +/F30 9.9626 Tf 339.861 366.669 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -19.43 Td [(dupl)]TJ 0 g 0 G -/F8 9.9626 Tf 27.259 0 Td [(Ho)28(w)-334(to)-333(handle)-333(duplicate)-333(co)-28(e\016cien)27(ts.)]TJ -2.352 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf 40.576 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-308(as:)-432(in)27(teger,)-313(p)-28(ossible)-309(v)56(alues:)]TJ/F30 9.9626 Tf 163.697 0 Td [(psb_dupl_ovwrt_)]TJ/F8 9.9626 Tf 78.455 0 Td [(,)]TJ/F30 9.9626 Tf 5.891 0 Td [(psb_dupl_add_)]TJ/F8 9.9626 Tf 67.995 0 Td [(.)]TJ +/F8 9.9626 Tf 27.259 0 Td [(Ho)28(w)-334(to)-333(handle)-333(duplicate)-333(co)-28(e\016cien)27(ts.)]TJ -2.352 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-308(as:)-432(in)27(teger,)-313(p)-28(ossible)-309(v)56(alues:)]TJ/F30 9.9626 Tf 163.696 0 Td [(psb_dupl_ovwrt_)]TJ/F8 9.9626 Tf 78.456 0 Td [(,)]TJ/F30 9.9626 Tf 5.891 0 Td [(psb_dupl_add_)]TJ/F8 9.9626 Tf 67.994 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -340.944 -20.68 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -340.944 -19.43 Td [(lo)-32(cal)]TJ 0 g 0 G +/F8 9.9626 Tf 28.055 0 Td [(Whether)-289(the)-289(en)28(tries)-289(in)-289(the)-289(index)-288(v)27(ector)]TJ/F30 9.9626 Tf 172.769 0 Td [(irw)]TJ/F8 9.9626 Tf 15.692 0 Td [(,)-298(are)-289(already)-288(in)-289(lo)-28(cal)-289(n)28(um)28(b)-28(er-)]TJ -191.609 -11.955 Td [(ing.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(logical)-333(v)55(alue;)-333(default:)]TJ/F30 9.9626 Tf 163.056 0 Td [(.false.)]TJ/F8 9.9626 Tf 36.612 0 Td [(.)]TJ 0 g 0 G - 0 -19.43 Td [(x)]TJ +/F27 9.9626 Tf -224.575 -20.68 Td [(On)-383(Return)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(output)-334(d)1(e)-1(n)1(s)-1(e)-333(matrix.)]TJ 13.879 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-277(as:)-416(a)-278(rank)-277(one)-277(or)-277(t)28(w)27(o)-277(arra)28(y)-277(with)-278(the)-277(ALLOCA)83(T)84(ABLE)-277(attribute,)]TJ 0 -11.955 Td [(of)-333(t)28(yp)-28(e)-334(real,)-333(complex)-333(or)-334(in)28(teger.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -31.386 Td [(info)]TJ + 0 -19.43 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.034 -11.955 Td [(An)-333(in)28(teger)-334(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detected.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(output)-334(dense)-333(matrix.)]TJ 13.879 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-232(as:)-394(a)-233(rank)-233(one)-232(or)-233(t)28(w)28(o)-233(arra)28(y)-233(or)-232(an)-233(ob)-55(ject)-233(of)-233(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 241.975 0 Td [(psb)]TJ +ET +q +1 0 0 1 383.096 144.435 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 386.234 144.236 Td [(T)]TJ +ET +q +1 0 0 1 392.092 144.435 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 395.231 144.236 Td [(vect)]TJ +ET +q +1 0 0 1 416.779 144.435 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 419.918 144.236 Td [(type)]TJ 0 g 0 G - 141.967 -29.888 Td [(72)]TJ +/F8 9.9626 Tf 20.921 0 Td [(,)]TJ -316.037 -11.955 Td [(of)-333(t)27(y)1(p)-28(e)-334(real,)-333(complex)-333(or)-334(in)28(teger.)]TJ +0 g 0 G + 141.968 -41.843 Td [(73)]TJ 0 g 0 G ET endstream endobj -1195 0 obj << +1224 0 obj << /Type /Page -/Contents 1196 0 R -/Resources 1194 0 R +/Contents 1225 0 R +/Resources 1223 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1164 0 R -/Annots [ 1193 0 R ] +/Parent 1227 0 R +/Annots [ 1221 0 R 1222 0 R ] >> endobj -1193 0 obj << +1221 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 363.459 412.588 374.584] +/Rect [294.721 363.459 361.779 374.584] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1197 0 obj << -/D [1195 0 R /XYZ 150.705 740.998 null] +1222 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.781 141.026 441.835 152.151] +/Subtype /Link +/A << /S /GoTo /D (vdata) >> >> endobj -270 0 obj << -/D [1195 0 R /XYZ 150.705 697.37 null] +1226 0 obj << +/D [1224 0 R /XYZ 99.895 740.998 null] >> endobj -1194 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +274 0 obj << +/D [1224 0 R /XYZ 99.895 697.37 null] +>> endobj +1223 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1200 0 obj << -/Length 554 +1230 0 obj << +/Length 1115 >> stream 0 g 0 G 0 g 0 G +0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(Notes)]TJ +/F27 9.9626 Tf 150.705 706.129 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ/F16 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +0 g 0 G +/F8 9.9626 Tf 12.176 -19.925 Td [(1.)]TJ 0 g 0 G [-500(Dense)-333(v)27(ectors/matrices)-333(do)-333(not)-334(ha)28(v)28(e)-334(an)-333(asso)-28(ciated)-333(state;)]TJ 0 g 0 G - 0 -19.926 Td [(2.)]TJ + 0 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(Duplicate)-292(en)28(tries)-293(are)-292(either)-292(o)28(v)28(erwritten)-292(or)-293(added,)-300(there)-292(is)-292(no)-292(pro)27(vision)-292(for)]TJ 12.73 -11.955 Td [(raising)-333(an)-334(error)-333(condition.)]TJ + [-500(Duplicate)-292(en)28(tries)-293(are)-292(either)-292(o)28(v)28(erwritten)-293(or)-292(added,)-300(there)-292(is)-292(no)-293(p)1(ro)27(vision)-292(for)]TJ 12.73 -11.955 Td [(raising)-333(an)-334(error)-333(condition.)]TJ 0 g 0 G - 141.968 -563.885 Td [(73)]TJ + 141.968 -494.147 Td [(74)]TJ 0 g 0 G ET endstream endobj -1199 0 obj << +1229 0 obj << /Type /Page -/Contents 1200 0 R -/Resources 1198 0 R +/Contents 1230 0 R +/Resources 1228 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1204 0 R +/Parent 1227 0 R >> endobj -1201 0 obj << -/D [1199 0 R /XYZ 99.895 740.998 null] +1231 0 obj << +/D [1229 0 R /XYZ 150.705 740.998 null] >> endobj -1202 0 obj << -/D [1199 0 R /XYZ 99.895 702.144 null] +1232 0 obj << +/D [1229 0 R /XYZ 150.705 632.405 null] >> endobj -1203 0 obj << -/D [1199 0 R /XYZ 99.895 679.728 null] +1233 0 obj << +/D [1229 0 R /XYZ 150.705 609.989 null] >> endobj -1198 0 obj << -/Font << /F16 475 0 R /F8 478 0 R >> +1228 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F16 479 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1208 0 obj << -/Length 2877 +1239 0 obj << +/Length 5215 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(geasb)-375(|)-375(Assem)31(bly)-375(a)-375(dense)-375(matrix)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(geasb)-375(|)-375(Assem)31(bly)-375(a)-375(dense)-375(matrix)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_geasb\050x,)-525(desc_a,)-525(info\051)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_geasb\050x,)-525(desc_a,)-525(info,)-525(mold\051)]TJ 0 g 0 G /F27 9.9626 Tf 0 -21.918 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -13221,88 +13664,184 @@ BT 0 -19.925 Td [(desc)]TJ ET q -1 0 0 1 172.619 626.17 cm +1 0 0 1 121.81 626.17 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 625.971 Td [(a)]TJ +/F27 9.9626 Tf 125.247 625.971 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(The)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(v)56(ariable)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(The)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(v)56(ariable)-334(of)-333(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 137.347 0 Td [(psb)]TJ +/F30 9.9626 Tf 137.346 0 Td [(psb)]TJ ET q -1 0 0 1 329.276 578.35 cm +1 0 0 1 278.467 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 332.415 578.15 Td [(desc)]TJ +/F30 9.9626 Tf 281.605 578.15 Td [(desc)]TJ ET q -1 0 0 1 353.964 578.35 cm +1 0 0 1 303.154 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 357.102 578.15 Td [(type)]TJ +/F30 9.9626 Tf 306.292 578.15 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -227.318 -33.873 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -227.319 -31.88 Td [(mold)]TJ +0 g 0 G +/F8 9.9626 Tf 29.805 0 Td [(The)-333(desired)-334(dynamic)-333(t)28(yp)-28(e)-333(for)-334(the)-333(in)28(ternal)-333(v)27(ector)-333(storage.)]TJ -4.898 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-273(as:)-414(an)-274(ob)-55(ject)-273(of)-274(a)-273(class)-273(deriv)28(ed)-274(from)]TJ/F30 9.9626 Tf 198.26 0 Td [(psb)]TJ +ET +q +1 0 0 1 339.381 498.649 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 342.519 498.449 Td [(T)]TJ +ET +q +1 0 0 1 348.377 498.649 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 351.515 498.449 Td [(base)]TJ +ET +q +1 0 0 1 373.064 498.649 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 376.202 498.449 Td [(vect)]TJ +ET +q +1 0 0 1 397.751 498.649 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 400.89 498.449 Td [(type)]TJ/F8 9.9626 Tf 20.921 0 Td [(;)-293(this)]TJ -297.009 -11.955 Td [(is)-333(only)-334(allo)28(w)28(ed)-333(when)]TJ/F11 9.9626 Tf 93.317 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(of)-334(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 43.78 0 Td [(psb)]TJ +ET +q +1 0 0 1 287.233 486.693 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 290.371 486.494 Td [(T)]TJ +ET +q +1 0 0 1 296.229 486.693 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 299.367 486.494 Td [(vect)]TJ +ET +q +1 0 0 1 320.916 486.693 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 324.054 486.494 Td [(type)]TJ +0 g 0 G +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F27 9.9626 Tf -245.081 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(The)-333(dense)-334(matrix)-333(to)-333(b)-28(e)-333(as)-1(sem)28(bled.)]TJ 13.878 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-277(as:)-416(a)-278(rank)-277(one)-277(or)-277(t)27(w)28(o)-277(arra)28(y)-277(with)-278(the)-277(ALLOCA)83(T)84(ABLE)-277(attribute,)]TJ 0 -11.956 Td [(of)-333(t)27(yp)-27(e)-334(real,)-333(complex)-333(or)-334(in)28(teger.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(The)-333(dense)-334(matrix)-333(to)-333(b)-28(e)-334(assem)28(bled.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-433(as:)-645(a)-433(rank)-433(one)-433(or)-434(t)28(w)28(o)-434(arra)28(y)-433(with)-433(the)-434(ALLOCA)84(T)83(ABLE)-433(or)-434(an)]TJ 0 -11.955 Td [(ob)-56(j)1(e)-1(ct)-333(of)-333(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 63.927 0 Td [(psb)]TJ +ET +q +1 0 0 1 205.048 385.075 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 208.186 384.875 Td [(T)]TJ +ET +q +1 0 0 1 214.044 385.075 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 217.182 384.875 Td [(vect)]TJ +ET +q +1 0 0 1 238.731 385.075 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 241.869 384.875 Td [(type)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -31.88 Td [(info)]TJ +/F8 9.9626 Tf 20.922 0 Td [(,)-333(of)-334(t)28(yp)-28(e)-333(real,)-333(complex)-334(or)-333(in)28(teger.)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(te)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ +/F27 9.9626 Tf -162.896 -31.88 Td [(info)]TJ +0 g 0 G +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ 0 g 0 G - 141.968 -294.437 Td [(74)]TJ + 141.968 -214.736 Td [(75)]TJ 0 g 0 G ET endstream endobj -1207 0 obj << +1238 0 obj << /Type /Page -/Contents 1208 0 R -/Resources 1206 0 R +/Contents 1239 0 R +/Resources 1237 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1204 0 R -/Annots [ 1205 0 R ] +/Parent 1227 0 R +/Annots [ 1234 0 R 1235 0 R 1236 0 R ] >> endobj -1205 0 obj << +1234 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [311.962 574.94 379.019 586.065] +/Rect [261.152 574.94 328.21 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1209 0 obj << -/D [1207 0 R /XYZ 150.705 740.998 null] +1235 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [269.918 483.284 345.972 494.409] +/Subtype /Link +/A << /S /GoTo /D (vdata) >> >> endobj -274 0 obj << -/D [1207 0 R /XYZ 150.705 697.37 null] +1236 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.733 381.665 263.787 392.79] +/Subtype /Link +/A << /S /GoTo /D (vdata) >> >> endobj -1206 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1240 0 obj << +/D [1238 0 R /XYZ 99.895 740.998 null] +>> endobj +278 0 obj << +/D [1238 0 R /XYZ 99.895 697.37 null] +>> endobj +1237 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1213 0 obj << -/Length 2881 +1245 0 obj << +/Length 3379 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(gefree)-375(|)-375(F)94(rees)-375(a)-375(dense)-375(matrix)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(gefree)-375(|)-375(F)94(rees)-375(a)-375(dense)-375(matrix)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_gefree\050x,)-525(desc_a,)-525(info\051)]TJ @@ -13316,89 +13855,121 @@ BT 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(The)-333(dense)-334(matrix)-333(to)-333(b)-28(e)-334(f)1(re)-1(ed.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-277(as:)-416(a)-278(rank)-277(one)-277(or)-277(t)27(w)28(o)-277(arra)28(y)-277(with)-278(the)-277(ALLOCA)83(T)84(ABLE)-277(attribute,)]TJ 0 -11.955 Td [(of)-333(t)27(y)1(p)-28(e)-334(real,)-333(complex)-333(or)-334(in)28(teger.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(The)-333(dense)-334(matrix)-333(to)-333(b)-28(e)-333(free)-1(d)1(.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-433(as:)-645(a)-433(rank)-433(one)-433(or)-434(t)28(w)28(o)-434(arr)1(a)27(y)-433(with)-433(the)-434(ALLOCA)84(T)83(ABLE)-433(or)-434(an)]TJ 0 -11.955 Td [(ob)-55(jec)-1(t)-333(of)-333(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 63.927 0 Td [(psb)]TJ +ET +q +1 0 0 1 255.857 566.395 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 258.995 566.195 Td [(T)]TJ +ET +q +1 0 0 1 264.853 566.395 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 267.992 566.195 Td [(vect)]TJ +ET +q +1 0 0 1 289.541 566.395 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 292.679 566.195 Td [(type)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ +/F8 9.9626 Tf 20.921 0 Td [(,)-333(of)-334(t)28(yp)-28(e)-333(real,)-333(complex)-334(or)-333(in)28(teger.)]TJ +0 g 0 G +/F27 9.9626 Tf -162.895 -31.88 Td [(desc)]TJ ET q -1 0 0 1 121.81 534.514 cm +1 0 0 1 172.619 534.514 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 534.315 Td [(a)]TJ +/F27 9.9626 Tf 176.057 534.315 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(The)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(v)56(ariable)-334(of)-333(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(The)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(v)56(ariable)-334(of)-333(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 137.346 0 Td [(psb)]TJ +/F30 9.9626 Tf 137.347 0 Td [(psb)]TJ ET q -1 0 0 1 278.467 486.693 cm +1 0 0 1 329.276 486.693 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 281.605 486.494 Td [(desc)]TJ +/F30 9.9626 Tf 332.415 486.494 Td [(desc)]TJ ET q -1 0 0 1 303.154 486.693 cm +1 0 0 1 353.964 486.693 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 306.292 486.494 Td [(type)]TJ +/F30 9.9626 Tf 357.102 486.494 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -227.319 -33.873 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -227.318 -33.873 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ 0 g 0 G - 141.968 -294.437 Td [(75)]TJ + 141.968 -294.437 Td [(76)]TJ 0 g 0 G ET endstream endobj -1212 0 obj << +1244 0 obj << /Type /Page -/Contents 1213 0 R -/Resources 1211 0 R +/Contents 1245 0 R +/Resources 1243 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1204 0 R -/Annots [ 1210 0 R ] +/Parent 1227 0 R +/Annots [ 1241 0 R 1242 0 R ] >> endobj -1210 0 obj << +1241 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [238.542 562.985 314.596 574.11] +/Subtype /Link +/A << /S /GoTo /D (vdata) >> +>> endobj +1242 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [261.152 483.284 328.21 494.409] +/Rect [311.962 483.284 379.019 494.409] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1214 0 obj << -/D [1212 0 R /XYZ 99.895 740.998 null] +1246 0 obj << +/D [1244 0 R /XYZ 150.705 740.998 null] >> endobj -278 0 obj << -/D [1212 0 R /XYZ 99.895 697.37 null] +282 0 obj << +/D [1244 0 R /XYZ 150.705 697.37 null] >> endobj -1211 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1243 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1217 0 obj << -/Length 3438 +1249 0 obj << +/Length 3437 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(gelp)-375(|)-375(Applies)-375(a)-375(left)-375(p)-31(erm)31(utation)-375(to)-375(a)-375(dense)-375(matrix)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(gelp)-375(|)-375(Applies)-375(a)-375(left)-375(p)-31(erm)31(utation)-375(to)-375(a)-375(dense)-375(matrix)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_gelp\050trans,)-525(iperm,)-525(x,)-525(info\051)]TJ @@ -13412,77 +13983,77 @@ BT 0 g 0 G 0 -19.925 Td [(trans)]TJ 0 g 0 G -/F8 9.9626 Tf 30.609 0 Td [(A)-333(c)27(har)1(ac)-1(ter)-333(that)-333(sp)-28(eci\014es)-333(whether)-334(to)-333(p)-28(erm)28(ute)]TJ/F11 9.9626 Tf 204.179 0 Td [(A)]TJ/F8 9.9626 Tf 10.793 0 Td [(or)]TJ/F11 9.9626 Tf 12.204 0 Td [(A)]TJ/F10 6.9738 Tf 7.472 3.616 Td [(T)]TJ/F8 9.9626 Tf 6.276 -3.616 Td [(.)]TJ -246.626 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(single)-333(c)28(haracter)-334(with)-333(v)56(alue)-334('N')-333(for)]TJ/F11 9.9626 Tf 217.435 0 Td [(A)]TJ/F8 9.9626 Tf 10.792 0 Td [(or)-333('T')-334(for)]TJ/F11 9.9626 Tf 43.504 0 Td [(A)]TJ/F10 6.9738 Tf 7.472 3.616 Td [(T)]TJ/F8 9.9626 Tf 6.276 -3.616 Td [(.)]TJ +/F8 9.9626 Tf 30.609 0 Td [(A)-333(c)27(haracter)-333(that)-333(sp)-28(eci\014es)-333(whether)-334(to)-333(p)-28(erm)28(ute)]TJ/F11 9.9626 Tf 204.179 0 Td [(A)]TJ/F8 9.9626 Tf 10.793 0 Td [(or)]TJ/F11 9.9626 Tf 12.204 0 Td [(A)]TJ/F10 6.9738 Tf 7.472 3.616 Td [(T)]TJ/F8 9.9626 Tf 6.276 -3.616 Td [(.)]TJ -246.626 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(single)-333(c)28(haracte)-1(r)-333(with)-333(v)55(alu)1(e)-334('N')-333(for)]TJ/F11 9.9626 Tf 217.435 0 Td [(A)]TJ/F8 9.9626 Tf 10.793 0 Td [(or)-333('T')-334(for)]TJ/F11 9.9626 Tf 43.503 0 Td [(A)]TJ/F10 6.9738 Tf 7.472 3.616 Td [(T)]TJ/F8 9.9626 Tf 6.277 -3.616 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -310.386 -31.88 Td [(ip)-32(erm)]TJ +/F27 9.9626 Tf -310.387 -31.88 Td [(ip)-32(erm)]TJ 0 g 0 G -/F8 9.9626 Tf 34.364 0 Td [(An)-333(in)28(tege)-1(r)-333(arra)28(y)-333(con)27(tain)1(ing)-334(p)-28(erm)28(utation)-333(information.)]TJ -9.457 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-1(n)-333(in)28(teger)-333(one-dimensional)-334(arra)28(y)84(.)]TJ +/F8 9.9626 Tf 34.364 0 Td [(An)-333(in)28(te)-1(ger)-333(arra)28(y)-333(con)27(tainin)1(g)-334(p)-28(erm)28(utation)-333(information.)]TJ -9.457 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(one-dimensional)-334(arra)28(y)83(.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -31.88 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(The)-333(dense)-334(matrix)-333(to)-333(b)-28(e)-333(p)-28(erm)27(u)1(te)-1(d)1(.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(one)-333(or)-333(t)27(w)28(o)-333(dimensional)-334(arra)28(y)84(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(The)-333(dense)-334(matrix)-333(to)-333(b)-28(e)-334(p)-27(erm)27(ut)1(e)-1(d.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(one)-333(or)-334(t)28(w)28(o)-333(dimensional)-334(arra)28(y)84(.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -33.873 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.034 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detected.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ 0 g 0 G - 141.967 -226.691 Td [(76)]TJ + 141.968 -226.691 Td [(77)]TJ 0 g 0 G ET endstream endobj -1216 0 obj << +1248 0 obj << /Type /Page -/Contents 1217 0 R -/Resources 1215 0 R +/Contents 1249 0 R +/Resources 1247 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1204 0 R +/Parent 1227 0 R >> endobj -1218 0 obj << -/D [1216 0 R /XYZ 150.705 740.998 null] +1250 0 obj << +/D [1248 0 R /XYZ 99.895 740.998 null] >> endobj -282 0 obj << -/D [1216 0 R /XYZ 150.705 697.37 null] +286 0 obj << +/D [1248 0 R /XYZ 99.895 697.37 null] >> endobj -1215 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R /F10 666 0 R >> +1247 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R /F10 671 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1222 0 obj << -/Length 6540 +1254 0 obj << +/Length 6547 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(glob)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(glob)]TJ ET q -1 0 0 1 150.451 706.328 cm +1 0 0 1 201.26 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 154.486 706.129 Td [(to)]TJ +/F16 11.9552 Tf 205.295 706.129 Td [(to)]TJ ET q -1 0 0 1 167.248 706.328 cm +1 0 0 1 218.057 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 171.283 706.129 Td [(lo)-31(c)-375(|)-375(Global)-375(to)-375(lo)-31(cal)-375(indices)-375(con)31(v)31(ertion)]TJ +/F16 11.9552 Tf 222.092 706.129 Td [(lo)-31(c)-375(|)-375(Global)-375(to)-375(lo)-31(cal)-375(indices)-375(con)31(v)31(ertion)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -71.388 -18.389 Td [(call)-525(psb_glob_to_loc\050x,)-525(y,)-525(desc_a,)-525(info,)-525(iact,owned\051)]TJ 0 -11.956 Td [(call)-525(psb_glob_to_loc\050x,)-525(desc_a,)-525(info,)-525(iact,owned\051)]TJ +/F30 9.9626 Tf -71.387 -18.389 Td [(call)-525(psb_glob_to_loc\050x,)-525(y,)-525(desc_a,)-525(info,)-525(iact,owned\051)]TJ 0 -11.956 Td [(call)-525(psb_glob_to_loc\050x,)-525(desc_a,)-525(info,)-525(iact,owned\051)]TJ 0 g 0 G /F27 9.9626 Tf 0 -21.201 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -13493,160 +14064,160 @@ BT 0 g 0 G 0 -19.639 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(An)-333(in)28(te)-1(ger)-333(v)28(ector)-333(of)-334(indices)-333(to)-333(b)-28(e)-334(con)28(v)28(erted.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in,)-383(inout)]TJ/F8 9.9626 Tf 42.645 0 Td [(.)]TJ -76.131 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-333(in)27(teger)-333(arra)28(y)83(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(An)-333(in)28(tege)-1(r)-333(v)28(ector)-333(of)-334(indices)-333(to)-333(b)-28(e)-334(con)28(v)28(erted.)]TJ 13.878 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in,)-383(inout)]TJ/F8 9.9626 Tf 42.645 0 Td [(.)]TJ -76.131 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-334(i)1(n)27(teger)-333(arra)28(y)83(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -31.594 Td [(desc)]TJ +/F27 9.9626 Tf -24.906 -31.594 Td [(desc)]TJ ET q -1 0 0 1 121.81 536.09 cm +1 0 0 1 172.619 536.09 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 535.891 Td [(a)]TJ +/F27 9.9626 Tf 176.057 535.891 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 488.27 cm +1 0 0 1 362.845 488.27 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 488.07 Td [(desc)]TJ +/F30 9.9626 Tf 365.983 488.07 Td [(desc)]TJ ET q -1 0 0 1 336.723 488.27 cm +1 0 0 1 387.532 488.27 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 339.861 488.07 Td [(type)]TJ +/F30 9.9626 Tf 390.67 488.07 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -19.638 Td [(iact)]TJ 0 g 0 G -/F8 9.9626 Tf 23.281 0 Td [(sp)-28(eci\014es)-333(action)-334(to)-333(b)-28(e)-333(tak)28(en)-334(in)-333(case)-333(of)-334(range)-333(errors.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 257.147 0 Td [(global)]TJ/F8 9.9626 Tf -255.521 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-256(c)28(haracter)-255(v)56(ariable)]TJ/F30 9.9626 Tf 143.584 0 Td [(I)]TJ/F8 9.9626 Tf 5.23 0 Td [(gnore,)]TJ/F30 9.9626 Tf 29.293 0 Td [(W)]TJ/F8 9.9626 Tf 5.23 0 Td [(arning)-255(or)]TJ/F30 9.9626 Tf 41.67 0 Td [(A)]TJ/F8 9.9626 Tf 5.231 0 Td [(b)-28(ort,)-270(default)]TJ/F30 9.9626 Tf 56.741 0 Td [(I)]TJ/F8 9.9626 Tf 5.231 0 Td [(gnore.)]TJ +/F8 9.9626 Tf 23.28 0 Td [(sp)-28(eci\014es)-333(action)-334(to)-333(b)-28(e)-333(tak)28(en)-334(in)-333(case)-333(of)-334(range)-333(errors.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 257.148 0 Td [(global)]TJ/F8 9.9626 Tf -255.522 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-256(c)28(haracter)-255(v)56(ariable)]TJ/F30 9.9626 Tf 143.584 0 Td [(I)]TJ/F8 9.9626 Tf 5.231 0 Td [(gnore,)]TJ/F30 9.9626 Tf 29.293 0 Td [(W)]TJ/F8 9.9626 Tf 5.23 0 Td [(arning)-255(or)]TJ/F30 9.9626 Tf 41.67 0 Td [(A)]TJ/F8 9.9626 Tf 5.23 0 Td [(b)-28(ort,)-271(d)1(e)-1(f)1(ault)]TJ/F30 9.9626 Tf 56.742 0 Td [(I)]TJ/F8 9.9626 Tf 5.23 0 Td [(gnore.)]TJ 0 g 0 G -/F27 9.9626 Tf -317.117 -19.639 Td [(o)32(wned)]TJ +/F27 9.9626 Tf -317.116 -19.639 Td [(o)32(wned)]TJ 0 g 0 G -/F8 9.9626 Tf 36.647 0 Td [(Sp)-28(ec\014es)-333(v)55(alid)-333(range)-333(of)-334(i)1(nput)-334(Scop)-27(e:)]TJ/F27 9.9626 Tf 158.933 0 Td [(global)]TJ/F8 9.9626 Tf -170.673 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(If)-294(true,)-302(then)-294(only)-295(indices)-294(strictly)-294(o)28(wned)-295(b)28(y)-294(the)-294(curren)28(t)-295(pro)-27(ces)-1(s)-294(are)-294(consid-)]TJ 0 -11.955 Td [(ered)-333(v)55(alid,)-333(if)-333(false)-334(then)-333(halo)-333(indices)-334(are)-333(also)-333(accepted.)-445(Default:)-444(false.)]TJ +/F8 9.9626 Tf 36.647 0 Td [(Sp)-28(ec\014es)-333(v)55(alid)-333(range)-333(of)-333(input)-334(Scop)-27(e:)]TJ/F27 9.9626 Tf 158.932 0 Td [(global)]TJ/F8 9.9626 Tf -170.673 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(If)-294(true,)-302(then)-294(only)-295(indices)-294(strictly)-294(o)28(wned)-295(b)28(y)-294(the)-294(curren)28(t)-295(pro)-27(ce)-1(ss)-294(are)-294(consid-)]TJ 0 -11.955 Td [(ered)-333(v)55(alid,)-333(if)-333(false)-334(then)-333(halo)-333(indices)-334(are)-333(also)-333(accepted.)-445(Default:)-444(false.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -21.202 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -24.906 -21.202 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.639 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(If)]TJ/F11 9.9626 Tf 10.133 0 Td [(y)]TJ/F8 9.9626 Tf 8.733 0 Td [(is)-350(not)-351(presen)28(t,)-355(then)]TJ/F11 9.9626 Tf 88.586 0 Td [(x)]TJ/F8 9.9626 Tf 9.185 0 Td [(is)-350(o)27(v)28(erwritten)-350(with)-351(th)1(e)-351(translated)-350(in)28(teger)-351(indices.)]TJ -102.758 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-333(in)27(teger)-333(arra)28(y)83(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(If)]TJ/F11 9.9626 Tf 10.132 0 Td [(y)]TJ/F8 9.9626 Tf 8.733 0 Td [(is)-350(not)-351(presen)28(t,)-355(then)]TJ/F11 9.9626 Tf 88.587 0 Td [(x)]TJ/F8 9.9626 Tf 9.185 0 Td [(is)-350(o)27(v)28(erwritten)-350(with)-350(the)-351(translated)-350(in)28(teger)-351(indices.)]TJ -102.759 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-334(i)1(n)27(teger)-333(arra)28(y)83(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.639 Td [(y)]TJ +/F27 9.9626 Tf -24.906 -19.639 Td [(y)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(If)]TJ/F11 9.9626 Tf 10.04 0 Td [(y)]TJ/F8 9.9626 Tf 8.64 0 Td [(is)-341(presen)28(t,)-343(then)]TJ/F11 9.9626 Tf 70.405 0 Td [(y)]TJ/F8 9.9626 Tf 8.64 0 Td [(is)-341(o)28(v)27(erwri)1(tte)-1(n)-341(with)-341(the)-341(translated)-341(in)28(teger)-341(indices,)-343(and)]TJ/F11 9.9626 Tf -83.846 -11.955 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(left)-334(unc)28(hanged.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 113.242 0 Td [(global)]TJ/F8 9.9626 Tf -122.257 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-333(in)27(teger)-333(arra)28(y)83(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(If)]TJ/F11 9.9626 Tf 10.04 0 Td [(y)]TJ/F8 9.9626 Tf 8.64 0 Td [(is)-341(presen)28(t,)-343(then)]TJ/F11 9.9626 Tf 70.404 0 Td [(y)]TJ/F8 9.9626 Tf 8.64 0 Td [(is)-341(o)28(v)27(erwritten)-341(with)-341(the)-341(translated)-341(in)28(teger)-341(indices,)-343(and)]TJ/F11 9.9626 Tf -83.846 -11.955 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(left)-334(unc)28(hanged.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 113.242 0 Td [(global)]TJ/F8 9.9626 Tf -122.257 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-334(i)1(n)27(teger)-333(arra)28(y)83(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.638 Td [(info)]TJ +/F27 9.9626 Tf -24.906 -19.638 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -21.202 Td [(Notes)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(te)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(t)1(e)-1(d.)]TJ/F16 11.9552 Tf -24.906 -21.202 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 166.875 -29.887 Td [(77)]TJ +/F8 9.9626 Tf 166.874 -29.887 Td [(78)]TJ 0 g 0 G ET endstream endobj -1221 0 obj << +1253 0 obj << /Type /Page -/Contents 1222 0 R -/Resources 1220 0 R +/Contents 1254 0 R +/Resources 1252 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1204 0 R -/Annots [ 1219 0 R ] +/Parent 1227 0 R +/Annots [ 1251 0 R ] >> endobj -1219 0 obj << +1251 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 484.86 361.779 495.985] +/Rect [345.53 484.86 412.588 495.985] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1223 0 obj << -/D [1221 0 R /XYZ 99.895 740.998 null] +1255 0 obj << +/D [1253 0 R /XYZ 150.705 740.998 null] >> endobj -286 0 obj << -/D [1221 0 R /XYZ 99.895 697.37 null] +290 0 obj << +/D [1253 0 R /XYZ 150.705 697.37 null] >> endobj -1220 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1252 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1226 0 obj << -/Length 705 +1258 0 obj << +/Length 692 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F8 9.9626 Tf 162.881 706.129 Td [(1.)]TJ +/F8 9.9626 Tf 112.072 706.129 Td [(1.)]TJ 0 g 0 G - [-500(If)-352(an)-353(input)-352(index)-352(is)-353(out)-352(of)-353(r)1(ange)-1(,)-357(then)-352(the)-352(corres)-1(p)-27(onding)-353(ou)1(tput)-353(index)-352(is)]TJ 12.73 -11.955 Td [(set)-333(to)-334(a)-333(negativ)28(e)-334(n)28(um)28(b)-28(er;)]TJ + [-500(If)-352(an)-353(input)-352(index)-352(is)-353(out)-352(of)-352(range,)-358(then)-352(the)-352(corresp)-28(onding)-352(output)-353(index)-352(is)]TJ 12.73 -11.955 Td [(set)-333(to)-334(a)-333(negativ)28(e)-334(n)28(um)28(b)-28(er;)]TJ 0 g 0 G -12.73 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(The)-476(default)]TJ/F30 9.9626 Tf 69.543 0 Td [(I)]TJ/F8 9.9626 Tf 5.23 0 Td [(gnore)-476(means)-477(that)-476(the)-476(negativ)28(e)-477(out)1(put)-477(is)-476(the)-476(only)-476(action)]TJ -62.043 -11.955 Td [(tak)28(en)-334(on)-333(an)-333(out-of-range)-333(input.)]TJ + [-500(The)-476(default)]TJ/F30 9.9626 Tf 69.542 0 Td [(I)]TJ/F8 9.9626 Tf 5.231 0 Td [(gnore)-476(means)-477(th)1(at)-477(the)-476(negativ)28(e)-476(output)-477(is)-476(the)-476(only)-476(action)]TJ -62.043 -11.955 Td [(tak)28(en)-334(on)-333(an)-333(out-of-range)-333(input.)]TJ 0 g 0 G - 141.968 -571.855 Td [(78)]TJ + 141.968 -571.855 Td [(79)]TJ 0 g 0 G ET endstream endobj -1225 0 obj << +1257 0 obj << /Type /Page -/Contents 1226 0 R -/Resources 1224 0 R +/Contents 1258 0 R +/Resources 1256 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1204 0 R +/Parent 1262 0 R >> endobj -1227 0 obj << -/D [1225 0 R /XYZ 150.705 740.998 null] +1259 0 obj << +/D [1257 0 R /XYZ 99.895 740.998 null] >> endobj -1228 0 obj << -/D [1225 0 R /XYZ 150.705 716.092 null] +1260 0 obj << +/D [1257 0 R /XYZ 99.895 716.092 null] >> endobj -1229 0 obj << -/D [1225 0 R /XYZ 150.705 688.251 null] +1261 0 obj << +/D [1257 0 R /XYZ 99.895 688.251 null] >> endobj -1224 0 obj << -/Font << /F8 478 0 R /F30 664 0 R >> +1256 0 obj << +/Font << /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1233 0 obj << -/Length 5721 +1266 0 obj << +/Length 5736 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(lo)-31(c)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(lo)-31(c)]TJ ET q -1 0 0 1 142.605 706.328 cm +1 0 0 1 193.415 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 146.64 706.129 Td [(to)]TJ +/F16 11.9552 Tf 197.45 706.129 Td [(to)]TJ ET q -1 0 0 1 159.402 706.328 cm +1 0 0 1 210.212 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 163.437 706.129 Td [(glob)-375(|)-375(Lo)-31(cal)-375(to)-375(global)-375(indices)-375(con)31(v)31(ersion)]TJ +/F16 11.9552 Tf 214.247 706.129 Td [(glob)-375(|)-375(Lo)-31(cal)-375(to)-375(global)-375(indices)-375(con)31(v)31(ersion)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -63.542 -18.389 Td [(call)-525(psb_loc_to_glob\050x,)-525(y,)-525(desc_a,)-525(info,)-525(iact\051)]TJ 0 -11.956 Td [(call)-525(psb_loc_to_glob\050x,)-525(desc_a,)-525(info,)-525(iact\051)]TJ @@ -13660,108 +14231,108 @@ BT 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(An)-333(in)28(te)-1(ger)-333(v)28(ector)-333(of)-334(indices)-333(to)-333(b)-28(e)-334(con)28(v)28(erted.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in,)-383(inout)]TJ/F8 9.9626 Tf 42.645 0 Td [(.)]TJ -76.131 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-333(in)27(teger)-333(arra)28(y)83(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(An)-333(in)28(tege)-1(r)-333(v)28(ector)-333(of)-334(indices)-333(to)-333(b)-28(e)-334(con)28(v)28(erted.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in,)-383(inout)]TJ/F8 9.9626 Tf 42.646 0 Td [(.)]TJ -76.131 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(rank)-333(one)-333(in)27(teger)-333(arra)28(y)83(.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ ET q -1 0 0 1 121.81 534.514 cm +1 0 0 1 172.619 534.514 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 534.315 Td [(a)]TJ +/F27 9.9626 Tf 176.057 534.315 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 486.693 cm +1 0 0 1 362.845 486.693 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 486.494 Td [(desc)]TJ +/F30 9.9626 Tf 365.983 486.494 Td [(desc)]TJ ET q -1 0 0 1 336.723 486.693 cm +1 0 0 1 387.532 486.693 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 339.861 486.494 Td [(type)]TJ +/F30 9.9626 Tf 390.67 486.494 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -19.925 Td [(iact)]TJ 0 g 0 G -/F8 9.9626 Tf 23.281 0 Td [(sp)-28(eci\014es)-333(action)-334(to)-333(b)-28(e)-333(tak)28(en)-334(in)-333(case)-333(of)-334(range)-333(errors.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 257.147 0 Td [(global)]TJ/F8 9.9626 Tf -255.521 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-256(c)28(haracter)-255(v)56(ariable)]TJ/F30 9.9626 Tf 143.584 0 Td [(I)]TJ/F8 9.9626 Tf 5.23 0 Td [(gnore,)]TJ/F30 9.9626 Tf 29.293 0 Td [(W)]TJ/F8 9.9626 Tf 5.23 0 Td [(arning)-255(or)]TJ/F30 9.9626 Tf 41.67 0 Td [(A)]TJ/F8 9.9626 Tf 5.231 0 Td [(b)-28(ort,)-270(default)]TJ/F30 9.9626 Tf 56.741 0 Td [(I)]TJ/F8 9.9626 Tf 5.231 0 Td [(gnore.)]TJ +/F8 9.9626 Tf 23.28 0 Td [(sp)-28(eci\014es)-333(action)-334(to)-333(b)-28(e)-333(tak)28(en)-334(in)-333(case)-333(of)-334(range)-333(errors.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 257.148 0 Td [(global)]TJ/F8 9.9626 Tf -255.522 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-256(c)28(haracter)-255(v)56(ariable)]TJ/F30 9.9626 Tf 143.584 0 Td [(I)]TJ/F8 9.9626 Tf 5.231 0 Td [(gnore,)]TJ/F30 9.9626 Tf 29.293 0 Td [(W)]TJ/F8 9.9626 Tf 5.23 0 Td [(arning)-255(or)]TJ/F30 9.9626 Tf 41.67 0 Td [(A)]TJ/F8 9.9626 Tf 5.23 0 Td [(b)-28(ort,)-271(d)1(e)-1(f)1(ault)]TJ/F30 9.9626 Tf 56.742 0 Td [(I)]TJ/F8 9.9626 Tf 5.23 0 Td [(gnore.)]TJ 0 g 0 G -/F27 9.9626 Tf -317.117 -21.917 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -317.116 -21.917 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(If)]TJ/F11 9.9626 Tf 10.133 0 Td [(y)]TJ/F8 9.9626 Tf 8.733 0 Td [(is)-350(not)-351(presen)28(t,)-355(then)]TJ/F11 9.9626 Tf 88.586 0 Td [(x)]TJ/F8 9.9626 Tf 9.185 0 Td [(is)-350(o)27(v)28(erwritten)-350(with)-351(th)1(e)-351(translated)-350(in)28(teger)-351(indices.)]TJ -102.758 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-333(in)27(teger)-333(arra)28(y)83(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(If)]TJ/F11 9.9626 Tf 10.132 0 Td [(y)]TJ/F8 9.9626 Tf 8.733 0 Td [(is)-350(not)-351(presen)28(t,)-355(then)]TJ/F11 9.9626 Tf 88.587 0 Td [(x)]TJ/F8 9.9626 Tf 9.185 0 Td [(is)-350(o)27(v)28(erwritten)-350(with)-350(the)-351(translated)-350(in)28(teger)-351(indices.)]TJ -102.759 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-334(i)1(n)27(teger)-333(arra)28(y)83(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.926 Td [(y)]TJ +/F27 9.9626 Tf -24.906 -19.926 Td [(y)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(If)]TJ/F11 9.9626 Tf 10.167 0 Td [(y)]TJ/F8 9.9626 Tf 8.767 0 Td [(is)-354(not)-354(presen)28(t,)-359(then)]TJ/F11 9.9626 Tf 88.732 0 Td [(y)]TJ/F8 9.9626 Tf 8.766 0 Td [(is)-354(o)28(v)28(erwritten)-354(with)-354(the)-354(translated)-353(in)27(teger)-353(indices,)]TJ -102.553 -11.955 Td [(and)]TJ/F11 9.9626 Tf 19.372 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(left)-334(unc)28(hanged.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 113.242 0 Td [(global)]TJ/F8 9.9626 Tf -141.629 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-333(in)27(teger)-333(arra)28(y)83(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(If)]TJ/F11 9.9626 Tf 10.166 0 Td [(y)]TJ/F8 9.9626 Tf 8.767 0 Td [(is)-354(not)-354(presen)28(t,)-359(then)]TJ/F11 9.9626 Tf 88.732 0 Td [(y)]TJ/F8 9.9626 Tf 8.767 0 Td [(is)-354(o)28(v)28(erwritten)-354(with)-354(the)-354(translated)-353(in)27(teger)-353(indices,)]TJ -102.554 -11.955 Td [(and)]TJ/F11 9.9626 Tf 19.372 0 Td [(x)]TJ/F8 9.9626 Tf 9.015 0 Td [(is)-333(left)-334(unc)28(hanged.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 113.242 0 Td [(global)]TJ/F8 9.9626 Tf -141.629 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-334(i)1(n)27(teger)-333(arra)28(y)83(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.926 Td [(info)]TJ +/F27 9.9626 Tf -24.906 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(te)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(t)1(e)-1(d.)]TJ 0 g 0 G - 141.968 -115.11 Td [(79)]TJ + 141.968 -115.11 Td [(80)]TJ 0 g 0 G ET endstream endobj -1232 0 obj << +1265 0 obj << /Type /Page -/Contents 1233 0 R -/Resources 1231 0 R +/Contents 1266 0 R +/Resources 1264 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1235 0 R -/Annots [ 1230 0 R ] +/Parent 1262 0 R +/Annots [ 1263 0 R ] >> endobj -1230 0 obj << +1263 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 483.284 361.779 494.409] +/Rect [345.53 483.284 412.588 494.409] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1234 0 obj << -/D [1232 0 R /XYZ 99.895 740.998 null] +1267 0 obj << +/D [1265 0 R /XYZ 150.705 740.998 null] >> endobj -290 0 obj << -/D [1232 0 R /XYZ 99.895 697.37 null] +294 0 obj << +/D [1265 0 R /XYZ 150.705 697.37 null] >> endobj -1231 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1264 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1239 0 obj << -/Length 3272 +1271 0 obj << +/Length 3264 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(is)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(is)]TJ ET q -1 0 0 1 185.644 706.328 cm +1 0 0 1 134.834 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 189.679 706.129 Td [(o)31(wned)]TJ +/F16 11.9552 Tf 138.869 706.129 Td [(o)31(wned)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -38.974 -18.389 Td [(call)-525(psb_is_owned\050x,)-525(desc_a\051)]TJ @@ -13775,106 +14346,106 @@ BT 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(In)28(teger)-334(ind)1(e)-1(x.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(scalar)-333(in)28(teger.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(In)28(teger)-334(index.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(scalar)-333(in)28(teger.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ ET q -1 0 0 1 172.619 546.469 cm +1 0 0 1 121.81 546.469 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 546.27 Td [(a)]TJ +/F27 9.9626 Tf 125.247 546.27 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 498.649 cm +1 0 0 1 312.036 498.649 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 498.449 Td [(desc)]TJ +/F30 9.9626 Tf 315.174 498.449 Td [(desc)]TJ ET q -1 0 0 1 387.532 498.649 cm +1 0 0 1 336.723 498.649 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 390.67 498.449 Td [(type)]TJ +/F30 9.9626 Tf 339.861 498.449 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -21.917 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 78.386 0 Td [(A)-302(logical)-301(mask)-302(whic)28(h)-302(is)-302(tru)1(e)-302(if)]TJ/F11 9.9626 Tf 134.085 0 Td [(x)]TJ/F8 9.9626 Tf 8.7 0 Td [(is)-302(o)28(wned)-302(b)28(y)-301(the)-302(curren)28(t)-302(pro-)]TJ -196.265 -11.955 Td [(cess)-334(Scop)-27(e:)]TJ/F27 9.9626 Tf 52.415 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -52.415 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ/F16 11.9552 Tf -74.941 -33.873 Td [(Notes)]TJ +/F8 9.9626 Tf 78.387 0 Td [(A)-302(logical)-301(mask)-302(whic)28(h)-302(is)-302(t)1(rue)-302(if)]TJ/F11 9.9626 Tf 134.085 0 Td [(x)]TJ/F8 9.9626 Tf 8.699 0 Td [(is)-302(o)28(wned)-302(b)28(y)-301(the)-302(curren)28(t)-302(pro-)]TJ -196.264 -11.955 Td [(cess)-334(S)1(c)-1(op)-27(e:)]TJ/F27 9.9626 Tf 52.415 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -52.415 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ/F16 11.9552 Tf -74.942 -33.873 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.176 -19.926 Td [(1.)]TJ +/F8 9.9626 Tf 12.177 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(This)-300(routine)-300(r)1(e)-1(tu)1(rns)-300(a)]TJ/F30 9.9626 Tf 111.214 0 Td [(.true.)]TJ/F8 9.9626 Tf 34.368 0 Td [(v)56(alue)-300(for)-300(an)-300(index)-299(that)-300(is)-300(strictly)-300(o)28(wned)-300(b)28(y)]TJ -132.852 -11.955 Td [(the)-333(curren)27(t)-333(pro)-28(cess,)-333(excluding)-333(the)-334(halo)-333(indices)]TJ + [-500(This)-300(routine)-299(returns)-300(a)]TJ/F30 9.9626 Tf 111.213 0 Td [(.true.)]TJ/F8 9.9626 Tf 34.369 0 Td [(v)56(alue)-300(for)-300(an)-300(index)-299(that)-300(is)-300(strictly)-300(o)28(wned)-300(b)28(y)]TJ -132.852 -11.955 Td [(the)-333(curren)28(t)-334(pro)-28(cess,)-333(excluding)-333(the)-334(halo)-333(indices)]TJ 0 g 0 G - 141.968 -264.549 Td [(80)]TJ + 141.968 -264.549 Td [(81)]TJ 0 g 0 G ET endstream endobj -1238 0 obj << +1270 0 obj << /Type /Page -/Contents 1239 0 R -/Resources 1237 0 R +/Contents 1271 0 R +/Resources 1269 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1235 0 R -/Annots [ 1236 0 R ] +/Parent 1262 0 R +/Annots [ 1268 0 R ] >> endobj -1236 0 obj << +1268 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 495.239 412.588 506.364] +/Rect [294.721 495.239 361.779 506.364] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1240 0 obj << -/D [1238 0 R /XYZ 150.705 740.998 null] +1272 0 obj << +/D [1270 0 R /XYZ 99.895 740.998 null] >> endobj -294 0 obj << -/D [1238 0 R /XYZ 150.705 697.37 null] +298 0 obj << +/D [1270 0 R /XYZ 99.895 697.37 null] >> endobj -1241 0 obj << -/D [1238 0 R /XYZ 150.705 382.883 null] +1273 0 obj << +/D [1270 0 R /XYZ 99.895 382.883 null] >> endobj -1237 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1269 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1245 0 obj << -/Length 4972 +1277 0 obj << +/Length 4976 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(o)31(wned)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(o)31(wned)]TJ ET q -1 0 0 1 162.939 706.328 cm +1 0 0 1 213.748 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 166.974 706.129 Td [(index)]TJ +/F16 11.9552 Tf 217.783 706.129 Td [(index)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -67.079 -18.389 Td [(call)-525(psb_owned_index\050y,)-525(x,)-525(desc_a,)-525(info\051)]TJ +/F30 9.9626 Tf -67.078 -18.389 Td [(call)-525(psb_owned_index\050y,)-525(x,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G /F27 9.9626 Tf 0 -21.918 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -13885,111 +14456,111 @@ BT 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(In)28(teger)-334(indices.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in,)-383(inout)]TJ/F8 9.9626 Tf 42.645 0 Td [(.)]TJ -76.131 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(scalar)-333(or)-334(a)-333(rank)-333(one)-333(in)27(teger)-333(arra)28(y)83(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(In)28(teger)-334(ind)1(ice)-1(s.)]TJ 13.878 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in,)-383(inout)]TJ/F8 9.9626 Tf 42.645 0 Td [(.)]TJ -76.131 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(scalar)-333(or)-334(a)-333(rank)-333(one)-334(in)28(teger)-333(arra)28(y)83(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ +/F27 9.9626 Tf -24.906 -31.88 Td [(desc)]TJ ET q -1 0 0 1 121.81 546.469 cm +1 0 0 1 172.619 546.469 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 546.27 Td [(a)]TJ +/F27 9.9626 Tf 176.057 546.27 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 498.649 cm +1 0 0 1 362.845 498.649 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 498.449 Td [(desc)]TJ +/F30 9.9626 Tf 365.983 498.449 Td [(desc)]TJ ET q -1 0 0 1 336.723 498.649 cm +1 0 0 1 387.532 498.649 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 339.861 498.449 Td [(type)]TJ +/F30 9.9626 Tf 390.67 498.449 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -19.925 Td [(iact)]TJ 0 g 0 G -/F8 9.9626 Tf 23.281 0 Td [(sp)-28(eci\014es)-333(action)-334(to)-333(b)-28(e)-333(tak)28(en)-334(in)-333(case)-333(of)-334(range)-333(errors.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 257.147 0 Td [(global)]TJ/F8 9.9626 Tf -255.521 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-256(c)28(haracter)-255(v)56(ariable)]TJ/F30 9.9626 Tf 143.584 0 Td [(I)]TJ/F8 9.9626 Tf 5.23 0 Td [(gnore,)]TJ/F30 9.9626 Tf 29.293 0 Td [(W)]TJ/F8 9.9626 Tf 5.23 0 Td [(arning)-255(or)]TJ/F30 9.9626 Tf 41.67 0 Td [(A)]TJ/F8 9.9626 Tf 5.231 0 Td [(b)-28(ort,)-270(default)]TJ/F30 9.9626 Tf 56.741 0 Td [(I)]TJ/F8 9.9626 Tf 5.231 0 Td [(gnore.)]TJ +/F8 9.9626 Tf 23.28 0 Td [(sp)-28(eci\014es)-333(action)-334(to)-333(b)-28(e)-333(tak)28(en)-334(in)-333(case)-333(of)-334(range)-333(errors.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 257.148 0 Td [(global)]TJ/F8 9.9626 Tf -255.522 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-256(c)28(haracter)-255(v)56(ariable)]TJ/F30 9.9626 Tf 143.584 0 Td [(I)]TJ/F8 9.9626 Tf 5.231 0 Td [(gnore,)]TJ/F30 9.9626 Tf 29.293 0 Td [(W)]TJ/F8 9.9626 Tf 5.23 0 Td [(arning)-255(or)]TJ/F30 9.9626 Tf 41.67 0 Td [(A)]TJ/F8 9.9626 Tf 5.23 0 Td [(b)-28(ort,)-271(d)1(e)-1(f)1(ault)]TJ/F30 9.9626 Tf 56.742 0 Td [(I)]TJ/F8 9.9626 Tf 5.23 0 Td [(gnore.)]TJ 0 g 0 G -/F27 9.9626 Tf -317.117 -21.918 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -317.116 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(y)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(A)-294(logical)-294(mask)-294(whic)28(h)-294(is)-294(true)-294(for)-294(all)-294(corresp)-28(onding)-294(en)28(tries)-294(of)]TJ/F11 9.9626 Tf 259.229 0 Td [(x)]TJ/F8 9.9626 Tf 8.623 0 Td [(that)-294(are)-294(o)28(wned)]TJ -253.973 -11.955 Td [(b)28(y)-333(the)-334(curren)28(t)-333(pro)-28(cess)-334(Scop)-27(e:)]TJ/F27 9.9626 Tf 132.752 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -132.752 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(scalar)-333(or)-334(ran)1(k)-334(one)-333(logical)-333(arra)27(y)84(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(A)-294(logical)-294(mask)-294(whic)28(h)-294(is)-294(true)-294(for)-294(all)-294(corresp)-28(onding)-294(en)28(tries)-294(of)]TJ/F11 9.9626 Tf 259.229 0 Td [(x)]TJ/F8 9.9626 Tf 8.623 0 Td [(that)-294(are)-294(o)28(wned)]TJ -253.974 -11.955 Td [(b)28(y)-334(the)-333(curren)28(t)-333(pro)-28(cess)-334(Scop)-27(e:)]TJ/F27 9.9626 Tf 132.753 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -132.752 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(scalar)-333(or)-334(r)1(ank)-334(one)-333(logical)-333(arra)27(y)84(.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.034 -11.955 Td [(An)-333(in)28(teger)-334(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detected.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ +/F8 9.9626 Tf 12.176 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-475(routine)-474(returns)-475(a)]TJ/F30 9.9626 Tf 118.186 0 Td [(.true.)]TJ/F8 9.9626 Tf 36.111 0 Td [(v)56(alue)-475(for)-475(those)-475(indices)-474(that)-475(are)-475(strictly)]TJ -141.567 -11.955 Td [(o)28(wned)-334(b)28(y)-333(the)-333(curren)27(t)-333(pro)-28(cess,)-333(excluding)-333(the)-334(halo)-333(indices)]TJ + [-500(This)-475(routine)-474(returns)-475(a)]TJ/F30 9.9626 Tf 118.186 0 Td [(.true.)]TJ/F8 9.9626 Tf 36.112 0 Td [(v)56(alue)-475(for)-475(those)-475(indices)-474(that)-475(are)-475(strictly)]TJ -141.567 -11.955 Td [(o)28(wned)-334(b)28(y)-333(the)-333(curren)27(t)-333(pro)-28(cess,)-333(excluding)-333(the)-334(halo)-333(indices)]TJ 0 g 0 G - 141.968 -141.013 Td [(81)]TJ + 141.967 -141.013 Td [(82)]TJ 0 g 0 G ET endstream endobj -1244 0 obj << +1276 0 obj << /Type /Page -/Contents 1245 0 R -/Resources 1243 0 R +/Contents 1277 0 R +/Resources 1275 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1235 0 R -/Annots [ 1242 0 R ] +/Parent 1262 0 R +/Annots [ 1274 0 R ] >> endobj -1242 0 obj << +1274 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 495.239 361.779 506.364] +/Rect [345.53 495.239 412.588 506.364] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1246 0 obj << -/D [1244 0 R /XYZ 99.895 740.998 null] +1278 0 obj << +/D [1276 0 R /XYZ 150.705 740.998 null] >> endobj -298 0 obj << -/D [1244 0 R /XYZ 99.895 697.37 null] +302 0 obj << +/D [1276 0 R /XYZ 150.705 697.37 null] >> endobj -1247 0 obj << -/D [1244 0 R /XYZ 99.895 259.346 null] +1279 0 obj << +/D [1276 0 R /XYZ 150.705 259.346 null] >> endobj -1243 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1275 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1251 0 obj << -/Length 3240 +1283 0 obj << +/Length 3233 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(is)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(is)]TJ ET q -1 0 0 1 185.644 706.328 cm +1 0 0 1 134.834 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 189.679 706.129 Td [(lo)-31(cal)]TJ +/F16 11.9552 Tf 138.869 706.129 Td [(lo)-31(cal)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -38.974 -18.389 Td [(call)-525(psb_is_local\050x,)-525(desc_a\051)]TJ @@ -14003,103 +14574,103 @@ BT 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(In)28(teger)-334(ind)1(e)-1(x.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(scalar)-333(in)28(teger.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(In)28(teger)-334(index.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(scalar)-333(in)28(teger.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ ET q -1 0 0 1 172.619 546.469 cm +1 0 0 1 121.81 546.469 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 546.27 Td [(a)]TJ +/F27 9.9626 Tf 125.247 546.27 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 498.649 cm +1 0 0 1 312.036 498.649 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 498.449 Td [(desc)]TJ +/F30 9.9626 Tf 315.174 498.449 Td [(desc)]TJ ET q -1 0 0 1 387.532 498.649 cm +1 0 0 1 336.723 498.649 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 390.67 498.449 Td [(type)]TJ +/F30 9.9626 Tf 339.861 498.449 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -21.917 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 78.386 0 Td [(A)-264(logical)-265(mask)-264(whic)27(h)-264(is)-265(true)-264(if)]TJ/F11 9.9626 Tf 131.492 0 Td [(x)]TJ/F8 9.9626 Tf 8.329 0 Td [(is)-265(lo)-27(cal)-265(to)-264(the)-265(curren)28(t)-264(pro)-28(cess)]TJ -193.301 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ/F16 11.9552 Tf -74.941 -33.873 Td [(Notes)]TJ +/F8 9.9626 Tf 78.387 0 Td [(A)-264(logical)-265(mask)-264(whic)27(h)-264(is)-265(true)-264(if)]TJ/F11 9.9626 Tf 131.492 0 Td [(x)]TJ/F8 9.9626 Tf 8.329 0 Td [(is)-264(lo)-28(cal)-265(to)-264(the)-265(curren)28(t)-264(pro)-28(cess)]TJ -193.301 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ/F16 11.9552 Tf -74.942 -33.873 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.176 -19.926 Td [(1.)]TJ +/F8 9.9626 Tf 12.177 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(This)-239(routine)-239(returns)-239(a)]TJ/F30 9.9626 Tf 108.787 0 Td [(.true.)]TJ/F8 9.9626 Tf 33.762 0 Td [(v)56(alue)-239(for)-239(an)-239(index)-239(that)-239(is)-239(lo)-27(cal)-239(to)-239(the)-239(curren)28(t)]TJ -129.819 -11.955 Td [(pro)-28(cess,)-333(including)-333(the)-334(halo)-333(indices)]TJ + [-500(This)-239(routine)-239(returns)-239(a)]TJ/F30 9.9626 Tf 108.787 0 Td [(.true.)]TJ/F8 9.9626 Tf 33.762 0 Td [(v)56(alue)-239(for)-239(an)-239(index)-239(that)-239(is)-238(lo)-28(cal)-239(to)-239(the)-239(curren)28(t)]TJ -129.819 -11.955 Td [(pro)-28(cess,)-333(including)-333(the)-334(halo)-333(indices)]TJ 0 g 0 G - 141.968 -264.549 Td [(82)]TJ + 141.968 -264.549 Td [(83)]TJ 0 g 0 G ET endstream endobj -1250 0 obj << +1282 0 obj << /Type /Page -/Contents 1251 0 R -/Resources 1249 0 R +/Contents 1283 0 R +/Resources 1281 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1235 0 R -/Annots [ 1248 0 R ] +/Parent 1262 0 R +/Annots [ 1280 0 R ] >> endobj -1248 0 obj << +1280 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 495.239 412.588 506.364] +/Rect [294.721 495.239 361.779 506.364] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1252 0 obj << -/D [1250 0 R /XYZ 150.705 740.998 null] +1284 0 obj << +/D [1282 0 R /XYZ 99.895 740.998 null] >> endobj -302 0 obj << -/D [1250 0 R /XYZ 150.705 697.37 null] +306 0 obj << +/D [1282 0 R /XYZ 99.895 697.37 null] >> endobj -1253 0 obj << -/D [1250 0 R /XYZ 150.705 382.883 null] +1285 0 obj << +/D [1282 0 R /XYZ 99.895 382.883 null] >> endobj -1249 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1281 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1257 0 obj << -/Length 4956 +1289 0 obj << +/Length 4985 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(lo)-31(cal)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(lo)-31(cal)]TJ ET q -1 0 0 1 152.879 706.328 cm +1 0 0 1 203.689 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 156.914 706.129 Td [(index)]TJ +/F16 11.9552 Tf 207.724 706.129 Td [(index)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -57.019 -18.389 Td [(call)-525(psb_local_index\050y,)-525(x,)-525(desc_a,)-525(info\051)]TJ @@ -14113,114 +14684,114 @@ BT 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(In)28(teger)-334(indices.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in,)-383(inout)]TJ/F8 9.9626 Tf 42.645 0 Td [(.)]TJ -76.131 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(scalar)-333(or)-334(a)-333(rank)-333(one)-333(in)27(teger)-333(arra)28(y)83(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(In)28(teger)-334(ind)1(ic)-1(es.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in,)-383(inout)]TJ/F8 9.9626 Tf 42.646 0 Td [(.)]TJ -76.131 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(scalar)-333(or)-334(a)-333(rank)-333(one)-333(in)27(teger)-333(arra)28(y)83(.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ ET q -1 0 0 1 121.81 546.469 cm +1 0 0 1 172.619 546.469 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 546.27 Td [(a)]TJ +/F27 9.9626 Tf 176.057 546.27 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 498.649 cm +1 0 0 1 362.845 498.649 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 498.449 Td [(desc)]TJ +/F30 9.9626 Tf 365.983 498.449 Td [(desc)]TJ ET q -1 0 0 1 336.723 498.649 cm +1 0 0 1 387.532 498.649 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 339.861 498.449 Td [(type)]TJ +/F30 9.9626 Tf 390.67 498.449 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -19.925 Td [(iact)]TJ 0 g 0 G -/F8 9.9626 Tf 23.281 0 Td [(sp)-28(eci\014es)-333(action)-334(to)-333(b)-28(e)-333(tak)28(en)-334(in)-333(case)-333(of)-334(range)-333(errors.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 257.147 0 Td [(global)]TJ/F8 9.9626 Tf -255.521 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-256(c)28(haracter)-255(v)56(ariable)]TJ/F30 9.9626 Tf 143.584 0 Td [(I)]TJ/F8 9.9626 Tf 5.23 0 Td [(gnore,)]TJ/F30 9.9626 Tf 29.293 0 Td [(W)]TJ/F8 9.9626 Tf 5.23 0 Td [(arning)-255(or)]TJ/F30 9.9626 Tf 41.67 0 Td [(A)]TJ/F8 9.9626 Tf 5.231 0 Td [(b)-28(ort,)-270(default)]TJ/F30 9.9626 Tf 56.741 0 Td [(I)]TJ/F8 9.9626 Tf 5.231 0 Td [(gnore.)]TJ +/F8 9.9626 Tf 23.28 0 Td [(sp)-28(eci\014es)-333(action)-334(to)-333(b)-28(e)-333(tak)28(en)-334(in)-333(case)-333(of)-334(range)-333(errors.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 257.148 0 Td [(global)]TJ/F8 9.9626 Tf -255.522 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-255(as:)-405(a)-256(c)28(haracter)-255(v)56(ariable)]TJ/F30 9.9626 Tf 143.584 0 Td [(I)]TJ/F8 9.9626 Tf 5.231 0 Td [(gnore,)]TJ/F30 9.9626 Tf 29.293 0 Td [(W)]TJ/F8 9.9626 Tf 5.23 0 Td [(arning)-255(or)]TJ/F30 9.9626 Tf 41.67 0 Td [(A)]TJ/F8 9.9626 Tf 5.23 0 Td [(b)-28(ort,)-271(d)1(e)-1(f)1(ault)]TJ/F30 9.9626 Tf 56.742 0 Td [(I)]TJ/F8 9.9626 Tf 5.23 0 Td [(gnore.)]TJ 0 g 0 G -/F27 9.9626 Tf -317.117 -21.918 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -317.116 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(y)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(A)-346(logical)-345(mask)-346(whic)28(h)-346(is)-345(true)-346(for)-345(all)-346(corresp)-28(onding)-345(en)28(tries)-346(of)]TJ/F11 9.9626 Tf 264.883 0 Td [(x)]TJ/F8 9.9626 Tf 9.136 0 Td [(that)-346(are)-345(lo)-28(cal)]TJ -260.14 -11.955 Td [(to)-333(the)-334(curren)28(t)-333(pro)-28(cess)-333(Scop)-28(e:)]TJ/F27 9.9626 Tf 131.092 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -131.092 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(scalar)-333(or)-334(ran)1(k)-334(one)-333(logical)-333(arra)27(y)84(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(A)-346(logical)-345(mask)-346(whic)28(h)-346(is)-345(true)-346(for)-345(all)-346(corresp)-28(ondin)1(g)-346(en)28(tries)-346(of)]TJ/F11 9.9626 Tf 264.882 0 Td [(x)]TJ/F8 9.9626 Tf 9.137 0 Td [(that)-346(ar)1(e)-346(lo)-28(cal)]TJ -260.141 -11.955 Td [(to)-333(the)-334(curren)28(t)-333(pro)-28(cess)-333(Scop)-28(e:)]TJ/F27 9.9626 Tf 131.092 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -131.092 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(scalar)-333(or)-334(rank)-333(one)-333(logical)-334(ar)1(ra)27(y)84(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.926 Td [(info)]TJ +/F27 9.9626 Tf -24.906 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(te)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ/F16 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ +/F8 9.9626 Tf 12.176 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-308(routine)-309(retur)1(ns)-309(a)]TJ/F30 9.9626 Tf 111.554 0 Td [(.true.)]TJ/F8 9.9626 Tf 34.454 0 Td [(v)56(alue)-309(for)-308(those)-308(indices)-309(that)-308(are)-308(lo)-28(cal)-308(to)-309(the)]TJ -133.278 -11.955 Td [(curren)28(t)-333(pro)-28(cess,)-334(including)-333(the)-333(halo)-333(indices.)]TJ + [-500(This)-308(routine)-309(return)1(s)-309(a)]TJ/F30 9.9626 Tf 111.554 0 Td [(.true.)]TJ/F8 9.9626 Tf 34.454 0 Td [(v)56(alue)-309(for)-308(those)-308(indices)-309(that)-308(are)-308(lo)-28(cal)-308(to)-309(the)]TJ -133.278 -11.955 Td [(curren)28(t)-334(p)1(ro)-28(cess,)-334(including)-333(the)-333(halo)-334(i)1(ndices)-1(.)]TJ 0 g 0 G - 141.968 -141.013 Td [(83)]TJ + 141.968 -141.013 Td [(84)]TJ 0 g 0 G ET endstream endobj -1256 0 obj << +1288 0 obj << /Type /Page -/Contents 1257 0 R -/Resources 1255 0 R +/Contents 1289 0 R +/Resources 1287 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1235 0 R -/Annots [ 1254 0 R ] +/Parent 1262 0 R +/Annots [ 1286 0 R ] >> endobj -1254 0 obj << +1286 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 495.239 361.779 506.364] +/Rect [345.53 495.239 412.588 506.364] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1258 0 obj << -/D [1256 0 R /XYZ 99.895 740.998 null] +1290 0 obj << +/D [1288 0 R /XYZ 150.705 740.998 null] >> endobj -306 0 obj << -/D [1256 0 R /XYZ 99.895 697.37 null] +310 0 obj << +/D [1288 0 R /XYZ 150.705 697.37 null] >> endobj -1259 0 obj << -/D [1256 0 R /XYZ 99.895 259.346 null] +1291 0 obj << +/D [1288 0 R /XYZ 150.705 259.346 null] >> endobj -1255 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1287 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1263 0 obj << -/Length 3804 +1295 0 obj << +/Length 3821 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(get)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(get)]TJ ET q -1 0 0 1 194.695 706.328 cm +1 0 0 1 143.885 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 198.729 706.129 Td [(b)-31(oundary)-375(|)-375(Extract)-375(list)-375(of)-375(b)-32(oundary)-375(elemen)32(ts)]TJ +/F16 11.9552 Tf 147.92 706.129 Td [(b)-31(oundary)-375(|)-375(Extract)-375(list)-375(of)-375(b)-32(oundary)-375(elemen)32(ts)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -48.024 -18.389 Td [(call)-525(psb_get_boundary\050bndel,)-525(desc,)-525(info\051)]TJ +/F30 9.9626 Tf -48.025 -18.389 Td [(call)-525(psb_get_boundary\050bndel,)-525(desc,)-525(info\051)]TJ 0 g 0 G /F27 9.9626 Tf 0 -21.918 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -14231,106 +14802,106 @@ BT 0 g 0 G 0 -19.925 Td [(desc)]TJ 0 g 0 G -/F8 9.9626 Tf 26.208 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -1.302 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 26.209 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -1.302 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 578.35 cm +1 0 0 1 312.036 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 578.15 Td [(desc)]TJ +/F30 9.9626 Tf 315.174 578.15 Td [(desc)]TJ ET q -1 0 0 1 387.532 578.35 cm +1 0 0 1 336.723 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 390.67 578.15 Td [(type)]TJ +/F30 9.9626 Tf 339.861 578.15 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -21.917 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(bndel)]TJ 0 g 0 G -/F8 9.9626 Tf 32.51 0 Td [(The)-268(list)-267(of)-268(b)-27(oundary)-268(elemen)28(ts)-268(on)-267(the)-268(calling)-267(pro)-28(cess,)-281(in)-267(lo)-28(cal)-268(n)28(um)28(b)-28(ering.)]TJ -7.604 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-456(as:)-691(a)-457(rank)-456(one)-457(arra)28(y)-457(with)-456(the)-457(ALLOCA)84(T)83(ABLE)-456(attribute,)-488(of)]TJ 0 -11.955 Td [(t)28(yp)-28(e)-333(in)27(teger.)]TJ +/F8 9.9626 Tf 32.51 0 Td [(The)-268(list)-267(of)-268(b)-27(oundary)-268(elemen)28(ts)-268(on)-267(the)-268(calling)-267(pro)-28(cess,)-281(in)-267(lo)-28(cal)-268(n)28(um)28(b)-28(ering.)]TJ -7.603 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-456(as:)-691(a)-457(rank)-456(one)-457(arra)28(y)-456(with)-457(the)-457(ALLOCA)84(T)83(ABLE)-456(attribute,)-488(of)]TJ 0 -11.955 Td [(t)28(yp)-28(e)-333(in)28(te)-1(ger.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -31.881 Td [(info)]TJ +/F27 9.9626 Tf -24.907 -31.881 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.956 Td [(An)-333(in)28(te)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ/F16 11.9552 Tf -24.906 -21.917 Td [(Notes)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.956 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.176 -19.926 Td [(1.)]TJ +/F8 9.9626 Tf 12.177 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(If)-269(there)-269(are)-269(no)-269(b)-28(oundary)-269(elemen)28(ts)-269(\050i.e.,)-282(if)-269(the)-269(lo)-28(cal)-269(part)-269(of)-269(the)-270(connectivit)28(y)]TJ 12.73 -11.955 Td [(graph)-449(is)-450(self-con)28(tained\051)-450(the)-449(output)-450(v)28(ector)-449(is)-450(set)-449(to)-450(the)-449(\134not)-450(allo)-28(cated")]TJ 0 -11.955 Td [(state.)]TJ + [-500(If)-269(there)-269(are)-269(no)-269(b)-28(oundary)-269(elemen)28(ts)-269(\050i.e.,)-282(if)-269(the)-269(lo)-28(cal)-269(part)-269(of)-269(the)-269(c)-1(onn)1(e)-1(ctivi)1(t)27(y)]TJ 12.73 -11.955 Td [(graph)-449(is)-450(self-con)28(tained\051)-450(the)-449(output)-449(v)27(ector)-449(is)-450(set)-449(to)-450(the)-449(\134not)-450(allo)-27(c)-1(ated")]TJ 0 -11.955 Td [(state.)]TJ 0 g 0 G -12.73 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(Otherwise)-288(the)-289(size)-288(of)]TJ/F30 9.9626 Tf 105.44 0 Td [(bndel)]TJ/F8 9.9626 Tf 29.024 0 Td [(will)-288(b)-28(e)-288(exactly)-288(e)-1(qu)1(al)-289(to)-288(the)-288(n)28(um)27(b)-27(er)-289(of)-288(b)-28(oun)1(d-)]TJ -121.734 -11.956 Td [(ary)-333(elemen)27(ts.)]TJ + [-500(Otherwise)-288(the)-289(size)-288(of)]TJ/F30 9.9626 Tf 105.44 0 Td [(bndel)]TJ/F8 9.9626 Tf 29.023 0 Td [(will)-288(b)-28(e)-288(exactly)-289(equal)-288(to)-288(the)-288(n)28(um)27(b)-27(er)-289(of)-288(b)-28(ound)1(-)]TJ -121.733 -11.956 Td [(ary)-333(elemen)27(ts.)]TJ 0 g 0 G - 141.968 -208.758 Td [(84)]TJ + 141.968 -208.758 Td [(85)]TJ 0 g 0 G ET endstream endobj -1262 0 obj << +1294 0 obj << /Type /Page -/Contents 1263 0 R -/Resources 1261 0 R +/Contents 1295 0 R +/Resources 1293 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1235 0 R -/Annots [ 1260 0 R ] +/Parent 1299 0 R +/Annots [ 1292 0 R ] >> endobj -1260 0 obj << +1292 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 574.94 412.588 586.065] +/Rect [294.721 574.94 361.779 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1264 0 obj << -/D [1262 0 R /XYZ 150.705 740.998 null] +1296 0 obj << +/D [1294 0 R /XYZ 99.895 740.998 null] >> endobj -310 0 obj << -/D [1262 0 R /XYZ 150.705 697.37 null] +314 0 obj << +/D [1294 0 R /XYZ 99.895 697.37 null] >> endobj -1265 0 obj << -/D [1262 0 R /XYZ 150.705 370.928 null] +1297 0 obj << +/D [1294 0 R /XYZ 99.895 370.928 null] >> endobj -1266 0 obj << -/D [1262 0 R /XYZ 150.705 327.092 null] +1298 0 obj << +/D [1294 0 R /XYZ 99.895 327.092 null] >> endobj -1261 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1293 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1270 0 obj << +1303 0 obj << /Length 3654 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(get)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(get)]TJ ET q -1 0 0 1 143.885 706.328 cm +1 0 0 1 194.695 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 147.92 706.129 Td [(o)31(v)31(erlap)-375(|)-375(Extract)-375(list)-375(of)-375(o)32(v)31(erlap)-375(elemen)31(ts)]TJ +/F16 11.9552 Tf 198.729 706.129 Td [(o)31(v)31(erlap)-375(|)-375(Extract)-375(list)-375(of)-375(o)32(v)31(erlap)-375(elemen)31(ts)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -48.025 -18.389 Td [(call)-525(psb_get_overlap\050ovrel,)-525(desc,)-525(info\051)]TJ +/F30 9.9626 Tf -48.024 -18.389 Td [(call)-525(psb_get_overlap\050ovrel,)-525(desc,)-525(info\051)]TJ 0 g 0 G /F27 9.9626 Tf 0 -21.918 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -14341,103 +14912,103 @@ BT 0 g 0 G 0 -19.925 Td [(desc)]TJ 0 g 0 G -/F8 9.9626 Tf 26.209 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -1.302 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 26.208 0 Td [(the)-333(comm)27(unication)-333(descriptor.)]TJ -1.302 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 578.35 cm +1 0 0 1 362.845 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 578.15 Td [(desc)]TJ +/F30 9.9626 Tf 365.983 578.15 Td [(desc)]TJ ET q -1 0 0 1 336.723 578.35 cm +1 0 0 1 387.532 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 339.861 578.15 Td [(type)]TJ +/F30 9.9626 Tf 390.67 578.15 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -21.917 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(o)32(vrel)]TJ 0 g 0 G -/F8 9.9626 Tf 29.591 0 Td [(The)-333(list)-334(of)-333(o)28(v)28(erlap)-334(elemen)28(ts)-333(on)-334(the)-333(calling)-333(pro)-28(cess,)-333(in)-334(lo)-28(cal)-333(n)28(um)28(b)-28(ering.)]TJ -4.684 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-456(as:)-691(a)-457(rank)-456(one)-457(arra)28(y)-456(with)-457(the)-457(ALLOCA)84(T)83(ABLE)-456(attribute,)-488(of)]TJ 0 -11.955 Td [(t)28(yp)-28(e)-333(in)28(te)-1(ger.)]TJ +/F8 9.9626 Tf 29.59 0 Td [(The)-333(list)-334(of)-333(o)28(v)28(erlap)-334(elemen)28(ts)-333(on)-334(the)-333(calling)-333(pro)-28(cess,)-334(in)-333(lo)-28(cal)-333(n)28(um)28(b)-28(ering.)]TJ -4.684 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-456(as:)-691(a)-457(rank)-456(one)-457(arra)28(y)-457(with)-456(the)-457(ALLOCA)84(T)83(ABLE)-456(attribute,)-488(of)]TJ 0 -11.955 Td [(t)28(yp)-28(e)-333(in)27(teger.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -31.881 Td [(info)]TJ +/F27 9.9626 Tf -24.906 -31.881 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.956 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.956 Td [(An)-333(in)28(te)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ/F16 11.9552 Tf -24.906 -21.917 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.177 -19.926 Td [(1.)]TJ +/F8 9.9626 Tf 12.176 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(If)-343(there)-343(are)-344(no)-343(o)28(v)28(erlap)-344(elemen)28(ts)-343(the)-343(output)-344(v)28(ector)-343(is)-343(set)-344(to)-343(the)-343(\134not)-343(allo-)]TJ 12.73 -11.955 Td [(cated")-333(state.)]TJ + [-500(If)-343(there)-344(ar)1(e)-344(no)-343(o)28(v)28(erlap)-344(elemen)28(ts)-343(the)-343(output)-344(v)28(ector)-343(is)-343(set)-344(to)-343(the)-343(\134not)-343(allo-)]TJ 12.73 -11.955 Td [(cated")-333(state.)]TJ 0 g 0 G -12.73 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(Otherwise)-284(the)-284(size)-283(of)]TJ/F30 9.9626 Tf 105.261 0 Td [(ovrel)]TJ/F8 9.9626 Tf 28.979 0 Td [(will)-284(b)-27(e)-284(exactly)-284(equal)-284(to)-284(th)1(e)-284(n)28(um)27(b)-27(er)-284(of)-284(o)28(v)28(erlap)]TJ -121.51 -11.955 Td [(elemen)28(ts.)]TJ + [-500(Otherwise)-284(the)-284(size)-283(of)]TJ/F30 9.9626 Tf 105.262 0 Td [(ovrel)]TJ/F8 9.9626 Tf 28.978 0 Td [(will)-284(b)-27(e)-284(exactly)-284(equal)-284(to)-284(the)-283(n)27(u)1(m)27(b)-27(e)-1(r)-283(of)-284(o)28(v)28(erlap)]TJ -121.51 -11.955 Td [(elemen)28(ts.)]TJ 0 g 0 G - 141.968 -220.714 Td [(85)]TJ + 141.968 -220.714 Td [(86)]TJ 0 g 0 G ET endstream endobj -1269 0 obj << +1302 0 obj << /Type /Page -/Contents 1270 0 R -/Resources 1268 0 R +/Contents 1303 0 R +/Resources 1301 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1274 0 R -/Annots [ 1267 0 R ] +/Parent 1299 0 R +/Annots [ 1300 0 R ] >> endobj -1267 0 obj << +1300 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 574.94 361.779 586.065] +/Rect [345.53 574.94 412.588 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1271 0 obj << -/D [1269 0 R /XYZ 99.895 740.998 null] +1304 0 obj << +/D [1302 0 R /XYZ 150.705 740.998 null] >> endobj -314 0 obj << -/D [1269 0 R /XYZ 99.895 697.37 null] +318 0 obj << +/D [1302 0 R /XYZ 150.705 697.37 null] >> endobj -1272 0 obj << -/D [1269 0 R /XYZ 99.895 370.928 null] +1305 0 obj << +/D [1302 0 R /XYZ 150.705 370.928 null] >> endobj -1273 0 obj << -/D [1269 0 R /XYZ 99.895 339.047 null] +1306 0 obj << +/D [1302 0 R /XYZ 150.705 339.047 null] >> endobj -1268 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1301 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1278 0 obj << -/Length 5790 +1310 0 obj << +/Length 5783 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(sp)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(sp)]TJ ET q -1 0 0 1 189.38 706.328 cm +1 0 0 1 138.57 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 193.415 706.129 Td [(getro)31(w)-375(|)-375(Extract)-375(ro)32(w\050s)-1(\051)-375(from)-375(a)-375(sparse)-375(matrix)]TJ +/F16 11.9552 Tf 142.605 706.129 Td [(getro)31(w)-375(|)-375(Extract)-375(ro)31(w\050s\051)-375(from)-375(a)-375(sparse)-375(matrix)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -42.71 -18.647 Td [(call)-525(psb_sp_getrow\050row,)-525(a,)-525(nz,)-525(ia,)-525(ja,)-525(val,)-525(info,)-525(&)]TJ 73.225 -11.955 Td [(&)-525(append,)-525(nzin,)-525(lrw\051)]TJ @@ -14451,158 +15022,158 @@ BT 0 g 0 G 0 -20.479 Td [(ro)32(w)]TJ 0 g 0 G -/F8 9.9626 Tf 23.384 0 Td [(The)-333(\050\014rst\051)-334(ro)28(w)-333(to)-334(b)-27(e)-334(extracted.)]TJ 1.523 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.95 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.95 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)]TJ/F11 9.9626 Tf 104.69 0 Td [(>)]TJ/F8 9.9626 Tf 10.517 0 Td [(0.)]TJ +/F8 9.9626 Tf 23.385 0 Td [(The)-333(\050\014rst\051)-334(ro)28(w)-333(to)-334(b)-27(e)-334(extracted.)]TJ 1.522 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)]TJ/F11 9.9626 Tf 104.691 0 Td [(>)]TJ/F8 9.9626 Tf 10.516 0 Td [(0.)]TJ 0 g 0 G /F27 9.9626 Tf -140.114 -20.479 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(matrix)-334(from)-333(whic)28(h)-333(to)-334(get)-333(ro)28(ws.)]TJ 14.356 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.95 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.95 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(matrix)-334(from)-333(whic)28(h)-333(to)-334(get)-333(ro)28(ws.)]TJ 14.356 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 496.313 cm +1 0 0 1 312.036 496.313 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 496.114 Td [(Tspmat)]TJ +/F30 9.9626 Tf 315.174 496.114 Td [(Tspmat)]TJ ET q -1 0 0 1 397.993 496.313 cm +1 0 0 1 347.183 496.313 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 401.131 496.114 Td [(type)]TJ +/F30 9.9626 Tf 350.322 496.114 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -271.347 -20.479 Td [(app)-32(end)]TJ +/F27 9.9626 Tf -271.348 -20.479 Td [(app)-32(end)]TJ 0 g 0 G -/F8 9.9626 Tf 41.58 0 Td [(Whether)-333(to)-334(app)-27(end)-334(or)-333(o)28(v)28(erwrite)-334(existing)-333(output.)]TJ -16.674 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(optional)]TJ/F8 9.9626 Tf -25.184 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(logical)-333(v)55(alue)-333(default:)-444(false)-334(\050o)28(v)28(erwrite\051.)]TJ +/F8 9.9626 Tf 41.58 0 Td [(Whether)-333(to)-334(app)-27(end)-334(or)-333(o)28(v)28(erwrite)-334(existing)-333(output.)]TJ -16.673 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(logical)-333(v)55(alue)-333(default:)-444(false)-334(\050o)28(v)28(erwrite\051.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -20.479 Td [(nzin)]TJ +/F27 9.9626 Tf -24.907 -20.479 Td [(nzin)]TJ 0 g 0 G -/F8 9.9626 Tf 25.986 0 Td [(Input)-333(size)-334(to)-333(b)-28(e)-333(app)-28(ended)-333(to.)]TJ -1.08 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(optional)]TJ/F8 9.9626 Tf -25.184 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-398(as:)-573(an)-398(in)28(teger)]TJ/F11 9.9626 Tf 107.908 0 Td [(>)]TJ/F8 9.9626 Tf 11.588 0 Td [(0.)-638(When)-398(app)-28(end)-398(is)-397(true,)-414(s)-1(p)-27(eci\014es)-398(ho)28(w)-398(man)27(y)]TJ -119.496 -11.955 Td [(en)28(tries)-334(in)-333(the)-333(output)-333(v)27(ectors)-333(are)-333(already)-334(\014lled.)]TJ +/F8 9.9626 Tf 25.986 0 Td [(Input)-333(size)-334(to)-333(b)-28(e)-333(app)-28(ended)-333(to.)]TJ -1.079 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-398(as:)-573(an)-398(in)28(teger)]TJ/F11 9.9626 Tf 107.907 0 Td [(>)]TJ/F8 9.9626 Tf 11.589 0 Td [(0.)-638(When)-398(app)-28(end)-398(i)1(s)-398(true,)-414(sp)-28(eci\014es)-398(ho)28(w)-398(man)27(y)]TJ -119.496 -11.955 Td [(en)28(tries)-334(in)-333(the)-333(output)-333(v)27(ectors)-333(are)-333(already)-334(\014lled.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -20.479 Td [(lrw)]TJ +/F27 9.9626 Tf -24.907 -20.479 Td [(lrw)]TJ 0 g 0 G -/F8 9.9626 Tf 21.156 0 Td [(The)-333(last)-334(ro)28(w)-333(to)-334(b)-27(e)-334(extracted.)]TJ 3.75 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(optional)]TJ/F8 9.9626 Tf -25.184 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)]TJ/F11 9.9626 Tf 104.691 0 Td [(>)]TJ/F8 9.9626 Tf 10.516 0 Td [(0,)-333(default:)]TJ/F11 9.9626 Tf 48.43 0 Td [(r)-28(ow)]TJ/F8 9.9626 Tf 17.001 0 Td [(.)]TJ +/F8 9.9626 Tf 21.157 0 Td [(The)-333(last)-334(ro)28(w)-333(to)-334(b)-27(e)-334(extracted.)]TJ 3.75 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -27.951 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf -25.183 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)]TJ/F11 9.9626 Tf 104.691 0 Td [(>)]TJ/F8 9.9626 Tf 10.516 0 Td [(0,)-333(default:)]TJ/F11 9.9626 Tf 48.43 0 Td [(r)-28(ow)]TJ/F8 9.9626 Tf 17.001 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -205.544 -22.334 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -205.545 -22.334 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.479 Td [(nz)]TJ 0 g 0 G -/F8 9.9626 Tf 16.438 0 Td [(the)-333(n)27(u)1(m)27(b)-27(e)-1(r)-333(of)-333(elemen)28(ts)-334(returned)-333(b)28(y)-334(thi)1(s)-334(call.)]TJ 8.468 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.956 Td [(Returned)-333(as:)-445(an)-333(in)28(teger)-334(scalar.)]TJ +/F8 9.9626 Tf 16.439 0 Td [(the)-333(n)28(um)27(b)-27(er)-334(of)-333(elemen)28(ts)-334(returned)-333(b)28(y)-334(th)1(is)-334(call.)]TJ 8.468 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.956 Td [(Returned)-333(as:)-445(an)-333(in)28(teger)-334(scalar.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -20.479 Td [(ia)]TJ +/F27 9.9626 Tf -24.907 -20.479 Td [(ia)]TJ 0 g 0 G -/F8 9.9626 Tf 13.733 0 Td [(the)-333(ro)27(w)-333(indices.)]TJ 11.173 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)-333(with)-333(the)]TJ/F30 9.9626 Tf 170.611 0 Td [(ALLOCATABLE)]TJ/F8 9.9626 Tf 60.854 0 Td [(attribute.)]TJ +/F8 9.9626 Tf 13.734 0 Td [(the)-333(ro)28(w)-334(indices.)]TJ 11.173 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)-333(with)-333(the)]TJ/F30 9.9626 Tf 170.611 0 Td [(ALLOCATABLE)]TJ/F8 9.9626 Tf 60.854 0 Td [(attribute.)]TJ 0 g 0 G - -89.497 -29.887 Td [(86)]TJ + -89.497 -29.887 Td [(87)]TJ 0 g 0 G ET endstream endobj -1277 0 obj << +1309 0 obj << /Type /Page -/Contents 1278 0 R -/Resources 1276 0 R +/Contents 1310 0 R +/Resources 1308 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1274 0 R -/Annots [ 1275 0 R ] +/Parent 1299 0 R +/Annots [ 1307 0 R ] >> endobj -1275 0 obj << +1307 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 492.904 423.049 504.029] +/Rect [294.721 492.904 372.239 504.029] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1279 0 obj << -/D [1277 0 R /XYZ 150.705 740.998 null] +1311 0 obj << +/D [1309 0 R /XYZ 99.895 740.998 null] >> endobj -318 0 obj << -/D [1277 0 R /XYZ 150.705 696.587 null] +322 0 obj << +/D [1309 0 R /XYZ 99.895 696.587 null] >> endobj -1276 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1308 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1282 0 obj << -/Length 3701 +1314 0 obj << +/Length 3711 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F27 9.9626 Tf 99.895 706.129 Td [(ja)]TJ +/F27 9.9626 Tf 150.705 706.129 Td [(ja)]TJ 0 g 0 G -/F8 9.9626 Tf 14.052 0 Td [(the)-333(column)-334(indices)-333(of)-333(the)-334(elemen)28(ts)-333(to)-334(b)-27(e)-334(inserted.)]TJ 10.855 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)-333(with)-333(the)]TJ/F30 9.9626 Tf 170.61 0 Td [(ALLOCATABLE)]TJ/F8 9.9626 Tf 60.855 0 Td [(attribute.)]TJ +/F8 9.9626 Tf 14.051 0 Td [(the)-333(column)-334(indices)-333(of)-333(the)-334(elemen)28(ts)-333(to)-334(b)-27(e)-334(inserted.)]TJ 10.855 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)-333(with)-333(the)]TJ/F30 9.9626 Tf 170.611 0 Td [(ALLOCATABLE)]TJ/F8 9.9626 Tf 60.855 0 Td [(attribute.)]TJ 0 g 0 G /F27 9.9626 Tf -256.372 -19.925 Td [(v)64(al)]TJ 0 g 0 G -/F8 9.9626 Tf 19.144 0 Td [(the)-333(elemen)27(ts)-333(to)-333(b)-28(e)-333(inserted.)]TJ 5.763 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(real)-333(arra)28(y)-334(with)-333(the)]TJ/F30 9.9626 Tf 151.515 0 Td [(ALLOCATABLE)]TJ/F8 9.9626 Tf 60.855 0 Td [(attribute.)]TJ +/F8 9.9626 Tf 19.143 0 Td [(the)-333(elemen)27(ts)-333(to)-333(b)-28(e)-333(inse)-1(r)1(te)-1(d)1(.)]TJ 5.763 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.951 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -51.024 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(real)-333(arra)28(y)-334(with)-333(the)]TJ/F30 9.9626 Tf 151.516 0 Td [(ALLOCATABLE)]TJ/F8 9.9626 Tf 60.854 0 Td [(attribute.)]TJ 0 g 0 G -/F27 9.9626 Tf -237.277 -19.925 Td [(info)]TJ +/F27 9.9626 Tf -237.276 -19.925 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(te)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(t)1(e)-1(d.)]TJ/F16 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ +/F8 9.9626 Tf 12.176 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)-368(output)]TJ/F11 9.9626 Tf 66.552 0 Td [(nz)]TJ/F8 9.9626 Tf 14.717 0 Td [(is)-368(alw)28(a)28(ys)-368(the)-368(size)-368(of)-368(the)-368(output)-368(generated)-367(b)27(y)-367(the)-368(curren)28(t)]TJ -68.539 -11.955 Td [(call;)-314(th)28(us,)-309(if)]TJ/F30 9.9626 Tf 54.123 0 Td [(append=.true.)]TJ/F8 9.9626 Tf 67.995 0 Td [(,)-310(the)-303(total)-304(output)-304(size)-304(will)-303(b)-28(e)]TJ/F11 9.9626 Tf 128.95 0 Td [(nz)-44(in)]TJ/F8 9.9626 Tf 22.088 0 Td [(+)]TJ/F11 9.9626 Tf 9.373 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(,)-310(with)]TJ -293.58 -11.955 Td [(the)-372(newly)-372(extracted)-372(co)-28(e\016cien)28(ts)-372(stored)-372(in)-372(en)28(tries)]TJ/F30 9.9626 Tf 216.307 0 Td [(nzin+1:nzin+nz)]TJ/F8 9.9626 Tf 76.93 0 Td [(of)-372(the)]TJ -293.237 -11.955 Td [(arra)28(y)-333(argume)-1(n)28(ts;)]TJ + [-500(The)-368(output)]TJ/F11 9.9626 Tf 66.553 0 Td [(nz)]TJ/F8 9.9626 Tf 14.716 0 Td [(is)-368(alw)28(a)28(ys)-368(the)-368(size)-368(of)-368(the)-368(output)-368(generated)-367(b)27(y)-367(the)-368(curren)27(t)]TJ -68.539 -11.955 Td [(call;)-314(th)28(us,)-309(if)]TJ/F30 9.9626 Tf 54.124 0 Td [(append=.true.)]TJ/F8 9.9626 Tf 67.994 0 Td [(,)-310(the)-303(total)-304(output)-304(size)-304(will)-303(b)-28(e)]TJ/F11 9.9626 Tf 128.95 0 Td [(nz)-44(in)]TJ/F8 9.9626 Tf 22.088 0 Td [(+)]TJ/F11 9.9626 Tf 9.373 0 Td [(nz)]TJ/F8 9.9626 Tf 11.051 0 Td [(,)-310(with)]TJ -293.58 -11.955 Td [(the)-372(newly)-372(extracted)-372(co)-28(e\016cien)28(ts)-372(stored)-372(in)-372(en)28(tries)]TJ/F30 9.9626 Tf 216.307 0 Td [(nzin+1:nzin+nz)]TJ/F8 9.9626 Tf 76.93 0 Td [(of)-372(the)]TJ -293.237 -11.955 Td [(arra)28(y)-334(ar)1(gume)-1(n)28(ts;)]TJ 0 g 0 G -12.73 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(When)]TJ/F30 9.9626 Tf 41.788 0 Td [(append=.true.)]TJ/F8 9.9626 Tf 71.315 0 Td [(the)-333(output)-334(arr)1(a)27(ys)-333(are)-333(reallo)-28(cated)-334(as)-333(necessary;)]TJ + [-500(When)]TJ/F30 9.9626 Tf 41.788 0 Td [(append=.true.)]TJ/F8 9.9626 Tf 71.315 0 Td [(the)-333(output)-334(arra)28(ys)-333(are)-333(reallo)-28(cated)-334(as)-333(necessary;)]TJ 0 g 0 G -113.103 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(The)-253(ro)28(w)-252(and)-253(column)-253(ind)1(ic)-1(es)-252(are)-253(returned)-252(in)-253(the)-253(lo)-27(cal)-253(n)28(um)28(b)-28(ering)-253(sc)28(heme;)-280(if)]TJ 12.73 -11.955 Td [(the)-222(global)-222(n)27(um)28(b)-28(erin)1(g)-223(is)-222(desired,)-244(the)-223(user)-222(ma)28(y)-222(emplo)27(y)-222(the)]TJ/F30 9.9626 Tf 243.172 0 Td [(psb_loc_to_glob)]TJ/F8 9.9626 Tf -243.172 -11.955 Td [(routine)-333(on)-334(th)1(e)-334(output.)]TJ + [-500(The)-253(ro)28(w)-252(and)-253(column)-253(indices)-252(are)-253(returned)-252(in)-253(the)-253(lo)-27(cal)-253(n)28(um)28(b)-28(ering)-253(sc)28(heme;)-280(if)]TJ 12.73 -11.955 Td [(the)-222(global)-222(n)27(um)28(b)-28(erin)1(g)-223(is)-222(desired,)-244(the)-223(user)-222(ma)28(y)-222(emplo)27(y)-222(the)]TJ/F30 9.9626 Tf 243.172 0 Td [(psb_loc_to_glob)]TJ/F8 9.9626 Tf -243.172 -11.955 Td [(routine)-333(on)-334(the)-333(output.)]TJ 0 g 0 G - 141.968 -290.909 Td [(87)]TJ + 141.968 -290.909 Td [(88)]TJ 0 g 0 G ET endstream endobj -1281 0 obj << +1313 0 obj << /Type /Page -/Contents 1282 0 R -/Resources 1280 0 R +/Contents 1314 0 R +/Resources 1312 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1274 0 R +/Parent 1299 0 R >> endobj -1283 0 obj << -/D [1281 0 R /XYZ 99.895 740.998 null] +1315 0 obj << +/D [1313 0 R /XYZ 150.705 740.998 null] >> endobj -1284 0 obj << -/D [1281 0 R /XYZ 99.895 496.913 null] +1316 0 obj << +/D [1313 0 R /XYZ 150.705 496.913 null] >> endobj -1285 0 obj << -/D [1281 0 R /XYZ 99.895 439.185 null] +1317 0 obj << +/D [1313 0 R /XYZ 150.705 439.185 null] >> endobj -1286 0 obj << -/D [1281 0 R /XYZ 99.895 418.983 null] +1318 0 obj << +/D [1313 0 R /XYZ 150.705 418.983 null] >> endobj -1280 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R /F16 475 0 R /F11 649 0 R >> +1312 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R /F16 479 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1292 0 obj << -/Length 4126 +1324 0 obj << +/Length 4123 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(sizeof)-375(|)-375(Memory)-375(o)-31(ccupation)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-333(function)-334(computes)-333(the)-333(memory)-334(o)-27(c)-1(cup)1(ation)-334(of)-333(a)-333(PSBLAS)-334(ob)-55(ject.)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(sizeof)-375(|)-375(Memory)-375(o)-31(ccupation)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-333(function)-334(computes)-333(the)-333(memory)-334(o)-28(ccupation)-333(of)-333(a)-333(PSBLAS)-334(ob)-55(ject.)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf 0 -21.918 Td [(isz)-525(=)-525(psb_sizeof\050a\051)]TJ 0 -11.955 Td [(isz)-525(=)-525(psb_sizeof\050desc_a\051)]TJ 0 -11.956 Td [(isz)-525(=)-525(psb_sizeof\050prec\051)]TJ @@ -14616,160 +15187,160 @@ BT 0 g 0 G 0 -19.925 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(A)-333(sparse)-334(matrix)]TJ/F11 9.9626 Tf 73.225 0 Td [(A)]TJ/F8 9.9626 Tf 7.472 0 Td [(.)]TJ -66.342 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(A)-333(sparse)-334(matrix)]TJ/F11 9.9626 Tf 73.226 0 Td [(A)]TJ/F8 9.9626 Tf 7.472 0 Td [(.)]TJ -66.342 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 532.522 cm +1 0 0 1 312.036 532.522 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 532.322 Td [(Tspmat)]TJ +/F30 9.9626 Tf 315.174 532.322 Td [(Tspmat)]TJ ET q -1 0 0 1 397.993 532.522 cm +1 0 0 1 347.183 532.522 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 401.131 532.322 Td [(type)]TJ +/F30 9.9626 Tf 350.322 532.322 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -271.347 -19.925 Td [(desc)]TJ +/F27 9.9626 Tf -271.348 -19.925 Td [(desc)]TJ ET q -1 0 0 1 172.619 512.596 cm +1 0 0 1 121.81 512.596 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 512.397 Td [(a)]TJ +/F27 9.9626 Tf 125.247 512.397 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(Comm)28(unication)-334(descriptor.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(Comm)28(unication)-334(d)1(e)-1(scriptor)1(.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 464.776 cm +1 0 0 1 312.036 464.776 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 464.576 Td [(desc)]TJ +/F30 9.9626 Tf 315.174 464.576 Td [(desc)]TJ ET q -1 0 0 1 387.532 464.776 cm +1 0 0 1 336.723 464.776 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 390.67 464.576 Td [(type)]TJ +/F30 9.9626 Tf 339.861 464.576 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -19.925 Td [(prec)]TJ 0 g 0 G -/F8 9.9626 Tf 26.408 0 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -33.879 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(preconditioner)-333(data)-333(structure)]TJ +/F8 9.9626 Tf 26.408 0 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -33.88 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(preconditioner)-333(data)-333(structure)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 197.537 0 Td [(psb)]TJ ET q -1 0 0 1 389.467 408.985 cm +1 0 0 1 338.658 408.985 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 392.606 408.786 Td [(prec)]TJ +/F30 9.9626 Tf 341.796 408.786 Td [(prec)]TJ ET q -1 0 0 1 414.155 408.985 cm +1 0 0 1 363.345 408.985 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 417.293 408.786 Td [(type)]TJ +/F30 9.9626 Tf 366.483 408.786 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -287.509 -19.926 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -287.51 -19.926 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 78.386 0 Td [(The)-332(memory)-331(o)-28(ccupation)-332(of)-331(the)-332(ob)-55(jec)-1(t)-331(sp)-28(eci\014ed)-332(in)-331(the)-332(calling)]TJ -53.48 -11.955 Td [(sequence,)-333(in)-334(b)28(ytes.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(Returned)-333(as:)-445(an)]TJ/F30 9.9626 Tf 73.835 0 Td [(integer\050psb_long_int_k_\051)]TJ/F8 9.9626 Tf 128.849 0 Td [(n)28(um)28(b)-28(er.)]TJ +/F8 9.9626 Tf 78.387 0 Td [(The)-332(memory)-331(o)-28(ccupation)-332(of)-331(the)-332(ob)-55(ject)-332(sp)-28(eci\014ed)-332(in)-331(the)-332(calling)]TJ -53.48 -11.955 Td [(sequence,)-333(in)-334(b)28(ytes.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(Returned)-333(as:)-445(an)]TJ/F30 9.9626 Tf 73.834 0 Td [(integer\050psb_long_int_k_\051)]TJ/F8 9.9626 Tf 128.849 0 Td [(n)28(um)28(b)-28(er.)]TJ 0 g 0 G - -60.716 -242.632 Td [(88)]TJ + -60.715 -242.632 Td [(89)]TJ 0 g 0 G ET endstream endobj -1291 0 obj << +1323 0 obj << /Type /Page -/Contents 1292 0 R -/Resources 1290 0 R +/Contents 1324 0 R +/Resources 1322 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1274 0 R -/Annots [ 1287 0 R 1288 0 R 1289 0 R ] +/Parent 1299 0 R +/Annots [ 1319 0 R 1320 0 R 1321 0 R ] >> endobj -1287 0 obj << +1319 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 529.112 423.049 540.237] +/Rect [294.721 529.112 372.239 540.237] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1288 0 obj << +1320 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 461.366 412.588 472.491] +/Rect [294.721 461.366 361.779 472.491] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1289 0 obj << +1321 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [372.153 405.575 439.211 416.7] +/Rect [321.343 405.575 388.401 416.7] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1293 0 obj << -/D [1291 0 R /XYZ 150.705 740.998 null] +1325 0 obj << +/D [1323 0 R /XYZ 99.895 740.998 null] >> endobj -322 0 obj << -/D [1291 0 R /XYZ 150.705 697.37 null] +326 0 obj << +/D [1323 0 R /XYZ 99.895 697.37 null] >> endobj -1290 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F30 664 0 R /F27 477 0 R /F11 649 0 R >> +1322 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F30 669 0 R /F27 481 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1296 0 obj << -/Length 5754 +1328 0 obj << +/Length 5766 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(Sorting)-375(utilities)]TJ 0 -19.593 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(Sorting)-375(utilities)]TJ 0 -19.593 Td [(psb)]TJ ET q -1 0 0 1 120.951 686.736 cm +1 0 0 1 171.761 686.736 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 686.536 Td [(msort)-375(|)-375(Sorting)-375(b)31(y)-375(the)-375(Merge-sort)-375(algorithm)]TJ -25.091 -12.601 Td [(psb)]TJ +/F16 11.9552 Tf 175.796 686.536 Td [(msort)-375(|)-375(Sorting)-375(b)31(y)-375(the)-375(Merge-sort)-375(algorithm)]TJ -25.091 -12.601 Td [(psb)]TJ ET q -1 0 0 1 120.951 674.134 cm +1 0 0 1 171.761 674.134 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 673.935 Td [(qsort)-375(|)-375(Sorting)-375(b)31(y)-375(the)-375(Quic)31(ksort)-375(algorithm)]TJ -25.091 -12.602 Td [(psb)]TJ +/F16 11.9552 Tf 175.796 673.935 Td [(qsort)-375(|)-375(Sorting)-375(b)31(y)-375(the)-375(Quic)31(ksort)-375(algorithm)]TJ -25.091 -12.602 Td [(psb)]TJ ET q -1 0 0 1 120.951 661.532 cm +1 0 0 1 171.761 661.532 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 661.333 Td [(hsort)-375(|)-375(Sorting)-375(b)31(y)-375(the)-375(Heapsort)-375(algorithm)]TJ +/F16 11.9552 Tf 175.796 661.333 Td [(hsort)-375(|)-375(Sorting)-375(b)31(y)-375(the)-375(Heapsort)-375(algorithm)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -22.511 Td [(call)-525(psb_msort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_qsort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_hsort\050x,ix,dir,flag\051)]TJ/F8 9.9626 Tf 14.944 -21.865 Td [(These)-332(serial)-332(rou)1(tines)-332(sort)-332(a)-332(sequence)]TJ/F11 9.9626 Tf 162.708 0 Td [(X)]TJ/F8 9.9626 Tf 12.34 0 Td [(in)28(to)-332(ascending)-332(or)-331(descending)-332(order.)]TJ -189.992 -11.955 Td [(The)-320(argumen)28(t)-321(meaning)-320(is)-320(iden)28(tical)-320(for)-320(the)-321(thr)1(e)-1(e)-320(calls;)-324(the)-321(on)1(ly)-321(di\013erence)-320(is)-320(the)]TJ 0 -11.955 Td [(algorithm)-333(used)-334(to)-333(accomplish)-333(the)-334(task)-333(\050see)-334(Usage)-333(Notes)-333(b)-28(elo)28(w\051.)]TJ +/F30 9.9626 Tf -25.091 -22.511 Td [(call)-525(psb_msort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_qsort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_hsort\050x,ix,dir,flag\051)]TJ/F8 9.9626 Tf 14.944 -21.865 Td [(These)-332(serial)-332(r)1(outines)-332(sort)-332(a)-332(sequence)]TJ/F11 9.9626 Tf 162.708 0 Td [(X)]TJ/F8 9.9626 Tf 12.34 0 Td [(in)28(to)-332(ascending)-332(or)-331(descending)-332(order.)]TJ -189.992 -11.955 Td [(The)-320(argumen)28(t)-321(meaning)-320(is)-320(iden)28(tical)-320(for)-320(the)-321(th)1(ree)-321(calls;)-324(the)-320(only)-321(di\013erence)-320(is)-320(the)]TJ 0 -11.955 Td [(algorithm)-333(used)-334(to)-333(accomplish)-333(the)-334(task)-333(\050see)-333(Us)-1(age)-333(Notes)-333(b)-28(elo)28(w\051.)]TJ 0 g 0 G /F27 9.9626 Tf 0 -21.865 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -14780,257 +15351,257 @@ BT 0 g 0 G 0 -22.511 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(The)-333(sequence)-334(to)-333(b)-28(e)-333(sorted.)]TJ 13.879 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger,)-333(real)-334(or)-333(complex)-333(arra)27(y)-333(of)-333(rank)-333(1.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(The)-333(sequence)-334(to)-333(b)-28(e)-333(sorted.)]TJ 13.879 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.081 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger,)-333(real)-334(or)-333(complex)-333(arra)27(y)-333(of)-333(rank)-333(1.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -22.511 Td [(ix)]TJ 0 g 0 G -/F8 9.9626 Tf 14.211 0 Td [(A)-333(v)27(ector)-333(of)-333(indices.)]TJ 10.696 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)-333(of)-333(\050at)-333(le)-1(ast\051)-333(the)-333(same)-334(size)-333(as)]TJ/F11 9.9626 Tf 258.559 0 Td [(X)]TJ/F8 9.9626 Tf 9.035 0 Td [(.)]TJ +/F8 9.9626 Tf 14.21 0 Td [(A)-333(v)27(ector)-333(of)-333(indices.)]TJ 10.697 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-1(n)-333(in)28(teger)-333(arra)27(y)-333(of)-333(\050at)-333(leas)-1(t\051)-333(the)-333(same)-334(size)-333(as)]TJ/F11 9.9626 Tf 258.558 0 Td [(X)]TJ/F8 9.9626 Tf 9.036 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -292.501 -22.511 Td [(dir)]TJ 0 g 0 G -/F8 9.9626 Tf 19.248 0 Td [(The)-333(desired)-334(ordering.)]TJ 5.659 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue:)]TJ +/F8 9.9626 Tf 19.247 0 Td [(The)-333(desired)-334(ordering.)]TJ 5.66 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue:)]TJ 0 g 0 G /F27 9.9626 Tf 0 -22.511 Td [(In)32(teger)-383(and)-384(real)-383(data:)]TJ 0 g 0 G -/F30 9.9626 Tf 114.397 0 Td [(psb_sort_up_)]TJ/F8 9.9626 Tf 62.764 0 Td [(,)]TJ/F30 9.9626 Tf 5.203 0 Td [(psb_sort_down_)]TJ/F8 9.9626 Tf 73.224 0 Td [(,)]TJ/F30 9.9626 Tf 5.203 0 Td [(psb_asort_up_)]TJ/F8 9.9626 Tf 67.994 0 Td [(,)]TJ/F30 9.9626 Tf -306.867 -11.955 Td [(psb_asort_down_)]TJ/F8 9.9626 Tf 78.455 0 Td [(;)-333(default)]TJ/F30 9.9626 Tf 39.574 0 Td [(psb_sort_up_)]TJ/F8 9.9626 Tf 62.764 0 Td [(.)]TJ +/F30 9.9626 Tf 114.396 0 Td [(psb_sort_up_)]TJ/F8 9.9626 Tf 62.764 0 Td [(,)]TJ/F30 9.9626 Tf 5.203 0 Td [(psb_sort_down_)]TJ/F8 9.9626 Tf 73.225 0 Td [(,)]TJ/F30 9.9626 Tf 5.203 0 Td [(psb_asort_up_)]TJ/F8 9.9626 Tf 67.994 0 Td [(,)]TJ/F30 9.9626 Tf -306.868 -11.955 Td [(psb_asort_down_)]TJ/F8 9.9626 Tf 78.456 0 Td [(;)-333(default)]TJ/F30 9.9626 Tf 39.573 0 Td [(psb_sort_up_)]TJ/F8 9.9626 Tf 62.765 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -202.711 -17.233 Td [(Complex)-383(data:)]TJ 0 g 0 G -/F30 9.9626 Tf 78.338 0 Td [(psb_lsort_up_)]TJ/F8 9.9626 Tf 67.994 0 Td [(,)]TJ/F30 9.9626 Tf 5.203 0 Td [(psb_lsort_down_)]TJ/F8 9.9626 Tf 78.455 0 Td [(,)]TJ/F30 9.9626 Tf 5.203 0 Td [(psb_asort_up_)]TJ/F8 9.9626 Tf 67.994 0 Td [(,)]TJ/F30 9.9626 Tf 5.203 0 Td [(psb_asort_down_)]TJ/F8 9.9626 Tf 78.455 0 Td [(;)]TJ -364.927 -11.955 Td [(default)]TJ/F30 9.9626 Tf 33.485 0 Td [(psb_lsort_up_)]TJ/F8 9.9626 Tf 67.995 0 Td [(.)]TJ +/F30 9.9626 Tf 78.337 0 Td [(psb_lsort_up_)]TJ/F8 9.9626 Tf 67.995 0 Td [(,)]TJ/F30 9.9626 Tf 5.203 0 Td [(psb_lsort_down_)]TJ/F8 9.9626 Tf 78.455 0 Td [(,)]TJ/F30 9.9626 Tf 5.202 0 Td [(psb_asort_up_)]TJ/F8 9.9626 Tf 67.995 0 Td [(,)]TJ/F30 9.9626 Tf 5.203 0 Td [(psb_asort_down_)]TJ/F8 9.9626 Tf 78.455 0 Td [(;)]TJ -364.928 -11.955 Td [(default)]TJ/F30 9.9626 Tf 33.486 0 Td [(psb_lsort_up_)]TJ/F8 9.9626 Tf 67.995 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -148.305 -22.511 Td [(\015ag)]TJ 0 g 0 G -/F8 9.9626 Tf 22.645 0 Td [(Whether)-333(to)-334(k)28(eep)-333(the)-333(original)-334(v)56(alues)-333(in)]TJ/F11 9.9626 Tf 170.582 0 Td [(I)-78(X)]TJ/F8 9.9626 Tf 14.197 0 Td [(.)]TJ -182.517 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.956 Td [(Sp)-28(eci\014ed)-222(as:)-389(an)-222(in)28(teger)-222(v)55(alue)]TJ/F30 9.9626 Tf 125.446 0 Td [(psb_sort_ovw_idx_)]TJ/F8 9.9626 Tf 91.13 0 Td [(or)]TJ/F30 9.9626 Tf 11.097 0 Td [(psb_sort_keep_idx_)]TJ/F8 9.9626 Tf 94.147 0 Td [(;)]TJ -321.82 -11.955 Td [(default)]TJ/F30 9.9626 Tf 33.486 0 Td [(psb_sort_ovw_idx_)]TJ/F8 9.9626 Tf 88.915 0 Td [(.)]TJ +/F8 9.9626 Tf 22.644 0 Td [(Whether)-333(to)-334(k)28(eep)-333(the)-334(origi)1(nal)-334(v)56(alues)-334(in)]TJ/F11 9.9626 Tf 170.583 0 Td [(I)-78(X)]TJ/F8 9.9626 Tf 14.197 0 Td [(.)]TJ -182.517 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.956 Td [(Sp)-28(eci\014ed)-222(as:)-389(an)-222(in)28(teger)-222(v)55(alue)]TJ/F30 9.9626 Tf 125.446 0 Td [(psb_sort_ovw_idx_)]TJ/F8 9.9626 Tf 91.13 0 Td [(or)]TJ/F30 9.9626 Tf 11.097 0 Td [(psb_sort_keep_idx_)]TJ/F8 9.9626 Tf 94.146 0 Td [(;)]TJ -321.819 -11.955 Td [(default)]TJ/F30 9.9626 Tf 33.485 0 Td [(psb_sort_ovw_idx_)]TJ/F8 9.9626 Tf 88.916 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -147.308 -24.503 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -22.511 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(The)-333(sequence)-334(of)-333(v)55(alues,)-333(in)-333(the)-334(c)28(hosen)-333(ordering.)]TJ 13.879 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger,)-333(real)-334(or)-333(complex)-333(arra)27(y)-333(of)-333(rank)-333(1.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(The)-333(sequence)-334(of)-333(v)55(alu)1(e)-1(s,)-333(in)-333(the)-334(c)28(hosen)-333(ordering.)]TJ 13.879 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.081 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger,)-333(real)-334(or)-333(complex)-333(arra)27(y)-333(of)-333(rank)-333(1.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -22.511 Td [(ix)]TJ 0 g 0 G -/F8 9.9626 Tf 14.211 0 Td [(A)-333(v)27(ector)-333(of)-333(indices.)]TJ 10.696 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(Optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(An)-332(in)27(teger)-332(arra)28(y)-333(of)-332(rank)-333(1,)-332(whose)-333(en)28(tries)-332(are)-333(mo)28(v)28(ed)-333(to)-332(the)-333(same)-332(p)-28(osition)]TJ 0 -11.955 Td [(as)-333(the)-334(corresp)-28(on)1(ding)-334(en)28(tries)-333(in)]TJ/F11 9.9626 Tf 136.959 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ +/F8 9.9626 Tf 14.211 0 Td [(A)-333(v)28(e)-1(ctor)-333(of)-333(indices.)]TJ 10.696 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(Optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(An)-332(in)27(teger)-332(arra)28(y)-333(of)-332(rank)-332(1,)-333(whose)-333(en)28(tries)-332(are)-333(mo)28(v)28(ed)-333(to)-332(the)-333(same)-332(p)-28(osition)]TJ 0 -11.955 Td [(as)-333(the)-334(corresp)-27(onding)-334(en)28(tries)-333(in)]TJ/F11 9.9626 Tf 136.958 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(.)]TJ 0 g 0 G - -0.685 -43.727 Td [(89)]TJ + -0.685 -43.727 Td [(90)]TJ 0 g 0 G ET endstream endobj -1295 0 obj << +1327 0 obj << /Type /Page -/Contents 1296 0 R -/Resources 1294 0 R +/Contents 1328 0 R +/Resources 1326 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1274 0 R +/Parent 1299 0 R >> endobj -1297 0 obj << -/D [1295 0 R /XYZ 99.895 740.998 null] +1329 0 obj << +/D [1327 0 R /XYZ 150.705 740.998 null] >> endobj -326 0 obj << -/D [1295 0 R /XYZ 99.895 696.813 null] +330 0 obj << +/D [1327 0 R /XYZ 150.705 696.813 null] >> endobj -1294 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F11 649 0 R /F27 477 0 R >> +1326 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F11 654 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1300 0 obj << -/Length 7020 +1332 0 obj << +/Length 6993 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(Notes)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.176 -19.925 Td [(1.)]TJ +/F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(F)83(or)-466(in)28(te)-1(ger)-466(or)-467(real)-466(data)-467(the)-467(sorting)-466(can)-467(b)-28(e)-466(p)-28(erformed)-467(in)-466(the)-467(up/do)28(wn)]TJ 12.73 -11.956 Td [(direction,)-333(on)-334(the)-333(natural)-333(or)-333(absolute)-334(v)56(alues;)]TJ + [-500(F)83(or)-466(in)28(tege)-1(r)-466(or)-467(real)-466(data)-467(the)-467(sorting)-466(can)-467(b)-28(e)-466(p)-28(erformed)-467(in)-466(the)-467(up/do)28(wn)]TJ 12.73 -11.956 Td [(direction,)-333(on)-334(th)1(e)-334(natural)-333(or)-333(absolute)-334(v)56(alues;)]TJ 0 g 0 G -12.73 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(F)83(or)-397(complex)-398(data)-398(the)-397(sorting)-398(can)-398(b)-27(e)-398(done)-398(in)-397(a)-398(lexicographic)-398(order)-397(\050i.e.:)]TJ 12.73 -11.955 Td [(sort)-316(on)-316(the)-315(real)-316(part)-316(with)-316(ties)-316(brok)28(en)-316(according)-315(to)-316(the)-316(imaginary)-316(part\051)-315(or)]TJ 0 -11.955 Td [(on)-333(the)-334(absolute)-333(v)56(alues;)]TJ + [-500(F)83(or)-397(complex)-398(data)-398(the)-397(sorting)-398(can)-398(b)-27(e)-398(done)-398(in)-397(a)-398(lexicographic)-398(order)-397(\050i.e.:)]TJ 12.73 -11.955 Td [(sort)-316(on)-316(the)-315(real)-316(part)-316(with)-316(ties)-316(br)1(ok)27(en)-316(accordin)1(g)-316(to)-316(the)-316(imaginary)-316(part\051)-315(or)]TJ 0 -11.955 Td [(on)-333(the)-334(absolute)-333(v)56(alues;)]TJ 0 g 0 G -12.73 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(The)-257(routines)-258(return)-257(the)-257(items)-257(in)-258(the)-257(c)28(hosen)-258(or)1(dering;)-283(the)-257(output)-257(di\013erence)]TJ 12.73 -11.956 Td [(is)-259(the)-259(handling)-259(of)-259(ties)-259(\050i.e.)-419(items)-259(with)-259(an)-259(equal)-259(v)55(alu)1(e)-1(\051)-258(in)-259(the)-259(original)-259(input.)]TJ 0 -11.955 Td [(With)-493(the)-493(merge-sort)-493(algorithm)-493(ties)-493(are)-493(preserv)27(ed)-493(in)-493(the)-493(same)-493(relativ)28(e)]TJ 0 -11.955 Td [(order)-405(as)-406(they)-405(had)-406(in)-405(the)-406(or)1(iginal)-406(sequence,)-423(while)-406(this)-405(is)-406(not)-405(guaran)28(teed)]TJ 0 -11.955 Td [(for)-333(quic)28(ks)-1(or)1(t)-334(or)-333(heapsort;)]TJ + [-500(The)-257(routines)-258(retur)1(n)-258(the)-257(items)-257(in)-258(the)-257(c)28(hosen)-257(ordering;)-283(the)-257(output)-257(di\013erence)]TJ 12.73 -11.956 Td [(is)-259(the)-259(handling)-259(of)-259(ties)-259(\050i.e.)-419(items)-259(with)-259(an)-259(equal)-259(v)56(alue\051)-259(in)-259(the)-259(original)-259(input.)]TJ 0 -11.955 Td [(With)-493(the)-493(merge-sort)-493(algorithm)-493(ties)-493(are)-493(preserv)27(ed)-493(in)-493(the)-493(same)-493(relativ)28(e)]TJ 0 -11.955 Td [(order)-405(as)-406(they)-405(had)-406(in)-405(the)-405(original)-406(sequence,)-423(while)-406(this)-405(is)-406(not)-405(guaran)28(teed)]TJ 0 -11.955 Td [(for)-333(quic)28(ksort)-334(or)-333(heapsort;)]TJ 0 g 0 G -12.73 -19.925 Td [(4.)]TJ 0 g 0 G - [-500(If)]TJ/F11 9.9626 Tf 21.89 0 Td [(f)-108(l)-19(ag)]TJ/F8 9.9626 Tf 22.261 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(psb)]TJ + [-500(If)]TJ/F11 9.9626 Tf 21.889 0 Td [(f)-108(l)-19(ag)]TJ/F8 9.9626 Tf 22.262 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(psb)]TJ ET q -1 0 0 1 232.104 542.941 cm +1 0 0 1 181.295 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F11 9.9626 Tf 235.093 542.742 Td [(sor)-28(t)]TJ +/F11 9.9626 Tf 184.284 542.742 Td [(sor)-28(t)]TJ ET q -1 0 0 1 253.559 542.941 cm +1 0 0 1 202.749 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F11 9.9626 Tf 256.548 542.742 Td [(ov)-36(w)]TJ +/F11 9.9626 Tf 205.738 542.742 Td [(ov)-36(w)]TJ ET q -1 0 0 1 274.562 542.941 cm +1 0 0 1 223.752 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F11 9.9626 Tf 277.55 542.742 Td [(idx)]TJ +/F11 9.9626 Tf 226.741 542.742 Td [(idx)]TJ ET q -1 0 0 1 292.46 542.941 cm +1 0 0 1 241.65 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 297.966 542.742 Td [(then)-253(the)-252(en)27(tries)-252(in)]TJ/F11 9.9626 Tf 80.169 0 Td [(ix)]TJ/F8 9.9626 Tf 9.126 0 Td [(\0501)-278(:)]TJ/F11 9.9626 Tf 17.158 0 Td [(n)]TJ/F8 9.9626 Tf 5.98 0 Td [(\051)-253(where)]TJ/F11 9.9626 Tf 34.397 0 Td [(n)]TJ/F8 9.9626 Tf 8.498 0 Td [(is)-253(the)-252(size)]TJ -277.683 -11.956 Td [(of)]TJ/F11 9.9626 Tf 11.911 0 Td [(x)]TJ/F8 9.9626 Tf 9.579 0 Td [(are)-390(initialized)-390(to)]TJ/F11 9.9626 Tf 76.439 0 Td [(ix)]TJ/F8 9.9626 Tf 9.127 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)]TJ/F14 9.9626 Tf 7.582 0 Td [(\040)]TJ/F11 9.9626 Tf 13.67 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(;)-418(th)28(us,)-405(u)1(p)-28(on)-390(return)-390(from)-390(the)-390(subroutine,)]TJ -139.046 -11.955 Td [(for)-333(eac)27(h)-333(index)]TJ/F11 9.9626 Tf 64.505 0 Td [(i)]TJ/F8 9.9626 Tf 6.752 0 Td [(w)28(e)-333(ha)27(v)28(e)-333(in)]TJ/F11 9.9626 Tf 49.256 0 Td [(ix)]TJ/F8 9.9626 Tf 9.126 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)-333(the)-333(p)-28(osition)-333(that)-333(the)-334(item)]TJ/F11 9.9626 Tf 123.751 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)-333(o)-28(ccupied)]TJ -273.697 -11.955 Td [(in)-333(the)-334(original)-333(data)-333(sequence;)]TJ +/F8 9.9626 Tf 247.157 542.742 Td [(then)-253(the)-252(en)27(tries)-252(in)]TJ/F11 9.9626 Tf 80.169 0 Td [(ix)]TJ/F8 9.9626 Tf 9.126 0 Td [(\0501)-278(:)]TJ/F11 9.9626 Tf 17.158 0 Td [(n)]TJ/F8 9.9626 Tf 5.979 0 Td [(\051)-253(where)]TJ/F11 9.9626 Tf 34.398 0 Td [(n)]TJ/F8 9.9626 Tf 8.497 0 Td [(is)-253(the)-252(s)-1(i)1(z)-1(e)]TJ -277.682 -11.956 Td [(of)]TJ/F11 9.9626 Tf 11.91 0 Td [(x)]TJ/F8 9.9626 Tf 9.579 0 Td [(are)-390(initialized)-390(to)]TJ/F11 9.9626 Tf 76.44 0 Td [(ix)]TJ/F8 9.9626 Tf 9.126 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.433 0 Td [(\051)]TJ/F14 9.9626 Tf 7.581 0 Td [(\040)]TJ/F11 9.9626 Tf 13.67 0 Td [(i)]TJ/F8 9.9626 Tf 3.433 0 Td [(;)-418(th)28(us,)-404(up)-28(on)-390(return)-390(from)-390(the)-390(subroutine,)]TJ -139.046 -11.955 Td [(for)-333(eac)28(h)-334(index)]TJ/F11 9.9626 Tf 64.505 0 Td [(i)]TJ/F8 9.9626 Tf 6.751 0 Td [(w)28(e)-334(ha)28(v)28(e)-333(in)]TJ/F11 9.9626 Tf 49.257 0 Td [(ix)]TJ/F8 9.9626 Tf 9.126 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)-333(the)-333(p)-28(osition)-333(that)-334(th)1(e)-334(item)]TJ/F11 9.9626 Tf 123.751 0 Td [(x)]TJ/F8 9.9626 Tf 5.694 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(\051)-333(o)-28(ccupied)]TJ -273.697 -11.955 Td [(in)-333(the)-334(original)-333(data)-333(sequence;)]TJ 0 g 0 G -12.73 -19.925 Td [(5.)]TJ 0 g 0 G [-500(If)]TJ/F11 9.9626 Tf 23.404 0 Td [(f)-108(l)-19(ag)]TJ/F8 9.9626 Tf 23.446 0 Td [(=)]TJ/F11 9.9626 Tf 11.701 0 Td [(psb)]TJ ET q -1 0 0 1 235.988 487.15 cm +1 0 0 1 185.179 487.15 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F11 9.9626 Tf 238.977 486.951 Td [(sor)-28(t)]TJ +/F11 9.9626 Tf 188.168 486.951 Td [(sor)-28(t)]TJ ET q -1 0 0 1 257.443 487.15 cm +1 0 0 1 206.634 487.15 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F11 9.9626 Tf 260.432 486.951 Td [(k)-31(ee)-1(p)]TJ +/F11 9.9626 Tf 209.622 486.951 Td [(k)-32(eep)]TJ ET q -1 0 0 1 280.82 487.15 cm +1 0 0 1 230.011 487.15 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F11 9.9626 Tf 283.809 486.951 Td [(idx)]TJ +/F11 9.9626 Tf 232.999 486.951 Td [(idx)]TJ ET q -1 0 0 1 298.718 487.15 cm +1 0 0 1 247.909 487.15 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 305.739 486.951 Td [(the)-405(routine)-404(will)-405(assume)-405(that)-404(the)-405(en)28(tries)-405(in)]TJ/F11 9.9626 Tf -130.128 -11.955 Td [(ix)]TJ/F8 9.9626 Tf 9.127 0 Td [(\050:\051)-333(ha)28(v)27(e)-333(already)-333(b)-28(een)-333(initialized)-334(b)28(y)-333(the)-333(use)-1(r;)]TJ +/F8 9.9626 Tf 254.929 486.951 Td [(the)-405(routine)-404(will)-405(assume)-405(that)-404(the)-405(en)28(tries)-405(in)]TJ/F11 9.9626 Tf -130.127 -11.955 Td [(ix)]TJ/F8 9.9626 Tf 9.126 0 Td [(\050:\051)-333(ha)28(v)27(e)-333(already)-333(b)-28(een)-333(initialized)-334(b)28(y)-333(the)-334(user;)]TJ 0 g 0 G - -21.857 -19.926 Td [(6.)]TJ + -21.856 -19.926 Td [(6.)]TJ 0 g 0 G - [-500(The)-376(three)-375(sorting)-376(algorithms)-376(ha)28(v)28(e)-376(a)-376(similar)]TJ/F11 9.9626 Tf 208.295 0 Td [(O)]TJ/F8 9.9626 Tf 7.876 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(n)]TJ/F8 9.9626 Tf 7.64 0 Td [(log)]TJ/F11 9.9626 Tf 14.529 0 Td [(n)]TJ/F8 9.9626 Tf 5.98 0 Td [(\051)-376(exp)-27(ec)-1(t)1(e)-1(d)-375(running)]TJ -235.465 -11.955 Td [(time;)-349(in)-343(the)-344(a)28(v)28(erage)-344(case)-344(qu)1(ic)27(ksort)-343(will)-344(b)-28(e)-343(the)-344(fastest)-343(and)-344(merge-sort)-343(the)]TJ 0 -11.955 Td [(slo)28(w)27(est.)-444(Ho)28(w)27(ev)28(er)-333(note)-333(that:)]TJ + [-500(The)-376(three)-375(sorting)-376(algorithms)-376(ha)28(v)28(e)-376(a)-375(s)-1(imilar)]TJ/F11 9.9626 Tf 208.295 0 Td [(O)]TJ/F8 9.9626 Tf 7.876 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(n)]TJ/F8 9.9626 Tf 7.641 0 Td [(log)]TJ/F11 9.9626 Tf 14.528 0 Td [(n)]TJ/F8 9.9626 Tf 5.98 0 Td [(\051)-376(exp)-27(e)-1(cted)-375(running)]TJ -235.464 -11.955 Td [(time;)-349(in)-343(the)-344(a)28(v)28(erage)-344(case)-343(quic)27(ksort)-343(will)-344(b)-27(e)-344(the)-344(fastest)-343(and)-344(merge-sort)-343(the)]TJ 0 -11.955 Td [(slo)28(w)28(e)-1(st.)-444(Ho)28(w)28(e)-1(v)28(er)-333(note)-333(that:)]TJ 0 g 0 G - 4.207 -19.925 Td [(\050a\051)]TJ + 4.206 -19.925 Td [(\050a\051)]TJ 0 g 0 G - [-500(The)-419(w)28(orst)-419(case)-419(run)1(ning)-419(time)-419(for)-419(qui)1(c)27(ksort)-418(is)]TJ/F11 9.9626 Tf 221.058 0 Td [(O)]TJ/F8 9.9626 Tf 7.876 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(n)]TJ/F7 6.9738 Tf 5.98 3.615 Td [(2)]TJ/F8 9.9626 Tf 4.469 -3.615 Td [(\051;)-461(the)-419(algorithm)]TJ -225.547 -11.955 Td [(implemen)28(ted)-319(here)-319(follo)28(ws)-319(the)-319(w)27(ell-kno)28(wn)-319(median-of-three)-319(heuristics,)]TJ 0 -11.956 Td [(but)-333(the)-334(w)28(orst)-333(case)-334(ma)28(y)-333(still)-334(app)1(ly;)]TJ + [-500(The)-419(w)28(orst)-419(case)-419(runn)1(ing)-419(time)-419(for)-419(quic)28(ksort)-419(is)]TJ/F11 9.9626 Tf 221.059 0 Td [(O)]TJ/F8 9.9626 Tf 7.876 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(n)]TJ/F7 6.9738 Tf 5.98 3.615 Td [(2)]TJ/F8 9.9626 Tf 4.47 -3.615 Td [(\051;)-461(the)-419(algorithm)]TJ -225.547 -11.955 Td [(implemen)28(ted)-319(here)-319(follo)28(ws)-319(the)-319(w)27(ell-kno)28(wn)-319(median-of-three)-319(heuristics,)]TJ 0 -11.956 Td [(but)-333(the)-334(w)28(orst)-333(case)-334(ma)28(y)-333(still)-334(ap)1(ply;)]TJ 0 g 0 G -18.265 -15.94 Td [(\050b\051)]TJ 0 g 0 G - [-500(The)-222(w)28(orst)-223(case)-222(running)-222(time)-222(for)-223(merge-sort)-222(and)-222(heap-sort)-222(is)]TJ/F11 9.9626 Tf 273.309 0 Td [(O)]TJ/F8 9.9626 Tf 7.876 0 Td [(\050)]TJ/F11 9.9626 Tf 3.875 0 Td [(n)]TJ/F8 9.9626 Tf 7.64 0 Td [(log)]TJ/F11 9.9626 Tf 14.529 0 Td [(n)]TJ/F8 9.9626 Tf 5.98 0 Td [(\051)]TJ -294.944 -11.955 Td [(as)-333(the)-334(a)28(v)28(erage)-334(case;)]TJ + [-500(The)-222(w)28(orst)-223(case)-222(running)-222(time)-222(for)-222(m)-1(erge-sort)-222(and)-222(heap-sort)-222(is)]TJ/F11 9.9626 Tf 273.309 0 Td [(O)]TJ/F8 9.9626 Tf 7.876 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(n)]TJ/F8 9.9626 Tf 7.64 0 Td [(log)]TJ/F11 9.9626 Tf 14.529 0 Td [(n)]TJ/F8 9.9626 Tf 5.98 0 Td [(\051)]TJ -294.943 -11.955 Td [(as)-333(the)-334(a)28(v)28(erage)-334(case;)]TJ 0 g 0 G -17.158 -15.94 Td [(\050c\051)]TJ 0 g 0 G - [-500(The)-358(merge-sort)-358(algorithm)-357(is)-358(implemen)28(ted)-358(to)-358(tak)28(e)-358(adv)56(an)28(tage)-358(of)-358(sub-)]TJ 17.158 -11.955 Td [(sequences)-401(that)-400(ma)28(y)-401(b)-28(e)-400(already)-401(in)-400(the)-401(desired)-400(ordering)-400(prior)-401(to)-400(the)]TJ 0 -11.956 Td [(subroutine)-246(call;)-275(this)-246(situation)-246(is)-247(relativ)28(ely)-246(common)-246(when)-246(dealing)-246(with)]TJ 0 -11.955 Td [(groups)-258(of)-257(indices)-258(of)-258(sparse)-258(matrix)-257(en)28(tries,)-273(th)28(us)-258(merge-sort)-258(is)-258(often)-257(the)]TJ 0 -11.955 Td [(preferred)-318(c)27(hoice)-318(when)-319(a)-318(sorting)-319(is)-318(needed)-319(b)28(y)-319(oth)1(e)-1(r)-318(routines)-318(in)-319(the)-318(li-)]TJ 0 -11.955 Td [(brary)83(.)]TJ + [-500(The)-358(merge-sort)-358(algorithm)-357(is)-358(implemen)28(ted)-358(to)-358(tak)28(e)-358(adv)56(an)28(tage)-358(of)-358(sub-)]TJ 17.158 -11.955 Td [(sequences)-401(that)-400(ma)28(y)-401(b)-28(e)-400(already)-401(in)-400(the)-401(d)1(e)-1(sired)-400(ordering)-400(prior)-401(to)-400(the)]TJ 0 -11.956 Td [(subroutine)-246(call;)-275(this)-246(situation)-246(is)-247(relativ)28(ely)-246(common)-246(when)-246(dealing)-246(with)]TJ 0 -11.955 Td [(groups)-301(of)-301(indices)-301(of)-302(sparse)-301(matrix)-301(en)28(tries,)-308(th)28(us)-301(merge-sort)-301(is)-302(the)-301(pre-)]TJ 0 -11.955 Td [(ferred)-249(c)28(hoice)-249(when)-249(a)-249(sorting)-248(is)-249(needed)-249(b)28(y)-249(other)-249(routines)-249(in)-248(the)-249(library)83(.)]TJ 0 g 0 G - 120.05 -193.275 Td [(90)]TJ + 120.05 -205.23 Td [(91)]TJ 0 g 0 G ET endstream endobj -1299 0 obj << +1331 0 obj << /Type /Page -/Contents 1300 0 R -/Resources 1298 0 R +/Contents 1332 0 R +/Resources 1330 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1274 0 R +/Parent 1343 0 R >> endobj -1301 0 obj << -/D [1299 0 R /XYZ 150.705 740.998 null] +1333 0 obj << +/D [1331 0 R /XYZ 99.895 740.998 null] >> endobj -1302 0 obj << -/D [1299 0 R /XYZ 150.705 702.144 null] +1334 0 obj << +/D [1331 0 R /XYZ 99.895 702.144 null] >> endobj -1303 0 obj << -/D [1299 0 R /XYZ 150.705 668.326 null] +1335 0 obj << +/D [1331 0 R /XYZ 99.895 668.326 null] >> endobj -1304 0 obj << -/D [1299 0 R /XYZ 150.705 624.491 null] +1336 0 obj << +/D [1331 0 R /XYZ 99.895 624.491 null] >> endobj -1305 0 obj << -/D [1299 0 R /XYZ 150.705 556.745 null] +1337 0 obj << +/D [1331 0 R /XYZ 99.895 556.745 null] >> endobj -1306 0 obj << -/D [1299 0 R /XYZ 150.705 500.954 null] +1338 0 obj << +/D [1331 0 R /XYZ 99.895 500.954 null] >> endobj -1307 0 obj << -/D [1299 0 R /XYZ 150.705 468.52 null] +1339 0 obj << +/D [1331 0 R /XYZ 99.895 468.52 null] >> endobj -1308 0 obj << -/D [1299 0 R /XYZ 150.705 425.182 null] +1340 0 obj << +/D [1331 0 R /XYZ 99.895 425.182 null] >> endobj -1309 0 obj << -/D [1299 0 R /XYZ 150.705 383.395 null] +1341 0 obj << +/D [1331 0 R /XYZ 99.895 383.395 null] >> endobj -1310 0 obj << -/D [1299 0 R /XYZ 150.705 355.499 null] +1342 0 obj << +/D [1331 0 R /XYZ 99.895 355.499 null] >> endobj -1298 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F7 665 0 R >> +1330 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F7 670 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1313 0 obj << -/Length 181 +1346 0 obj << +/Length 186 >> stream 0 g 0 G 0 g 0 G BT -/F16 14.3462 Tf 99.895 706.129 Td [(7)-1125(P)31(arallel)-375(en)31(vironmen)32(t)-375(routines)]TJ +/F16 14.3462 Tf 150.705 706.129 Td [(7)-1125(P)31(arallel)-375(en)32(v)-1(ironmen)32(t)-375(routines)]TJ 0 g 0 G -/F8 9.9626 Tf 166.875 -615.691 Td [(91)]TJ +/F8 9.9626 Tf 166.874 -615.691 Td [(92)]TJ 0 g 0 G ET endstream endobj -1312 0 obj << +1345 0 obj << /Type /Page -/Contents 1313 0 R -/Resources 1311 0 R +/Contents 1346 0 R +/Resources 1344 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1315 0 R +/Parent 1343 0 R >> endobj -1314 0 obj << -/D [1312 0 R /XYZ 99.895 740.998 null] +1347 0 obj << +/D [1345 0 R /XYZ 150.705 740.998 null] >> endobj -330 0 obj << -/D [1312 0 R /XYZ 99.895 716.092 null] +334 0 obj << +/D [1345 0 R /XYZ 150.705 716.092 null] >> endobj -1311 0 obj << -/Font << /F16 475 0 R /F8 478 0 R >> +1344 0 obj << +/Font << /F16 479 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1318 0 obj << -/Length 5573 +1350 0 obj << +/Length 5566 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(init)-375(|)-375(Initializes)-375(PSBLAS)-375(parallel)-375(en)31(vironmen)31(t)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(init)-375(|)-375(Initializes)-375(PSBLAS)-375(parallel)-375(en)31(vironmen)31(t)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_init\050icontxt,)-525(np,)-525(basectxt,)-525(ids\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-294(subroutine)-294(initial)1(iz)-1(es)-293(the)-294(PSBLAS)-294(parallel)-294(en)28(vironmen)28(t,)-302(de\014ning)-294(a)-294(vir-)]TJ -14.944 -11.955 Td [(tual)-333(parallel)-334(mac)28(hine.)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_init\050icontxt,)-525(np,)-525(basectxt,)-525(ids\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-294(subroutine)-294(initializes)-294(th)1(e)-294(PSBLAS)-294(parallel)-294(en)28(vironmen)28(t,)-302(de\014ning)-294(a)-294(vir-)]TJ -14.944 -11.955 Td [(tual)-333(parallel)-334(mac)28(hine.)]TJ 0 g 0 G /F27 9.9626 Tf 0 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -15041,91 +15612,91 @@ BT 0 g 0 G 0 -19.925 Td [(np)]TJ 0 g 0 G -/F8 9.9626 Tf 17.711 0 Td [(Num)28(b)-28(er)-333(of)-334(pro)-27(cess)-1(es)-333(in)-333(the)-334(P)1(SBLA)-1(S)-333(virtual)-333(parallel)-333(mac)27(hin)1(e)-1(.)]TJ 7.196 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue.)-778(Defau)1(lt:)-445(use)-333(all)-334(a)28(v)56(ailable)-333(pro)-28(cesses.)]TJ +/F8 9.9626 Tf 17.712 0 Td [(Num)28(b)-28(er)-333(of)-334(pr)1(o)-28(cesses)-334(in)-333(the)-333(PSBLAS)-334(virtual)-333(parallel)-333(mac)27(h)1(ine.)]TJ 7.195 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)-778(Default)1(:)-445(use)-333(all)-334(a)28(v)56(ailable)-334(p)1(ro)-28(cesses)-1(.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(basectxt)]TJ 0 g 0 G -/F8 9.9626 Tf 46.736 0 Td [(the)-356(initial)-357(comm)28(unication)-356(con)28(text.)-514(The)-356(new)-357(con)28(text)-356(will)-357(b)-27(e)-357(de\014ned)]TJ -21.829 -11.955 Td [(from)-333(the)-334(pro)-27(cesse)-1(s)-333(participating)-333(in)-333(the)-334(initial)-333(one.)]TJ 0 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)-778(Defau)1(lt:)-445(use)-333(MPI)]TJ +/F8 9.9626 Tf 46.736 0 Td [(the)-356(initial)-357(comm)28(unication)-356(con)28(text.)-514(The)-356(new)-357(con)28(text)-356(will)-357(b)-27(e)-357(de\014ned)]TJ -21.829 -11.955 Td [(from)-333(the)-334(pro)-27(cess)-1(es)-333(participating)-333(in)-333(the)-334(initial)-333(one.)]TJ 0 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)-778(Default)1(:)-445(use)-333(MPI)]TJ ET q -1 0 0 1 389.991 466.768 cm +1 0 0 1 339.182 466.768 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 392.98 466.569 Td [(COMM)]TJ +/F8 9.9626 Tf 342.171 466.569 Td [(COMM)]TJ ET q -1 0 0 1 426.787 466.768 cm +1 0 0 1 375.977 466.768 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 429.775 466.569 Td [(W)28(ORLD.)]TJ +/F8 9.9626 Tf 378.966 466.569 Td [(W)28(ORLD.)]TJ 0 g 0 G -/F27 9.9626 Tf -279.07 -19.925 Td [(ids)]TJ +/F27 9.9626 Tf -279.071 -19.925 Td [(ids)]TJ 0 g 0 G -/F8 9.9626 Tf 19.048 0 Td [(Iden)28(tities)-497(of)-497(the)-497(pro)-28(cesses)-497(to)-497(use)-497(for)-497(the)-497(new)-498(con)28(text;)-579(the)-497(argumen)28(t)-497(is)]TJ 5.858 -11.956 Td [(ignored)-428(when)]TJ/F30 9.9626 Tf 63.346 0 Td [(np)]TJ/F8 9.9626 Tf 14.723 0 Td [(is)-428(not)-428(sp)-27(eci\014ed.)-728(This)-428(allo)28(ws)-428(the)-428(pro)-27(ces)-1(ses)-427(in)-428(the)-428(new)]TJ -78.069 -11.955 Td [(en)28(vironmen)28(t)-334(to)-333(b)-28(e)-333(in)-333(an)-334(order)-333(di\013eren)28(t)-334(from)-333(the)-333(original)-333(one.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf 40.576 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)84(.)-778(Default:)-444(use)-334(the)-333(indices)-333(\0500)]TJ/F11 9.9626 Tf 254.159 0 Td [(:)-167(:)-166(:)-167(np)]TJ/F14 9.9626 Tf 26.489 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1\051.)]TJ +/F8 9.9626 Tf 19.048 0 Td [(Iden)28(tities)-497(of)-497(the)-497(pro)-28(cesses)-497(to)-497(use)-497(for)-497(the)-498(n)1(e)-1(w)-497(con)28(text;)-579(the)-497(argumen)28(t)-497(is)]TJ 5.859 -11.956 Td [(ignored)-428(when)]TJ/F30 9.9626 Tf 63.346 0 Td [(np)]TJ/F8 9.9626 Tf 14.722 0 Td [(is)-428(not)-428(sp)-27(eci\014ed.)-728(This)-428(allo)28(ws)-428(the)-428(pro)-27(ce)-1(sses)-427(in)-428(the)-428(new)]TJ -78.068 -11.955 Td [(en)28(vironmen)28(t)-334(to)-333(b)-28(e)-333(in)-333(an)-334(order)-333(di\013eren)28(t)-334(fr)1(om)-334(the)-333(original)-333(one.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)84(.)-778(Default:)-444(use)-334(the)-333(indices)-333(\0500)]TJ/F11 9.9626 Tf 254.158 0 Td [(:)-167(:)-166(:)-167(np)]TJ/F14 9.9626 Tf 26.49 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1\051.)]TJ 0 g 0 G -/F27 9.9626 Tf -315.517 -21.918 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -315.518 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-457(c)-1(omm)28(unication)-457(con)28(te)-1(x)1(t)-458(iden)28(tifying)-458(the)-457(virtual)-458(p)1(arallel)-458(mac)28(hine.)]TJ -15.083 -11.956 Td [(Note)-335(that)-335(this)-335(is)-336(alw)28(a)28(ys)-335(a)-335(duplicate)-335(of)]TJ/F30 9.9626 Tf 169.953 0 Td [(basectxt)]TJ/F8 9.9626 Tf 41.843 0 Td [(,)-336(so)-335(that)-335(library)-335(comm)28(u-)]TJ -211.796 -11.955 Td [(nications)-305(are)-305(completely)-306(separated)-305(from)-305(other)-305(comm)28(unication)-305(op)-28(erations.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.51 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ/F16 11.9552 Tf -24.906 -21.917 Td [(Notes)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-458(comm)28(unication)-457(con)27(text)-457(iden)28(tifying)-458(the)-457(virtual)-458(paral)1(le)-1(l)-457(mac)28(hine.)]TJ -15.082 -11.956 Td [(Note)-335(that)-335(this)-335(is)-336(alw)28(a)28(ys)-335(a)-335(duplicate)-335(of)]TJ/F30 9.9626 Tf 169.952 0 Td [(basectxt)]TJ/F8 9.9626 Tf 41.843 0 Td [(,)-336(so)-335(that)-335(library)-335(comm)28(u-)]TJ -211.795 -11.955 Td [(nications)-305(are)-305(completely)-305(s)-1(eparated)-305(from)-305(other)-305(comm)28(unication)-305(op)-28(erations.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ/F16 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.176 -19.926 Td [(1.)]TJ +/F8 9.9626 Tf 12.177 -19.926 Td [(1.)]TJ 0 g 0 G [-500(A)-333(call)-334(to)-333(this)-333(routine)-334(m)28(ust)-333(precede)-334(an)28(y)-333(other)-333(PSBLAS)-334(call.)]TJ 0 g 0 G 0 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(It)-262(is)-262(an)-262(error)-262(to)-262(sp)-28(ecify)-262(a)-262(v)56(alue)-262(for)]TJ/F11 9.9626 Tf 159.87 0 Td [(np)]TJ/F8 9.9626 Tf 13.602 0 Td [(greater)-262(than)-262(the)-262(n)28(um)28(b)-28(er)-262(of)-262(pro)-28(cesses)]TJ -160.742 -11.955 Td [(a)28(v)55(ailable)-333(in)-333(the)-334(und)1(e)-1(r)1(lying)-334(base)-333(parallel)-333(en)27(viron)1(m)-1(en)28(t.)]TJ + [-500(It)-262(is)-262(an)-262(error)-262(to)-262(sp)-28(ecify)-262(a)-262(v)56(alue)-262(for)]TJ/F11 9.9626 Tf 159.869 0 Td [(np)]TJ/F8 9.9626 Tf 13.603 0 Td [(greater)-262(than)-262(the)-262(n)28(um)28(b)-28(er)-262(of)-262(pro)-28(cesses)]TJ -160.742 -11.955 Td [(a)28(v)55(ailable)-333(in)-333(the)-334(un)1(derlying)-334(base)-333(parallel)-333(en)27(vir)1(onme)-1(n)28(t.)]TJ 0 g 0 G - 141.968 -97.177 Td [(92)]TJ + 141.968 -97.177 Td [(93)]TJ 0 g 0 G ET endstream endobj -1317 0 obj << +1349 0 obj << /Type /Page -/Contents 1318 0 R -/Resources 1316 0 R +/Contents 1350 0 R +/Resources 1348 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1315 0 R +/Parent 1343 0 R >> endobj -1319 0 obj << -/D [1317 0 R /XYZ 150.705 740.998 null] +1351 0 obj << +/D [1349 0 R /XYZ 99.895 740.998 null] >> endobj -334 0 obj << -/D [1317 0 R /XYZ 150.705 697.37 null] +338 0 obj << +/D [1349 0 R /XYZ 99.895 697.37 null] >> endobj -1320 0 obj << -/D [1317 0 R /XYZ 150.705 235.436 null] +1352 0 obj << +/D [1349 0 R /XYZ 99.895 235.436 null] >> endobj -1321 0 obj << -/D [1317 0 R /XYZ 150.705 213.573 null] +1353 0 obj << +/D [1349 0 R /XYZ 99.895 213.573 null] >> endobj -1316 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +1348 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1324 0 obj << -/Length 4646 +1356 0 obj << +/Length 4638 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(info)-306(|)-307(Return)-306(information)-306(ab)-31(out)-307(PSBLAS)-306(parallel)-306(en-)]TJ -25.091 -13.948 Td [(vironmen)31(t)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(info)-306(|)-307(Return)-306(information)-306(ab)-31(out)-307(PSBLAS)-306(parallel)-306(en-)]TJ -25.091 -13.948 Td [(vironmen)31(t)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf 0 -18.389 Td [(call)-525(psb_info\050icontxt,)-525(iam,)-525(np\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-456(subroutine)-456(returns)-456(inf)1(orma)-1(t)1(ion)-456(ab)-28(out)-456(the)-456(PSBLAS)-456(paral)1(le)-1(l)-455(en)27(viron-)]TJ -14.944 -11.955 Td [(men)28(t,)-334(de\014nin)1(g)-334(a)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ +/F30 9.9626 Tf 0 -18.389 Td [(call)-525(psb_info\050icontxt,)-525(iam,)-525(np\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-456(subroutine)-456(returns)-456(in)1(formation)-456(ab)-28(out)-456(the)-456(PSBLAS)-456(p)1(arallel)-456(en)27(viron)1(-)]TJ -14.944 -11.955 Td [(men)28(t,)-334(de\014n)1(ing)-334(a)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ 0 g 0 G /F27 9.9626 Tf 0 -19.925 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -15136,73 +15707,73 @@ BT 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(iam)]TJ 0 g 0 G -/F8 9.9626 Tf 23.281 0 Td [(Iden)28(ti\014er)-333(of)-334(curren)28(t)-333(pro)-28(cess)-333(in)-334(the)-333(PSBLAS)-333(virtual)-334(par)1(allel)-334(mac)28(hine.)]TJ 1.626 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)]TJ/F14 9.9626 Tf 134.302 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)]TJ/F14 9.9626 Tf 7.749 0 Td [(\024)]TJ/F11 9.9626 Tf 10.516 0 Td [(iam)]TJ/F14 9.9626 Tf 20.213 0 Td [(\024)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1)]TJ +/F8 9.9626 Tf 23.281 0 Td [(Iden)28(ti\014er)-333(of)-334(curren)28(t)-333(pro)-28(cess)-333(in)-334(the)-333(PSBLAS)-333(virtual)-334(p)1(arallel)-334(mac)28(hine.)]TJ 1.626 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue.)]TJ/F14 9.9626 Tf 134.302 0 Td [(\000)]TJ/F8 9.9626 Tf 7.748 0 Td [(1)]TJ/F14 9.9626 Tf 7.749 0 Td [(\024)]TJ/F11 9.9626 Tf 10.516 0 Td [(iam)]TJ/F14 9.9626 Tf 20.213 0 Td [(\024)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.207 0 Td [(\000)]TJ/F8 9.9626 Tf 9.962 0 Td [(1)]TJ 0 g 0 G -/F27 9.9626 Tf -239.121 -19.926 Td [(np)]TJ +/F27 9.9626 Tf -239.12 -19.926 Td [(np)]TJ 0 g 0 G -/F8 9.9626 Tf 17.712 0 Td [(Num)28(b)-28(er)-333(of)-334(pro)-27(cesse)-1(s)-333(in)-333(the)-333(PSBLAS)-334(virtual)-333(parallel)-333(mac)27(h)1(ine.)]TJ 7.195 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -71.51 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F8 9.9626 Tf 17.711 0 Td [(Num)28(b)-28(er)-333(of)-334(pro)-27(cess)-1(es)-333(in)-333(the)-334(PS)1(BL)-1(AS)-333(virtual)-333(parallel)-333(mac)27(hin)1(e)-1(.)]TJ 7.196 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.177 -19.926 Td [(1.)]TJ +/F8 9.9626 Tf 12.176 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(F)83(or)-500(pro)-27(cesse)-1(s)-500(in)-500(th)1(e)-501(v)1(irtual)-500(parallel)-500(mac)27(hin)1(e)-501(th)1(e)-501(id)1(e)-1(n)28(ti\014er)-500(will)-500(satisfy)]TJ 12.73 -11.955 Td [(0)]TJ/F14 9.9626 Tf 7.749 0 Td [(\024)]TJ/F11 9.9626 Tf 10.516 0 Td [(iam)]TJ/F14 9.9626 Tf 20.213 0 Td [(\024)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1;)]TJ + [-500(F)83(or)-500(pro)-27(cess)-1(es)-500(in)-500(the)-500(vir)1(tual)-500(parallel)-500(mac)27(hine)-500(the)-500(iden)28(ti\014er)-500(will)-500(satisfy)]TJ 12.731 -11.955 Td [(0)]TJ/F14 9.9626 Tf 7.748 0 Td [(\024)]TJ/F11 9.9626 Tf 10.516 0 Td [(iam)]TJ/F14 9.9626 Tf 20.213 0 Td [(\024)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.207 0 Td [(\000)]TJ/F8 9.9626 Tf 9.962 0 Td [(1;)]TJ 0 g 0 G -84.893 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(If)-432(the)-433(user)-432(has)-433(requested)-432(on)]TJ/F30 9.9626 Tf 143.13 0 Td [(psb_init)]TJ/F8 9.9626 Tf 46.151 0 Td [(a)-432(n)27(um)28(b)-28(er)-432(of)-432(pro)-28(cesses)-433(less)-432(than)]TJ -176.551 -11.955 Td [(the)-417(total)-416(a)28(v)55(ailable)-416(in)-417(the)-416(parallel)-417(execution)-416(en)28(vironmen)28(t,)-438(the)-416(remaining)]TJ 0 -11.955 Td [(pro)-28(cesses)-359(will)-359(ha)28(v)28(e)-359(on)-359(return)]TJ/F11 9.9626 Tf 130.486 0 Td [(iam)]TJ/F8 9.9626 Tf 20.639 0 Td [(=)]TJ/F14 9.9626 Tf 10.941 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1;)-372(the)-359(only)-359(call)-359(in)28(v)28(olving)]TJ/F30 9.9626 Tf 112.377 0 Td [(icontxt)]TJ/F8 9.9626 Tf -282.192 -11.956 Td [(that)-333(an)28(y)-334(suc)28(h)-333(pro)-28(cess)-334(ma)28(y)-333(execute)-334(is)-333(to)]TJ/F30 9.9626 Tf 177.086 0 Td [(psb_exit)]TJ/F8 9.9626 Tf 41.843 0 Td [(.)]TJ + [-500(If)-432(the)-433(user)-432(has)-433(requested)-432(on)]TJ/F30 9.9626 Tf 143.131 0 Td [(psb_init)]TJ/F8 9.9626 Tf 46.15 0 Td [(a)-432(n)27(um)28(b)-28(er)-432(of)-432(pro)-28(cesses)-433(less)-432(than)]TJ -176.551 -11.955 Td [(the)-417(total)-416(a)28(v)55(ailable)-416(in)-417(the)-416(parallel)-417(execution)-416(en)28(vironmen)28(t,)-438(the)-416(remaining)]TJ 0 -11.955 Td [(pro)-28(cesses)-359(will)-359(ha)28(v)28(e)-359(on)-359(return)]TJ/F11 9.9626 Tf 130.487 0 Td [(iam)]TJ/F8 9.9626 Tf 20.638 0 Td [(=)]TJ/F14 9.9626 Tf 10.942 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1;)-372(the)-359(only)-359(call)-359(i)1(n)27(v)28(olving)]TJ/F30 9.9626 Tf 112.377 0 Td [(icontxt)]TJ/F8 9.9626 Tf -282.192 -11.956 Td [(that)-333(an)28(y)-334(suc)28(h)-333(pro)-28(cess)-334(ma)28(y)-333(execute)-334(is)-333(to)]TJ/F30 9.9626 Tf 177.086 0 Td [(psb_exit)]TJ/F8 9.9626 Tf 41.842 0 Td [(.)]TJ 0 g 0 G - -76.961 -174.885 Td [(93)]TJ + -76.961 -174.885 Td [(94)]TJ 0 g 0 G ET endstream endobj -1323 0 obj << +1355 0 obj << /Type /Page -/Contents 1324 0 R -/Resources 1322 0 R +/Contents 1356 0 R +/Resources 1354 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1315 0 R +/Parent 1343 0 R >> endobj -1325 0 obj << -/D [1323 0 R /XYZ 99.895 740.998 null] +1357 0 obj << +/D [1355 0 R /XYZ 150.705 740.998 null] >> endobj -338 0 obj << -/D [1323 0 R /XYZ 99.895 685.747 null] +342 0 obj << +/D [1355 0 R /XYZ 150.705 685.747 null] >> endobj -1326 0 obj << -/D [1323 0 R /XYZ 99.895 349.01 null] +1358 0 obj << +/D [1355 0 R /XYZ 150.705 349.01 null] >> endobj -1327 0 obj << -/D [1323 0 R /XYZ 99.895 315.192 null] +1359 0 obj << +/D [1355 0 R /XYZ 150.705 315.192 null] >> endobj -1322 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F14 667 0 R /F11 649 0 R >> +1354 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1330 0 obj << -/Length 4354 +1362 0 obj << +/Length 4355 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(exit)-375(|)-375(Exit)-375(from)-375(PSBLAS)-375(parallel)-375(en)31(vironmen)31(t)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(exit)-375(|)-375(Exit)-375(from)-375(PSBLAS)-375(parallel)-375(en)31(vironmen)31(t)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_exit\050icontxt\051)]TJ 0 -11.956 Td [(call)-525(psb_exit\050icontxt,close\051)]TJ/F8 9.9626 Tf 14.944 -21.917 Td [(This)-333(subroutine)-334(exits)-333(from)-333(the)-334(PS)1(B)-1(LAS)-333(parallel)-333(virtual)-333(mac)27(hin)1(e)-1(.)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_exit\050icontxt\051)]TJ 0 -11.956 Td [(call)-525(psb_exit\050icontxt,close\051)]TJ/F8 9.9626 Tf 14.944 -21.917 Td [(This)-333(subroutine)-334(exits)-333(from)-333(the)-334(PSBLAS)-333(parallel)-333(virtual)-333(mac)27(hine.)]TJ 0 g 0 G /F27 9.9626 Tf -14.944 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -15213,80 +15784,80 @@ BT 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(close)]TJ 0 g 0 G -/F8 9.9626 Tf 28.754 0 Td [(Whether)-401(to)-401(c)-1(lose)-401(all)-401(data)-401(structures)-402(related)-401(to)-401(the)-401(virtual)-401(parallel)-402(ma-)]TJ -3.847 -11.955 Td [(c)28(hine,)-333(b)-28(esides)-334(those)-333(asso)-28(ciated)-333(with)-334(icon)28(txt.)]TJ 0 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(logical)-333(v)55(ariabl)1(e)-1(,)-333(default)-333(v)55(al)1(ue:)-445(true.)]TJ/F16 11.9552 Tf -24.907 -19.925 Td [(Notes)]TJ +/F8 9.9626 Tf 28.755 0 Td [(Whether)-401(to)-401(clos)-1(e)-401(all)-401(data)-401(structures)-401(relate)-1(d)-401(to)-401(the)-401(virtual)-401(parallel)-401(m)-1(a-)]TJ -3.848 -11.955 Td [(c)28(hine,)-334(b)-27(esides)-334(those)-333(asso)-28(ciated)-333(with)-334(icon)28(txt.)]TJ 0 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(logical)-333(v)55(ariable,)-333(default)-333(v)55(alu)1(e)-1(:)-444(true.)]TJ/F16 11.9552 Tf -24.907 -19.925 Td [(Notes)]TJ 0 g 0 G /F8 9.9626 Tf 12.177 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(This)-241(routine)-241(ma)28(y)-241(b)-28(e)-241(called)-241(ev)28(en)-241(if)-241(a)-241(previous)-241(call)-241(to)]TJ/F30 9.9626 Tf 233.304 0 Td [(psb_info)]TJ/F8 9.9626 Tf 44.244 0 Td [(has)-241(returned)]TJ -264.818 -11.955 Td [(with)]TJ/F11 9.9626 Tf 22.962 0 Td [(iam)]TJ/F8 9.9626 Tf 20.663 0 Td [(=)]TJ/F14 9.9626 Tf 10.966 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1;)-374(indeed,)-367(it)-360(it)-361(is)-360(the)-361(only)-360(routine)-360(that)-361(ma)28(y)-360(b)-28(e)-361(called)-360(with)]TJ -62.34 -11.955 Td [(argumen)28(t)]TJ/F30 9.9626 Tf 44.583 0 Td [(icontxt)]TJ/F8 9.9626 Tf 39.933 0 Td [(in)-333(this)-334(situation)1(.)]TJ + [-500(This)-241(routine)-241(ma)28(y)-241(b)-28(e)-241(called)-241(ev)28(en)-241(if)-241(a)-241(previous)-241(call)-241(to)]TJ/F30 9.9626 Tf 233.305 0 Td [(psb_info)]TJ/F8 9.9626 Tf 44.244 0 Td [(has)-241(returned)]TJ -264.819 -11.955 Td [(with)]TJ/F11 9.9626 Tf 22.963 0 Td [(iam)]TJ/F8 9.9626 Tf 20.662 0 Td [(=)]TJ/F14 9.9626 Tf 10.966 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1;)-374(indeed,)-367(it)-360(it)-361(is)-360(the)-361(only)-360(routine)-360(that)-361(ma)28(y)-360(b)-28(e)-361(called)-360(with)]TJ -62.34 -11.955 Td [(argumen)28(t)]TJ/F30 9.9626 Tf 44.583 0 Td [(icontxt)]TJ/F8 9.9626 Tf 39.933 0 Td [(in)-333(this)-334(situation.)]TJ 0 g 0 G -97.246 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(A)-305(call)-306(to)-305(this)-305(routine)-305(with)]TJ/F30 9.9626 Tf 128.752 0 Td [(close=.true.)]TJ/F8 9.9626 Tf 65.806 0 Td [(implies)-305(a)-306(call)-305(to)]TJ/F30 9.9626 Tf 71.445 0 Td [(MPI_Finalize)]TJ/F8 9.9626 Tf 62.764 0 Td [(,)]TJ -316.037 -11.956 Td [(after)-333(whic)28(h)-334(no)-333(parallel)-333(routine)-334(ma)28(y)-333(b)-28(e)-333(called.)]TJ + [-500(A)-305(call)-306(to)-305(this)-305(routine)-305(with)]TJ/F30 9.9626 Tf 128.752 0 Td [(close=.true.)]TJ/F8 9.9626 Tf 65.806 0 Td [(implies)-305(a)-306(call)-305(to)]TJ/F30 9.9626 Tf 71.445 0 Td [(MPI_Finalize)]TJ/F8 9.9626 Tf 62.764 0 Td [(,)]TJ -316.037 -11.956 Td [(after)-333(whic)27(h)-333(no)-333(parallel)-333(routine)-334(ma)28(y)-333(b)-28(e)-333(called.)]TJ 0 g 0 G -12.73 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(If)-391(the)-390(user)-391(whishes)-391(to)-390(use)-391(m)28(ultiple)-391(comm)28(unication)-391(con)28(texts)-391(in)-390(the)-391(same)]TJ 12.73 -11.955 Td [(program,)-485(or)-455(to)-455(en)28(ter)-455(and)-454(exit)-455(m)27(u)1(ltiple)-455(times)-455(in)28(to)-455(the)-455(parallel)-455(en)28(viron-)]TJ 0 -11.955 Td [(men)28(t,)-494(this)-462(routine)-462(ma)28(y)-462(b)-28(e)-462(called)-462(to)-462(selectiv)28(ely)-462(close)-462(the)-462(con)27(texts)-462(with)]TJ/F30 9.9626 Tf 0 -11.955 Td [(close=.false.)]TJ/F8 9.9626 Tf 67.994 0 Td [(,)-244(while)-223(on)-222(the)-222(last)-222(call)-223(it)-222(should)-222(b)-28(e)-222(called)-222(with)]TJ/F30 9.9626 Tf 194.327 0 Td [(close=.true.)]TJ/F8 9.9626 Tf -262.321 -11.955 Td [(to)-333(sh)27(u)1(tdo)27(wn)-333(in)-333(a)-334(clean)-333(w)28(a)28(y)-334(the)-333(en)28(tire)-334(parallel)-333(en)28(vironmen)28(t.)]TJ + [-500(If)-391(the)-390(user)-391(whishes)-391(to)-390(use)-391(m)28(ultiple)-391(comm)28(unication)-391(con)28(texts)-391(in)-390(the)-391(same)]TJ 12.73 -11.955 Td [(program,)-485(or)-455(to)-455(en)28(ter)-455(and)-454(e)-1(xi)1(t)-455(m)27(ul)1(tiple)-455(times)-455(in)28(to)-455(the)-455(parallel)-455(en)28(viron-)]TJ 0 -11.955 Td [(men)28(t,)-494(this)-462(routine)-462(ma)28(y)-462(b)-28(e)-462(called)-462(to)-462(selectiv)28(ely)-462(close)-463(th)1(e)-462(c)-1(on)28(texts)-462(with)]TJ/F30 9.9626 Tf 0 -11.955 Td [(close=.false.)]TJ/F8 9.9626 Tf 67.994 0 Td [(,)-244(while)-223(on)-222(the)-222(last)-222(call)-223(it)-222(should)-222(b)-28(e)-222(called)-222(with)]TJ/F30 9.9626 Tf 194.328 0 Td [(close=.true.)]TJ/F8 9.9626 Tf -262.322 -11.955 Td [(to)-333(sh)27(utd)1(o)27(wn)-333(in)-333(a)-334(clean)-333(w)28(a)28(y)-334(the)-333(en)28(tire)-334(parallel)-333(en)28(vironmen)28(t.)]TJ 0 g 0 G - 141.967 -212.744 Td [(94)]TJ + 141.968 -212.744 Td [(95)]TJ 0 g 0 G ET endstream endobj -1329 0 obj << +1361 0 obj << /Type /Page -/Contents 1330 0 R -/Resources 1328 0 R +/Contents 1362 0 R +/Resources 1360 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1315 0 R +/Parent 1343 0 R >> endobj -1331 0 obj << -/D [1329 0 R /XYZ 150.705 740.998 null] +1363 0 obj << +/D [1361 0 R /XYZ 99.895 740.998 null] >> endobj -342 0 obj << -/D [1329 0 R /XYZ 150.705 697.37 null] +346 0 obj << +/D [1361 0 R /XYZ 99.895 697.37 null] >> endobj -1332 0 obj << -/D [1329 0 R /XYZ 150.705 442.659 null] +1364 0 obj << +/D [1361 0 R /XYZ 99.895 442.659 null] >> endobj -1333 0 obj << -/D [1329 0 R /XYZ 150.705 396.886 null] +1365 0 obj << +/D [1361 0 R /XYZ 99.895 396.886 null] >> endobj -1334 0 obj << -/D [1329 0 R /XYZ 150.705 365.005 null] +1366 0 obj << +/D [1361 0 R /XYZ 99.895 365.005 null] >> endobj -1328 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +1360 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1337 0 obj << -/Length 2160 +1369 0 obj << +/Length 2159 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(get)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(get)]TJ ET q -1 0 0 1 143.885 706.328 cm +1 0 0 1 194.695 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 147.92 706.129 Td [(mpicomm)-375(|)-375(Get)-375(the)-375(MPI)-375(comm)31(unicator)]TJ +/F16 11.9552 Tf 198.729 706.129 Td [(mpicomm)-375(|)-375(Get)-375(the)-375(MPI)-375(comm)31(unicator)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -48.025 -18.389 Td [(call)-525(psb_get_mpicomm\050icontxt,)-525(icomm\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-335(subroutine)-335(returns)-335(the)-336(MPI)-335(comm)28(unicator)-335(asso)-28(ciated)-335(with)-335(a)-336(P)1(SBLAS)]TJ -14.944 -11.955 Td [(con)28(text)]TJ +/F30 9.9626 Tf -48.024 -18.389 Td [(call)-525(psb_get_mpicomm\050icontxt,)-525(icomm\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-335(subroutine)-335(returns)-335(the)-336(M)1(PI)-336(comm)28(unicator)-335(asso)-28(ciated)-335(with)-335(a)-335(PSBLAS)]TJ -14.944 -11.955 Td [(con)28(text)]TJ 0 g 0 G /F27 9.9626 Tf 0 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -15297,62 +15868,62 @@ BT 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(icomm)]TJ 0 g 0 G -/F8 9.9626 Tf 38.08 0 Td [(The)-377(MPI)-378(comm)28(unicator)-377(as)-1(so)-27(ciated)-378(with)-377(the)-378(PSBLAS)-377(virtual)-377(parallel)]TJ -13.173 -11.955 Td [(mac)28(hine.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ +/F8 9.9626 Tf 38.079 0 Td [(The)-377(MPI)-378(comm)28(unicator)-378(asso)-27(ciated)-378(with)-377(the)-378(PSBLAS)-377(virtual)-377(parallel)]TJ -13.172 -11.955 Td [(mac)28(hine.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ 0 g 0 G - 91.933 -366.168 Td [(95)]TJ + 91.933 -366.168 Td [(96)]TJ 0 g 0 G ET endstream endobj -1336 0 obj << +1368 0 obj << /Type /Page -/Contents 1337 0 R -/Resources 1335 0 R +/Contents 1369 0 R +/Resources 1367 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1315 0 R +/Parent 1343 0 R >> endobj -1338 0 obj << -/D [1336 0 R /XYZ 99.895 740.998 null] +1370 0 obj << +/D [1368 0 R /XYZ 150.705 740.998 null] >> endobj -346 0 obj << -/D [1336 0 R /XYZ 99.895 697.37 null] +350 0 obj << +/D [1368 0 R /XYZ 150.705 697.37 null] >> endobj -1335 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R >> +1367 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1341 0 obj << -/Length 3024 +1373 0 obj << +/Length 3019 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(get)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(get)]TJ ET q -1 0 0 1 194.695 706.328 cm +1 0 0 1 143.885 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 198.729 706.129 Td [(rank)-375(|)-375(Get)-375(the)-375(MPI)-375(rank)]TJ +/F16 11.9552 Tf 147.92 706.129 Td [(rank)-375(|)-375(Get)-375(the)-375(MPI)-375(rank)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -48.024 -18.389 Td [(call)-525(psb_get_rank\050rank,)-525(icontxt,)-525(id\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-333(subroutine)-334(retu)1(rns)-334(the)-333(MPI)-333(rank)-334(of)-333(the)-333(PSBLAS)-334(pr)1(o)-28(cess)]TJ/F11 9.9626 Tf 274.665 0 Td [(id)]TJ +/F30 9.9626 Tf -48.025 -18.389 Td [(call)-525(psb_get_rank\050rank,)-525(icontxt,)-525(id\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-333(subroutine)-334(return)1(s)-334(the)-333(MPI)-333(rank)-334(of)-333(the)-333(PSBLAS)-334(pro)-27(cess)]TJ/F11 9.9626 Tf 274.665 0 Td [(id)]TJ 0 g 0 G /F27 9.9626 Tf -289.609 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -15363,59 +15934,59 @@ BT 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(id)]TJ 0 g 0 G -/F8 9.9626 Tf 14.529 0 Td [(Iden)28(ti\014er)-333(of)-334(a)-333(pro)-28(cess)-333(in)-334(the)-333(PSBLAS)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ 10.378 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue.)-444(0)]TJ/F14 9.9626 Tf 142.05 0 Td [(\024)]TJ/F11 9.9626 Tf 10.516 0 Td [(id)]TJ/F14 9.9626 Tf 11.385 0 Td [(\024)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.207 0 Td [(\000)]TJ/F8 9.9626 Tf 9.962 0 Td [(1)]TJ +/F8 9.9626 Tf 14.529 0 Td [(Iden)28(ti\014er)-333(of)-334(a)-333(pro)-28(cess)-333(in)-334(the)-333(PSBLAS)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ 10.378 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)-444(0)]TJ/F14 9.9626 Tf 142.051 0 Td [(\024)]TJ/F11 9.9626 Tf 10.516 0 Td [(id)]TJ/F14 9.9626 Tf 11.385 0 Td [(\024)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1)]TJ 0 g 0 G -/F27 9.9626 Tf -222.543 -21.918 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -222.544 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(rank)]TJ 0 g 0 G -/F8 9.9626 Tf 27.681 0 Td [(The)-333(MPI)-334(rank)-333(asso)-28(ciated)-333(with)-333(the)-334(PSBLAS)-333(pro)-28(cess)]TJ/F11 9.9626 Tf 230.248 0 Td [(id)]TJ/F8 9.9626 Tf 8.617 0 Td [(.)]TJ -241.639 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ +/F8 9.9626 Tf 27.681 0 Td [(The)-333(MPI)-334(rank)-333(asso)-28(ciated)-333(with)-333(the)-334(PSBLAS)-333(pro)-28(cess)]TJ/F11 9.9626 Tf 230.248 0 Td [(id)]TJ/F8 9.9626 Tf 8.618 0 Td [(.)]TJ -241.64 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ 0 g 0 G - 91.933 -322.333 Td [(96)]TJ + 91.933 -322.333 Td [(97)]TJ 0 g 0 G ET endstream endobj -1340 0 obj << +1372 0 obj << /Type /Page -/Contents 1341 0 R -/Resources 1339 0 R +/Contents 1373 0 R +/Resources 1371 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1315 0 R +/Parent 1375 0 R >> endobj -1342 0 obj << -/D [1340 0 R /XYZ 150.705 740.998 null] +1374 0 obj << +/D [1372 0 R /XYZ 99.895 740.998 null] >> endobj -350 0 obj << -/D [1340 0 R /XYZ 150.705 697.37 null] +354 0 obj << +/D [1372 0 R /XYZ 99.895 697.37 null] >> endobj -1339 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F11 649 0 R /F27 477 0 R /F14 667 0 R >> +1371 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F11 654 0 R /F27 481 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1345 0 obj << -/Length 1180 +1378 0 obj << +/Length 1201 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(wtime)-375(|)-375(W)94(all)-375(clo)-32(c)32(k)-375(timing)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(wtime)-375(|)-375(W)94(all)-375(clo)-31(c)31(k)-375(timing)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(time)-525(=)-525(psb_wtime\050\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-474(function)-473(returns)-474(a)-473(w)27(all)-473(clo)-28(c)28(k)-474(timer.)-865(The)-474(resolution)-473(of)-474(the)-473(timer)-474(is)]TJ -14.944 -11.955 Td [(dep)-28(enden)28(t)-333(on)-334(the)-333(underlying)-333(parallel)-333(en)27(vir)1(onme)-1(n)28(t)-333(implemen)28(tation.)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(time)-525(=)-525(psb_wtime\050\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-474(fun)1(c)-1(ti)1(o)-1(n)-473(returns)-474(a)-473(w)28(all)-474(clo)-28(c)28(k)-474(timer.)-865(The)-474(resolution)-473(of)-474(the)-473(timer)-474(is)]TJ -14.944 -11.955 Td [(dep)-28(enden)28(t)-333(on)-334(th)1(e)-334(underlying)-333(parallel)-333(en)28(vironmen)27(t)-333(implemen)28(tation.)]TJ 0 g 0 G /F27 9.9626 Tf 0 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -15426,48 +15997,48 @@ BT 0 g 0 G 0 -19.925 Td [(F)96(unction)-384(v)64(alue)]TJ 0 g 0 G -/F8 9.9626 Tf 78.387 0 Td [(the)-333(elapsed)-334(time)-333(in)-333(seconds.)]TJ -53.48 -11.955 Td [(Returned)-333(as:)-445(a)]TJ/F30 9.9626 Tf 68.3 0 Td [(real\050psb_dpk_\051)]TJ/F8 9.9626 Tf 76.545 0 Td [(v)56(ariable.)]TJ +/F8 9.9626 Tf 78.386 0 Td [(the)-333(elapsed)-334(time)-333(in)-333(sec)-1(on)1(ds.)]TJ -53.479 -11.955 Td [(Returned)-333(as:)-445(a)]TJ/F30 9.9626 Tf 68.299 0 Td [(real\050psb_dpk_\051)]TJ/F8 9.9626 Tf 76.546 0 Td [(v)56(ariable.)]TJ 0 g 0 G - -2.877 -491.698 Td [(97)]TJ + -2.878 -491.698 Td [(98)]TJ 0 g 0 G ET endstream endobj -1344 0 obj << +1377 0 obj << /Type /Page -/Contents 1345 0 R -/Resources 1343 0 R +/Contents 1378 0 R +/Resources 1376 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1347 0 R +/Parent 1375 0 R >> endobj -1346 0 obj << -/D [1344 0 R /XYZ 99.895 740.998 null] +1379 0 obj << +/D [1377 0 R /XYZ 150.705 740.998 null] >> endobj -354 0 obj << -/D [1344 0 R /XYZ 99.895 697.37 null] +358 0 obj << +/D [1377 0 R /XYZ 150.705 697.37 null] >> endobj -1343 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R >> +1376 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1350 0 obj << -/Length 1473 +1382 0 obj << +/Length 1483 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(barrier)-375(|)-375(Sinc)31(hronization)-375(p)-31(oin)31(t)-375(parallel)-375(en)32(vironmen)31(t)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(barrier)-375(|)-375(Sinc)31(hronization)-375(p)-31(oin)31(t)-375(parallel)-375(en)32(vironmen)31(t)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_barrier\050icontxt\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-398(subroutine)-397(acts)-398(as)-398(an)-398(explicit)-398(sync)28(hronization)-397(p)-28(oin)28(t)-398(for)-398(the)-398(PSBLAS)]TJ -14.944 -11.955 Td [(parallel)-333(virtual)-333(mac)27(hine.)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_barrier\050icontxt\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-398(subroutine)-397(ac)-1(t)1(s)-398(as)-398(an)-398(explicit)-398(sync)28(hronization)-397(p)-28(oin)28(t)-398(for)-398(the)-398(PSBLAS)]TJ -14.944 -11.955 Td [(parallel)-333(virtual)-333(m)-1(ac)28(hine.)]TJ 0 g 0 G /F27 9.9626 Tf 0 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -15478,48 +16049,48 @@ BT 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G - 141.967 -455.832 Td [(98)]TJ + 141.968 -455.832 Td [(99)]TJ 0 g 0 G ET endstream endobj -1349 0 obj << +1381 0 obj << /Type /Page -/Contents 1350 0 R -/Resources 1348 0 R +/Contents 1382 0 R +/Resources 1380 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1347 0 R +/Parent 1375 0 R >> endobj -1351 0 obj << -/D [1349 0 R /XYZ 150.705 740.998 null] +1383 0 obj << +/D [1381 0 R /XYZ 99.895 740.998 null] >> endobj -358 0 obj << -/D [1349 0 R /XYZ 150.705 697.37 null] +362 0 obj << +/D [1381 0 R /XYZ 99.895 697.37 null] >> endobj -1348 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R >> +1380 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1354 0 obj << -/Length 1359 +1386 0 obj << +/Length 1357 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(ab)-31(ort)-375(|)-375(Ab)-32(ort)-375(a)-374(computation)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(ab)-31(ort)-375(|)-375(Ab)-31(ort)-375(a)-375(computation)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_abort\050icontxt\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-333(subroutine)-334(ab)-27(orts)-334(computation)-333(on)-333(the)-334(paral)1(le)-1(l)-333(virtual)-333(mac)28(hine.)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_abort\050icontxt\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-333(subroutine)-334(ab)-27(orts)-334(computation)-333(on)-333(the)-334(p)1(arallel)-334(virtual)-333(mac)28(hine.)]TJ 0 g 0 G /F27 9.9626 Tf -14.944 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -15530,48 +16101,48 @@ BT 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G - 141.968 -467.787 Td [(99)]TJ + 139.476 -467.787 Td [(100)]TJ 0 g 0 G ET endstream endobj -1353 0 obj << +1385 0 obj << /Type /Page -/Contents 1354 0 R -/Resources 1352 0 R +/Contents 1386 0 R +/Resources 1384 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1347 0 R +/Parent 1375 0 R >> endobj -1355 0 obj << -/D [1353 0 R /XYZ 99.895 740.998 null] +1387 0 obj << +/D [1385 0 R /XYZ 150.705 740.998 null] >> endobj -362 0 obj << -/D [1353 0 R /XYZ 99.895 697.37 null] +366 0 obj << +/D [1385 0 R /XYZ 150.705 697.37 null] >> endobj -1352 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R >> +1384 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1358 0 obj << -/Length 4533 +1390 0 obj << +/Length 4552 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(b)-31(cast)-375(|)-375(Broadcast)-375(data)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(b)-31(cast)-375(|)-375(Broadcast)-375(data)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_bcast\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-338(subroutine)-338(implemen)27(ts)-338(a)-338(broadcast)-338(op)-28(eration)-338(based)-339(on)-338(the)-338(underlying)]TJ -14.944 -11.955 Td [(comm)28(unication)-334(lib)1(rary)83(.)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_bcast\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-338(subroutine)-338(impleme)-1(n)28(ts)-338(a)-338(broadcast)-339(op)-27(eration)-338(base)-1(d)-338(on)-338(the)-338(underlying)]TJ -14.944 -11.955 Td [(comm)28(unication)-334(libr)1(ary)83(.)]TJ 0 g 0 G /F27 9.9626 Tf 0 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -15582,63 +16153,63 @@ BT 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.371 0 Td [(On)-333(the)-334(ro)-27(ot)-334(pro)-27(ces)-1(s,)-333(the)-333(data)-334(to)-333(b)-28(e)-333(broadcast.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(tege)-1(r,)-341(real)-339(or)-340(complex)-340(v)56(ariable,)-342(whic)28(h)-339(m)-1(a)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-403(a)-403(rank)-404(1)-403(or)-403(2)-403(arra)28(y)83(,)-421(or)-403(a)-403(c)28(haracter)-404(or)-403(logical)-403(v)56(ariable,)-421(whic)28(h)-403(ma)27(y)-403(b)-28(e)]TJ 0 -11.955 Td [(a)-426(s)-1(calar)-426(or)-426(rank)-427(1)-426(arra)27(y)84(.)-1151(T)28(yp)-28(e,)-449(kind,)-450(rank)-427(and)-426(size)-427(m)28(ust)-426(agree)-427(on)-426(all)]TJ 0 -11.955 Td [(pro)-28(cesses.)]TJ +/F8 9.9626 Tf 21.371 0 Td [(On)-333(the)-334(ro)-27(ot)-334(pro)-27(ce)-1(ss,)-333(the)-333(data)-334(to)-333(b)-28(e)-333(broadcast.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(te)-1(ger,)-341(real)-340(or)-339(complex)-340(v)56(ariable,)-342(whic)28(h)-340(ma)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-403(a)-403(rank)-404(1)-403(or)-403(2)-403(arra)28(y)83(,)-421(or)-403(a)-403(c)28(haracter)-404(or)-403(logical)-403(v)56(ariable,)-421(whic)28(h)-403(ma)27(y)-403(b)-28(e)]TJ 0 -11.955 Td [(a)-427(scalar)-426(or)-427(ran)1(k)-427(1)-426(arra)27(y)84(.)-1151(T)28(yp)-28(e,)-450(ki)1(nd,)-450(rank)-427(and)-426(size)-427(m)28(ust)-426(agree)-427(on)-426(all)]TJ 0 -11.955 Td [(pro)-28(cesses.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.926 Td [(ro)-32(ot)]TJ 0 g 0 G -/F8 9.9626 Tf 25.93 0 Td [(Ro)-28(ot)-333(pro)-28(cess)-333(holding)-334(data)-333(to)-333(b)-28(e)-333(broadcast.)]TJ -1.023 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue)-333(0)]TJ/F11 9.9626 Tf 138.176 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(r)-28(oot)-278(<)]TJ/F8 9.9626 Tf 28.543 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.207 0 Td [(\000)]TJ/F8 9.9626 Tf 9.962 0 Td [(1,)-333(default)-334(0)]TJ +/F8 9.9626 Tf 25.931 0 Td [(Ro)-28(ot)-333(pro)-28(cess)-333(holding)-334(d)1(ata)-334(to)-333(b)-28(e)-333(broadcast.)]TJ -1.024 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)-333(0)]TJ/F11 9.9626 Tf 138.176 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(r)-28(oot)-278(<)]TJ/F8 9.9626 Tf 28.544 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1,)-333(default)-334(0)]TJ 0 g 0 G -/F27 9.9626 Tf -243.576 -21.918 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -243.577 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.371 0 Td [(On)-333(pro)-28(cesses)-334(other)-333(than)-333(ro)-28(ot,)-333(the)-334(dat)1(a)-334(to)-333(b)-28(e)-333(broadcast.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(tege)-1(r,)-341(real)-339(or)-340(complex)-340(v)56(ariable,)-342(whic)28(h)-339(m)-1(a)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-346(a)-346(rank)-347(1)-346(or)-346(2)-346(arra)28(y)83(,)-349(or)-347(a)-346(c)28(haracter)-346(or)-346(logical)-347(scalar.)-829(T)28(yp)-28(e,)-349(kind,)-350(rank)]TJ 0 -11.956 Td [(and)-333(size)-334(m)28(ust)-333(agree)-334(on)-333(all)-333(pro)-28(cesses.)]TJ +/F8 9.9626 Tf 21.372 0 Td [(On)-333(pro)-28(cesses)-334(oth)1(e)-1(r)-333(than)-333(ro)-28(ot,)-333(the)-333(data)-334(to)-333(b)-28(e)-333(broadcast.)]TJ 3.535 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(te)-1(ger,)-341(real)-340(or)-339(complex)-340(v)56(ariable,)-342(whic)28(h)-340(ma)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-346(a)-346(rank)-347(1)-346(or)-346(2)-346(arra)28(y)83(,)-349(or)-347(a)-346(c)28(haracter)-346(or)-347(l)1(ogic)-1(al)-346(scalar.)-829(T)28(yp)-28(e,)-350(k)1(ind,)-350(rank)]TJ 0 -11.956 Td [(and)-333(size)-334(m)28(ust)-333(agree)-334(on)-333(all)-333(pro)-28(cesses.)]TJ 0 g 0 G - 139.477 -170.9 Td [(100)]TJ + 139.477 -170.9 Td [(101)]TJ 0 g 0 G ET endstream endobj -1357 0 obj << +1389 0 obj << /Type /Page -/Contents 1358 0 R -/Resources 1356 0 R +/Contents 1390 0 R +/Resources 1388 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1347 0 R +/Parent 1375 0 R >> endobj -1359 0 obj << -/D [1357 0 R /XYZ 150.705 740.998 null] +1391 0 obj << +/D [1389 0 R /XYZ 99.895 740.998 null] >> endobj -366 0 obj << -/D [1357 0 R /XYZ 150.705 697.37 null] +370 0 obj << +/D [1389 0 R /XYZ 99.895 697.37 null] >> endobj -1356 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +1388 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1362 0 obj << -/Length 5146 +1394 0 obj << +/Length 5199 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(sum)-375(|)-375(Global)-375(sum)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(sum)-375(|)-375(Global)-375(sum)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_sum\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-318(subroutine)-319(implemen)28(ts)-318(a)-319(sum)-318(reduction)-318(op)-28(eration)-318(based)-319(on)-318(the)-318(under-)]TJ -14.944 -11.955 Td [(lying)-333(comm)27(unication)-333(library)84(.)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_sum\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-318(subroutine)-319(impl)1(e)-1(men)28(ts)-318(a)-318(s)-1(u)1(m)-319(reduction)-318(op)-28(eration)-318(based)-318(on)-319(the)-318(under-)]TJ -14.944 -11.955 Td [(lying)-333(comm)27(un)1(ic)-1(ati)1(on)-334(library)84(.)]TJ 0 g 0 G /F27 9.9626 Tf 0 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -15649,77 +16220,77 @@ BT 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.371 0 Td [(The)-333(lo)-28(cal)-334(con)28(tribution)-333(to)-333(the)-334(global)-333(sum.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(te)-1(ger,)-341(real)-340(or)-339(complex)-340(v)56(ariable,)-342(whic)28(h)-340(ma)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-464(a)-464(rank)-463(1)-464(or)-464(2)-464(arra)28(y)83(.)-1299(T)28(yp)-28(e,)-497(kind,)-496(rank)-464(and)-463(size)-464(m)27(ust)-463(agree)-464(on)-464(all)]TJ 0 -11.955 Td [(pro)-28(cesses.)]TJ +/F8 9.9626 Tf 21.371 0 Td [(The)-333(lo)-28(cal)-333(c)-1(on)28(tribution)-333(to)-333(the)-334(gl)1(obal)-334(sum.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(tege)-1(r,)-341(real)-339(or)-340(complex)-340(v)56(ariable,)-342(whic)28(h)-339(m)-1(a)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-464(a)-464(ran)1(k)-464(1)-464(or)-464(2)-464(arra)28(y)83(.)-1299(T)28(yp)-28(e,)-497(kind)1(,)-497(rank)-464(and)-463(size)-464(m)27(ust)-463(agree)-464(on)-464(all)]TJ 0 -11.955 Td [(pro)-28(cesses.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.926 Td [(ro)-32(ot)]TJ 0 g 0 G -/F8 9.9626 Tf 25.931 0 Td [(Pro)-28(cess)-310(to)-309(hold)-310(the)-310(\014nal)-310(sum,)-314(or)]TJ/F14 9.9626 Tf 144.053 0 Td [(\000)]TJ/F8 9.9626 Tf 7.748 0 Td [(1)-310(to)-310(mak)28(e)-310(it)-309(a)27(v)56(ailable)-310(on)-310(all)-309(pro)-28(cesses.)]TJ -152.825 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)]TJ/F14 9.9626 Tf 130.428 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)]TJ/F11 9.9626 Tf 7.748 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(r)-28(oot)-278(<)]TJ/F8 9.9626 Tf 28.543 0 Td [(=)]TJ/F11 9.9626 Tf 10.517 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.962 0 Td [(1,)-333(default)-334(-1.)]TJ +/F8 9.9626 Tf 25.93 0 Td [(Pro)-28(cess)-310(to)-309(hold)-310(the)-310(\014nal)-310(sum,)-314(or)]TJ/F14 9.9626 Tf 144.053 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)-310(to)-310(mak)28(e)-310(it)-309(a)27(v)56(ailable)-310(on)-310(al)1(l)-310(pro)-28(cesses.)]TJ -152.825 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue)]TJ/F14 9.9626 Tf 130.427 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)]TJ/F11 9.9626 Tf 7.749 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(r)-28(oot)-278(<)]TJ/F8 9.9626 Tf 28.543 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1,)-333(default)-334(-1.)]TJ 0 g 0 G /F27 9.9626 Tf -251.325 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.372 0 Td [(On)-333(destination)-333(pro)-28(cess\050es\051,)-334(the)-333(result)-333(of)-334(the)-333(sum)-333(op)-28(eration.)]TJ 3.535 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -71.51 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(te)-1(ger,)-341(real)-340(or)-339(complex)-340(v)56(ariable,)-342(whic)28(h)-340(ma)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-333(a)-334(rank)-333(1)-333(or)-334(2)-333(arra)28(y)83(.)]TJ 0 -11.955 Td [(T)28(yp)-28(e,)-333(kind,)-334(r)1(ank)-334(and)-333(size)-333(m)27(ust)-333(agree)-333(on)-334(all)-333(pro)-28(cesses.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F8 9.9626 Tf 21.371 0 Td [(On)-333(destination)-334(pr)1(o)-28(cess\050es)-1(\051,)-333(the)-333(result)-333(of)-334(the)-333(sum)-333(op)-28(eration.)]TJ 3.536 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(tege)-1(r,)-341(real)-339(o)-1(r)-339(complex)-340(v)56(ariable,)-342(whic)28(h)-339(m)-1(a)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-333(a)-334(rank)-333(1)-333(or)-333(2)-334(arra)28(y)83(.)]TJ 0 -11.955 Td [(T)28(yp)-28(e,)-333(kind,)-333(rank)-334(and)-333(size)-333(m)27(ust)-333(agree)-333(on)-334(all)-333(pro)-28(cesses.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G /F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)]TJ/F30 9.9626 Tf 32.469 0 Td [(dat)]TJ/F8 9.9626 Tf 18.273 0 Td [(argumen)28(t)-259(is)-259(b)-28(oth)-259(input)-259(and)-259(output,)-274(and)-259(its)-259(v)55(alue)-259(ma)28(y)-259(b)-28(e)-259(c)28(hanged)]TJ -38.012 -11.956 Td [(ev)28(en)-334(on)-333(pro)-28(cesses)-333(di\013eren)28(t)-334(from)-333(the)-333(\014nal)-334(result)-333(destination.)]TJ + [-500(The)]TJ/F30 9.9626 Tf 32.469 0 Td [(dat)]TJ/F8 9.9626 Tf 18.272 0 Td [(argumen)28(t)-259(is)-259(b)-28(oth)-259(input)-259(and)-259(output,)-274(and)-259(its)-259(v)55(alue)-259(ma)28(y)-259(b)-28(e)-259(c)28(hanged)]TJ -38.011 -11.956 Td [(ev)28(en)-334(on)-333(pro)-28(cesses)-333(di\013eren)28(t)-334(from)-333(the)-333(\014nal)-334(result)-333(destination.)]TJ 0 g 0 G -12.73 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F30 9.9626 Tf 33.209 0 Td [(dat)]TJ/F8 9.9626 Tf 19.012 0 Td [(argumen)28(t)-333(m)-1(a)28(y)-333(also)-333(b)-28(e)-334(a)-333(long)-333(in)28(teger)-334(scalar.)]TJ + [-500(The)]TJ/F30 9.9626 Tf 33.208 0 Td [(dat)]TJ/F8 9.9626 Tf 19.012 0 Td [(argumen)28(t)-334(ma)28(y)-333(also)-334(b)-27(e)-334(a)-333(long)-333(in)28(teger)-334(scalar.)]TJ 0 g 0 G - 99.986 -109.132 Td [(101)]TJ + 99.987 -109.132 Td [(102)]TJ 0 g 0 G ET endstream endobj -1361 0 obj << +1393 0 obj << /Type /Page -/Contents 1362 0 R -/Resources 1360 0 R +/Contents 1394 0 R +/Resources 1392 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1347 0 R +/Parent 1375 0 R >> endobj -1363 0 obj << -/D [1361 0 R /XYZ 99.895 740.998 null] +1395 0 obj << +/D [1393 0 R /XYZ 150.705 740.998 null] >> endobj -370 0 obj << -/D [1361 0 R /XYZ 99.895 697.37 null] +374 0 obj << +/D [1393 0 R /XYZ 150.705 697.37 null] >> endobj -1364 0 obj << -/D [1361 0 R /XYZ 99.895 247.391 null] +1396 0 obj << +/D [1393 0 R /XYZ 150.705 247.391 null] >> endobj -1365 0 obj << -/D [1361 0 R /XYZ 99.895 213.573 null] +1397 0 obj << +/D [1393 0 R /XYZ 150.705 213.573 null] >> endobj -1360 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F14 667 0 R /F11 649 0 R >> +1392 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1368 0 obj << -/Length 5185 +1400 0 obj << +/Length 5151 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(max)-375(|)-375(Global)-375(maxim)31(um)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(max)-375(|)-375(Global)-375(maxim)31(um)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_max\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-326(subroutine)-326(implemen)28(ts)-326(a)-326(maxim)27(um)-326(v)56(aluereduction)-326(op)-28(eration)-326(based)-326(on)]TJ -14.944 -11.955 Td [(the)-333(underlying)-333(com)-1(m)28(unication)-333(library)83(.)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_max\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-326(subroutine)-326(implemen)28(ts)-326(a)-326(maxim)27(um)-326(v)56(aluereduction)-326(op)-28(eration)-326(based)-326(on)]TJ -14.944 -11.955 Td [(the)-333(underlying)-334(comm)28(unication)-333(library)83(.)]TJ 0 g 0 G /F27 9.9626 Tf 0 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -15730,77 +16301,77 @@ BT 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.371 0 Td [(The)-333(lo)-28(cal)-333(c)-1(on)28(tribution)-333(to)-333(the)-334(gl)1(obal)-334(maxim)28(um.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-326(as:)-442(an)-326(in)27(teger)-326(or)-327(real)-327(v)56(ariable,)-328(whic)28(h)-327(ma)28(y)-327(b)-28(e)-327(a)-326(s)-1(calar,)-328(or)-326(a)-327(rank)]TJ 0 -11.955 Td [(1)-333(or)-334(2)-333(arra)28(y)83(.)-778(T)28(yp)-27(e)-1(,)-333(kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(cesse)-1(s.)]TJ +/F8 9.9626 Tf 21.371 0 Td [(The)-333(lo)-28(cal)-334(con)28(tribution)-333(to)-333(the)-334(global)-333(maxim)28(um.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-326(as)-1(:)-441(an)-326(in)27(teger)-326(or)-327(real)-327(v)56(ariable,)-328(whic)28(h)-327(ma)28(y)-327(b)-28(e)-327(a)-327(scalar,)-328(or)-326(a)-327(rank)]TJ 0 -11.955 Td [(1)-333(or)-334(2)-333(arra)28(y)83(.)-778(T)28(yp)-28(e,)-333(kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(cess)-1(es.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(ro)-32(ot)]TJ 0 g 0 G -/F8 9.9626 Tf 25.93 0 Td [(Pro)-28(cess)-305(to)-306(hold)-305(the)-305(\014nal)-305(m)-1(ax)1(im)27(um,)-311(or)]TJ/F14 9.9626 Tf 169.158 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)-305(to)-306(mak)28(e)-305(it)-306(a)28(v)56(ailable)-306(on)-305(all)-305(pro-)]TJ -177.93 -11.956 Td [(cesses.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)]TJ/F14 9.9626 Tf 130.427 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)]TJ/F11 9.9626 Tf 7.749 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(r)-28(oot)-278(<)]TJ/F8 9.9626 Tf 28.543 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1,)-333(default)-334(-1.)]TJ +/F8 9.9626 Tf 25.931 0 Td [(Pro)-28(cess)-305(to)-306(hold)-305(the)-305(\014nal)-305(maxim)27(um,)-311(or)]TJ/F14 9.9626 Tf 169.157 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)-305(to)-306(mak)28(e)-305(it)-306(a)28(v)56(ailable)-306(on)-305(all)-305(pro-)]TJ -177.93 -11.956 Td [(cesses.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)]TJ/F14 9.9626 Tf 130.428 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)]TJ/F11 9.9626 Tf 7.748 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(r)-28(oot)-278(<)]TJ/F8 9.9626 Tf 28.543 0 Td [(=)]TJ/F11 9.9626 Tf 10.517 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.962 0 Td [(1,)-333(default)-334(-1.)]TJ 0 g 0 G /F27 9.9626 Tf -251.325 -33.873 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.371 0 Td [(On)-333(destination)-334(pr)1(o)-28(cess\050es)-1(\051,)-333(the)-333(result)-333(of)-334(the)-333(maxim)28(um)-334(op)-27(eration.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-326(as)-1(:)-441(an)-326(in)27(teger)-326(or)-327(real)-327(v)56(ariable,)-328(whic)28(h)-327(ma)28(y)-327(b)-28(e)-327(a)-326(s)-1(calar,)-328(or)-326(a)-327(rank)]TJ 0 -11.955 Td [(1)-333(or)-334(2)-333(arra)28(y)83(.)-778(T)28(yp)-27(e)-1(,)-333(kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(cesse)-1(s.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F8 9.9626 Tf 21.372 0 Td [(On)-333(destination)-333(pro)-28(cess\050es\051,)-334(the)-333(result)-333(of)-334(the)-333(maxim)28(um)-334(op)-27(eration.)]TJ 3.535 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -71.51 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-326(as)-1(:)-441(an)-326(in)27(teger)-326(or)-327(real)-327(v)56(ariable,)-328(whic)28(h)-327(ma)28(y)-327(b)-28(e)-327(a)-327(scalar,)-328(or)-326(a)-327(rank)]TJ 0 -11.955 Td [(1)-333(or)-334(2)-333(arra)28(y)83(.)-778(T)28(yp)-28(e,)-333(kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(cess)-1(es.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G /F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)]TJ/F30 9.9626 Tf 32.469 0 Td [(dat)]TJ/F8 9.9626 Tf 18.272 0 Td [(argumen)28(t)-259(is)-259(b)-28(oth)-259(input)-259(and)-259(output,)-274(and)-259(its)-259(v)55(alue)-259(ma)28(y)-259(b)-28(e)-259(c)28(hanged)]TJ -38.011 -11.956 Td [(ev)28(en)-334(on)-333(pro)-28(cesses)-333(di\013eren)28(t)-334(from)-333(the)-333(\014nal)-334(result)-333(destination.)]TJ + [-500(The)]TJ/F30 9.9626 Tf 32.469 0 Td [(dat)]TJ/F8 9.9626 Tf 18.273 0 Td [(argumen)28(t)-259(is)-259(b)-28(oth)-259(input)-259(and)-259(output,)-274(and)-259(its)-259(v)55(alue)-259(ma)28(y)-259(b)-28(e)-259(c)28(hanged)]TJ -38.012 -11.956 Td [(ev)28(en)-334(on)-333(pro)-28(cesses)-333(di\013eren)28(t)-334(from)-333(the)-333(\014nal)-334(result)-333(destination.)]TJ 0 g 0 G -12.73 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F30 9.9626 Tf 33.208 0 Td [(dat)]TJ/F8 9.9626 Tf 19.012 0 Td [(argumen)28(t)-334(ma)28(y)-333(also)-334(b)-27(e)-334(a)-333(long)-333(in)28(teger)-334(scalar.)]TJ + [-500(The)]TJ/F30 9.9626 Tf 33.209 0 Td [(dat)]TJ/F8 9.9626 Tf 19.012 0 Td [(argumen)28(t)-333(m)-1(a)28(y)-333(also)-333(b)-28(e)-334(a)-333(long)-333(in)28(teger)-334(scalar.)]TJ 0 g 0 G - 99.987 -109.132 Td [(102)]TJ + 99.986 -109.132 Td [(103)]TJ 0 g 0 G ET endstream endobj -1367 0 obj << +1399 0 obj << /Type /Page -/Contents 1368 0 R -/Resources 1366 0 R +/Contents 1400 0 R +/Resources 1398 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1347 0 R +/Parent 1404 0 R >> endobj -1369 0 obj << -/D [1367 0 R /XYZ 150.705 740.998 null] +1401 0 obj << +/D [1399 0 R /XYZ 99.895 740.998 null] >> endobj -374 0 obj << -/D [1367 0 R /XYZ 150.705 697.37 null] +378 0 obj << +/D [1399 0 R /XYZ 99.895 697.37 null] >> endobj -1370 0 obj << -/D [1367 0 R /XYZ 150.705 247.391 null] +1402 0 obj << +/D [1399 0 R /XYZ 99.895 247.391 null] >> endobj -1371 0 obj << -/D [1367 0 R /XYZ 150.705 213.573 null] +1403 0 obj << +/D [1399 0 R /XYZ 99.895 213.573 null] >> endobj -1366 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F14 667 0 R /F11 649 0 R >> +1398 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1374 0 obj << -/Length 5160 +1407 0 obj << +/Length 5183 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(min)-375(|)-375(Global)-375(minim)31(um)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(min)-375(|)-375(Global)-375(minim)31(um)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_min\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-311(subroutine)-312(implemen)28(ts)-311(a)-312(minim)28(um)-312(v)56(alue)-311(reduction)-312(op)-27(eration)-312(based)-311(on)]TJ -14.944 -11.955 Td [(the)-333(underlying)-334(comm)28(unication)-333(library)83(.)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_min\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-311(subroutine)-312(implemen)28(ts)-311(a)-312(minim)28(um)-311(v)55(alue)-311(reduction)-312(op)-27(eration)-312(based)-311(on)]TJ -14.944 -11.955 Td [(the)-333(underlying)-333(com)-1(m)28(unication)-333(library)83(.)]TJ 0 g 0 G /F27 9.9626 Tf 0 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -15811,74 +16382,74 @@ BT 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.371 0 Td [(The)-333(lo)-28(cal)-334(con)28(tribution)-333(to)-333(the)-334(global)-333(minim)28(um.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-326(as)-1(:)-441(an)-326(in)27(teger)-326(or)-327(real)-327(v)56(ariable,)-328(whic)28(h)-327(ma)28(y)-327(b)-28(e)-327(a)-327(scalar,)-328(or)-326(a)-327(rank)]TJ 0 -11.955 Td [(1)-333(or)-334(2)-333(arra)28(y)83(.)-778(T)28(yp)-28(e,)-333(kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(cess)-1(es.)]TJ +/F8 9.9626 Tf 21.371 0 Td [(The)-333(lo)-28(cal)-333(c)-1(on)28(tribution)-333(to)-333(the)-334(gl)1(obal)-334(minim)28(um.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-326(as:)-442(an)-326(in)27(teger)-326(or)-327(real)-327(v)56(ariable,)-328(whic)28(h)-327(ma)28(y)-327(b)-28(e)-327(a)-326(s)-1(calar,)-328(or)-326(a)-327(rank)]TJ 0 -11.955 Td [(1)-333(or)-334(2)-333(arra)28(y)83(.)-778(T)28(yp)-27(e)-1(,)-333(kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(cesse)-1(s.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(ro)-32(ot)]TJ 0 g 0 G -/F8 9.9626 Tf 25.931 0 Td [(Pro)-28(cess)-276(to)-276(hold)-276(the)-276(\014nal)-275(v)55(alue,)-287(or)]TJ/F14 9.9626 Tf 146.411 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)-276(to)-276(mak)28(e)-276(it)-276(a)28(v)55(ailable)-276(on)-276(all)-276(p)1(ro)-28(cesses.)]TJ -155.184 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)]TJ/F14 9.9626 Tf 130.428 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)]TJ/F11 9.9626 Tf 7.748 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(r)-28(oot)-278(<)]TJ/F8 9.9626 Tf 28.543 0 Td [(=)]TJ/F11 9.9626 Tf 10.517 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.962 0 Td [(1,)-333(default)-334(-1.)]TJ +/F8 9.9626 Tf 25.93 0 Td [(Pro)-28(cess)-276(to)-276(hold)-276(the)-276(\014nal)-276(v)56(alue,)-287(or)]TJ/F14 9.9626 Tf 146.411 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)-276(to)-276(mak)28(e)-276(it)-276(a)28(v)55(ailable)-276(on)-276(all)-276(pr)1(o)-28(cesses)-1(.)]TJ -155.183 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue)]TJ/F14 9.9626 Tf 130.427 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)]TJ/F11 9.9626 Tf 7.749 0 Td [(<)]TJ/F8 9.9626 Tf 7.748 0 Td [(=)]TJ/F11 9.9626 Tf 10.517 0 Td [(r)-28(oot)-278(<)]TJ/F8 9.9626 Tf 28.543 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1,)-333(default)-334(-1.)]TJ 0 g 0 G /F27 9.9626 Tf -251.325 -33.873 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.372 0 Td [(On)-333(destination)-333(pro)-28(cess\050es\051,)-334(the)-333(result)-333(of)-334(the)-333(minim)28(um)-334(op)-27(eration.)]TJ 3.535 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -71.51 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-326(as)-1(:)-441(an)-326(in)27(teger)-326(or)-327(real)-327(v)56(ariable,)-328(whic)28(h)-327(ma)28(y)-327(b)-28(e)-327(a)-327(scalar,)-328(or)-326(a)-327(rank)]TJ 0 -11.955 Td [(1)-333(or)-334(2)-333(arra)28(y)83(.)]TJ 0 -11.955 Td [(T)28(yp)-28(e,)-333(kind,)-334(r)1(ank)-334(and)-333(size)-333(m)27(ust)-333(agree)-333(on)-334(all)-333(pro)-28(cesses.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F8 9.9626 Tf 21.371 0 Td [(On)-333(destination)-334(p)1(ro)-28(cess\050es)-1(\051)1(,)-334(the)-333(result)-333(of)-334(the)-333(minim)28(um)-334(op)-27(eration.)]TJ 3.536 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-326(as:)-442(an)-326(in)27(teger)-326(or)-327(real)-327(v)56(ariable,)-328(whic)28(h)-327(ma)28(y)-327(b)-28(e)-327(a)-326(s)-1(calar,)-328(or)-326(a)-327(rank)]TJ 0 -11.955 Td [(1)-333(or)-334(2)-333(arra)28(y)83(.)]TJ 0 -11.955 Td [(T)28(yp)-28(e,)-333(kind,)-333(rank)-334(and)-333(size)-333(m)27(ust)-333(agree)-333(on)-334(all)-333(pro)-28(cesses.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G /F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)]TJ/F30 9.9626 Tf 32.469 0 Td [(dat)]TJ/F8 9.9626 Tf 18.273 0 Td [(argumen)28(t)-259(is)-259(b)-28(oth)-259(input)-259(and)-259(output,)-274(and)-259(its)-259(v)55(alue)-259(ma)28(y)-259(b)-28(e)-259(c)28(hanged)]TJ -38.012 -11.956 Td [(ev)28(en)-334(on)-333(pro)-28(cesses)-333(di\013eren)28(t)-334(from)-333(the)-333(\014nal)-334(result)-333(destination.)]TJ + [-500(The)]TJ/F30 9.9626 Tf 32.469 0 Td [(dat)]TJ/F8 9.9626 Tf 18.272 0 Td [(argumen)28(t)-259(is)-259(b)-28(oth)-259(input)-259(and)-259(output,)-274(and)-259(its)-259(v)55(alue)-259(ma)28(y)-259(b)-28(e)-259(c)28(hanged)]TJ -38.011 -11.956 Td [(ev)28(en)-334(on)-333(pro)-28(cesses)-333(di\013eren)28(t)-334(from)-333(the)-333(\014nal)-334(result)-333(destination.)]TJ 0 g 0 G -12.73 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F30 9.9626 Tf 33.209 0 Td [(dat)]TJ/F8 9.9626 Tf 19.012 0 Td [(argumen)28(t)-333(m)-1(a)28(y)-333(also)-333(b)-28(e)-334(a)-333(long)-333(in)28(teger)-334(scalar.)]TJ + [-500(The)]TJ/F30 9.9626 Tf 33.208 0 Td [(dat)]TJ/F8 9.9626 Tf 19.012 0 Td [(argumen)28(t)-334(ma)28(y)-333(also)-334(b)-27(e)-334(a)-333(long)-333(in)28(teger)-334(scalar.)]TJ 0 g 0 G - 99.986 -109.132 Td [(103)]TJ + 99.987 -109.132 Td [(104)]TJ 0 g 0 G ET endstream endobj -1373 0 obj << +1406 0 obj << /Type /Page -/Contents 1374 0 R -/Resources 1372 0 R +/Contents 1407 0 R +/Resources 1405 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1378 0 R +/Parent 1404 0 R >> endobj -1375 0 obj << -/D [1373 0 R /XYZ 99.895 740.998 null] +1408 0 obj << +/D [1406 0 R /XYZ 150.705 740.998 null] >> endobj -378 0 obj << -/D [1373 0 R /XYZ 99.895 697.37 null] +382 0 obj << +/D [1406 0 R /XYZ 150.705 697.37 null] >> endobj -1376 0 obj << -/D [1373 0 R /XYZ 99.895 247.391 null] +1409 0 obj << +/D [1406 0 R /XYZ 150.705 247.391 null] >> endobj -1377 0 obj << -/D [1373 0 R /XYZ 99.895 213.573 null] +1410 0 obj << +/D [1406 0 R /XYZ 150.705 213.573 null] >> endobj -1372 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F14 667 0 R /F11 649 0 R >> +1405 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1381 0 obj << -/Length 5277 +1413 0 obj << +/Length 5239 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(amx)-375(|)-375(Global)-375(maxim)31(um)-375(absolute)-375(v)63(alue)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(amx)-375(|)-375(Global)-375(maxim)31(um)-375(absolute)-375(v)63(alue)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_amx\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-312(subroutine)-312(implemen)28(ts)-313(a)-312(maxim)28(um)-312(absolute)-312(v)55(alue)-312(reduction)-312(op)-28(eration)]TJ -14.944 -11.955 Td [(based)-333(on)-334(the)-333(underlying)-333(comm)28(unication)-334(library)84(.)]TJ @@ -15892,77 +16463,77 @@ BT 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.371 0 Td [(The)-333(lo)-28(cal)-333(c)-1(on)28(tribution)-333(to)-333(the)-334(gl)1(obal)-334(maxim)28(um.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(tege)-1(r,)-341(real)-339(or)-340(complex)-340(v)56(ariable,)-342(whic)28(h)-339(m)-1(a)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-464(a)-464(ran)1(k)-464(1)-464(or)-464(2)-464(arra)28(y)83(.)-1299(T)28(yp)-28(e,)-497(kind)1(,)-497(rank)-464(and)-463(size)-464(m)27(ust)-463(agree)-464(on)-464(all)]TJ 0 -11.955 Td [(pro)-28(cesses.)]TJ +/F8 9.9626 Tf 21.371 0 Td [(The)-333(lo)-28(cal)-334(con)28(tribution)-333(to)-333(the)-334(global)-333(maxim)28(um.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(te)-1(ger,)-341(real)-340(or)-339(complex)-340(v)56(ariable,)-342(whic)28(h)-340(ma)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-464(a)-464(rank)-463(1)-464(or)-464(2)-464(arra)28(y)83(.)-1299(T)28(yp)-28(e,)-497(kind,)-496(rank)-464(and)-463(size)-464(m)27(ust)-463(agree)-464(on)-464(all)]TJ 0 -11.955 Td [(pro)-28(cesses.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.926 Td [(ro)-32(ot)]TJ 0 g 0 G -/F8 9.9626 Tf 25.93 0 Td [(Pro)-28(cess)-276(to)-276(hold)-276(the)-276(\014nal)-276(v)56(alue,)-287(or)]TJ/F14 9.9626 Tf 146.411 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)-276(to)-276(mak)28(e)-276(it)-276(a)28(v)55(ailable)-276(on)-276(all)-276(pr)1(o)-28(cesses)-1(.)]TJ -155.183 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue)]TJ/F14 9.9626 Tf 130.427 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)]TJ/F11 9.9626 Tf 7.749 0 Td [(<)]TJ/F8 9.9626 Tf 7.748 0 Td [(=)]TJ/F11 9.9626 Tf 10.517 0 Td [(r)-28(oot)-278(<)]TJ/F8 9.9626 Tf 28.543 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1,)-333(default)-334(-1.)]TJ +/F8 9.9626 Tf 25.931 0 Td [(Pro)-28(cess)-276(to)-276(hold)-276(the)-276(\014nal)-275(v)55(alue,)-287(or)]TJ/F14 9.9626 Tf 146.411 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)-276(to)-276(mak)28(e)-276(it)-276(a)28(v)55(ailable)-276(on)-276(all)-276(p)1(ro)-28(cesses.)]TJ -155.184 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)]TJ/F14 9.9626 Tf 130.428 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)]TJ/F11 9.9626 Tf 7.748 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(r)-28(oot)-278(<)]TJ/F8 9.9626 Tf 28.543 0 Td [(=)]TJ/F11 9.9626 Tf 10.517 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.962 0 Td [(1,)-333(default)-334(-1.)]TJ 0 g 0 G /F27 9.9626 Tf -251.325 -33.873 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.371 0 Td [(On)-333(destination)-334(p)1(ro)-28(cess\050es)-1(\051)1(,)-334(the)-333(result)-333(of)-334(the)-333(maxim)28(um)-334(op)-27(eration.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(tege)-1(r,)-341(real)-339(or)-340(complex)-340(v)56(ariable,)-342(whic)28(h)-339(m)-1(a)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-464(a)-464(ran)1(k)-464(1)-464(or)-464(2)-464(arra)28(y)83(.)-1299(T)28(yp)-28(e,)-497(kind)1(,)-497(rank)-464(and)-463(size)-464(m)27(ust)-463(agree)-464(on)-464(all)]TJ 0 -11.956 Td [(pro)-28(cesses.)]TJ/F16 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ +/F8 9.9626 Tf 21.372 0 Td [(On)-333(destination)-333(pro)-28(cess\050es\051,)-334(the)-333(result)-333(of)-334(the)-333(maxim)28(um)-334(op)-27(eration.)]TJ 3.535 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -71.51 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(te)-1(ger,)-341(real)-340(or)-339(complex)-340(v)56(ariable,)-342(whic)28(h)-340(ma)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-464(a)-464(rank)-463(1)-464(or)-464(2)-464(arra)28(y)83(.)-1299(T)28(yp)-28(e,)-497(kind,)-496(rank)-464(and)-463(size)-464(m)27(ust)-463(agree)-464(on)-464(all)]TJ 0 -11.956 Td [(pro)-28(cesses.)]TJ/F16 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ 0 g 0 G /F8 9.9626 Tf 12.177 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(The)]TJ/F30 9.9626 Tf 32.469 0 Td [(dat)]TJ/F8 9.9626 Tf 18.272 0 Td [(argumen)28(t)-259(is)-259(b)-28(oth)-259(input)-259(and)-259(output,)-274(and)-259(its)-259(v)55(alue)-259(ma)28(y)-259(b)-28(e)-259(c)28(hanged)]TJ -38.011 -11.955 Td [(ev)28(en)-334(on)-333(pro)-28(cesses)-333(di\013eren)28(t)-334(from)-333(the)-333(\014nal)-334(result)-333(destination.)]TJ + [-500(The)]TJ/F30 9.9626 Tf 32.469 0 Td [(dat)]TJ/F8 9.9626 Tf 18.273 0 Td [(argumen)28(t)-259(is)-259(b)-28(oth)-259(input)-259(and)-259(output,)-274(and)-259(its)-259(v)55(alue)-259(ma)28(y)-259(b)-28(e)-259(c)28(hanged)]TJ -38.012 -11.955 Td [(ev)28(en)-334(on)-333(pro)-28(cesses)-333(di\013eren)28(t)-334(from)-333(the)-333(\014nal)-334(result)-333(destination.)]TJ 0 g 0 G -12.73 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F30 9.9626 Tf 33.208 0 Td [(dat)]TJ/F8 9.9626 Tf 19.012 0 Td [(argumen)28(t)-334(ma)28(y)-333(also)-334(b)-27(e)-334(a)-333(long)-333(in)28(teger)-334(scalar.)]TJ + [-500(The)]TJ/F30 9.9626 Tf 33.209 0 Td [(dat)]TJ/F8 9.9626 Tf 19.012 0 Td [(argumen)28(t)-333(m)-1(a)28(y)-333(also)-333(b)-28(e)-334(a)-333(long)-333(in)28(teger)-334(scalar.)]TJ 0 g 0 G - 99.987 -97.177 Td [(104)]TJ + 99.986 -97.177 Td [(105)]TJ 0 g 0 G ET endstream endobj -1380 0 obj << +1412 0 obj << /Type /Page -/Contents 1381 0 R -/Resources 1379 0 R +/Contents 1413 0 R +/Resources 1411 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1378 0 R +/Parent 1404 0 R >> endobj -1382 0 obj << -/D [1380 0 R /XYZ 150.705 740.998 null] +1414 0 obj << +/D [1412 0 R /XYZ 99.895 740.998 null] >> endobj -382 0 obj << -/D [1380 0 R /XYZ 150.705 697.37 null] +386 0 obj << +/D [1412 0 R /XYZ 99.895 697.37 null] >> endobj -1383 0 obj << -/D [1380 0 R /XYZ 150.705 235.436 null] +1415 0 obj << +/D [1412 0 R /XYZ 99.895 235.436 null] >> endobj -1384 0 obj << -/D [1380 0 R /XYZ 150.705 201.618 null] +1416 0 obj << +/D [1412 0 R /XYZ 99.895 201.618 null] >> endobj -1379 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F14 667 0 R /F11 649 0 R >> +1411 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1387 0 obj << -/Length 5248 +1419 0 obj << +/Length 5273 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(amn)-375(|)-375(Global)-375(minim)31(um)-375(absolute)-375(v)63(alue)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(amn)-375(|)-375(Global)-375(minim)31(um)-375(absolute)-375(v)63(alue)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_amn\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-336(s)-1(u)1(broutine)-337(implemen)28(ts)-337(a)-336(minim)28(um)-337(absolute)-336(v)55(alue)-336(reduction)-336(op)-28(eration)]TJ -14.944 -11.955 Td [(based)-333(on)-334(the)-333(underlying)-333(comm)28(unication)-334(library)84(.)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_amn\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-336(subroutine)-337(implemen)28(ts)-337(a)-336(minim)28(um)-337(absolute)-336(v)55(al)1(ue)-337(reduction)-336(op)-28(eration)]TJ -14.944 -11.955 Td [(based)-333(on)-334(the)-333(underlying)-333(comm)28(unication)-334(library)84(.)]TJ 0 g 0 G /F27 9.9626 Tf 0 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -15973,100 +16544,100 @@ BT 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.371 0 Td [(The)-333(lo)-28(cal)-334(con)28(tribution)-333(to)-333(the)-334(global)-333(minim)28(um.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(te)-1(ger,)-341(real)-340(or)-339(complex)-340(v)56(ariable,)-342(whic)28(h)-340(ma)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-464(a)-464(rank)-463(1)-464(or)-464(2)-464(arra)28(y)83(.)-1299(T)28(yp)-28(e,)-497(kind,)-496(rank)-464(and)-463(size)-464(m)27(ust)-463(agree)-464(on)-464(all)]TJ 0 -11.955 Td [(pro)-28(cesses.)]TJ +/F8 9.9626 Tf 21.371 0 Td [(The)-333(lo)-28(cal)-333(c)-1(on)28(tribution)-333(to)-333(the)-334(gl)1(obal)-334(minim)28(um.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(tege)-1(r,)-341(real)-339(or)-340(complex)-340(v)56(ariable,)-342(whic)28(h)-339(m)-1(a)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-464(a)-464(ran)1(k)-464(1)-464(or)-464(2)-464(arra)28(y)83(.)-1299(T)28(yp)-28(e,)-497(kind)1(,)-497(rank)-464(and)-463(size)-464(m)27(ust)-463(agree)-464(on)-464(all)]TJ 0 -11.955 Td [(pro)-28(cesses.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.926 Td [(ro)-32(ot)]TJ 0 g 0 G -/F8 9.9626 Tf 25.931 0 Td [(Pro)-28(cess)-276(to)-276(hold)-276(the)-276(\014nal)-275(v)55(alue,)-287(or)]TJ/F14 9.9626 Tf 146.411 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)-276(to)-276(mak)28(e)-276(it)-276(a)28(v)55(ailable)-276(on)-276(all)-276(p)1(ro)-28(cesses.)]TJ -155.184 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)]TJ/F14 9.9626 Tf 130.428 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)]TJ/F11 9.9626 Tf 7.748 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(r)-28(oot)-278(<)]TJ/F8 9.9626 Tf 28.543 0 Td [(=)]TJ/F11 9.9626 Tf 10.517 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.962 0 Td [(1,)-333(default)-334(-1.)]TJ +/F8 9.9626 Tf 25.93 0 Td [(Pro)-28(cess)-276(to)-276(hold)-276(the)-276(\014nal)-276(v)56(alue,)-287(or)]TJ/F14 9.9626 Tf 146.411 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)-276(to)-276(mak)28(e)-276(it)-276(a)28(v)55(ailable)-276(on)-276(all)-276(pr)1(o)-28(cesses)-1(.)]TJ -155.183 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue)]TJ/F14 9.9626 Tf 130.427 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1)]TJ/F11 9.9626 Tf 7.749 0 Td [(<)]TJ/F8 9.9626 Tf 7.748 0 Td [(=)]TJ/F11 9.9626 Tf 10.517 0 Td [(r)-28(oot)-278(<)]TJ/F8 9.9626 Tf 28.543 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1,)-333(default)-334(-1.)]TJ 0 g 0 G /F27 9.9626 Tf -251.325 -33.873 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.372 0 Td [(On)-333(destination)-333(pro)-28(cess\050es\051,)-334(the)-333(result)-333(of)-334(the)-333(minim)28(um)-334(op)-27(eration.)]TJ 3.535 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -71.51 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(te)-1(ger,)-341(real)-340(or)-339(complex)-340(v)56(ariable,)-342(whic)28(h)-340(ma)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-333(a)-334(rank)-333(1)-333(or)-334(2)-333(arra)28(y)83(.)]TJ 0 -11.956 Td [(T)28(yp)-28(e,)-333(kind,)-334(r)1(ank)-334(and)-333(size)-333(m)27(ust)-333(agree)-333(on)-334(all)-333(pro)-28(cesses.)]TJ/F16 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ +/F8 9.9626 Tf 21.371 0 Td [(On)-333(destination)-334(p)1(ro)-28(cess\050es)-1(\051)1(,)-334(the)-333(result)-333(of)-334(the)-333(minim)28(um)-334(op)-27(eration.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(tege)-1(r,)-341(real)-339(or)-340(complex)-340(v)56(ariable,)-342(whic)28(h)-339(m)-1(a)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-333(a)-334(rank)-333(1)-333(or)-333(2)-334(arra)28(y)83(.)]TJ 0 -11.956 Td [(T)28(yp)-28(e,)-333(kind,)-333(rank)-334(and)-333(size)-333(m)27(ust)-333(agree)-333(on)-334(all)-333(pro)-28(cesses.)]TJ/F16 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ 0 g 0 G /F8 9.9626 Tf 12.177 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(The)]TJ/F30 9.9626 Tf 32.469 0 Td [(dat)]TJ/F8 9.9626 Tf 18.273 0 Td [(argumen)28(t)-259(is)-259(b)-28(oth)-259(input)-259(and)-259(output,)-274(and)-259(its)-259(v)55(alue)-259(ma)28(y)-259(b)-28(e)-259(c)28(hanged)]TJ -38.012 -11.955 Td [(ev)28(en)-334(on)-333(pro)-28(cesses)-333(di\013eren)28(t)-334(from)-333(the)-333(\014nal)-334(result)-333(destination.)]TJ + [-500(The)]TJ/F30 9.9626 Tf 32.469 0 Td [(dat)]TJ/F8 9.9626 Tf 18.272 0 Td [(argumen)28(t)-259(is)-259(b)-28(oth)-259(input)-259(and)-259(output,)-274(and)-259(its)-259(v)55(alue)-259(ma)28(y)-259(b)-28(e)-259(c)28(hanged)]TJ -38.011 -11.955 Td [(ev)28(en)-334(on)-333(pro)-28(cesses)-333(di\013eren)28(t)-334(from)-333(the)-333(\014nal)-334(result)-333(destination.)]TJ 0 g 0 G -12.73 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F30 9.9626 Tf 33.209 0 Td [(dat)]TJ/F8 9.9626 Tf 19.012 0 Td [(argumen)28(t)-333(m)-1(a)28(y)-333(also)-333(b)-28(e)-334(a)-333(long)-333(in)28(teger)-334(scalar.)]TJ + [-500(The)]TJ/F30 9.9626 Tf 33.208 0 Td [(dat)]TJ/F8 9.9626 Tf 19.012 0 Td [(argumen)28(t)-334(ma)28(y)-333(also)-334(b)-27(e)-334(a)-333(long)-333(in)28(teger)-334(scalar.)]TJ 0 g 0 G - 99.986 -97.177 Td [(105)]TJ + 99.987 -97.177 Td [(106)]TJ 0 g 0 G ET endstream endobj -1386 0 obj << +1418 0 obj << /Type /Page -/Contents 1387 0 R -/Resources 1385 0 R +/Contents 1419 0 R +/Resources 1417 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1378 0 R +/Parent 1404 0 R >> endobj -1388 0 obj << -/D [1386 0 R /XYZ 99.895 740.998 null] +1420 0 obj << +/D [1418 0 R /XYZ 150.705 740.998 null] >> endobj -386 0 obj << -/D [1386 0 R /XYZ 99.895 697.37 null] +390 0 obj << +/D [1418 0 R /XYZ 150.705 697.37 null] >> endobj -1389 0 obj << -/D [1386 0 R /XYZ 99.895 235.436 null] +1421 0 obj << +/D [1418 0 R /XYZ 150.705 235.436 null] >> endobj -1390 0 obj << -/D [1386 0 R /XYZ 99.895 201.618 null] +1422 0 obj << +/D [1418 0 R /XYZ 150.705 201.618 null] >> endobj -1385 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F14 667 0 R /F11 649 0 R >> +1417 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1393 0 obj << -/Length 5369 +1425 0 obj << +/Length 5346 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(snd)-375(|)-375(Send)-375(data)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(snd)-375(|)-375(Send)-375(data)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_snd\050icontxt,)-525(dat,)-525(dst,)-525(m\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-333(subroutine)-334(sends)-333(a)-333(pac)28(k)27(et)-333(of)-333(data)-334(to)-333(a)-333(destination.)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_snd\050icontxt,)-525(dat,)-525(dst,)-525(m\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-333(subroutine)-334(sends)-333(a)-333(pac)27(k)28(et)-333(of)-333(data)-334(to)-333(a)-333(destination.)]TJ 0 g 0 G /F27 9.9626 Tf -14.944 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G -/F8 9.9626 Tf 33.797 0 Td [(Sync)28(hronous:)-444(s)-1(ee)-333(usage)-333(notes.)]TJ +/F8 9.9626 Tf 33.797 0 Td [(Sync)28(hronous:)-445(see)-333(usage)-333(notes.)]TJ 0 g 0 G /F27 9.9626 Tf -33.797 -19.925 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.371 0 Td [(The)-333(data)-334(to)-333(b)-28(e)-333(sen)28(t.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(tege)-1(r,)-341(real)-339(or)-340(complex)-340(v)56(ariable,)-342(whic)28(h)-339(m)-1(a)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-381(a)-381(rank)-381(1)-381(or)-381(2)-381(arra)28(y)83(,)-393(or)-381(a)-381(c)28(haracte)-1(r)-381(or)-381(logical)-381(scalar.)-968(T)27(yp)-27(e,)-393(kind)-381(and)]TJ 0 -11.955 Td [(rank)-327(m)27(ust)-327(agree)-328(on)-327(sender)-328(and)-327(receiv)28(e)-1(r)-327(pro)-28(cess;)-329(if)]TJ/F11 9.9626 Tf 220.724 0 Td [(m)]TJ/F8 9.9626 Tf 12.01 0 Td [(is)-328(n)1(o)-1(t)-327(sp)-28(eci\014ed,)-328(s)-1(ize)]TJ -232.734 -11.955 Td [(m)28(ust)-334(agree)-333(as)-333(w)27(ell.)]TJ +/F8 9.9626 Tf 21.371 0 Td [(The)-333(data)-334(to)-333(b)-28(e)-333(sen)28(t.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(te)-1(ger,)-341(real)-340(or)-339(complex)-340(v)56(ariable,)-342(whic)28(h)-340(ma)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-381(a)-381(rank)-381(1)-381(or)-381(2)-381(arra)27(y)84(,)-393(or)-381(a)-381(c)27(har)1(ac)-1(ter)-381(or)-381(logical)-381(scalar.)-969(T)28(yp)-27(e)-1(,)-393(ki)1(nd)-381(and)]TJ 0 -11.955 Td [(rank)-327(m)27(ust)-327(agree)-328(on)-327(sender)-328(and)-327(receiv)27(er)-327(pro)-28(cess;)-329(if)]TJ/F11 9.9626 Tf 220.724 0 Td [(m)]TJ/F8 9.9626 Tf 12.01 0 Td [(is)-328(not)-327(sp)-28(eci\014ed,)-329(size)]TJ -232.734 -11.955 Td [(m)28(ust)-334(agree)-333(as)-333(w)27(ell.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.926 Td [(dst)]TJ 0 g 0 G -/F8 9.9626 Tf 20.321 0 Td [(Destination)-333(pro)-28(cess.)]TJ 4.586 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-1(n)-333(in)28(teger)-333(v)55(alue)-333(0)]TJ/F11 9.9626 Tf 138.176 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(dst)-278(<)]TJ/F8 9.9626 Tf 23.969 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1.)]TJ +/F8 9.9626 Tf 20.321 0 Td [(Destination)-333(pro)-28(cess.)]TJ 4.586 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)-333(0)]TJ/F11 9.9626 Tf 138.176 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(dst)-278(<)]TJ/F8 9.9626 Tf 23.969 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.207 0 Td [(\000)]TJ/F8 9.9626 Tf 9.962 0 Td [(1.)]TJ 0 g 0 G /F27 9.9626 Tf -239.002 -31.881 Td [(m)]TJ 0 g 0 G -/F8 9.9626 Tf 14.529 0 Td [(Num)28(b)-28(er)-333(of)-334(ro)28(ws.)]TJ 10.378 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(Optional)]TJ/F8 9.9626 Tf 43.455 0 Td [(.)]TJ -73.066 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)-333(0)]TJ/F11 9.9626 Tf 138.176 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(m)-278(<)]TJ/F8 9.9626 Tf 19.263 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(siz)-44(e)]TJ/F8 9.9626 Tf 17.813 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(dat;)]TJ/F8 9.9626 Tf 18.477 0 Td [(1\051.)]TJ -226.384 -11.956 Td [(When)]TJ/F11 9.9626 Tf 29.071 0 Td [(dat)]TJ/F8 9.9626 Tf 17.383 0 Td [(is)-335(a)-334(rank)-335(2)-335(arra)28(y)84(,)-335(sp)-28(eci\014es)-335(the)-335(n)28(um)28(b)-28(er)-334(of)-335(ro)28(ws)-335(to)-335(b)-27(e)-335(sen)28(t)-335(inde-)]TJ -46.454 -11.955 Td [(p)-28(enden)28(tly)-285(of)-285(the)-286(leadin)1(g)-286(dimension)]TJ/F11 9.9626 Tf 153.741 0 Td [(siz)-44(e)]TJ/F8 9.9626 Tf 17.813 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(dat;)]TJ/F8 9.9626 Tf 18.477 0 Td [(1\051;)-301(m)27(u)1(s)-1(t)-285(ha)28(v)28(e)-285(the)-286(same)-285(v)55(al)1(ue)]TJ -193.905 -11.955 Td [(on)-333(sending)-334(and)-333(receiving)-333(pro)-28(cesses.)]TJ +/F8 9.9626 Tf 14.529 0 Td [(Num)28(b)-28(er)-333(of)-334(ro)28(ws.)]TJ 10.378 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(Optional)]TJ/F8 9.9626 Tf 43.455 0 Td [(.)]TJ -73.066 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)-333(0)]TJ/F11 9.9626 Tf 138.176 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(m)-278(<)]TJ/F8 9.9626 Tf 19.264 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(siz)-44(e)]TJ/F8 9.9626 Tf 17.812 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(dat;)]TJ/F8 9.9626 Tf 18.477 0 Td [(1\051.)]TJ -226.384 -11.956 Td [(When)]TJ/F11 9.9626 Tf 29.071 0 Td [(dat)]TJ/F8 9.9626 Tf 17.383 0 Td [(is)-335(a)-334(rank)-335(2)-335(arra)28(y)84(,)-335(sp)-28(eci\014es)-335(the)-335(n)28(um)28(b)-28(er)-334(of)-335(ro)28(ws)-335(to)-335(b)-27(e)-335(sen)28(t)-335(inde-)]TJ -46.454 -11.955 Td [(p)-28(enden)28(tly)-285(of)-285(the)-286(leading)-285(dimension)]TJ/F11 9.9626 Tf 153.742 0 Td [(siz)-44(e)]TJ/F8 9.9626 Tf 17.812 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(dat;)]TJ/F8 9.9626 Tf 18.477 0 Td [(1\051;)-301(m)27(ust)-285(ha)28(v)28(e)-285(the)-286(same)-285(v)55(alu)1(e)]TJ -193.905 -11.955 Td [(on)-333(sending)-334(and)-333(receiving)-333(pro)-28(cesses.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G @@ -16074,163 +16645,163 @@ BT 0 g 0 G /F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-402(subroutine)-403(implies)-402(a)-402(sync)27(hronization,)-419(but)-403(on)1(ly)-403(b)-28(et)28(w)28(een)-403(th)1(e)-403(calling)]TJ 12.73 -11.955 Td [(pro)-28(cess)-333(and)-333(the)-334(destination)-333(pro)-28(cess)]TJ/F11 9.9626 Tf 157.52 0 Td [(dst)]TJ/F8 9.9626 Tf 13.453 0 Td [(.)]TJ + [-500(This)-402(subroutine)-403(implies)-402(a)-402(s)-1(yn)1(c)27(hronization,)-419(but)-403(on)1(ly)-403(b)-28(et)28(w)28(een)-403(the)-402(calling)]TJ 12.73 -11.955 Td [(pro)-28(cess)-333(and)-333(the)-334(destination)-333(pro)-28(cess)]TJ/F11 9.9626 Tf 157.521 0 Td [(dst)]TJ/F8 9.9626 Tf 13.453 0 Td [(.)]TJ 0 g 0 G - -31.496 -105.147 Td [(106)]TJ + -31.497 -105.147 Td [(107)]TJ 0 g 0 G ET endstream endobj -1392 0 obj << +1424 0 obj << /Type /Page -/Contents 1393 0 R -/Resources 1391 0 R +/Contents 1425 0 R +/Resources 1423 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1378 0 R +/Parent 1404 0 R >> endobj -1394 0 obj << -/D [1392 0 R /XYZ 150.705 740.998 null] +1426 0 obj << +/D [1424 0 R /XYZ 99.895 740.998 null] >> endobj -390 0 obj << -/D [1392 0 R /XYZ 150.705 697.37 null] +394 0 obj << +/D [1424 0 R /XYZ 99.895 697.37 null] >> endobj -1395 0 obj << -/D [1392 0 R /XYZ 150.705 223.48 null] +1427 0 obj << +/D [1424 0 R /XYZ 99.895 223.48 null] >> endobj -1391 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +1423 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1398 0 obj << -/Length 5352 +1430 0 obj << +/Length 5364 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(rcv)-375(|)-375(Receiv)31(e)-375(data)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(rcv)-375(|)-375(Receiv)31(e)-375(data)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_rcv\050icontxt,)-525(dat,)-525(src,)-525(m\051)]TJ/F8 9.9626 Tf 14.944 -21.918 Td [(This)-333(subroutine)-334(receiv)28(es)-333(a)-334(pac)28(k)28(et)-333(of)-334(data)-333(to)-333(a)-334(destination.)]TJ 0 g 0 G /F27 9.9626 Tf -14.944 -19.926 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G -/F8 9.9626 Tf 33.797 0 Td [(Sync)28(hronous:)-445(see)-333(usage)-333(notes.)]TJ +/F8 9.9626 Tf 33.797 0 Td [(Sync)28(hronous:)-444(s)-1(ee)-333(usage)-333(notes.)]TJ 0 g 0 G /F27 9.9626 Tf -33.797 -19.925 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyin)1(g)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text)-333(iden)27(tifyi)1(ng)-334(the)-333(virtual)-333(parallel)-334(mac)28(hine.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(ariable.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(src)]TJ 0 g 0 G -/F8 9.9626 Tf 19.311 0 Td [(Source)-333(pro)-28(cess.)]TJ 5.596 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)-333(0)]TJ/F11 9.9626 Tf 138.176 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(sr)-28(c)-277(<)]TJ/F8 9.9626 Tf 24.269 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1.)]TJ +/F8 9.9626 Tf 19.311 0 Td [(Source)-333(pro)-28(cess.)]TJ 5.596 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.134 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue)-333(0)]TJ/F11 9.9626 Tf 138.176 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(sr)-28(c)-277(<)]TJ/F8 9.9626 Tf 24.269 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(np)]TJ/F14 9.9626 Tf 13.206 0 Td [(\000)]TJ/F8 9.9626 Tf 9.963 0 Td [(1.)]TJ 0 g 0 G /F27 9.9626 Tf -239.302 -31.88 Td [(m)]TJ 0 g 0 G -/F8 9.9626 Tf 14.529 0 Td [(Num)28(b)-28(er)-333(of)-334(ro)28(ws.)]TJ 10.378 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf 29.756 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(Optional)]TJ/F8 9.9626 Tf 43.455 0 Td [(.)]TJ -73.066 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)-333(0)]TJ/F11 9.9626 Tf 138.176 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(m)-278(<)]TJ/F8 9.9626 Tf 19.264 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(siz)-44(e)]TJ/F8 9.9626 Tf 17.812 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(dat;)]TJ/F8 9.9626 Tf 18.477 0 Td [(1\051.)]TJ -226.384 -11.955 Td [(When)]TJ/F11 9.9626 Tf 29.071 0 Td [(dat)]TJ/F8 9.9626 Tf 17.383 0 Td [(is)-335(a)-334(rank)-335(2)-335(arra)28(y)84(,)-335(sp)-28(eci\014es)-335(the)-335(n)28(um)28(b)-28(er)-334(of)-335(ro)28(ws)-335(to)-335(b)-27(e)-335(sen)28(t)-335(inde-)]TJ -46.454 -11.955 Td [(p)-28(enden)28(tly)-285(of)-285(the)-286(leading)-285(dimension)]TJ/F11 9.9626 Tf 153.742 0 Td [(siz)-44(e)]TJ/F8 9.9626 Tf 17.812 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(dat;)]TJ/F8 9.9626 Tf 18.477 0 Td [(1\051;)-301(m)27(ust)-285(ha)28(v)28(e)-285(the)-286(same)-285(v)55(alu)1(e)]TJ -193.905 -11.955 Td [(on)-333(sending)-334(and)-333(receiving)-333(pro)-28(cesses.)]TJ +/F8 9.9626 Tf 14.529 0 Td [(Num)28(b)-28(er)-333(of)-334(ro)28(ws.)]TJ 10.378 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 0 Td [(.)]TJ -62.135 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(Optional)]TJ/F8 9.9626 Tf 43.455 0 Td [(.)]TJ -73.066 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue)-333(0)]TJ/F11 9.9626 Tf 138.176 0 Td [(<)]TJ/F8 9.9626 Tf 7.749 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(m)-278(<)]TJ/F8 9.9626 Tf 19.263 0 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(siz)-44(e)]TJ/F8 9.9626 Tf 17.813 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(dat;)]TJ/F8 9.9626 Tf 18.477 0 Td [(1\051.)]TJ -226.384 -11.955 Td [(When)]TJ/F11 9.9626 Tf 29.071 0 Td [(dat)]TJ/F8 9.9626 Tf 17.383 0 Td [(is)-335(a)-334(rank)-335(2)-335(arra)28(y)84(,)-335(sp)-28(eci\014es)-335(the)-335(n)28(um)28(b)-28(er)-334(of)-335(ro)28(ws)-335(to)-335(b)-27(e)-335(sen)28(t)-335(inde-)]TJ -46.454 -11.955 Td [(p)-28(enden)28(tly)-285(of)-285(the)-286(leadin)1(g)-286(dimension)]TJ/F11 9.9626 Tf 153.741 0 Td [(siz)-44(e)]TJ/F8 9.9626 Tf 17.813 0 Td [(\050)]TJ/F11 9.9626 Tf 3.874 0 Td [(dat;)]TJ/F8 9.9626 Tf 18.477 0 Td [(1\051;)-301(m)27(u)1(s)-1(t)-285(ha)28(v)28(e)-285(the)-286(same)-285(v)55(al)1(ue)]TJ -193.905 -11.955 Td [(on)-333(sending)-334(and)-333(receiving)-333(pro)-28(cesses.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(dat)]TJ 0 g 0 G -/F8 9.9626 Tf 21.371 0 Td [(The)-333(data)-334(to)-333(b)-28(e)-333(receiv)28(ed.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(te)-1(ger,)-341(real)-340(or)-339(complex)-340(v)56(ariable,)-342(whic)28(h)-340(ma)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-381(a)-381(rank)-381(1)-381(or)-381(2)-381(arra)27(y)84(,)-393(or)-381(a)-381(c)27(har)1(ac)-1(ter)-381(or)-381(logical)-381(scalar.)-969(T)28(yp)-27(e)-1(,)-393(ki)1(nd)-381(and)]TJ 0 -11.956 Td [(rank)-327(m)27(ust)-327(agree)-328(on)-327(sender)-328(and)-327(receiv)27(er)-327(pro)-28(cess;)-329(if)]TJ/F11 9.9626 Tf 220.724 0 Td [(m)]TJ/F8 9.9626 Tf 12.01 0 Td [(is)-328(not)-327(sp)-28(eci\014ed,)-329(size)]TJ -232.734 -11.955 Td [(m)28(ust)-334(agree)-333(as)-333(w)27(ell.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F8 9.9626 Tf 21.371 0 Td [(The)-333(data)-334(to)-333(b)-28(e)-333(receiv)28(ed.)]TJ 3.536 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.451 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -71.509 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-339(as:)-458(an)-339(in)28(teg)-1(er,)-341(real)-340(or)-339(complex)-340(v)56(ariable,)-342(whic)28(h)-339(m)-1(a)28(y)-339(b)-28(e)-340(a)-340(scalar,)]TJ 0 -11.955 Td [(or)-381(a)-381(rank)-381(1)-381(or)-381(2)-381(arra)28(y)83(,)-393(or)-381(a)-381(c)27(h)1(aracte)-1(r)-381(or)-381(logical)-381(scalar.)-968(T)27(yp)-27(e,)-393(kind)-381(and)]TJ 0 -11.956 Td [(rank)-327(m)27(ust)-327(agree)-328(on)-327(sender)-328(and)-327(receiv)27(er)-327(pro)-28(cess;)-329(if)]TJ/F11 9.9626 Tf 220.724 0 Td [(m)]TJ/F8 9.9626 Tf 12.01 0 Td [(is)-328(not)-327(sp)-28(eci\014ed,)-328(s)-1(ize)]TJ -232.734 -11.955 Td [(m)28(ust)-334(agree)-333(as)-333(w)27(ell.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G /F8 9.9626 Tf 12.177 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-402(subroutine)-403(implies)-402(a)-402(s)-1(yn)1(c)27(hronization,)-419(but)-403(onl)1(y)-403(b)-28(et)28(w)28(een)-403(the)-402(calling)]TJ 12.73 -11.955 Td [(pro)-28(cess)-333(and)-333(the)-334(source)-333(pro)-28(cess)]TJ/F11 9.9626 Tf 136.516 0 Td [(sr)-28(c)]TJ/F8 9.9626 Tf 13.753 0 Td [(.)]TJ + [-500(This)-402(subroutine)-403(implies)-402(a)-402(sync)27(hronization,)-419(but)-403(on)1(ly)-403(b)-28(et)28(w)28(een)-403(th)1(e)-403(calling)]TJ 12.73 -11.955 Td [(pro)-28(cess)-333(and)-333(the)-334(source)-333(pro)-28(cess)]TJ/F11 9.9626 Tf 136.516 0 Td [(sr)-28(c)]TJ/F8 9.9626 Tf 13.753 0 Td [(.)]TJ 0 g 0 G - -10.792 -105.147 Td [(107)]TJ + -10.792 -105.147 Td [(108)]TJ 0 g 0 G ET endstream endobj -1397 0 obj << +1429 0 obj << /Type /Page -/Contents 1398 0 R -/Resources 1396 0 R +/Contents 1430 0 R +/Resources 1428 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1378 0 R +/Parent 1404 0 R >> endobj -1399 0 obj << -/D [1397 0 R /XYZ 99.895 740.998 null] +1431 0 obj << +/D [1429 0 R /XYZ 150.705 740.998 null] >> endobj -394 0 obj << -/D [1397 0 R /XYZ 99.895 697.37 null] +398 0 obj << +/D [1429 0 R /XYZ 150.705 697.37 null] >> endobj -1400 0 obj << -/D [1397 0 R /XYZ 99.895 223.48 null] +1432 0 obj << +/D [1429 0 R /XYZ 150.705 223.48 null] >> endobj -1396 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +1428 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1405 0 obj << -/Length 6407 +1437 0 obj << +/Length 6381 >> stream 0 g 0 G 0 g 0 G BT -/F16 14.3462 Tf 150.705 706.129 Td [(8)-1125(Error)-375(handling)]TJ/F8 9.9626 Tf 0 -21.821 Td [(The)-446(PSBLAS)-446(library)-446(error)-446(handling)-446(p)-28(olicy)-446(has)-446(b)-28(een)-446(completely)-446(rewritten)-446(in)]TJ 0 -11.955 Td [(v)28(ersion)-448(2.0.)-788(The)-448(idea)-448(b)-27(ehind)-448(the)-448(design)-448(of)-447(this)-448(new)-448(error)-448(handling)-447(strategy)]TJ 0 -11.955 Td [(is)-491(to)-492(k)28(eep)-491(error)-491(mes)-1(sages)-491(on)-491(a)-492(stac)28(k)-491(allo)28(wing)-492(th)1(e)-492(user)-491(to)-491(trace)-492(bac)28(k)-491(up)-492(t)1(o)]TJ 0 -11.956 Td [(the)-401(p)-27(oin)28(t)-401(where)-401(the)-400(\014rst)-401(error)-400(mes)-1(sage)-400(has)-401(b)-28(een)-400(generated.)-646(Ev)27(ery)-400(routine)-401(in)]TJ 0 -11.955 Td [(the)-442(P)1(SBLAS-2.0)-442(library)-441(has,)-469(as)-442(l)1(as)-1(t)-441(non-optional)-441(argumen)27(t,)-468(an)-442(in)28(teger)]TJ/F30 9.9626 Tf 322.79 0 Td [(info)]TJ/F8 9.9626 Tf -322.79 -11.955 Td [(v)56(ariable;)-385(whenev)28(er,)-376(inside)-368(the)-367(routine,)-376(an)-368(error)-367(is)-368(detected,)-376(this)-367(v)55(ariab)1(le)-368(is)-368(set)]TJ 0 -11.955 Td [(to)-381(a)-380(v)55(alu)1(e)-381(corresp)-28(onding)-380(to)-381(a)-380(sp)-28(eci\014c)-381(error)-380(co)-28(de.)-586(Then)-381(this)-380(error)-381(co)-28(de)-380(is)-381(also)]TJ 0 -11.955 Td [(pushed)-245(on)-245(the)-245(error)-245(stac)28(k)-245(and)-245(then)-245(either)-245(con)27(tr)1(ol)-245(is)-246(retur)1(ned)-245(to)-246(th)1(e)-246(caller)-245(routin)1(e)]TJ 0 -11.955 Td [(or)-372(the)-371(e)-1(xecution)-371(is)-372(ab)-28(orted,)-381(dep)-28(ending)-372(on)-371(the)-372(users)-372(c)28(hoice.)-560(A)28(t)-372(the)-372(time)-371(when)]TJ 0 -11.956 Td [(the)-364(execution)-363(is)-364(ab)-28(orted,)-371(an)-364(error)-364(message)-363(is)-364(prin)28(ted)-364(on)-364(standard)-363(output)-364(with)]TJ 0 -11.955 Td [(a)-448(lev)28(el)-448(of)-447(v)27(erb)-27(osit)27(y)-447(than)-448(can)-448(b)-27(e)-448(c)28(hosen)-448(b)28(y)-448(the)-448(user.)-787(If)-448(the)-448(execution)-447(is)-448(not)]TJ 0 -11.955 Td [(ab)-28(orted,)-328(then,)-329(the)-328(caller)-327(routine)-328(c)28(hec)28(ks)-328(the)-327(v)55(alue)-327(returned)-328(in)-327(the)]TJ/F30 9.9626 Tf 285.459 0 Td [(info)]TJ/F8 9.9626 Tf 24.185 0 Td [(v)56(ariable)]TJ -309.644 -11.955 Td [(and,)-359(if)-354(not)-354(zero,)-359(an)-353(error)-354(condition)-354(is)-354(raised.)-506(This)-354(pro)-28(cess)-354(con)28(tin)28(ues)-354(on)-354(all)-354(th)1(e)]TJ 0 -11.955 Td [(lev)28(els)-297(of)-296(nes)-1(ted)-296(calls)-297(un)28(til)-297(the)-296(lev)28(el)-297(where)-297(the)-296(user)-297(decides)-297(to)-296(ab)-28(ort)-297(the)-296(program)]TJ 0 -11.955 Td [(execution.)]TJ 14.944 -11.956 Td [(Figure)]TJ +/F16 14.3462 Tf 99.895 706.129 Td [(8)-1125(Error)-375(handling)]TJ/F8 9.9626 Tf 0 -21.821 Td [(The)-446(PSBLAS)-446(library)-446(error)-446(handling)-446(p)-28(olicy)-446(has)-446(b)-28(een)-446(completely)-446(rewritten)-446(in)]TJ 0 -11.955 Td [(v)28(ersion)-448(2.0.)-788(The)-448(idea)-448(b)-27(ehind)-448(the)-448(design)-448(of)-447(this)-448(new)-448(error)-448(handling)-447(strategy)]TJ 0 -11.955 Td [(is)-491(to)-492(k)28(eep)-491(error)-491(me)-1(ssages)-491(on)-491(a)-492(stac)28(k)-491(allo)28(wing)-492(the)-491(user)-491(to)-491(trace)-492(bac)28(k)-491(up)-492(to)]TJ 0 -11.956 Td [(the)-401(p)-27(oin)27(t)-400(where)-401(the)-400(\014rst)-401(error)-400(me)-1(ssage)-400(has)-401(b)-28(een)-400(generated.)-646(Ev)27(ery)-400(routine)-401(in)]TJ 0 -11.955 Td [(the)-442(PS)1(B)-1(LAS)1(-)-1(2.0)-441(library)-441(has,)-469(as)-442(last)-441(non-optional)-441(argume)-1(n)28(t,)-468(an)-442(in)28(teger)]TJ/F30 9.9626 Tf 322.79 0 Td [(info)]TJ/F8 9.9626 Tf -322.79 -11.955 Td [(v)56(ariable;)-385(whenev)28(er,)-376(inside)-368(the)-367(routine,)-376(an)-368(error)-367(is)-368(detected,)-376(this)-367(v)55(ariable)-367(is)-368(set)]TJ 0 -11.955 Td [(to)-381(a)-380(v)55(alue)-380(corresp)-28(onding)-380(to)-381(a)-380(sp)-28(eci\014c)-381(error)-380(co)-28(de.)-586(Then)-381(this)-380(error)-381(co)-28(de)-380(is)-381(also)]TJ 0 -11.955 Td [(pushed)-245(on)-245(the)-245(error)-245(stac)28(k)-245(and)-245(then)-245(either)-245(con)27(trol)-245(is)-245(return)1(e)-1(d)-245(to)-245(the)-245(caller)-245(routine)]TJ 0 -11.955 Td [(or)-372(the)-372(execution)-371(is)-372(ab)-28(orted,)-381(dep)-28(ending)-372(on)-371(the)-372(users)-372(c)28(hoice.)-560(A)28(t)-372(the)-372(time)-371(when)]TJ 0 -11.956 Td [(the)-364(execution)-363(is)-364(ab)-28(orted,)-371(an)-364(error)-364(message)-363(is)-364(prin)28(ted)-364(on)-364(standard)-363(output)-364(with)]TJ 0 -11.955 Td [(a)-448(lev)28(el)-448(of)-447(v)27(erb)-27(osit)27(y)-447(than)-448(can)-448(b)-27(e)-448(c)28(hosen)-448(b)28(y)-448(the)-448(user.)-787(If)-448(the)-448(execution)-447(is)-448(not)]TJ 0 -11.955 Td [(ab)-28(orted,)-328(then,)-329(the)-328(caller)-327(routine)-328(c)28(hec)28(ks)-328(the)-328(v)56(alue)-328(retur)1(ned)-328(in)-328(the)]TJ/F30 9.9626 Tf 285.46 0 Td [(info)]TJ/F8 9.9626 Tf 24.185 0 Td [(v)56(ariable)]TJ -309.645 -11.955 Td [(and,)-359(if)-354(not)-354(zero,)-359(an)-353(e)-1(r)1(ror)-354(condition)-354(is)-354(raised.)-506(This)-354(pro)-28(cess)-354(con)28(tin)28(ues)-354(on)-354(all)-354(the)]TJ 0 -11.955 Td [(lev)28(els)-297(of)-297(nested)-296(calls)-297(un)28(til)-297(the)-296(lev)28(e)-1(l)-296(where)-297(the)-296(user)-297(decides)-297(to)-296(ab)-28(ort)-297(the)-296(program)]TJ 0 -11.955 Td [(execution.)]TJ 14.944 -11.956 Td [(Figure)]TJ 0 0 1 rg 0 0 1 RG [-353(9)]TJ 0 g 0 G - [-353(sho)28(ws)-353(the)-353(la)28(y)27(out)-353(of)-352(a)-353(ge)-1(n)1(e)-1(ri)1(c)]TJ/F30 9.9626 Tf 170.683 0 Td [(psb_foo)]TJ/F8 9.9626 Tf 40.129 0 Td [(routine)-353(with)-353(resp)-28(ect)-353(to)-353(the)]TJ -225.756 -11.955 Td [(PSBLAS-2.0)-326(error)-326(hand)1(ling)-326(p)-28(olicy)83(.)-442(It)-325(is)-326(p)-28(ossible)-326(to)-326(see)-326(ho)28(w,)-327(whenev)28(e)-1(r)-325(an)-326(error)]TJ 0 -11.955 Td [(condition)-379(is)-378(detected,)-390(the)]TJ/F30 9.9626 Tf 115.439 0 Td [(info)]TJ/F8 9.9626 Tf 24.694 0 Td [(v)56(ariable)-379(is)-379(set)-379(to)-378(the)-379(corresp)-28(onding)-378(error)-379(co)-28(de)]TJ -140.133 -11.955 Td [(whic)28(h)-376(is,)-387(then,)-386(pushed)-376(on)-376(top)-376(of)-376(the)-376(stac)28(k)-376(b)28(y)-376(means)-376(of)-376(the)]TJ/F30 9.9626 Tf 264.702 0 Td [(psb_errpush)]TJ/F8 9.9626 Tf 57.534 0 Td [(.)-572(An)]TJ -322.236 -11.955 Td [(error)-331(condition)-331(ma)28(y)-331(b)-28(e)-331(directly)-331(detected)-331(inside)-331(a)-331(routine)-331(or)-331(indirectly)-331(c)27(h)1(e)-1(c)28(king)]TJ 0 -11.956 Td [(the)-461(e)-1(rr)1(or)-462(co)-28(de)-461(returned)-462(returned)-461(b)28(y)-462(a)-461(called)-462(routine.)-829(Whenev)28(er)-461(an)-462(error)-461(is)]TJ 0 -11.955 Td [(encoun)28(tered,)-459(after)-434(it)-434(has)-433(b)-28(een)-434(pushed)-434(on)-434(stac)28(k,)-459(the)-434(program)-433(execution)-434(skips)]TJ 0 -11.955 Td [(to)-356(a)-356(p)-27(oin)28(t)-356(where)-356(the)-356(error)-355(condition)-356(is)-356(handled;)-367(the)-355(error)-356(condition)-356(is)-356(han)1(dled)]TJ 0 -11.955 Td [(either)-392(b)28(y)-392(returning)-392(con)28(trol)-392(to)-392(the)-392(caller)-391(routine)-392(or)-392(b)28(y)-392(calling)-392(the)]TJ/F30 9.9626 Tf 291.408 0 Td [(psb\134_error)]TJ/F8 9.9626 Tf -291.408 -11.955 Td [(routine)-478(whic)28(h)-479(pr)1(in)27(ts)-478(the)-478(con)28(ten)27(t)-478(of)-478(the)-478(error)-478(s)-1(tac)28(k)-478(and)-478(ab)-28(orts)-478(the)-478(program)]TJ 0 -11.955 Td [(execution,)-329(ac)-1(cord)1(ing)-329(to)-328(the)-329(c)28(hoice)-329(made)-328(b)27(y)-328(the)-329(user)-328(with)]TJ/F30 9.9626 Tf 252.028 0 Td [(psb_set_erraction)]TJ/F8 9.9626 Tf 88.916 0 Td [(.)]TJ -340.944 -11.956 Td [(The)-347(default)-346(is)-347(to)-346(prin)28(t)-347(the)-347(error)-346(and)-347(terminate)-346(the)-347(program,)-350(but)-346(the)-347(user)-346(ma)27(y)]TJ 0 -11.955 Td [(c)28(ho)-28(ose)-333(to)-334(handle)-333(the)-333(error)-334(explicitly)84(.)]TJ 14.944 -11.955 Td [(Figure)]TJ + [-353(sho)28(ws)-353(the)-353(la)28(y)27(out)-353(of)-353(a)-353(generic)]TJ/F30 9.9626 Tf 170.683 0 Td [(psb_foo)]TJ/F8 9.9626 Tf 40.129 0 Td [(routine)-353(with)-353(resp)-28(ect)-353(to)-353(the)]TJ -225.756 -11.955 Td [(PSBLAS-2.0)-326(error)-326(handl)1(ing)-326(p)-28(olicy)83(.)-442(It)-325(is)-326(p)-28(ossible)-326(to)-326(see)-326(ho)28(w,)-327(whenev)27(er)-325(an)-326(error)]TJ 0 -11.955 Td [(condition)-379(is)-378(detected,)-390(the)]TJ/F30 9.9626 Tf 115.439 0 Td [(info)]TJ/F8 9.9626 Tf 24.694 0 Td [(v)56(ariable)-379(is)-379(set)-379(to)-378(the)-379(corresp)-28(onding)-378(error)-379(co)-28(de)]TJ -140.133 -11.955 Td [(whic)28(h)-376(is,)-387(then,)-386(pushed)-376(on)-376(top)-376(of)-376(the)-376(stac)28(k)-376(b)28(y)-376(means)-376(of)-376(the)]TJ/F30 9.9626 Tf 264.703 0 Td [(psb_errpush)]TJ/F8 9.9626 Tf 57.533 0 Td [(.)-572(An)]TJ -322.236 -11.955 Td [(error)-331(condition)-331(ma)28(y)-331(b)-28(e)-331(directly)-331(detected)-331(inside)-331(a)-331(routine)-331(or)-331(indirectly)-331(c)27(hec)28(king)]TJ 0 -11.956 Td [(the)-462(error)-461(co)-28(de)-461(returned)-462(returned)-461(b)28(y)-462(a)-461(called)-462(routine.)-829(Whenev)28(er)-461(an)-462(error)-461(is)]TJ 0 -11.955 Td [(encoun)28(tered,)-459(after)-434(it)-434(has)-434(b)-27(een)-434(pushed)-434(on)-434(stac)28(k,)-459(the)-434(program)-433(exec)-1(u)1(tion)-434(skips)]TJ 0 -11.955 Td [(to)-356(a)-356(p)-27(oin)28(t)-356(where)-356(the)-356(error)-355(c)-1(on)1(dition)-356(is)-356(handled;)-367(the)-355(e)-1(r)1(ror)-356(condition)-356(is)-356(hand)1(le)-1(d)]TJ 0 -11.955 Td [(either)-392(b)28(y)-392(returning)-392(con)28(trol)-392(to)-392(the)-392(caller)-392(r)1(outine)-392(or)-392(b)28(y)-392(calling)-392(the)]TJ/F30 9.9626 Tf 291.408 0 Td [(psb\134_error)]TJ/F8 9.9626 Tf -291.408 -11.955 Td [(routine)-478(whic)28(h)-479(prin)28(ts)-478(the)-478(con)28(ten)27(t)-478(of)-478(the)-478(error)-479(stac)28(k)-478(and)-478(ab)-28(orts)-478(the)-478(program)]TJ 0 -11.955 Td [(execution,)-330(accordin)1(g)-329(to)-329(th)1(e)-329(c)28(hoice)-329(made)-328(b)27(y)-328(the)-329(user)-328(with)]TJ/F30 9.9626 Tf 252.028 0 Td [(psb_set_erraction)]TJ/F8 9.9626 Tf 88.916 0 Td [(.)]TJ -340.944 -11.956 Td [(The)-347(default)-346(is)-347(to)-346(prin)28(t)-347(the)-347(error)-346(and)-347(terminate)-346(the)-347(program,)-350(but)-346(the)-347(user)-346(ma)27(y)]TJ 0 -11.955 Td [(c)28(ho)-28(ose)-333(to)-334(handle)-333(the)-333(error)-334(explicitly)84(.)]TJ 14.944 -11.955 Td [(Figure)]TJ 0 0 1 rg 0 0 1 RG [-479(10)]TJ 0 g 0 G - [-479(rep)-28(orts)-479(a)-479(sample)-480(error)-479(message)-479(generated)-479(b)28(y)-480(the)-479(PSBLAS-2.0)]TJ -14.944 -11.955 Td [(library)83(.)-451(This)-335(error)-336(has)-335(b)-28(een)-336(generated)-335(b)27(y)-335(the)-336(fact)-335(that)-336(the)-335(use)-1(r)-335(has)-336(c)28(hosen)-336(th)1(e)]TJ 0 -11.955 Td [(in)28(v)55(alid)-367(\134F)28(OO")-368(storage)-367(format)-368(to)-367(represen)27(t)-367(the)-368(sparse)-367(matrix.)-547(F)83(rom)-367(this)-368(error)]TJ 0 -11.955 Td [(message)-248(it)-248(is)-248(p)-27(oss)-1(i)1(ble)-248(to)-248(see)-248(that)-248(the)-248(error)-247(has)-248(b)-28(een)-248(detected)-248(inside)-248(th)1(e)]TJ/F30 9.9626 Tf 301.868 0 Td [(psb_cest)]TJ/F8 9.9626 Tf -301.868 -11.956 Td [(subroutine)-333(called)-334(b)28(y)]TJ/F30 9.9626 Tf 91.407 0 Td [(psb_spasb)]TJ/F8 9.9626 Tf 50.394 0 Td [(...)-444(b)27(y)-333(pro)-28(cess)-333(0)-333(\050i.e.)-445(the)-333(ro)-28(ot)-333(pro)-28(cess\051.)]TJ + [-479(rep)-28(orts)-479(a)-479(sample)-480(error)-479(message)-479(generated)-479(b)28(y)-480(the)-479(PSBLAS-2.0)]TJ -14.944 -11.955 Td [(library)83(.)-451(This)-335(error)-336(has)-335(b)-28(een)-336(generated)-335(b)27(y)-335(the)-336(fact)-335(that)-336(the)-335(use)-1(r)-335(has)-336(c)28(hosen)-336(the)]TJ 0 -11.955 Td [(in)28(v)55(alid)-367(\134F)28(OO")-368(storage)-367(format)-368(to)-367(represen)27(t)-367(the)-368(sparse)-367(matrix.)-547(F)83(rom)-367(this)-368(error)]TJ 0 -11.955 Td [(message)-248(it)-248(is)-248(p)-27(oss)-1(ib)1(le)-248(to)-248(see)-248(that)-248(the)-248(error)-247(has)-248(b)-28(een)-248(detected)-248(inside)-248(the)]TJ/F30 9.9626 Tf 301.869 0 Td [(psb_cest)]TJ/F8 9.9626 Tf -301.869 -11.956 Td [(subroutine)-333(called)-334(b)28(y)]TJ/F30 9.9626 Tf 91.408 0 Td [(psb_spasb)]TJ/F8 9.9626 Tf 50.394 0 Td [(...)-444(b)27(y)-333(pro)-28(cess)-333(0)-333(\050i.e.)-445(the)-333(ro)-28(ot)-333(pro)-28(cess\051.)]TJ 0 g 0 G - 22.583 -211.304 Td [(108)]TJ + 22.582 -211.304 Td [(109)]TJ 0 g 0 G ET endstream endobj -1404 0 obj << +1436 0 obj << /Type /Page -/Contents 1405 0 R -/Resources 1403 0 R +/Contents 1437 0 R +/Resources 1435 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1378 0 R -/Annots [ 1401 0 R 1402 0 R ] +/Parent 1439 0 R +/Annots [ 1433 0 R 1434 0 R ] >> endobj -1401 0 obj << +1433 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.286 501.77 203.26 512.895] +/Rect [145.477 501.77 152.451 512.895] /Subtype /Link /A << /S /GoTo /D (figure.9) >> >> endobj -1402 0 obj << +1434 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [197.543 346.63 209.498 357.478] +/Rect [146.734 346.63 158.689 357.478] /Subtype /Link /A << /S /GoTo /D (figure.10) >> >> endobj -1406 0 obj << -/D [1404 0 R /XYZ 150.705 740.998 null] +1438 0 obj << +/D [1436 0 R /XYZ 99.895 740.998 null] >> endobj -398 0 obj << -/D [1404 0 R /XYZ 150.705 716.092 null] +402 0 obj << +/D [1436 0 R /XYZ 99.895 716.092 null] >> endobj -1403 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F30 664 0 R >> +1435 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1411 0 obj << -/Length 3853 +1444 0 obj << +/Length 3841 >> stream 0 g 0 G @@ -16239,112 +16810,112 @@ stream 0 g 0 G 0 g 0 G q -1 0 0 1 99.895 704.933 cm +1 0 0 1 150.705 704.933 cm []0 d 0 J 0.398 w 0 0 m 346.583 0 l S Q q -1 0 0 1 100.095 428.52 cm +1 0 0 1 150.904 428.52 cm []0 d 0 J 0.398 w 0 0 m 0 276.214 l S Q 0 g 0 G 0 g 0 G BT -/F46 8.9664 Tf 108.264 690.537 Td [(subroutine)-525(psb_foo\050some)-525(args,)-525(info\051)]TJ 14.122 -10.959 Td [(...)]TJ 0 -10.958 Td [(if\050error)-525(detected\051)-525(then)]TJ 14.122 -10.959 Td [(info=errcode1)]TJ 0 -10.959 Td [(call)-525(psb_errpush\050'psb_foo',)-525(errcode1\051)]TJ 0 -10.959 Td [(goto)-525(9999)]TJ -14.122 -10.959 Td [(end)-525(if)]TJ 0 -10.959 Td [(...)]TJ 0 -10.959 Td [(call)-525(psb_bar\050some)-525(args,)-525(info\051)]TJ 0 -10.959 Td [(if\050info)-525(.ne.)-525(zero\051)-525(then)]TJ 14.122 -10.959 Td [(info=errcode2)]TJ 0 -10.959 Td [(call)-525(psb_errpush\050'psb_foo',)-525(errcode2\051)]TJ 0 -10.958 Td [(goto)-525(9999)]TJ -14.122 -10.959 Td [(end)-525(if)]TJ 0 -10.959 Td [(...)]TJ -14.122 -10.959 Td [(9999)-525(continue)]TJ 14.122 -10.959 Td [(if)-525(\050err_act)-525(.eq.)-525(act_abort\051)-525(then)]TJ 9.414 -10.959 Td [(call)-525(psb_error\050icontxt\051)]TJ 0 -10.959 Td [(return)]TJ -9.414 -10.959 Td [(else)]TJ 9.414 -10.959 Td [(return)]TJ -9.414 -10.959 Td [(end)-525(if)]TJ -14.122 -21.917 Td [(end)-525(subroutine)-525(psb_foo)]TJ +/F46 8.9664 Tf 159.073 690.537 Td [(subroutine)-525(psb_foo\050some)-525(args,)-525(info\051)]TJ 14.122 -10.959 Td [(...)]TJ 0 -10.958 Td [(if\050error)-525(detected\051)-525(then)]TJ 14.122 -10.959 Td [(info=errcode1)]TJ 0 -10.959 Td [(call)-525(psb_errpush\050'psb_foo',)-525(errcode1\051)]TJ 0 -10.959 Td [(goto)-525(9999)]TJ -14.122 -10.959 Td [(end)-525(if)]TJ 0 -10.959 Td [(...)]TJ 0 -10.959 Td [(call)-525(psb_bar\050some)-525(args,)-525(info\051)]TJ 0 -10.959 Td [(if\050info)-525(.ne.)-525(zero\051)-525(then)]TJ 14.122 -10.959 Td [(info=errcode2)]TJ 0 -10.959 Td [(call)-525(psb_errpush\050'psb_foo',)-525(errcode2\051)]TJ 0 -10.958 Td [(goto)-525(9999)]TJ -14.122 -10.959 Td [(end)-525(if)]TJ 0 -10.959 Td [(...)]TJ -14.122 -10.959 Td [(9999)-525(continue)]TJ 14.122 -10.959 Td [(if)-525(\050err_act)-525(.eq.)-525(act_abort\051)-525(then)]TJ 9.415 -10.959 Td [(call)-525(psb_error\050icontxt\051)]TJ 0 -10.959 Td [(return)]TJ -9.415 -10.959 Td [(else)]TJ 9.415 -10.959 Td [(return)]TJ -9.415 -10.959 Td [(end)-525(if)]TJ -14.122 -21.917 Td [(end)-525(subroutine)-525(psb_foo)]TJ ET q -1 0 0 1 446.279 428.52 cm +1 0 0 1 497.088 428.52 cm []0 d 0 J 0.398 w 0 0 m 0 276.214 l S Q q -1 0 0 1 99.895 428.321 cm +1 0 0 1 150.705 428.321 cm []0 d 0 J 0.398 w 0 0 m 346.583 0 l S Q BT -/F8 9.9626 Tf 99.895 400.281 Td [(Figure)-329(9:)-443(The)-329(la)27(y)28(out)-329(of)-330(a)-329(generic)]TJ/F30 9.9626 Tf 147.445 0 Td [(psb)]TJ +/F8 9.9626 Tf 150.705 400.281 Td [(Figure)-329(9:)-443(The)-329(la)27(y)28(out)-329(of)-330(a)-329(generic)]TJ/F30 9.9626 Tf 147.445 0 Td [(psb)]TJ ET q -1 0 0 1 263.659 400.481 cm +1 0 0 1 314.468 400.481 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 266.797 400.281 Td [(foo)]TJ/F8 9.9626 Tf 18.973 0 Td [(routine)-329(with)-330(resp)-28(ect)-329(to)-330(PS)1(B)-1(LAS)1(-)-1(2.)1(0)]TJ -185.875 -11.955 Td [(error)-333(handling)-333(p)-28(olicy)83(.)]TJ +/F30 9.9626 Tf 317.606 400.281 Td [(foo)]TJ/F8 9.9626 Tf 18.974 0 Td [(routine)-329(with)-330(resp)-28(ect)-329(to)-329(PSBLAS-2.0)]TJ -185.875 -11.955 Td [(error)-333(handling)-333(p)-28(olicy)83(.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G 0 g 0 G ET q -1 0 0 1 99.895 365.268 cm +1 0 0 1 150.705 365.268 cm []0 d 0 J 0.398 w 0 0 m 346.583 0 l S Q q -1 0 0 1 100.095 187.357 cm +1 0 0 1 150.904 187.357 cm []0 d 0 J 0.398 w 0 0 m 0 177.712 l S Q 0 g 0 G 0 g 0 G BT -/F30 9.9626 Tf 108.264 352.958 Td [(==========================================================)]TJ 0 -11.955 Td [(Process:)-525(0.)-1050(PSBLAS)-525(Error)-525(\0504010\051)-525(in)-525(subroutine:)-525(df_sample)]TJ 0 -11.955 Td [(Error)-525(from)-525(call)-525(to)-525(subroutine)-525(mat)-525(dist)]TJ 0 -11.955 Td [(==========================================================)]TJ 0 -11.956 Td [(Process:)-525(0.)-1050(PSBLAS)-525(Error)-525(\0504010\051)-525(in)-525(subroutine:)-525(mat_distv)]TJ 0 -11.955 Td [(Error)-525(from)-525(call)-525(to)-525(subroutine)-525(psb_spasb)]TJ 0 -11.955 Td [(==========================================================)]TJ 0 -11.955 Td [(Process:)-525(0.)-1050(PSBLAS)-525(Error)-525(\0504010\051)-525(in)-525(subroutine:)-525(psb_spasb)]TJ 0 -11.955 Td [(Error)-525(from)-525(call)-525(to)-525(subroutine)-525(psb_cest)]TJ 0 -11.955 Td [(==========================================================)]TJ 0 -11.956 Td [(Process:)-525(0.)-1050(PSBLAS)-525(Error)-525(\050136\051)-525(in)-525(subroutine:)-525(psb_cest)]TJ 0 -11.955 Td [(Format)-525(FOO)-525(is)-525(unknown)]TJ 0 -11.955 Td [(==========================================================)]TJ 0 -11.955 Td [(Aborting...)]TJ +/F30 9.9626 Tf 159.073 352.958 Td [(==========================================================)]TJ 0 -11.955 Td [(Process:)-525(0.)-1050(PSBLAS)-525(Error)-525(\0504010\051)-525(in)-525(subroutine:)-525(df_sample)]TJ 0 -11.955 Td [(Error)-525(from)-525(call)-525(to)-525(subroutine)-525(mat)-525(dist)]TJ 0 -11.955 Td [(==========================================================)]TJ 0 -11.956 Td [(Process:)-525(0.)-1050(PSBLAS)-525(Error)-525(\0504010\051)-525(in)-525(subroutine:)-525(mat_distv)]TJ 0 -11.955 Td [(Error)-525(from)-525(call)-525(to)-525(subroutine)-525(psb_spasb)]TJ 0 -11.955 Td [(==========================================================)]TJ 0 -11.955 Td [(Process:)-525(0.)-1050(PSBLAS)-525(Error)-525(\0504010\051)-525(in)-525(subroutine:)-525(psb_spasb)]TJ 0 -11.955 Td [(Error)-525(from)-525(call)-525(to)-525(subroutine)-525(psb_cest)]TJ 0 -11.955 Td [(==========================================================)]TJ 0 -11.956 Td [(Process:)-525(0.)-1050(PSBLAS)-525(Error)-525(\050136\051)-525(in)-525(subroutine:)-525(psb_cest)]TJ 0 -11.955 Td [(Format)-525(FOO)-525(is)-525(unknown)]TJ 0 -11.955 Td [(==========================================================)]TJ 0 -11.955 Td [(Aborting...)]TJ ET q -1 0 0 1 446.279 187.357 cm +1 0 0 1 497.088 187.357 cm []0 d 0 J 0.398 w 0 0 m 0 177.712 l S Q q -1 0 0 1 99.895 187.158 cm +1 0 0 1 150.705 187.158 cm []0 d 0 J 0.398 w 0 0 m 346.583 0 l S Q BT -/F8 9.9626 Tf 99.895 159.118 Td [(Figure)-386(10:)-551(A)-386(sample)-386(PSBLAS-2.0)-387(error)-386(message.)-603(Pro)-28(cess)-387(0)-386(detected)-386(an)-387(error)]TJ 0 -11.955 Td [(condition)-333(inside)-334(the)-333(psb)]TJ +/F8 9.9626 Tf 150.705 159.118 Td [(Figure)-386(10:)-551(A)-386(sample)-386(PSBLAS-2.0)-387(err)1(or)-387(message.)-603(Pro)-28(cess)-387(0)-386(detected)-386(an)-387(error)]TJ 0 -11.955 Td [(condition)-333(inside)-334(t)1(he)-334(psb)]TJ ET q -1 0 0 1 204.658 147.362 cm +1 0 0 1 255.468 147.362 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 207.647 147.163 Td [(cest)-333(s)-1(u)1(broutine)]TJ +/F8 9.9626 Tf 258.457 147.163 Td [(cest)-333(subroutine)]TJ 0 g 0 G 0 g 0 G - 56.632 -56.725 Td [(109)]TJ + 56.631 -56.725 Td [(110)]TJ 0 g 0 G ET endstream endobj -1410 0 obj << +1443 0 obj << /Type /Page -/Contents 1411 0 R -/Resources 1409 0 R +/Contents 1444 0 R +/Resources 1442 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1413 0 R +/Parent 1439 0 R >> endobj -1412 0 obj << -/D [1410 0 R /XYZ 99.895 740.998 null] +1445 0 obj << +/D [1443 0 R /XYZ 150.705 740.998 null] >> endobj -1407 0 obj << -/D [1410 0 R /XYZ 143.452 412.237 null] +1440 0 obj << +/D [1443 0 R /XYZ 194.261 412.237 null] >> endobj -1408 0 obj << -/D [1410 0 R /XYZ 150.074 171.074 null] +1441 0 obj << +/D [1443 0 R /XYZ 200.884 171.074 null] >> endobj -1409 0 obj << -/Font << /F46 814 0 R /F8 478 0 R /F30 664 0 R >> +1442 0 obj << +/Font << /F46 825 0 R /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1416 0 obj << +1448 0 obj << /Length 2958 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(errpush)-375(|)-375(Pushes)-375(an)-375(error)-375(co)-31(de)-375(on)31(to)-375(the)-375(error)-375(stac)31(k)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(errpush)-375(|)-375(Pushes)-375(an)-375(error)-375(co)-31(de)-375(on)31(to)-375(the)-375(error)-375(stac)31(k)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_errpush\050err_c,)-525(r_name,)-525(i_err,)-525(a_err\051)]TJ @@ -16359,84 +16930,84 @@ BT 0 -19.925 Td [(err)]TJ ET q -1 0 0 1 166.08 626.17 cm +1 0 0 1 115.271 626.17 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 169.517 625.971 Td [(c)]TJ +/F27 9.9626 Tf 118.708 625.971 Td [(c)]TJ 0 g 0 G -/F8 9.9626 Tf 10.074 0 Td [(the)-333(error)-334(co)-27(de)]TJ -3.98 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger.)]TJ +/F8 9.9626 Tf 10.073 0 Td [(the)-333(error)-334(co)-27(de)]TJ -3.979 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -19.925 Td [(r)]TJ +/F27 9.9626 Tf -24.907 -19.925 Td [(r)]TJ ET q -1 0 0 1 156.111 558.424 cm +1 0 0 1 105.301 558.424 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 159.548 558.225 Td [(name)]TJ +/F27 9.9626 Tf 108.738 558.225 Td [(name)]TJ 0 g 0 G -/F8 9.9626 Tf 31.714 0 Td [(the)-333(soutine)-334(where)-333(the)-333(error)-334(has)-333(b)-28(een)-333(caugh)28(t.)]TJ -15.651 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(string.)]TJ +/F8 9.9626 Tf 31.715 0 Td [(the)-333(soutine)-334(where)-333(the)-333(error)-334(has)-333(b)-28(een)-333(caugh)28(t.)]TJ -15.651 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(string.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -31.881 Td [(i)]TJ +/F27 9.9626 Tf -24.907 -31.881 Td [(i)]TJ ET q -1 0 0 1 154.575 478.723 cm +1 0 0 1 103.765 478.723 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 158.012 478.524 Td [(err)]TJ +/F27 9.9626 Tf 107.202 478.524 Td [(err)]TJ 0 g 0 G -/F8 9.9626 Tf 19.669 0 Td [(addional)-333(info)-333(for)-334(error)-333(co)-28(de)]TJ -2.07 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)]TJ +/F8 9.9626 Tf 19.67 0 Td [(addional)-333(info)-333(for)-334(error)-333(co)-28(de)]TJ -2.07 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(arra)27(y)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -31.881 Td [(a)]TJ +/F27 9.9626 Tf -24.907 -31.881 Td [(a)]TJ ET q -1 0 0 1 156.962 410.977 cm +1 0 0 1 106.152 410.977 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 160.399 410.778 Td [(err)]TJ +/F27 9.9626 Tf 109.589 410.778 Td [(err)]TJ 0 g 0 G -/F8 9.9626 Tf 19.669 0 Td [(addional)-333(info)-333(for)-334(error)-333(co)-28(de)]TJ -4.457 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(string.)]TJ +/F8 9.9626 Tf 19.669 0 Td [(addional)-333(info)-333(for)-334(error)-333(co)-28(de)]TJ -4.456 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(string.)]TJ 0 g 0 G - 139.477 -284.475 Td [(110)]TJ + 139.477 -284.475 Td [(111)]TJ 0 g 0 G ET endstream endobj -1415 0 obj << +1447 0 obj << /Type /Page -/Contents 1416 0 R -/Resources 1414 0 R +/Contents 1448 0 R +/Resources 1446 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1413 0 R +/Parent 1439 0 R >> endobj -1417 0 obj << -/D [1415 0 R /XYZ 150.705 740.998 null] +1449 0 obj << +/D [1447 0 R /XYZ 99.895 740.998 null] >> endobj -402 0 obj << -/D [1415 0 R /XYZ 150.705 697.37 null] +406 0 obj << +/D [1447 0 R /XYZ 99.895 697.37 null] >> endobj -1414 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1446 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1420 0 obj << -/Length 1151 +1452 0 obj << +/Length 1148 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(error)-390(|)-390(Prin)31(ts)-391(the)-390(error)-390(stac)31(k)-390(con)31(ten)31(t)-390(and)-390(ab)-31(orts)-390(ex)-1(-)]TJ -25.091 -13.948 Td [(ecution)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(error)-390(|)-390(Prin)31(ts)-390(the)-391(error)-390(stac)31(k)-390(con)31(ten)32(t)-391(and)-390(ab)-31(orts)-390(ex-)]TJ -25.091 -13.948 Td [(ecution)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf 0 -18.389 Td [(call)-525(psb_error\050icontxt\051)]TJ @@ -16450,52 +17021,52 @@ BT 0 g 0 G 0 -19.926 Td [(icon)32(txt)]TJ 0 g 0 G -/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger.)]TJ +/F8 9.9626 Tf 39.989 0 Td [(the)-333(comm)27(unication)-333(con)28(text.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(global)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger.)]TJ 0 g 0 G - 139.477 -473.765 Td [(111)]TJ + 139.476 -473.765 Td [(112)]TJ 0 g 0 G ET endstream endobj -1419 0 obj << +1451 0 obj << /Type /Page -/Contents 1420 0 R -/Resources 1418 0 R +/Contents 1452 0 R +/Resources 1450 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1413 0 R +/Parent 1439 0 R >> endobj -1421 0 obj << -/D [1419 0 R /XYZ 99.895 740.998 null] +1453 0 obj << +/D [1451 0 R /XYZ 150.705 740.998 null] >> endobj -406 0 obj << -/D [1419 0 R /XYZ 99.895 685.747 null] +410 0 obj << +/D [1451 0 R /XYZ 150.705 685.747 null] >> endobj -1418 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1450 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1424 0 obj << -/Length 1249 +1456 0 obj << +/Length 1247 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(set)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(set)]TJ ET q -1 0 0 1 193.275 706.328 cm +1 0 0 1 142.465 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 197.31 706.129 Td [(errv)31(erb)-31(osit)31(y)-578(|)-579(Sets)-578(the)-578(v)31(erb)-31(osit)31(y)-578(of)-579(error)-578(mes-)]TJ -46.605 -13.948 Td [(sages.)]TJ +/F16 11.9552 Tf 146.5 706.129 Td [(errv)31(erb)-31(osit)31(y)-578(|)-579(Sets)-578(the)-578(v)31(erb)-31(osit)31(y)-579(of)-578(error)-578(mes-)]TJ -46.605 -13.948 Td [(sages.)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf 0 -18.389 Td [(call)-525(psb_set_errverbosity\050v\051)]TJ @@ -16509,52 +17080,52 @@ BT 0 g 0 G 0 -19.926 Td [(v)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(v)27(erb)-27(osit)27(y)-333(lev)28(el)]TJ 13.878 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(v)27(erb)-27(osit)27(y)-333(lev)28(el)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger.)]TJ 0 g 0 G - 139.477 -473.765 Td [(112)]TJ + 139.477 -473.765 Td [(113)]TJ 0 g 0 G ET endstream endobj -1423 0 obj << +1455 0 obj << /Type /Page -/Contents 1424 0 R -/Resources 1422 0 R +/Contents 1456 0 R +/Resources 1454 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1413 0 R +/Parent 1439 0 R >> endobj -1425 0 obj << -/D [1423 0 R /XYZ 150.705 740.998 null] +1457 0 obj << +/D [1455 0 R /XYZ 99.895 740.998 null] >> endobj -410 0 obj << -/D [1423 0 R /XYZ 150.705 683.422 null] +414 0 obj << +/D [1455 0 R /XYZ 99.895 683.422 null] >> endobj -1422 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1454 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1428 0 obj << -/Length 1710 +1460 0 obj << +/Length 1714 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(set)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(set)]TJ ET q -1 0 0 1 142.465 706.328 cm +1 0 0 1 193.275 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 146.5 706.129 Td [(erraction)-277(|)-278(Set)-277(the)-278(t)31(yp)-31(e)-277(of)-278(action)-277(to)-278(b)-31(e)-278(tak)32(en)-278(up)-31(on)]TJ -46.605 -13.948 Td [(error)-375(condition.)]TJ +/F16 11.9552 Tf 197.31 706.129 Td [(erraction)-277(|)-278(Set)-277(the)-278(t)31(yp)-31(e)-277(of)-278(action)-277(to)-278(b)-31(e)-278(tak)32(en)-278(up)-31(on)]TJ -46.605 -13.948 Td [(error)-375(condition.)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf 0 -18.389 Td [(call)-525(psb_set_erraction\050err_act\051)]TJ @@ -16569,85 +17140,85 @@ BT 0 -19.926 Td [(err)]TJ ET q -1 0 0 1 115.271 612.223 cm +1 0 0 1 166.08 612.223 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 118.708 612.023 Td [(act)]TJ +/F27 9.9626 Tf 169.517 612.023 Td [(act)]TJ 0 g 0 G -/F8 9.9626 Tf 20.098 0 Td [(the)-333(t)27(yp)-27(e)-334(of)-333(action.)]TJ -14.004 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger.)-444(P)27(ossible)-333(v)56(alues)-1(:)]TJ/F30 9.9626 Tf 180.269 0 Td [(psb_act_ret)]TJ/F8 9.9626 Tf 57.533 0 Td [(,)]TJ/F30 9.9626 Tf 6.089 0 Td [(psb_act_abort)]TJ/F8 9.9626 Tf 67.994 0 Td [(.)]TJ +/F8 9.9626 Tf 20.098 0 Td [(the)-333(t)27(yp)-27(e)-334(of)-333(action.)]TJ -14.004 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger.)-445(P)28(ossible)-333(v)55(alu)1(e)-1(s:)]TJ/F30 9.9626 Tf 180.269 0 Td [(psb_act_ret)]TJ/F8 9.9626 Tf 57.534 0 Td [(,)]TJ/F30 9.9626 Tf 6.088 0 Td [(psb_act_abort)]TJ/F8 9.9626 Tf 67.995 0 Td [(.)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -336.792 -21.918 Td [(call)-525(psb_errcomm\050icontxt,)-525(err\051)]TJ 0 g 0 G -/F8 9.9626 Tf 164.384 -451.847 Td [(113)]TJ +/F8 9.9626 Tf 164.383 -451.847 Td [(114)]TJ 0 g 0 G ET endstream endobj -1427 0 obj << +1459 0 obj << /Type /Page -/Contents 1428 0 R -/Resources 1426 0 R +/Contents 1460 0 R +/Resources 1458 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1413 0 R +/Parent 1439 0 R >> endobj -1429 0 obj << -/D [1427 0 R /XYZ 99.895 740.998 null] +1461 0 obj << +/D [1459 0 R /XYZ 150.705 740.998 null] >> endobj -414 0 obj << -/D [1427 0 R /XYZ 99.895 685.747 null] +418 0 obj << +/D [1459 0 R /XYZ 150.705 685.747 null] >> endobj -1426 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1458 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1432 0 obj << -/Length 526 +1464 0 obj << +/Length 525 >> stream 0 g 0 G 0 g 0 G BT -/F16 14.3462 Tf 150.705 706.129 Td [(9)-1125(Utilities)]TJ/F8 9.9626 Tf 0 -21.821 Td [(W)83(e)-414(ha)27(v)28(e)-415(some)-414(utitlities)-415(a)28(v)55(ailable)-414(for)-415(input)-415(and)-414(output)-415(of)-415(sparsematrices;)-455(the)]TJ 0 -11.955 Td [(in)28(terfaces)-334(to)-333(these)-333(routines)-334(are)-333(a)28(v)55(ailable)-333(in)-333(the)-334(mo)-27(dule)]TJ/F30 9.9626 Tf 241.843 0 Td [(psb_util_mod)]TJ/F8 9.9626 Tf 62.764 0 Td [(.)]TJ +/F16 14.3462 Tf 99.895 706.129 Td [(9)-1125(Utilities)]TJ/F8 9.9626 Tf 0 -21.821 Td [(W)83(e)-414(ha)27(v)28(e)-415(some)-414(utitlities)-415(a)28(v)55(ailable)-414(for)-415(input)-415(and)-414(output)-415(of)-415(sparsematrices;)-455(the)]TJ 0 -11.955 Td [(in)28(terfaces)-334(to)-333(these)-333(routines)-334(are)-333(a)28(v)55(ailable)-333(in)-333(the)-334(mo)-27(dule)]TJ/F30 9.9626 Tf 241.844 0 Td [(psb_util_mod)]TJ/F8 9.9626 Tf 62.764 0 Td [(.)]TJ 0 g 0 G - -140.224 -581.915 Td [(114)]TJ + -140.224 -581.915 Td [(115)]TJ 0 g 0 G ET endstream endobj -1431 0 obj << +1463 0 obj << /Type /Page -/Contents 1432 0 R -/Resources 1430 0 R +/Contents 1464 0 R +/Resources 1462 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1413 0 R +/Parent 1466 0 R >> endobj -1433 0 obj << -/D [1431 0 R /XYZ 150.705 740.998 null] +1465 0 obj << +/D [1463 0 R /XYZ 99.895 740.998 null] >> endobj -418 0 obj << -/D [1431 0 R /XYZ 150.705 716.092 null] +422 0 obj << +/D [1463 0 R /XYZ 99.895 716.092 null] >> endobj -1430 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F30 664 0 R >> +1462 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1437 0 obj << -/Length 4443 +1470 0 obj << +/Length 4430 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(h)31(b)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(h)31(b)]TJ ET q -1 0 0 1 115.273 706.328 cm +1 0 0 1 166.082 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 119.308 706.129 Td [(read)-298(|)-299(Read)-298(a)-299(sparse)-298(matrix)-299(from)-298(a)-299(\014le)-298(in)-299(the)-298(Harw)31(ell{)]TJ -19.413 -13.948 Td [(Bo)-31(eing)-375(format)]TJ +/F16 11.9552 Tf 170.117 706.129 Td [(read)-298(|)-299(Read)-298(a)-299(sparse)-298(matrix)-299(from)-298(a)-299(\014le)-298(in)-299(the)-298(Harw)31(ell{)]TJ -19.412 -13.948 Td [(Bo)-31(eing)-375(format)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf 0 -18.389 Td [(call)-525(hb_read\050a,)-525(iret,)-525(iunit,)-525(filename,)-525(b,)-525(mtitle\051)]TJ @@ -16661,94 +17232,94 @@ BT 0 g 0 G 0 -19.926 Td [(\014lename)]TJ 0 g 0 G -/F8 9.9626 Tf 46.513 0 Td [(The)-333(name)-334(of)-333(the)-333(\014le)-334(to)-333(b)-28(e)-333(read.)]TJ -21.606 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-435(as:)-648(a)-435(c)27(h)1(arac)-1(ter)-435(v)56(ariable)-435(con)28(taining)-436(a)-435(v)56(alid)-435(\014le)-435(name,)-461(or)]TJ/F30 9.9626 Tf 297.915 0 Td [(-)]TJ/F8 9.9626 Tf 5.231 0 Td [(,)-461(in)]TJ -303.146 -11.955 Td [(whic)28(h)-302(cas)-1(e)-302(the)-302(default)-302(input)-302(unit)-302(5)-303(\050i.e.)-434(standard)-302(input)-302(in)-302(Unix)-302(jargon\051)-302(is)]TJ 0 -11.955 Td [(used.)-444(Default:)]TJ/F30 9.9626 Tf 66.058 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ +/F8 9.9626 Tf 46.513 0 Td [(The)-333(name)-334(of)-333(the)-333(\014le)-334(to)-333(b)-28(e)-333(read.)]TJ -21.607 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-435(as:)-648(a)-435(c)28(haracte)-1(r)-435(v)56(ariable)-435(con)28(taining)-435(a)-436(v)56(alid)-435(\014le)-435(name,)-461(or)]TJ/F30 9.9626 Tf 297.915 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(,)-461(in)]TJ -303.145 -11.955 Td [(whic)28(h)-302(case)-303(the)-302(default)-302(input)-302(unit)-302(5)-303(\050i.e.)-434(standard)-302(input)-302(in)-302(Unix)-302(jargon\051)-302(is)]TJ 0 -11.955 Td [(used.)-444(Default:)]TJ/F30 9.9626 Tf 66.057 0 Td [(-)]TJ/F8 9.9626 Tf 5.231 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -96.195 -19.926 Td [(iunit)]TJ 0 g 0 G -/F8 9.9626 Tf 28.532 0 Td [(The)-333(F)83(ortran)-333(\014le)-334(un)1(it)-334(n)28(um)28(b)-28(er.)]TJ -3.625 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)-444(Only)-333(me)-1(ani)1(ngful)-334(if)-333(\014lename)-333(is)-334(not)]TJ/F30 9.9626 Tf 286.288 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ +/F8 9.9626 Tf 28.532 0 Td [(The)-333(F)83(ortran)-333(\014le)-334(u)1(nit)-334(n)28(um)28(b)-28(er.)]TJ -3.625 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue.)-444(Only)-333(me)-1(an)1(ingful)-334(if)-333(\014lename)-333(is)-334(not)]TJ/F30 9.9626 Tf 286.288 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -316.425 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(sparse)-334(matrix)-333(read)-333(from)-334(\014le.)]TJ 14.356 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(sparse)-334(matrix)-333(read)-333(from)-334(\014le.)]TJ 14.356 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.081 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 454.813 cm +1 0 0 1 362.845 454.813 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 454.614 Td [(Tspmat)]TJ +/F30 9.9626 Tf 365.983 454.614 Td [(Tspmat)]TJ ET q -1 0 0 1 347.183 454.813 cm +1 0 0 1 397.993 454.813 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 350.322 454.614 Td [(type)]TJ +/F30 9.9626 Tf 401.131 454.614 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -271.348 -19.926 Td [(b)]TJ +/F27 9.9626 Tf -271.347 -19.926 Td [(b)]TJ 0 g 0 G -/F8 9.9626 Tf 11.347 0 Td [(Rigth)-333(hand)-333(s)-1(i)1(de\050s)-1(\051.)]TJ 13.56 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(Optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(An)-282(ar)1(ra)27(y)-281(of)-282(t)28(yp)-28(e)-281(real)-282(or)-281(complex,)-292(rank)-282(2)-281(and)-282(ha)28(ving)-281(the)-282(ALLOCA)83(T)84(ABLE)]TJ 0 -11.955 Td [(attribute;)-409(will)-384(b)-28(e)-384(allo)-28(cated)-384(an)1(d)-384(\014lled)-384(in)-384(if)-384(the)-384(input)-384(\014le)-384(con)28(tains)-384(a)-384(righ)28(t)]TJ 0 -11.955 Td [(hand)-333(side,)-334(otherwise)-333(will)-333(b)-28(e)-333(left)-334(in)-333(the)-333(UNALLOCA)83(TED)-333(state.)]TJ +/F8 9.9626 Tf 11.346 0 Td [(Rigth)-333(hand)-334(sid)1(e)-1(\050s\051.)]TJ 13.56 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(Optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(An)-282(arr)1(a)27(y)-281(of)-282(t)28(yp)-28(e)-281(real)-282(or)-281(complex,)-292(rank)-282(2)-281(and)-282(ha)28(ving)-281(the)-282(ALLOCA)83(T)84(ABLE)]TJ 0 -11.955 Td [(attribute;)-409(will)-384(b)-28(e)-384(allo)-28(cated)-384(and)-383(\014lled)-384(in)-384(if)-384(the)-384(input)-384(\014le)-384(con)28(tains)-384(a)-384(righ)28(t)]TJ 0 -11.955 Td [(hand)-333(side,)-334(otherwise)-333(will)-333(b)-28(e)-333(left)-334(in)-333(the)-333(UNALLOCA)83(TED)-333(state.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.926 Td [(m)32(title)]TJ +/F27 9.9626 Tf -24.906 -19.926 Td [(m)32(title)]TJ 0 g 0 G -/F8 9.9626 Tf 34.738 0 Td [(Matrix)-333(title.)]TJ -9.831 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(Optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(A)-405(c)28(harac)28(h)28(ter)-405(v)56(ariable)-405(of)-405(length)-404(72)-405(holding)-405(a)-404(cop)27(y)-404(of)-405(the)-405(matrix)-404(title)-405(as)]TJ 0 -11.955 Td [(sp)-28(eci\014ed)-333(b)28(y)-334(the)-333(Harw)28(ell-Bo)-28(eing)-333(format)-334(and)-333(con)28(tained)-333(in)-334(the)-333(input)-333(\014le.)]TJ +/F8 9.9626 Tf 34.737 0 Td [(Matrix)-333(title.)]TJ -9.831 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(Optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(A)-405(c)28(harac)28(h)28(ter)-405(v)56(ariable)-405(of)-405(length)-404(72)-405(holding)-405(a)-404(cop)27(y)-404(of)-405(the)-405(matrix)-404(title)-405(as)]TJ 0 -11.955 Td [(sp)-28(eci\014ed)-333(b)28(y)-334(the)-333(Harw)28(ell-Bo)-28(eing)-333(format)-334(and)-333(con)28(tained)-333(in)-334(the)-333(input)-333(\014le.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.925 Td [(iret)]TJ +/F27 9.9626 Tf -24.906 -19.925 Td [(iret)]TJ 0 g 0 G -/F8 9.9626 Tf 22.589 0 Td [(Error)-333(co)-28(de.)]TJ 2.318 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +/F8 9.9626 Tf 22.589 0 Td [(Error)-333(co)-28(de.)]TJ 2.317 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ 0 g 0 G - 139.477 -196.803 Td [(115)]TJ + 139.477 -196.803 Td [(116)]TJ 0 g 0 G ET endstream endobj -1436 0 obj << +1469 0 obj << /Type /Page -/Contents 1437 0 R -/Resources 1435 0 R +/Contents 1470 0 R +/Resources 1468 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1439 0 R -/Annots [ 1434 0 R ] +/Parent 1466 0 R +/Annots [ 1467 0 R ] >> endobj -1434 0 obj << +1467 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 451.404 372.239 462.529] +/Rect [345.53 451.404 423.049 462.529] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1438 0 obj << -/D [1436 0 R /XYZ 99.895 740.998 null] +1471 0 obj << +/D [1469 0 R /XYZ 150.705 740.998 null] >> endobj -422 0 obj << -/D [1436 0 R /XYZ 99.895 683.422 null] +426 0 obj << +/D [1469 0 R /XYZ 150.705 683.422 null] >> endobj -1435 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1468 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1443 0 obj << -/Length 4859 +1475 0 obj << +/Length 4878 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(h)31(b)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(h)31(b)]TJ ET q -1 0 0 1 166.082 706.328 cm +1 0 0 1 115.273 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 170.117 706.129 Td [(write)-357(|)-357(W)93(rite)-357(a)-357(sparse)-357(matrix)-358(to)-357(a)-357(\014le)-357(in)-357(the)-357(Harw)31(ell{)]TJ -19.412 -13.948 Td [(Bo)-31(eing)-375(format)]TJ +/F16 11.9552 Tf 119.308 706.129 Td [(write)-357(|)-357(W)93(rite)-357(a)-357(sparse)-357(matrix)-357(to)-358(a)-357(\014le)-357(in)-357(the)-357(Harw)31(ell{)]TJ -19.413 -13.948 Td [(Bo)-31(eing)-375(format)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf 0 -18.389 Td [(call)-525(hb_write\050a,)-525(iret,)-525(iunit,)-525(filename,)-525(key,)-525(rhs,)-525(mtitle\051)]TJ @@ -16762,105 +17333,105 @@ BT 0 g 0 G 0 -19.926 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(sparse)-334(matrix)-333(to)-333(b)-28(e)-333(written.)]TJ 14.355 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.082 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(sparse)-334(matrix)-333(to)-333(b)-28(e)-333(written.)]TJ 14.356 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 588.312 cm +1 0 0 1 312.036 588.312 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 588.113 Td [(Tspmat)]TJ +/F30 9.9626 Tf 315.174 588.113 Td [(Tspmat)]TJ ET q -1 0 0 1 397.993 588.312 cm +1 0 0 1 347.183 588.312 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 401.131 588.113 Td [(type)]TJ +/F30 9.9626 Tf 350.322 588.113 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -271.347 -19.925 Td [(b)]TJ +/F27 9.9626 Tf -271.348 -19.925 Td [(b)]TJ 0 g 0 G -/F8 9.9626 Tf 11.346 0 Td [(Rigth)-333(hand)-334(sid)1(e)-1(.)]TJ 13.56 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(Optional)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(An)-282(arr)1(a)27(y)-281(of)-282(t)28(yp)-28(e)-281(real)-282(or)-281(complex,)-292(rank)-282(1)-281(and)-282(ha)28(ving)-281(the)-282(ALLOCA)83(T)84(ABLE)]TJ 0 -11.955 Td [(attribute;)-409(will)-384(b)-28(e)-384(allo)-28(cated)-384(and)-383(\014lled)-384(in)-384(if)-384(the)-384(input)-384(\014le)-384(con)28(tains)-384(a)-384(righ)28(t)]TJ 0 -11.955 Td [(hand)-333(side.)]TJ +/F8 9.9626 Tf 11.347 0 Td [(Rigth)-333(hand)-333(s)-1(i)1(de.)]TJ 13.56 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(Optional)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(An)-282(ar)1(ra)27(y)-281(of)-282(t)28(yp)-28(e)-281(real)-282(or)-281(complex,)-292(rank)-282(1)-281(and)-282(ha)28(ving)-281(the)-282(ALLOCA)83(T)84(ABLE)]TJ 0 -11.955 Td [(attribute;)-409(will)-384(b)-28(e)-384(allo)-28(cated)-384(an)1(d)-384(\014lled)-384(in)-384(if)-384(the)-384(input)-384(\014le)-384(con)28(tains)-384(a)-384(righ)28(t)]TJ 0 -11.955 Td [(hand)-333(side.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -19.925 Td [(\014lename)]TJ +/F27 9.9626 Tf -24.907 -19.925 Td [(\014lename)]TJ 0 g 0 G -/F8 9.9626 Tf 46.513 0 Td [(The)-333(name)-334(of)-333(the)-333(\014le)-334(to)-333(b)-28(e)-333(written)-333(to.)]TJ -21.607 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.761 -11.955 Td [(Sp)-28(eci\014ed)-435(as:)-648(a)-435(c)27(haracter)-435(v)56(ariable)-435(con)27(tain)1(ing)-436(a)-435(v)56(alid)-435(\014le)-435(name)-1(,)-460(or)]TJ/F30 9.9626 Tf 297.916 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(,)-461(in)]TJ -303.146 -11.956 Td [(whic)28(h)-281(case)-280(the)-281(d)1(e)-1(f)1(ault)-281(output)-280(unit)-280(6)-281(\050i.e.)-427(stand)1(ard)-281(output)-280(in)-280(Unix)-281(jargon\051)]TJ 0 -11.955 Td [(is)-333(used.)-445(Default:)]TJ/F30 9.9626 Tf 76.076 0 Td [(-)]TJ/F8 9.9626 Tf 5.231 0 Td [(.)]TJ +/F8 9.9626 Tf 46.513 0 Td [(The)-333(name)-334(of)-333(the)-333(\014le)-334(to)-333(b)-28(e)-333(written)-333(to.)]TJ -21.606 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-435(as:)-648(a)-435(c)27(h)1(arac)-1(ter)-435(v)56(ariable)-435(con)28(taining)-436(a)-435(v)56(alid)-435(\014le)-435(name,)-461(or)]TJ/F30 9.9626 Tf 297.915 0 Td [(-)]TJ/F8 9.9626 Tf 5.231 0 Td [(,)-461(in)]TJ -303.146 -11.956 Td [(whic)28(h)-281(case)-280(the)-280(default)-281(output)-280(unit)-280(6)-281(\050i.e.)-426(s)-1(t)1(andard)-281(output)-280(in)-280(Unix)-281(jargon\051)]TJ 0 -11.955 Td [(is)-333(used.)-445(Default:)]TJ/F30 9.9626 Tf 76.076 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -106.213 -19.925 Td [(iunit)]TJ 0 g 0 G -/F8 9.9626 Tf 28.532 0 Td [(The)-333(F)83(ortran)-333(\014le)-334(u)1(nit)-334(n)28(um)28(b)-28(er.)]TJ -3.626 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.761 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)-444(Only)-334(meaningf)1(ul)-334(if)-333(\014lename)-333(is)-334(not)]TJ/F30 9.9626 Tf 286.289 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ +/F8 9.9626 Tf 28.532 0 Td [(The)-333(F)83(ortran)-333(\014le)-334(un)1(it)-334(n)28(um)28(b)-28(er.)]TJ -3.625 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)-444(Only)-333(me)-1(ani)1(ngful)-334(if)-333(\014lename)-333(is)-334(not)]TJ/F30 9.9626 Tf 286.288 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -316.425 -19.926 Td [(k)32(ey)]TJ 0 g 0 G -/F8 9.9626 Tf 22.008 0 Td [(Matrix)-333(k)28(ey)83(.)]TJ 2.899 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(Optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(A)-385(c)28(harac)28(h)28(ter)-385(v)56(ariable)-385(of)-385(length)-384(8)-385(holding)-385(the)-384(matrix)-385(k)28(ey)-385(as)-385(sp)-28(eci\014ed)-384(b)27(y)]TJ 0 -11.955 Td [(the)-333(Harw)27(ell-Bo)-27(eing)-334(format)-333(and)-333(to)-334(b)-27(e)-334(written)-333(to)-333(\014le.)]TJ +/F8 9.9626 Tf 22.008 0 Td [(Matrix)-333(k)28(ey)83(.)]TJ 2.899 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(Optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(A)-385(c)28(harac)28(h)28(ter)-385(v)56(ariable)-385(of)-385(length)-384(8)-385(holding)-385(the)-384(m)-1(atri)1(x)-385(k)28(ey)-385(as)-385(sp)-28(eci\014ed)-384(b)27(y)]TJ 0 -11.955 Td [(the)-333(Harw)27(ell-Bo)-27(eing)-334(format)-333(and)-333(to)-334(b)-27(e)-334(written)-333(to)-333(\014le.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.926 Td [(m)32(title)]TJ 0 g 0 G -/F8 9.9626 Tf 34.738 0 Td [(Matrix)-333(title.)]TJ -9.831 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(Optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(A)-318(c)28(harac)28(h)28(ter)-318(v)56(ariable)-318(of)-317(length)-318(72)-317(holding)-318(the)-317(matrix)-318(title)-318(as)-317(sp)-28(eci\014ed)-318(b)28(y)]TJ 0 -11.955 Td [(the)-333(Harw)27(ell-Bo)-27(eing)-334(format)-333(and)-333(to)-334(b)-27(e)-334(written)-333(to)-333(\014le.)]TJ +/F8 9.9626 Tf 34.738 0 Td [(Matrix)-333(title.)]TJ -9.831 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(Optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(A)-318(c)28(harac)28(h)28(ter)-318(v)56(ariable)-318(of)-317(length)-318(72)-317(holding)-318(the)-317(m)-1(atr)1(ix)-318(title)-318(as)-317(sp)-28(eci\014ed)-318(b)28(y)]TJ 0 -11.955 Td [(the)-333(Harw)27(ell-Bo)-27(eing)-334(format)-333(and)-333(to)-334(b)-27(e)-334(written)-333(to)-333(\014le.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(iret)]TJ 0 g 0 G -/F8 9.9626 Tf 22.589 0 Td [(Error)-333(co)-28(de.)]TJ 2.318 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detected.)]TJ +/F8 9.9626 Tf 22.589 0 Td [(Error)-333(co)-28(de.)]TJ 2.318 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ 0 g 0 G - 139.477 -141.012 Td [(116)]TJ + 139.477 -141.012 Td [(117)]TJ 0 g 0 G ET endstream endobj -1442 0 obj << +1474 0 obj << /Type /Page -/Contents 1443 0 R -/Resources 1441 0 R +/Contents 1475 0 R +/Resources 1473 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1439 0 R -/Annots [ 1440 0 R ] +/Parent 1466 0 R +/Annots [ 1472 0 R ] >> endobj -1440 0 obj << +1472 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 584.903 423.049 596.028] +/Rect [294.721 584.903 372.239 596.028] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1444 0 obj << -/D [1442 0 R /XYZ 150.705 740.998 null] +1476 0 obj << +/D [1474 0 R /XYZ 99.895 740.998 null] >> endobj -426 0 obj << -/D [1442 0 R /XYZ 150.705 683.422 null] +430 0 obj << +/D [1474 0 R /XYZ 99.895 683.422 null] >> endobj -1441 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1473 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1448 0 obj << -/Length 3235 +1480 0 obj << +/Length 3229 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(mm)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(mm)]TJ ET q -1 0 0 1 123.118 706.328 cm +1 0 0 1 173.928 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 127.153 706.129 Td [(mat)]TJ +/F16 11.9552 Tf 177.963 706.129 Td [(mat)]TJ ET q -1 0 0 1 150.936 706.328 cm +1 0 0 1 201.746 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 154.971 706.129 Td [(read)-467(|)-467(Read)-466(a)-467(sparse)-467(matrix)-467(from)-467(a)-467(\014le)-466(in)-467(the)]TJ -55.076 -13.948 Td [(MatrixMark)31(et)-375(format)]TJ +/F16 11.9552 Tf 205.781 706.129 Td [(read)-467(|)-467(Read)-466(a)-467(sparse)-467(matrix)-467(from)-467(a)-467(\014le)-466(in)-467(the)]TJ -55.076 -13.948 Td [(MatrixMark)31(et)-375(format)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf 0 -18.389 Td [(call)-525(mm_mat_read\050a,)-525(iret,)-525(iunit,)-525(filename\051)]TJ @@ -16874,93 +17445,93 @@ BT 0 g 0 G 0 -19.926 Td [(\014lename)]TJ 0 g 0 G -/F8 9.9626 Tf 46.513 0 Td [(The)-333(name)-334(of)-333(the)-333(\014le)-334(to)-333(b)-28(e)-333(read.)]TJ -21.606 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-435(as:)-648(a)-435(c)27(h)1(arac)-1(ter)-435(v)56(ariable)-435(con)28(taining)-436(a)-435(v)56(alid)-435(\014le)-435(name,)-461(or)]TJ/F30 9.9626 Tf 297.915 0 Td [(-)]TJ/F8 9.9626 Tf 5.231 0 Td [(,)-461(in)]TJ -303.146 -11.955 Td [(whic)28(h)-302(cas)-1(e)-302(the)-302(default)-302(input)-302(unit)-302(5)-303(\050i.e.)-434(standard)-302(input)-302(in)-302(Unix)-302(jargon\051)-302(is)]TJ 0 -11.955 Td [(used.)-444(Default:)]TJ/F30 9.9626 Tf 66.058 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ +/F8 9.9626 Tf 46.513 0 Td [(The)-333(name)-334(of)-333(the)-333(\014le)-334(to)-333(b)-28(e)-333(read.)]TJ -21.606 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-435(as:)-648(a)-435(c)28(haracte)-1(r)-435(v)56(ariable)-435(con)28(taining)-435(a)-436(v)56(alid)-435(\014le)-435(name,)-461(or)]TJ/F30 9.9626 Tf 297.915 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(,)-461(in)]TJ -303.145 -11.955 Td [(whic)28(h)-302(case)-303(the)-302(default)-302(input)-302(unit)-302(5)-303(\050i.e.)-434(standard)-302(input)-302(in)-302(Unix)-302(jargon\051)-302(is)]TJ 0 -11.955 Td [(used.)-444(Default:)]TJ/F30 9.9626 Tf 66.057 0 Td [(-)]TJ/F8 9.9626 Tf 5.231 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -96.195 -19.926 Td [(iunit)]TJ 0 g 0 G -/F8 9.9626 Tf 28.532 0 Td [(The)-333(F)83(ortran)-333(\014le)-334(un)1(it)-334(n)28(um)28(b)-28(er.)]TJ -3.625 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)-444(Only)-333(me)-1(ani)1(ngful)-334(if)-333(\014lename)-333(is)-334(not)]TJ/F30 9.9626 Tf 286.288 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ +/F8 9.9626 Tf 28.532 0 Td [(The)-333(F)83(ortran)-333(\014le)-334(u)1(nit)-334(n)28(um)28(b)-28(er.)]TJ -3.625 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue.)-444(Only)-333(me)-1(an)1(ingful)-334(if)-333(\014lename)-333(is)-334(not)]TJ/F30 9.9626 Tf 286.288 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -316.425 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(sparse)-334(matrix)-333(read)-333(from)-334(\014le.)]TJ 14.356 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(sparse)-334(matrix)-333(read)-333(from)-334(\014le.)]TJ 14.356 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.081 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 454.813 cm +1 0 0 1 362.845 454.813 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 454.614 Td [(Tspmat)]TJ +/F30 9.9626 Tf 365.983 454.614 Td [(Tspmat)]TJ ET q -1 0 0 1 347.183 454.813 cm +1 0 0 1 397.993 454.813 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 350.322 454.614 Td [(type)]TJ +/F30 9.9626 Tf 401.131 454.614 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -271.348 -19.926 Td [(iret)]TJ +/F27 9.9626 Tf -271.347 -19.926 Td [(iret)]TJ 0 g 0 G -/F8 9.9626 Tf 22.589 0 Td [(Error)-333(co)-28(de.)]TJ 2.318 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +/F8 9.9626 Tf 22.589 0 Td [(Error)-333(co)-28(de.)]TJ 2.317 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ 0 g 0 G - 139.477 -320.34 Td [(117)]TJ + 139.477 -320.34 Td [(118)]TJ 0 g 0 G ET endstream endobj -1447 0 obj << +1479 0 obj << /Type /Page -/Contents 1448 0 R -/Resources 1446 0 R +/Contents 1480 0 R +/Resources 1478 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1439 0 R -/Annots [ 1445 0 R ] +/Parent 1466 0 R +/Annots [ 1477 0 R ] >> endobj -1445 0 obj << +1477 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 451.404 372.239 462.529] +/Rect [345.53 451.404 423.049 462.529] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1449 0 obj << -/D [1447 0 R /XYZ 99.895 740.998 null] +1481 0 obj << +/D [1479 0 R /XYZ 150.705 740.998 null] >> endobj -430 0 obj << -/D [1447 0 R /XYZ 99.895 685.747 null] +434 0 obj << +/D [1479 0 R /XYZ 150.705 685.747 null] >> endobj -1446 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1478 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1452 0 obj << -/Length 3263 +1484 0 obj << +/Length 3261 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(mm)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(mm)]TJ ET q -1 0 0 1 173.928 706.328 cm +1 0 0 1 123.118 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 177.963 706.129 Td [(v)31(et)]TJ +/F16 11.9552 Tf 127.153 706.129 Td [(v)31(et)]TJ ET q -1 0 0 1 196.861 706.328 cm +1 0 0 1 146.052 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 200.896 706.129 Td [(read)-332(|)-332(Read)-332(a)-332(dense)-332(v)31(ector)-332(from)-332(a)-332(\014le)-332(in)-332(the)-332(Ma-)]TJ -50.191 -13.948 Td [(trixMark)31(et)-375(format)]TJ +/F16 11.9552 Tf 150.087 706.129 Td [(read)-332(|)-332(Read)-332(a)-332(dense)-332(v)31(ector)-332(from)-332(a)-332(\014le)-332(in)-332(the)-332(Ma-)]TJ -50.192 -13.948 Td [(trixMark)31(et)-375(format)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf 0 -18.389 Td [(call)-525(mm_vet_read\050b,)-525(iret,)-525(iunit,)-525(filename\051)]TJ @@ -16974,67 +17545,67 @@ BT 0 g 0 G 0 -19.926 Td [(\014lename)]TJ 0 g 0 G -/F8 9.9626 Tf 46.513 0 Td [(The)-333(name)-334(of)-333(the)-333(\014le)-334(to)-333(b)-28(e)-333(read.)]TJ -21.607 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-435(as:)-648(a)-435(c)28(haracte)-1(r)-435(v)56(ariable)-435(con)28(taining)-435(a)-436(v)56(alid)-435(\014le)-435(name,)-461(or)]TJ/F30 9.9626 Tf 297.915 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(,)-461(in)]TJ -303.145 -11.955 Td [(whic)28(h)-302(case)-303(the)-302(default)-302(input)-302(unit)-302(5)-303(\050i.e.)-434(standard)-302(input)-302(in)-302(Unix)-302(jargon\051)-302(is)]TJ 0 -11.955 Td [(used.)-444(Default:)]TJ/F30 9.9626 Tf 66.057 0 Td [(-)]TJ/F8 9.9626 Tf 5.231 0 Td [(.)]TJ +/F8 9.9626 Tf 46.513 0 Td [(The)-333(name)-334(of)-333(the)-333(\014le)-334(to)-333(b)-28(e)-333(read.)]TJ -21.606 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-435(as:)-648(a)-435(c)27(h)1(arac)-1(ter)-435(v)56(ariable)-435(con)28(taining)-436(a)-435(v)56(alid)-435(\014le)-435(name,)-461(or)]TJ/F30 9.9626 Tf 297.915 0 Td [(-)]TJ/F8 9.9626 Tf 5.231 0 Td [(,)-461(in)]TJ -303.146 -11.955 Td [(whic)28(h)-302(cas)-1(e)-302(the)-302(default)-302(input)-302(unit)-302(5)-303(\050i.e.)-434(standard)-302(input)-302(in)-302(Unix)-302(jargon\051)-302(is)]TJ 0 -11.955 Td [(used.)-444(Default:)]TJ/F30 9.9626 Tf 66.058 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -96.195 -19.926 Td [(iunit)]TJ 0 g 0 G -/F8 9.9626 Tf 28.532 0 Td [(The)-333(F)83(ortran)-333(\014le)-334(u)1(nit)-334(n)28(um)28(b)-28(er.)]TJ -3.625 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(an)-334(in)28(teger)-333(v)55(alue.)-444(Only)-333(me)-1(an)1(ingful)-334(if)-333(\014lename)-333(is)-334(not)]TJ/F30 9.9626 Tf 286.288 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ +/F8 9.9626 Tf 28.532 0 Td [(The)-333(F)83(ortran)-333(\014le)-334(un)1(it)-334(n)28(um)28(b)-28(er.)]TJ -3.625 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)-444(Only)-333(me)-1(ani)1(ngful)-334(if)-333(\014lename)-333(is)-334(not)]TJ/F30 9.9626 Tf 286.288 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -316.425 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(b)]TJ 0 g 0 G -/F8 9.9626 Tf 11.346 0 Td [(Rigth)-333(hand)-334(side\050s\051.)]TJ 13.561 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(An)-281(arra)27(y)-281(of)-282(t)28(yp)-28(e)-281(real)-282(or)-281(complex,)-292(rank)-282(2)-281(and)-282(ha)28(ving)-281(the)-282(ALLOCA)84(T)83(ABLE)]TJ 0 -11.956 Td [(attribute;)-409(will)-384(b)-28(e)-384(allo)-27(c)-1(ated)-383(and)-384(\014lled)-384(in)-384(if)-384(the)-384(input)-384(\014le)-384(con)28(tains)-384(a)-384(righ)28(t)]TJ 0 -11.955 Td [(hand)-333(side,)-334(oth)1(e)-1(r)1(w)-1(i)1(s)-1(e)-333(will)-333(b)-28(e)-333(left)-334(in)-333(the)-333(UNALLOCA)83(TED)-333(state.)]TJ +/F8 9.9626 Tf 11.347 0 Td [(Rigth)-333(hand)-333(s)-1(i)1(de\050s)-1(\051.)]TJ 13.56 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(An)-281(arra)27(y)-281(of)-282(t)28(yp)-28(e)-281(real)-282(or)-281(complex,)-292(rank)-282(2)-281(and)-282(ha)28(ving)-281(the)-282(ALLOCA)83(T)84(ABLE)]TJ 0 -11.956 Td [(attribute;)-409(will)-384(b)-28(e)-384(allo)-28(cated)-383(a)-1(n)1(d)-384(\014lled)-384(in)-384(if)-384(the)-384(input)-384(\014le)-384(con)28(tains)-384(a)-384(righ)28(t)]TJ 0 -11.955 Td [(hand)-333(side,)-334(otherwise)-333(will)-333(b)-28(e)-333(left)-334(in)-333(the)-333(UNALLOCA)83(TED)-333(state.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(iret)]TJ 0 g 0 G /F8 9.9626 Tf 22.589 0 Td [(Error)-333(co)-28(de.)]TJ 2.318 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detected.)]TJ 0 g 0 G - 139.477 -296.43 Td [(118)]TJ + 139.477 -296.43 Td [(119)]TJ 0 g 0 G ET endstream endobj -1451 0 obj << +1483 0 obj << /Type /Page -/Contents 1452 0 R -/Resources 1450 0 R +/Contents 1484 0 R +/Resources 1482 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1439 0 R +/Parent 1466 0 R >> endobj -1453 0 obj << -/D [1451 0 R /XYZ 150.705 740.998 null] +1485 0 obj << +/D [1483 0 R /XYZ 99.895 740.998 null] >> endobj -434 0 obj << -/D [1451 0 R /XYZ 150.705 685.747 null] +438 0 obj << +/D [1483 0 R /XYZ 99.895 685.747 null] >> endobj -1450 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1482 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1457 0 obj << -/Length 3711 +1489 0 obj << +/Length 3719 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(mm)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(mm)]TJ ET q -1 0 0 1 123.118 706.328 cm +1 0 0 1 173.928 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 127.153 706.129 Td [(mat)]TJ +/F16 11.9552 Tf 177.963 706.129 Td [(mat)]TJ ET q -1 0 0 1 150.936 706.328 cm +1 0 0 1 201.746 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 154.971 706.129 Td [(write)-531(|)-532(W)94(rite)-532(a)-531(sparse)-531(matrix)-532(to)-531(a)-532(\014le)-531(in)-531(the)]TJ -55.076 -13.948 Td [(MatrixMark)31(et)-375(format)]TJ +/F16 11.9552 Tf 205.781 706.129 Td [(write)-531(|)-532(W)94(rite)-531(a)-532(sparse)-531(matrix)-532(to)-531(a)-532(\014le)-531(in)-531(the)]TJ -55.076 -13.948 Td [(MatrixMark)31(et)-375(format)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf 0 -18.389 Td [(call)-525(mm_mat_write\050a,)-525(mtitle,)-525(iret,)-525(iunit,)-525(filename\051)]TJ @@ -17048,129 +17619,129 @@ BT 0 g 0 G 0 -19.926 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(sparse)-334(matrix)-333(to)-333(b)-28(e)-333(written.)]TJ 14.356 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.899 0 Td [(.)]TJ -67.082 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(sparse)-334(matrix)-333(to)-333(b)-28(e)-333(written.)]TJ 14.356 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(required)]TJ/F8 9.9626 Tf 41.898 0 Td [(.)]TJ -67.081 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 170.915 0 Td [(psb)]TJ +/F30 9.9626 Tf 170.914 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 588.312 cm +1 0 0 1 362.845 588.312 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 588.113 Td [(Tspmat)]TJ +/F30 9.9626 Tf 365.983 588.113 Td [(Tspmat)]TJ ET q -1 0 0 1 347.183 588.312 cm +1 0 0 1 397.993 588.312 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 350.322 588.113 Td [(type)]TJ +/F30 9.9626 Tf 401.131 588.113 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -271.348 -19.925 Td [(m)32(title)]TJ +/F27 9.9626 Tf -271.347 -19.925 Td [(m)32(title)]TJ 0 g 0 G -/F8 9.9626 Tf 34.738 0 Td [(Matrix)-333(title.)]TJ -9.831 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(A)-299(c)28(harac)28(h)28(ter)-299(v)55(ariable)-299(h)1(olding)-299(a)-299(descriptiv)28(e)-299(title)-299(for)-299(the)-299(matrix)-298(to)-299(b)-28(e)-299(writ-)]TJ 0 -11.955 Td [(ten)-333(to)-334(\014le.)]TJ +/F8 9.9626 Tf 34.737 0 Td [(Matrix)-333(title.)]TJ -9.831 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(A)-299(c)28(harac)28(h)27(t)1(e)-1(r)-298(v)55(ariable)-299(hold)1(ing)-299(a)-299(descriptiv)28(e)-299(title)-299(for)-299(the)-299(matrix)-298(to)-299(b)-28(e)-299(writ-)]TJ 0 -11.955 Td [(ten)-333(to)-334(\014le.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.925 Td [(\014lename)]TJ +/F27 9.9626 Tf -24.906 -19.925 Td [(\014lename)]TJ 0 g 0 G -/F8 9.9626 Tf 46.513 0 Td [(The)-333(name)-334(of)-333(the)-333(\014le)-334(to)-333(b)-28(e)-333(written)-333(to.)]TJ -21.606 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-435(as:)-648(a)-435(c)27(h)1(arac)-1(ter)-435(v)56(ariable)-435(con)28(taining)-436(a)-435(v)56(alid)-435(\014le)-435(name,)-461(or)]TJ/F30 9.9626 Tf 297.915 0 Td [(-)]TJ/F8 9.9626 Tf 5.231 0 Td [(,)-461(in)]TJ -303.146 -11.955 Td [(whic)28(h)-281(case)-280(the)-280(default)-281(output)-280(unit)-280(6)-281(\050i.e.)-426(s)-1(t)1(andard)-281(output)-280(in)-280(Unix)-281(jargon\051)]TJ 0 -11.956 Td [(is)-333(used.)-445(Default:)]TJ/F30 9.9626 Tf 76.076 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ +/F8 9.9626 Tf 46.513 0 Td [(The)-333(name)-334(of)-333(the)-333(\014le)-334(to)-333(b)-28(e)-333(written)-333(to.)]TJ -21.607 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.761 -11.955 Td [(Sp)-28(eci\014ed)-435(as:)-648(a)-435(c)27(haracter)-435(v)56(ariable)-435(con)27(tain)1(ing)-436(a)-435(v)56(alid)-435(\014le)-435(name)-1(,)-460(or)]TJ/F30 9.9626 Tf 297.916 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(,)-461(in)]TJ -303.146 -11.955 Td [(whic)28(h)-281(case)-280(the)-281(d)1(e)-1(f)1(ault)-281(output)-280(unit)-280(6)-281(\050i.e.)-427(stand)1(ard)-281(output)-280(in)-280(Unix)-281(jargon\051)]TJ 0 -11.956 Td [(is)-333(used.)-445(Default:)]TJ/F30 9.9626 Tf 76.076 0 Td [(-)]TJ/F8 9.9626 Tf 5.231 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -106.213 -19.925 Td [(iunit)]TJ 0 g 0 G -/F8 9.9626 Tf 28.532 0 Td [(The)-333(F)83(ortran)-333(\014le)-334(un)1(it)-334(n)28(um)28(b)-28(er.)]TJ -3.625 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.183 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.76 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)-444(Only)-333(me)-1(ani)1(ngful)-334(if)-333(\014lename)-333(is)-334(not)]TJ/F30 9.9626 Tf 286.288 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ +/F8 9.9626 Tf 28.532 0 Td [(The)-333(F)83(ortran)-333(\014le)-334(u)1(nit)-334(n)28(um)28(b)-28(er.)]TJ -3.626 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 25.184 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -65.761 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(alue.)-444(Only)-334(meaningf)1(ul)-334(if)-333(\014lename)-333(is)-334(not)]TJ/F30 9.9626 Tf 286.289 0 Td [(-)]TJ/F8 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -316.425 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(iret)]TJ 0 g 0 G -/F8 9.9626 Tf 22.589 0 Td [(Error)-333(co)-28(de.)]TJ 2.318 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detected.)]TJ +/F8 9.9626 Tf 22.589 0 Td [(Error)-333(co)-28(de.)]TJ 2.318 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(An)-333(in)28(teger)-334(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detected.)]TJ 0 g 0 G - 139.477 -264.549 Td [(119)]TJ + 139.476 -264.549 Td [(120)]TJ 0 g 0 G ET endstream endobj -1456 0 obj << +1488 0 obj << /Type /Page -/Contents 1457 0 R -/Resources 1455 0 R +/Contents 1489 0 R +/Resources 1487 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1439 0 R -/Annots [ 1454 0 R ] +/Parent 1466 0 R +/Annots [ 1486 0 R ] >> endobj -1454 0 obj << +1486 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 584.903 372.239 596.028] +/Rect [345.53 584.903 423.049 596.028] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1458 0 obj << -/D [1456 0 R /XYZ 99.895 740.998 null] +1490 0 obj << +/D [1488 0 R /XYZ 150.705 740.998 null] >> endobj -438 0 obj << -/D [1456 0 R /XYZ 99.895 685.747 null] +442 0 obj << +/D [1488 0 R /XYZ 150.705 685.747 null] >> endobj -1455 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1487 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1461 0 obj << -/Length 912 +1493 0 obj << +/Length 910 >> stream 0 g 0 G 0 g 0 G BT -/F16 14.3462 Tf 150.705 706.129 Td [(10)-1125(Preconditioner)-375(routines)]TJ/F8 9.9626 Tf 0 -21.821 Td [(The)-310(base)-310(PSBLAS)-310(library)-310(con)28(tains)-310(the)-310(implemen)28(tation)-310(of)-310(t)28(w)27(o)-310(simple)-310(precondi-)]TJ 0 -11.955 Td [(tioning)-333(tec)28(hniques:)]TJ +/F16 14.3462 Tf 99.895 706.129 Td [(10)-1125(Preconditioner)-375(routines)]TJ/F8 9.9626 Tf 0 -21.821 Td [(The)-310(base)-310(PSBLAS)-310(library)-310(con)28(tains)-310(the)-310(implemen)28(tation)-310(of)-310(t)28(w)27(o)-310(simple)-310(precondi-)]TJ 0 -11.955 Td [(tioning)-333(tec)27(hn)1(iques:)]TJ 0 g 0 G /F14 9.9626 Tf 14.944 -19.925 Td [(\017)]TJ 0 g 0 G -/F8 9.9626 Tf 9.962 0 Td [(Diagonal)-333(Scaling)]TJ +/F8 9.9626 Tf 9.963 0 Td [(Diagonal)-333(Scaling)]TJ 0 g 0 G -/F14 9.9626 Tf -9.962 -19.926 Td [(\017)]TJ +/F14 9.9626 Tf -9.963 -19.926 Td [(\017)]TJ 0 g 0 G -/F8 9.9626 Tf 9.962 0 Td [(Blo)-28(c)28(k)-333(Jacobi)-334(with)-333(ILU\0500\051)-333(factorization)]TJ -24.906 -19.925 Td [(The)-364(supp)-27(orting)-364(data)-363(t)27(yp)-27(e)-364(and)-364(subroutin)1(e)-364(in)28(terfaces)-364(are)-364(de\014ned)-363(in)-364(the)-363(mo)-28(dule)]TJ/F30 9.9626 Tf 0 -11.955 Td [(psb_prec_mod)]TJ/F8 9.9626 Tf 62.764 0 Td [(.)]TJ +/F8 9.9626 Tf 9.963 0 Td [(Blo)-28(c)28(k)-333(Jacobi)-334(with)-333(ILU\0500\051)-333(factorization)]TJ -24.907 -19.925 Td [(The)-364(supp)-27(orting)-364(data)-364(t)28(yp)-27(e)-364(and)-364(subroutine)-363(in)28(terfaces)-364(are)-364(de\014ned)-363(in)-364(the)-364(mo)-27(dule)]TJ/F30 9.9626 Tf 0 -11.955 Td [(psb_prec_mod)]TJ/F8 9.9626 Tf 62.764 0 Td [(.)]TJ 0 g 0 G - 101.619 -510.184 Td [(120)]TJ + 101.62 -510.184 Td [(121)]TJ 0 g 0 G ET endstream endobj -1460 0 obj << +1492 0 obj << /Type /Page -/Contents 1461 0 R -/Resources 1459 0 R +/Contents 1493 0 R +/Resources 1491 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1439 0 R +/Parent 1495 0 R >> endobj -1462 0 obj << -/D [1460 0 R /XYZ 150.705 740.998 null] +1494 0 obj << +/D [1492 0 R /XYZ 99.895 740.998 null] >> endobj -442 0 obj << -/D [1460 0 R /XYZ 150.705 716.092 null] +446 0 obj << +/D [1492 0 R /XYZ 99.895 716.092 null] >> endobj -1459 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F14 667 0 R /F30 664 0 R >> +1491 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F14 672 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1467 0 obj << -/Length 4642 +1500 0 obj << +/Length 4654 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(precinit)-375(|)-375(Initialize)-375(a)-375(preconditioner)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(precinit)-375(|)-375(Initialize)-375(a)-375(preconditioner)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_precinit\050prec,)-525(ptype,)-525(info\051)]TJ @@ -17184,40 +17755,40 @@ BT 0 g 0 G 0 -19.925 Td [(pt)32(yp)-32(e)]TJ 0 g 0 G -/F8 9.9626 Tf 33.465 0 Td [(the)-333(t)27(yp)-27(e)-334(of)-333(preconditioner.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 153.093 0 Td [(global)]TJ/F8 9.9626 Tf -161.651 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(c)28(haracter)-333(s)-1(t)1(ring,)-334(see)-333(usage)-334(notes.)]TJ +/F8 9.9626 Tf 33.465 0 Td [(the)-333(t)28(yp)-28(e)-334(of)-333(preconditioner.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 153.092 0 Td [(global)]TJ/F8 9.9626 Tf -161.65 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(c)28(haracter)-333(string,)-334(see)-333(usage)-334(n)1(ote)-1(s.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.926 Td [(On)-383(Exit)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(prec)]TJ 0 g 0 G -/F8 9.9626 Tf 26.408 0 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -33.88 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(preconditioner)-333(data)-333(structure)]TJ +/F8 9.9626 Tf 26.408 0 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -33.879 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(preconditioner)-333(data)-333(structure)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 197.537 0 Td [(psb)]TJ ET q -1 0 0 1 338.658 514.589 cm +1 0 0 1 389.467 514.589 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 341.796 514.39 Td [(prec)]TJ +/F30 9.9626 Tf 392.606 514.39 Td [(prec)]TJ ET q -1 0 0 1 363.345 514.589 cm +1 0 0 1 414.155 514.589 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 366.483 514.39 Td [(type)]TJ +/F30 9.9626 Tf 417.293 514.39 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -287.51 -19.926 Td [(info)]TJ +/F27 9.9626 Tf -287.509 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -31.23 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Error)-333(co)-28(de:)-444(if)-334(no)-333(error,)-333(0)-334(is)-333(returned.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ/F8 9.9626 Tf 37.059 0 Td [(Legal)-316(inputs)-315(to)-316(this)-316(subroutine)-315(are)-316(in)28(terpreted)-316(dep)-28(ending)-315(on)-316(the)]TJ/F11 9.9626 Tf 283.149 0 Td [(pty)-36(pe)]TJ/F8 9.9626 Tf -320.208 -11.955 Td [(string)-333(as)-334(follo)28(ws)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -31.23 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.034 -11.955 Td [(Error)-333(co)-28(de:)-444(if)-334(no)-333(error,)-333(0)-334(is)-333(returned.)]TJ/F16 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ/F8 9.9626 Tf 37.058 0 Td [(Legal)-316(inputs)-315(to)-316(this)-316(subroutine)-315(are)-316(in)28(terpreted)-316(dep)-28(ending)-315(on)-316(the)]TJ/F11 9.9626 Tf 283.15 0 Td [(pty)-36(pe)]TJ/F8 9.9626 Tf -320.208 -11.955 Td [(string)-333(as)-334(follo)28(ws)]TJ 0 0 1 rg 0 0 1 RG -/F7 6.9738 Tf 69.933 3.615 Td [(3)]TJ +/F7 6.9738 Tf 69.932 3.615 Td [(3)]TJ 0 g 0 G -/F8 9.9626 Tf 4.469 -3.615 Td [(:)]TJ +/F8 9.9626 Tf 4.47 -3.615 Td [(:)]TJ 0 g 0 G /F27 9.9626 Tf -74.402 -19.925 Td [(NONE)]TJ 0 g 0 G @@ -17225,79 +17796,79 @@ BT 0 g 0 G /F27 9.9626 Tf -39.048 -19.926 Td [(DIA)32(G)]TJ 0 g 0 G -/F8 9.9626 Tf 35.464 0 Td [(Diagonal)-441(scaling;)-496(eac)28(h)-442(en)28(try)-441(of)-442(th)1(e)-442(input)-441(v)28(ec)-1(tor)-441(is)-441(m)27(ultip)1(lied)-442(b)28(y)-441(the)]TJ -10.557 -11.955 Td [(recipro)-28(cal)-346(of)-346(the)-346(sum)-346(of)-345(the)-346(absolute)-346(v)55(alues)-346(of)-346(the)-346(co)-27(e\016cien)27(ts)-346(in)-346(th)1(e)-346(c)-1(or)1(-)]TJ 0 -11.955 Td [(resp)-28(onding)-333(ro)28(w)-334(of)-333(matrix)]TJ/F11 9.9626 Tf 113.602 0 Td [(A)]TJ/F8 9.9626 Tf 7.472 0 Td [(;)]TJ +/F8 9.9626 Tf 35.464 0 Td [(Diagonal)-441(scaling;)-496(eac)28(h)-442(en)28(try)-441(of)-441(the)-442(input)-441(v)28(ector)-442(is)-441(m)27(ulti)1(plied)-442(b)28(y)-441(the)]TJ -10.557 -11.955 Td [(recipro)-28(cal)-346(of)-346(the)-346(sum)-345(of)-346(the)-346(absolute)-346(v)55(alues)-346(of)-346(th)1(e)-346(c)-1(o)-27(e\016cien)27(ts)-346(in)-345(the)-346(cor-)]TJ 0 -11.955 Td [(resp)-28(onding)-333(ro)28(w)-334(of)-333(matrix)]TJ/F11 9.9626 Tf 113.602 0 Td [(A)]TJ/F8 9.9626 Tf 7.472 0 Td [(;)]TJ 0 g 0 G /F27 9.9626 Tf -145.981 -19.925 Td [(BJA)32(C)]TJ 0 g 0 G -/F8 9.9626 Tf 35.672 0 Td [(Precondition)-249(b)28(y)-249(a)-249(factorization)-248(of)-249(the)-249(blo)-28(c)28(k-diagonal)-249(of)-249(matrix)]TJ/F11 9.9626 Tf 269.665 0 Td [(A)]TJ/F8 9.9626 Tf 7.472 0 Td [(,)-266(where)]TJ -287.902 -11.956 Td [(blo)-28(c)28(k)-457(b)-28(oundaries)-457(are)-457(determined)-457(b)28(y)-457(the)-457(data)-457(allo)-28(cation)-457(b)-28(oundaries)-457(for)]TJ 0 -11.955 Td [(eac)28(h)-347(pro)-28(cess;)-353(requires)-346(no)-347(comm)28(unication.)-484(Only)-347(the)-346(incomplete)-347(factoriza-)]TJ 0 -11.955 Td [(tion)]TJ/F11 9.9626 Tf 20.479 0 Td [(I)-78(LU)]TJ/F8 9.9626 Tf 19.83 0 Td [(\0500\051)-333(is)-334(curren)28(tly)-333(implemen)28(ted.)]TJ +/F8 9.9626 Tf 35.672 0 Td [(Precondition)-249(b)28(y)-249(a)-249(factorization)-248(of)-249(the)-249(blo)-28(c)28(k-diagonal)-249(of)-249(matrix)]TJ/F11 9.9626 Tf 269.664 0 Td [(A)]TJ/F8 9.9626 Tf 7.472 0 Td [(,)-266(where)]TJ -287.901 -11.956 Td [(blo)-28(c)28(k)-457(b)-28(oundaries)-457(are)-457(determined)-457(b)28(y)-457(the)-457(data)-457(allo)-28(cation)-457(b)-28(oundaries)-457(for)]TJ 0 -11.955 Td [(eac)28(h)-347(pro)-27(c)-1(ess;)-353(requires)-346(no)-347(comm)28(unication.)-484(Only)-347(the)-346(incomplete)-347(factoriza-)]TJ 0 -11.955 Td [(tion)]TJ/F11 9.9626 Tf 20.478 0 Td [(I)-78(LU)]TJ/F8 9.9626 Tf 19.83 0 Td [(\0500\051)-333(is)-334(curren)28(tly)-333(implemen)28(ted.)]TJ 0 g 0 G ET q -1 0 0 1 99.895 129.78 cm +1 0 0 1 150.705 129.78 cm []0 d 0 J 0.398 w 0 0 m 137.482 0 l S Q BT -/F32 5.9776 Tf 110.987 123.138 Td [(3)]TJ/F31 7.9701 Tf 4.151 -2.812 Td [(The)-354(string)-354(is)-355(case-insensitiv)30(e)]TJ +/F32 5.9776 Tf 161.797 123.138 Td [(3)]TJ/F31 7.9701 Tf 4.151 -2.812 Td [(The)-354(string)-354(is)-354(c)-1(a)1(se)-1(-)1(i)-1(nsensitiv)30(e)]TJ 0 g 0 G 0 g 0 G -/F8 9.9626 Tf 149.141 -29.888 Td [(121)]TJ +/F8 9.9626 Tf 149.14 -29.888 Td [(122)]TJ 0 g 0 G ET endstream endobj -1466 0 obj << +1499 0 obj << /Type /Page -/Contents 1467 0 R -/Resources 1465 0 R +/Contents 1500 0 R +/Resources 1498 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1470 0 R -/Annots [ 1463 0 R 1464 0 R ] +/Parent 1495 0 R +/Annots [ 1496 0 R 1497 0 R ] >> endobj -1463 0 obj << +1496 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [321.343 511.179 388.401 522.304] +/Rect [372.153 511.179 439.211 522.304] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1464 0 obj << +1497 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.831 421.792 175.293 433.832] +/Rect [219.641 421.792 226.103 433.832] /Subtype /Link /A << /S /GoTo /D (Hfootnote.3) >> >> endobj -1468 0 obj << -/D [1466 0 R /XYZ 99.895 740.998 null] +1501 0 obj << +/D [1499 0 R /XYZ 150.705 740.998 null] >> endobj -446 0 obj << -/D [1466 0 R /XYZ 99.895 697.37 null] +450 0 obj << +/D [1499 0 R /XYZ 150.705 697.37 null] >> endobj -1469 0 obj << -/D [1466 0 R /XYZ 115.138 129.79 null] +1502 0 obj << +/D [1499 0 R /XYZ 165.948 129.79 null] >> endobj -1465 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R /F7 665 0 R /F32 668 0 R /F31 670 0 R >> +1498 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R /F7 670 0 R /F32 673 0 R /F31 675 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1477 0 obj << -/Length 4724 +1509 0 obj << +/Length 7157 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(precbld)-375(|)-375(Builds)-375(a)-375(preconditioner)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(precbld)-375(|)-375(Builds)-375(a)-375(preconditioner)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_precbld\050a,)-525(desc_a,)-525(prec,)-525(info\051)]TJ +/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_precbld\050a,)-525(desc_a,)-525(prec,)-525(info,amold,vmold\051)]TJ 0 g 0 G /F27 9.9626 Tf 0 -21.918 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -17308,170 +17879,234 @@ BT 0 g 0 G 0 -19.925 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(system)-334(sparse)-333(matrix.)-445(Scop)-27(e:)]TJ/F27 9.9626 Tf 148.886 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -134.53 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(,)-333(target.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(sparse)-333(matrix)-334(d)1(ata)-334(structure)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(system)-334(sparse)-333(matrix.)-445(Scop)-27(e:)]TJ/F27 9.9626 Tf 148.886 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -134.53 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(,)-333(target.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(sparse)-333(matrix)-334(data)-333(structure)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 194.05 0 Td [(psb)]TJ ET q -1 0 0 1 385.981 590.305 cm +1 0 0 1 335.171 590.305 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 389.119 590.106 Td [(Tspmat)]TJ +/F30 9.9626 Tf 338.309 590.106 Td [(Tspmat)]TJ ET q -1 0 0 1 421.128 590.305 cm +1 0 0 1 370.319 590.305 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 424.267 590.106 Td [(type)]TJ +/F30 9.9626 Tf 373.457 590.106 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -294.483 -19.926 Td [(prec)]TJ +/F27 9.9626 Tf -294.484 -19.926 Td [(prec)]TJ 0 g 0 G -/F8 9.9626 Tf 26.408 0 Td [(the)-333(preconditioner.)]TJ -1.501 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-222(as:)-389(an)-222(already)-222(initialized)-222(precondtioner)-222(data)-223(structure)]TJ +/F8 9.9626 Tf 26.408 0 Td [(the)-333(preconditioner.)]TJ -1.501 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-222(as:)-389(an)-222(already)-222(initialized)-222(precondtioner)-222(data)-223(structure)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 273.115 0 Td [(psb)]TJ ET q -1 0 0 1 465.045 522.559 cm +1 0 0 1 414.236 522.559 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 468.184 522.36 Td [(prec)]TJ +/F30 9.9626 Tf 417.374 522.36 Td [(prec)]TJ ET q -1 0 0 1 489.733 522.559 cm +1 0 0 1 438.923 522.559 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 492.871 522.36 Td [(type)]TJ +/F30 9.9626 Tf 442.061 522.36 Td [(type)]TJ 0 g 0 G 0 g 0 G /F27 9.9626 Tf -342.166 -31.881 Td [(desc)]TJ ET q -1 0 0 1 172.619 490.679 cm +1 0 0 1 121.81 490.679 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 490.479 Td [(a)]TJ +/F27 9.9626 Tf 125.247 490.479 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(the)-333(problem)-334(comm)28(unication)-333(descriptor.)-445(Scop)-27(e:)]TJ/F27 9.9626 Tf 208.247 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -219.243 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(,)-333(target.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(comm)28(unication)-333(des)-1(crip)1(tor)-334(data)-333(structure)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(problem)-334(comm)28(unication)-333(descriptor.)-445(Scop)-27(e:)]TJ/F27 9.9626 Tf 208.247 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -219.243 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(,)-333(target.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(comm)28(unication)-333(desc)-1(ri)1(ptor)-334(data)-333(structure)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 247.683 0 Td [(psb)]TJ ET q -1 0 0 1 439.613 454.813 cm +1 0 0 1 388.803 454.813 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 442.751 454.614 Td [(desc)]TJ +/F30 9.9626 Tf 391.942 454.614 Td [(desc)]TJ ET q -1 0 0 1 464.3 454.813 cm +1 0 0 1 413.491 454.813 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 467.438 454.614 Td [(type)]TJ +/F30 9.9626 Tf 416.629 454.614 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F27 9.9626 Tf -337.655 -19.926 Td [(amold)]TJ +0 g 0 G +/F8 9.9626 Tf 35.374 0 Td [(The)-333(desired)-334(dynamic)-333(t)28(yp)-28(e)-333(for)-334(the)-333(in)28(ternal)-333(matrix)-334(storage.)]TJ -10.467 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(a)-333(class)-334(deriv)28(ed)-333(from)]TJ/F30 9.9626 Tf 203.349 0 Td [(psb)]TJ +ET +q +1 0 0 1 344.47 387.067 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 347.608 386.868 Td [(T)]TJ +ET +q +1 0 0 1 353.466 387.067 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 356.604 386.868 Td [(base)]TJ +ET +q +1 0 0 1 378.153 387.067 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 381.291 386.868 Td [(sparse)]TJ +ET +q +1 0 0 1 413.301 387.067 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 416.439 386.868 Td [(mat)]TJ/F8 9.9626 Tf 15.691 0 Td [(.)]TJ +0 g 0 G +/F27 9.9626 Tf -332.235 -19.925 Td [(vmold)]TJ +0 g 0 G +/F8 9.9626 Tf 35.852 0 Td [(The)-333(desired)-334(dynamic)-333(t)28(yp)-28(e)-333(for)-334(the)-333(in)28(ternal)-333(v)27(ector)-333(storage.)]TJ -10.945 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf 23.073 0 Td [(.)]TJ -55.452 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(ob)-55(ject)-334(of)-333(a)-333(class)-334(deriv)28(ed)-333(from)]TJ/F30 9.9626 Tf 203.349 0 Td [(psb)]TJ +ET +q +1 0 0 1 344.47 319.321 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 347.608 319.122 Td [(T)]TJ +ET +q +1 0 0 1 353.466 319.321 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 356.604 319.122 Td [(base)]TJ +ET +q +1 0 0 1 378.153 319.321 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 381.291 319.122 Td [(vect)]TJ +ET +q +1 0 0 1 402.84 319.321 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 405.978 319.122 Td [(type)]TJ/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -337.655 -21.918 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -327.005 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(prec)]TJ 0 g 0 G -/F8 9.9626 Tf 26.408 0 Td [(the)-333(preconditioner.)]TJ -1.501 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.378 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.378 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(precondtioner)-333(data)-333(structure)]TJ +/F8 9.9626 Tf 26.408 0 Td [(the)-333(preconditioner.)]TJ -1.501 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(precondtioner)-333(data)-333(structure)]TJ 0 0 1 rg 0 0 1 RG -/F30 9.9626 Tf 194.769 0 Td [(psb)]TJ +/F30 9.9626 Tf 194.77 0 Td [(psb)]TJ ET q -1 0 0 1 386.7 365.149 cm +1 0 0 1 335.891 229.657 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 389.838 364.95 Td [(prec)]TJ +/F30 9.9626 Tf 339.029 229.458 Td [(prec)]TJ ET q -1 0 0 1 411.387 365.149 cm +1 0 0 1 360.578 229.657 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 414.525 364.95 Td [(type)]TJ +/F30 9.9626 Tf 363.716 229.458 Td [(type)]TJ 0 g 0 G 0 g 0 G -/F27 9.9626 Tf -263.82 -31.88 Td [(info)]TJ +/F27 9.9626 Tf -263.821 -31.88 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ 0 g 0 G - 139.477 -194.811 Td [(122)]TJ + 139.477 -59.319 Td [(123)]TJ 0 g 0 G ET endstream endobj -1476 0 obj << +1508 0 obj << /Type /Page -/Contents 1477 0 R -/Resources 1475 0 R +/Contents 1509 0 R +/Resources 1507 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1470 0 R -/Annots [ 1471 0 R 1472 0 R 1473 0 R 1474 0 R ] +/Parent 1495 0 R +/Annots [ 1503 0 R 1504 0 R 1505 0 R 1506 0 R ] >> endobj -1471 0 obj << +1503 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.666 586.895 446.184 598.02] +/Rect [317.856 586.895 395.375 598.02] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1472 0 obj << +1504 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [447.73 519.15 514.788 530.274] +/Rect [396.921 519.15 463.979 530.274] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1473 0 obj << +1505 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [422.298 451.404 489.356 462.529] +/Rect [371.488 451.404 438.546 462.529] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1474 0 obj << +1506 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.385 361.74 436.443 372.865] +/Rect [318.576 226.248 385.634 237.373] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1478 0 obj << -/D [1476 0 R /XYZ 150.705 740.998 null] +1510 0 obj << +/D [1508 0 R /XYZ 99.895 740.998 null] >> endobj -450 0 obj << -/D [1476 0 R /XYZ 150.705 697.37 null] +454 0 obj << +/D [1508 0 R /XYZ 99.895 697.37 null] >> endobj -1475 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1507 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1483 0 obj << -/Length 5001 +1517 0 obj << +/Length 5992 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.951 706.328 cm +1 0 0 1 171.761 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 124.986 706.129 Td [(precaply)-375(|)-375(Preconditioner)-375(application)-375(routine)]TJ +/F16 11.9552 Tf 175.796 706.129 Td [(precaply)-375(|)-375(Preconditioner)-375(application)-375(routine)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_precaply\050prec,x,y,desc_a,info,trans,work\051)]TJ 0 -11.956 Td [(call)-525(psb_precaply\050prec,x,desc_a,info,trans\051)]TJ @@ -17485,130 +18120,194 @@ BT 0 g 0 G 0 -19.925 Td [(prec)]TJ 0 g 0 G -/F8 9.9626 Tf 26.408 0 Td [(the)-333(preconditioner.)-445(Scop)-27(e:)]TJ/F27 9.9626 Tf 119.331 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -120.832 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(preconditioner)-333(data)-333(structure)]TJ +/F8 9.9626 Tf 26.408 0 Td [(the)-333(preconditioner.)-445(Scop)-27(e:)]TJ/F27 9.9626 Tf 119.33 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -120.831 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(preconditioner)-333(data)-333(structure)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 197.537 0 Td [(psb)]TJ ET q -1 0 0 1 338.658 578.35 cm +1 0 0 1 389.467 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 341.796 578.15 Td [(prec)]TJ +/F30 9.9626 Tf 392.606 578.15 Td [(prec)]TJ ET q -1 0 0 1 363.345 578.35 cm +1 0 0 1 414.155 578.35 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 366.483 578.15 Td [(type)]TJ +/F30 9.9626 Tf 417.293 578.15 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F27 9.9626 Tf -287.509 -19.925 Td [(x)]TJ 0 g 0 G -/F27 9.9626 Tf -287.51 -19.925 Td [(x)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(source)-334(v)28(ector.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 113.851 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -99.972 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(rank)-333(one)-333(arra)27(y)-333(or)-333(an)-334(ob)-55(ject)-333(of)-334(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 223.495 0 Td [(psb)]TJ +ET +q +1 0 0 1 415.426 522.559 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 418.564 522.36 Td [(T)]TJ +ET +q +1 0 0 1 424.422 522.559 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 427.56 522.36 Td [(vect)]TJ +ET +q +1 0 0 1 449.109 522.559 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 452.247 522.36 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(source)-334(v)28(ector.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 113.851 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -99.972 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(double)-333(precision)-333(arra)27(y)84(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.926 Td [(desc)]TJ +/F27 9.9626 Tf -322.464 -19.926 Td [(desc)]TJ ET q -1 0 0 1 121.81 502.634 cm +1 0 0 1 172.619 502.634 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 502.434 Td [(a)]TJ +/F27 9.9626 Tf 176.057 502.434 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(the)-333(problem)-334(comm)28(unication)-333(descriptor.)-445(Scop)-27(e:)]TJ/F27 9.9626 Tf 208.247 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -219.243 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(comm)28(unication)-333(data)-334(structure)]TJ +/F8 9.9626 Tf 10.55 0 Td [(the)-333(problem)-334(comm)28(unication)-333(descriptor.)-445(Scop)-27(e:)]TJ/F27 9.9626 Tf 208.247 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -219.243 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(comm)28(unication)-333(data)-334(structure)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 201.08 0 Td [(psb)]TJ ET q -1 0 0 1 342.2 466.768 cm +1 0 0 1 393.01 466.768 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 345.339 466.569 Td [(desc)]TJ +/F30 9.9626 Tf 396.148 466.569 Td [(desc)]TJ ET q -1 0 0 1 366.887 466.768 cm +1 0 0 1 417.697 466.768 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 370.026 466.569 Td [(type)]TJ +/F30 9.9626 Tf 420.835 466.569 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -291.052 -19.925 Td [(trans)]TJ 0 g 0 G -/F8 9.9626 Tf 30.609 0 Td [(Scop)-28(e:)]TJ -5.702 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(c)28(haracter.)]TJ +/F8 9.9626 Tf 30.609 0 Td [(Scop)-28(e:)]TJ -5.702 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(c)28(haracter.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(w)32(ork)]TJ 0 g 0 G -/F8 9.9626 Tf 29.432 0 Td [(an)-333(optional)-333(w)27(ork)-333(space)-333(Scop)-28(e:)]TJ/F27 9.9626 Tf 135.962 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -140.487 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(double)-333(precision)-333(arra)27(y)84(.)]TJ +/F8 9.9626 Tf 29.431 0 Td [(an)-333(optional)-334(w)28(ork)-333(space)-333(Scop)-28(e:)]TJ/F27 9.9626 Tf 135.963 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -140.487 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(double)-333(precision)-333(arra)27(y)84(.)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -21.918 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(y)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(destination)-334(v)28(ector.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 134.856 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -120.977 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(double)-333(precision)-333(arra)27(y)84(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(destination)-334(v)28(ector.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 134.856 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -120.977 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(inout)]TJ/F8 9.9626 Tf 26.097 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(rank)-333(one)-333(arra)27(y)-333(or)-333(an)-334(ob)-55(ject)-333(of)-334(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 223.495 0 Td [(psb)]TJ +ET +q +1 0 0 1 415.426 277.478 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 418.564 277.279 Td [(T)]TJ +ET +q +1 0 0 1 424.422 277.478 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 427.56 277.279 Td [(vect)]TJ +ET +q +1 0 0 1 449.109 277.478 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 452.247 277.279 Td [(type)]TJ +0 g 0 G +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.926 Td [(info)]TJ +/F27 9.9626 Tf -322.464 -19.926 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)27(t)1(e)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ 0 g 0 G - 139.477 -119.095 Td [(123)]TJ + 139.477 -119.095 Td [(124)]TJ 0 g 0 G ET endstream endobj -1482 0 obj << +1516 0 obj << /Type /Page -/Contents 1483 0 R -/Resources 1481 0 R +/Contents 1517 0 R +/Resources 1515 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1470 0 R -/Annots [ 1479 0 R 1480 0 R ] +/Parent 1495 0 R +/Annots [ 1511 0 R 1512 0 R 1513 0 R 1514 0 R ] >> endobj -1479 0 obj << +1511 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [321.343 574.94 388.401 586.065] +/Rect [372.153 574.94 439.211 586.065] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1480 0 obj << +1512 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.111 519.15 474.165 530.274] +/Subtype /Link +/A << /S /GoTo /D (vdata) >> +>> endobj +1513 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [324.885 463.359 391.943 474.484] +/Rect [375.695 463.359 442.753 474.484] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1484 0 obj << -/D [1482 0 R /XYZ 99.895 740.998 null] +1514 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.111 274.069 474.165 285.194] +/Subtype /Link +/A << /S /GoTo /D (vdata) >> >> endobj -454 0 obj << -/D [1482 0 R /XYZ 99.895 697.37 null] +1518 0 obj << +/D [1516 0 R /XYZ 150.705 740.998 null] >> endobj -1481 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +458 0 obj << +/D [1516 0 R /XYZ 150.705 697.37 null] +>> endobj +1515 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1488 0 obj << -/Length 1996 +1522 0 obj << +/Length 2003 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(precdescr)-402(|)-402(Prin)31(ts)-402(a)-403(description)-402(of)-402(curren)31(t)-402(precondi-)]TJ -25.091 -13.948 Td [(tioner)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(precdescr)-402(|)-402(Prin)31(ts)-402(a)-403(description)-402(of)-402(curren)31(t)-402(precondi-)]TJ -25.091 -13.948 Td [(tioner)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf 0 -18.389 Td [(call)-525(psb_precdescr\050prec\051)]TJ 0 -11.955 Td [(call)-525(psb_precdescr\050prec,)-525(iout\051)]TJ @@ -17622,120 +18321,120 @@ BT 0 g 0 G 0 -19.926 Td [(prec)]TJ 0 g 0 G -/F8 9.9626 Tf 26.408 0 Td [(the)-333(preconditioner.)-445(Scop)-27(e:)]TJ/F27 9.9626 Tf 119.33 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -120.831 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.485 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-444(a)-334(preconditioner)-333(data)-333(structure)]TJ +/F8 9.9626 Tf 26.408 0 Td [(the)-333(preconditioner.)-445(Scop)-27(e:)]TJ/F27 9.9626 Tf 119.331 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -120.832 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(preconditioner)-333(data)-333(structure)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 197.537 0 Td [(psb)]TJ ET q -1 0 0 1 389.467 564.402 cm +1 0 0 1 338.658 564.402 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 392.606 564.203 Td [(prec)]TJ +/F30 9.9626 Tf 341.796 564.203 Td [(prec)]TJ ET q -1 0 0 1 414.155 564.402 cm +1 0 0 1 363.345 564.402 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 417.293 564.203 Td [(type)]TJ +/F30 9.9626 Tf 366.483 564.203 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -287.509 -19.925 Td [(iout)]TJ +/F27 9.9626 Tf -287.51 -19.925 Td [(iout)]TJ 0 g 0 G -/F8 9.9626 Tf 24.713 0 Td [(output)-333(unit.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 89.94 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -89.747 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optiona)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(n)27(um)28(b)-28(er.)]TJ +/F8 9.9626 Tf 24.713 0 Td [(output)-333(unit.)-445(S)1(c)-1(op)-27(e:)]TJ/F27 9.9626 Tf 89.941 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -89.747 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optiona)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(n)27(um)28(b)-28(er.)]TJ 0 g 0 G - 139.477 -417.974 Td [(124)]TJ + 139.477 -417.974 Td [(125)]TJ 0 g 0 G ET endstream endobj -1487 0 obj << +1521 0 obj << /Type /Page -/Contents 1488 0 R -/Resources 1486 0 R +/Contents 1522 0 R +/Resources 1520 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1470 0 R -/Annots [ 1485 0 R ] +/Parent 1495 0 R +/Annots [ 1519 0 R ] >> endobj -1485 0 obj << +1519 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [372.153 560.993 439.211 572.118] +/Rect [321.343 560.993 388.401 572.118] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1489 0 obj << -/D [1487 0 R /XYZ 150.705 740.998 null] +1523 0 obj << +/D [1521 0 R /XYZ 99.895 740.998 null] >> endobj -458 0 obj << -/D [1487 0 R /XYZ 150.705 685.747 null] +462 0 obj << +/D [1521 0 R /XYZ 99.895 685.747 null] >> endobj -1486 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1520 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1492 0 obj << -/Length 598 +1526 0 obj << +/Length 608 >> stream 0 g 0 G 0 g 0 G BT -/F16 14.3462 Tf 99.895 706.129 Td [(11)-1125(Iterativ)31(e)-375(Metho)-31(ds)]TJ/F8 9.9626 Tf 0 -21.821 Td [(In)-519(this)-518(c)28(hapter)-519(w)28(e)-519(pro)28(vide)-519(routin)1(e)-1(s)-518(for)-519(preconditioners)-518(and)-519(iterativ)28(e)-519(meth-)]TJ 0 -11.955 Td [(o)-28(ds.)-647(The)-401(in)28(terfaces)-401(for)-401(Kryl)1(o)27(v)-401(subspace)-400(m)-1(etho)-27(ds)-401(are)-401(a)28(v)55(ailable)-400(in)-401(the)-401(mo)-28(dule)]TJ/F30 9.9626 Tf 0 -11.955 Td [(psb_krylov_mod)]TJ/F8 9.9626 Tf 73.225 0 Td [(.)]TJ +/F16 14.3462 Tf 150.705 706.129 Td [(11)-1125(Iterativ)31(e)-375(Metho)-31(ds)]TJ/F8 9.9626 Tf 0 -21.821 Td [(In)-519(thi)1(s)-519(c)28(hapter)-519(w)28(e)-519(pro)28(vide)-519(routi)1(nes)-519(for)-519(preconditioners)-518(and)-519(iterativ)28(e)-519(meth-)]TJ 0 -11.955 Td [(o)-28(ds.)-647(The)-401(in)28(terfaces)-401(for)-401(Kr)1(ylo)27(v)-401(sub)1(s)-1(p)1(ac)-1(e)-400(metho)-28(ds)-401(are)-401(a)28(v)55(ailable)-400(in)-401(the)-401(mo)-28(dule)]TJ/F30 9.9626 Tf 0 -11.955 Td [(psb_krylov_mod)]TJ/F8 9.9626 Tf 73.225 0 Td [(.)]TJ 0 g 0 G - 91.159 -569.96 Td [(125)]TJ + 91.158 -569.96 Td [(126)]TJ 0 g 0 G ET endstream endobj -1491 0 obj << +1525 0 obj << /Type /Page -/Contents 1492 0 R -/Resources 1490 0 R +/Contents 1526 0 R +/Resources 1524 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1470 0 R +/Parent 1495 0 R >> endobj -1493 0 obj << -/D [1491 0 R /XYZ 99.895 740.998 null] +1527 0 obj << +/D [1525 0 R /XYZ 150.705 740.998 null] >> endobj -462 0 obj << -/D [1491 0 R /XYZ 99.895 716.092 null] +466 0 obj << +/D [1525 0 R /XYZ 150.705 716.092 null] >> endobj -1490 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F30 664 0 R >> +1524 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1498 0 obj << -/Length 7213 +1534 0 obj << +/Length 7730 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F16 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.761 706.328 cm +1 0 0 1 120.951 706.328 cm []0 d 0 J 0.398 w 0 0 m 4.035 0 l S Q BT -/F16 11.9552 Tf 175.796 706.129 Td [(krylo)31(v)-375(|)-375(Krylo)31(v)-375(Metho)-31(ds)-375(Driv)31(er)-375(Routine)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-343(subroutine)-342(is)-343(a)-343(driv)28(er)-343(that)-342(pro)27(vi)1(des)-343(a)-343(general)-343(in)28(terface)-343(for)-342(all)-343(the)-343(Krylo)28(v-)]TJ 0 -11.956 Td [(Subspace)-333(family)-334(metho)-27(ds)-334(implemen)28(ted)-333(in)-334(PSBLAS)-333(v)28(ersion)-333(2.)]TJ 14.944 -11.955 Td [(The)-299(stopping)-299(criterion)-298(is)-299(the)-299(norm)28(wise)-299(bac)27(kw)28(ard)-299(error,)-305(in)-299(the)-299(in\014nit)28(y)-299(norm,)]TJ -14.944 -11.955 Td [(i.e.)-444(the)-334(iteration)-333(is)-333(stopp)-28(ed)-333(when)]TJ/F11 9.9626 Tf 107.839 -24.991 Td [(er)-28(r)]TJ/F8 9.9626 Tf 16.949 0 Td [(=)]TJ/F14 9.9626 Tf 38.111 6.74 Td [(k)]TJ/F11 9.9626 Tf 4.981 0 Td [(r)]TJ/F10 6.9738 Tf 4.495 -1.495 Td [(i)]TJ/F14 9.9626 Tf 3.316 1.495 Td [(k)]TJ +/F16 11.9552 Tf 124.986 706.129 Td [(krylo)31(v)-375(|)-375(Krylo)31(v)-375(Metho)-31(ds)-375(Driv)31(er)-375(Routine)]TJ/F8 9.9626 Tf -25.091 -18.389 Td [(This)-343(subroutine)-342(is)-343(a)-343(driv)28(er)-343(that)-342(pro)27(vid)1(e)-1(s)-342(a)-343(general)-343(in)28(terface)-343(for)-342(all)-343(the)-343(Krylo)28(v-)]TJ 0 -11.956 Td [(Subspace)-333(family)-334(metho)-27(ds)-334(implemen)28(ted)-333(in)-334(PSBLAS)-333(v)28(ersion)-333(2.)]TJ 14.944 -11.955 Td [(The)-299(stopping)-299(criterion)-298(is)-299(the)-299(norm)28(wise)-299(bac)27(kw)28(ard)-299(error,)-305(in)-299(the)-299(in\014nit)28(y)-299(norm,)]TJ -14.944 -11.955 Td [(i.e.)-444(the)-334(iteration)-333(is)-333(stopp)-28(ed)-333(w)-1(h)1(e)-1(n)]TJ/F11 9.9626 Tf 107.84 -24.991 Td [(er)-28(r)]TJ/F8 9.9626 Tf 16.949 0 Td [(=)]TJ/F14 9.9626 Tf 38.11 6.74 Td [(k)]TJ/F11 9.9626 Tf 4.981 0 Td [(r)]TJ/F10 6.9738 Tf 4.495 -1.495 Td [(i)]TJ/F14 9.9626 Tf 3.317 1.495 Td [(k)]TJ ET q -1 0 0 1 287.205 629.374 cm +1 0 0 1 236.395 629.374 cm []0 d 0 J 0.398 w 0 0 m 70.572 0 l S Q BT -/F8 9.9626 Tf 287.205 620.049 Td [(\050)]TJ/F14 9.9626 Tf 3.874 0 Td [(k)]TJ/F11 9.9626 Tf 4.982 0 Td [(A)]TJ/F14 9.9626 Tf 7.472 0 Td [(kk)]TJ/F11 9.9626 Tf 9.962 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.494 Td [(i)]TJ/F14 9.9626 Tf 3.317 1.494 Td [(k)]TJ/F8 9.9626 Tf 7.195 0 Td [(+)]TJ/F14 9.9626 Tf 9.963 0 Td [(k)]TJ/F11 9.9626 Tf 4.981 0 Td [(b)]TJ/F14 9.9626 Tf 4.276 0 Td [(k)]TJ/F8 9.9626 Tf 4.981 0 Td [(\051)]TJ/F11 9.9626 Tf 7.837 6.834 Td [(<)-278(eps)]TJ/F8 9.9626 Tf -211.034 -25.085 Td [(or)-333(the)-334(2-norm)-333(residual)-333(reduction)]TJ/F11 9.9626 Tf 133.771 -23.054 Td [(er)-28(r)]TJ/F8 9.9626 Tf 16.949 0 Td [(=)]TJ/F14 9.9626 Tf 12.179 6.739 Td [(k)]TJ/F11 9.9626 Tf 4.981 0 Td [(r)]TJ/F10 6.9738 Tf 4.495 -1.494 Td [(i)]TJ/F14 9.9626 Tf 3.316 1.494 Td [(k)]TJ +/F8 9.9626 Tf 236.395 620.049 Td [(\050)]TJ/F14 9.9626 Tf 3.875 0 Td [(k)]TJ/F11 9.9626 Tf 4.981 0 Td [(A)]TJ/F14 9.9626 Tf 7.472 0 Td [(kk)]TJ/F11 9.9626 Tf 9.963 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.494 Td [(i)]TJ/F14 9.9626 Tf 3.317 1.494 Td [(k)]TJ/F8 9.9626 Tf 7.195 0 Td [(+)]TJ/F14 9.9626 Tf 9.962 0 Td [(k)]TJ/F11 9.9626 Tf 4.982 0 Td [(b)]TJ/F14 9.9626 Tf 4.275 0 Td [(k)]TJ/F8 9.9626 Tf 4.982 0 Td [(\051)]TJ/F11 9.9626 Tf 7.837 6.834 Td [(<)-278(eps)]TJ/F8 9.9626 Tf -211.035 -25.085 Td [(or)-333(the)-334(2-norm)-333(residual)-333(reduction)]TJ/F11 9.9626 Tf 133.772 -23.054 Td [(er)-28(r)]TJ/F8 9.9626 Tf 16.949 0 Td [(=)]TJ/F14 9.9626 Tf 12.178 6.739 Td [(k)]TJ/F11 9.9626 Tf 4.981 0 Td [(r)]TJ/F10 6.9738 Tf 4.495 -1.494 Td [(i)]TJ/F14 9.9626 Tf 3.317 1.494 Td [(k)]TJ ET q -1 0 0 1 313.137 581.234 cm +1 0 0 1 262.327 581.234 cm []0 d 0 J 0.398 w 0 0 m 18.708 0 l S Q BT -/F14 9.9626 Tf 313.137 571.91 Td [(k)]TJ/F11 9.9626 Tf 4.981 0 Td [(b)]TJ/F14 9.9626 Tf 4.276 0 Td [(k)]TJ/F7 6.9738 Tf 4.981 -1.495 Td [(2)]TJ/F11 9.9626 Tf 8.432 8.329 Td [(<)-278(eps)]TJ/F8 9.9626 Tf -185.102 -25.639 Td [(according)-412(to)-413(the)-412(v)56(alue)-413(passed)-412(through)-412(the)-412(istop)-413(argumen)28(t)-412(\050see)-413(later\051.)-681(In)-412(the)]TJ 0 -11.955 Td [(ab)-28(o)28(v)28(e)-320(form)28(ulae,)]TJ/F11 9.9626 Tf 71.738 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.495 Td [(i)]TJ/F8 9.9626 Tf 6.504 1.495 Td [(is)-320(the)-320(ten)28(tativ)28(e)-320(solution)-320(and)]TJ/F11 9.9626 Tf 125.355 0 Td [(r)]TJ/F10 6.9738 Tf 4.495 -1.495 Td [(i)]TJ/F8 9.9626 Tf 6.084 1.495 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(b)]TJ/F14 9.9626 Tf 6.221 0 Td [(\000)]TJ/F11 9.9626 Tf 9.694 0 Td [(Ax)]TJ/F10 6.9738 Tf 13.166 -1.495 Td [(i)]TJ/F8 9.9626 Tf 6.503 1.495 Td [(the)-320(corresp)-28(onding)]TJ -265.97 -11.955 Td [(residual)-333(at)-334(the)]TJ/F11 9.9626 Tf 66.501 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(-th)-333(iteration.)]TJ +/F14 9.9626 Tf 262.327 571.91 Td [(k)]TJ/F11 9.9626 Tf 4.982 0 Td [(b)]TJ/F14 9.9626 Tf 4.275 0 Td [(k)]TJ/F7 6.9738 Tf 4.982 -1.495 Td [(2)]TJ/F11 9.9626 Tf 8.432 8.329 Td [(<)-278(eps)]TJ/F8 9.9626 Tf -185.103 -25.639 Td [(according)-412(to)-413(the)-412(v)56(alue)-413(passed)-412(through)-412(the)-412(istop)-413(argumen)28(t)-412(\050see)-413(later\051.)-681(In)-412(the)]TJ 0 -11.955 Td [(ab)-28(o)28(v)28(e)-320(form)28(ulae,)]TJ/F11 9.9626 Tf 71.739 0 Td [(x)]TJ/F10 6.9738 Tf 5.694 -1.495 Td [(i)]TJ/F8 9.9626 Tf 6.503 1.495 Td [(is)-320(the)-320(ten)28(tativ)28(e)-320(solution)-320(and)]TJ/F11 9.9626 Tf 125.356 0 Td [(r)]TJ/F10 6.9738 Tf 4.495 -1.495 Td [(i)]TJ/F8 9.9626 Tf 6.084 1.495 Td [(=)]TJ/F11 9.9626 Tf 10.516 0 Td [(b)]TJ/F14 9.9626 Tf 6.221 0 Td [(\000)]TJ/F11 9.9626 Tf 9.694 0 Td [(Ax)]TJ/F10 6.9738 Tf 13.166 -1.495 Td [(i)]TJ/F8 9.9626 Tf 6.503 1.495 Td [(the)-320(corresp)-28(onding)]TJ -265.971 -11.955 Td [(residual)-333(at)-334(the)]TJ/F11 9.9626 Tf 66.501 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(-th)-333(iteration.)]TJ 0 g 0 G 0 g 0 G /F30 9.9626 Tf -69.933 -19.801 Td [(call)-525(psb_krylov\050method,a,prec,b,x,eps,desc_a,info,&)]TJ 26.152 -11.956 Td [(&)-525(itmax,iter,err,itrace,irst,istop,cond\051)]TJ @@ -17749,25 +18448,25 @@ BT 0 g 0 G 0 -19.079 Td [(metho)-32(d)]TJ 0 g 0 G -/F8 9.9626 Tf 43.012 0 Td [(a)-235(string)-235(that)-235(de\014nes)-235(the)-236(iterativ)28(e)-235(metho)-28(d)-235(to)-235(b)-28(e)-235(used.)-412(Supp)-27(orted)-235(v)55(alues)]TJ -18.106 -11.955 Td [(are:)]TJ +/F8 9.9626 Tf 43.012 0 Td [(a)-235(string)-235(that)-235(de\014nes)-236(th)1(e)-236(iterativ)28(e)-235(metho)-28(d)-235(to)-235(b)-28(e)-235(used.)-412(Supp)-27(orted)-235(v)55(alues)]TJ -18.105 -11.955 Td [(are:)]TJ 0 g 0 G /F27 9.9626 Tf 0 -19.079 Td [(CG:)]TJ 0 g 0 G -/F8 9.9626 Tf 25.447 0 Td [(the)-333(Conjugate)-334(Gradien)28(t)-333(metho)-28(d;)]TJ +/F8 9.9626 Tf 25.446 0 Td [(the)-333(Conjugate)-334(Gradien)28(t)-333(metho)-28(d;)]TJ 0 g 0 G -/F27 9.9626 Tf -25.447 -15.093 Td [(CGS:)]TJ +/F27 9.9626 Tf -25.446 -15.093 Td [(CGS:)]TJ 0 g 0 G -/F8 9.9626 Tf 31.812 0 Td [(the)-333(Conjugate)-334(Gradien)28(t)-333(Stabilized)-333(metho)-28(d;)]TJ +/F8 9.9626 Tf 31.811 0 Td [(the)-333(Conjugate)-334(Gradien)28(t)-333(Stabilized)-333(metho)-28(d;)]TJ 0 g 0 G -/F27 9.9626 Tf -31.812 -15.094 Td [(BICG:)]TJ +/F27 9.9626 Tf -31.811 -15.094 Td [(BICG:)]TJ 0 g 0 G /F8 9.9626 Tf 37.941 0 Td [(the)-333(Bi-Conjugate)-334(Gradien)28(t)-333(metho)-28(d;)]TJ 0 g 0 G /F27 9.9626 Tf -37.941 -15.093 Td [(BICGST)96(AB:)]TJ 0 g 0 G -/F8 9.9626 Tf 68.134 0 Td [(the)-333(Bi-Conjugate)-334(Gradien)28(t)-333(Stabilized)-333(metho)-28(d;)]TJ +/F8 9.9626 Tf 68.133 0 Td [(the)-333(Bi-Conjugate)-334(Gradien)28(t)-333(Stabilized)-333(metho)-28(d;)]TJ 0 g 0 G -/F27 9.9626 Tf -68.134 -15.094 Td [(BICGST)96(ABL:)]TJ +/F27 9.9626 Tf -68.133 -15.094 Td [(BICGST)96(ABL:)]TJ 0 g 0 G /F8 9.9626 Tf 75.024 0 Td [(the)-222(Bi-Conjugate)-222(Gradien)27(t)-222(Stabilized)-222(metho)-28(d)-222(with)-222(restart-)]TJ -53.106 -11.955 Td [(ing;)]TJ 0 g 0 G @@ -17775,230 +18474,353 @@ BT 0 g 0 G /F8 9.9626 Tf 58.807 0 Td [(the)-333(Generalized)-334(Minimal)-333(Residual)-333(metho)-28(d)-333(with)-334(restarting.)]TJ 0 g 0 G -/F27 9.9626 Tf -83.713 -19.078 Td [(a)]TJ +/F27 9.9626 Tf -83.714 -19.078 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.55 0 Td [(the)-333(lo)-28(cal)-334(p)-27(ortion)-333(of)-334(global)-333(sparse)-333(matrix)]TJ/F11 9.9626 Tf 178.969 0 Td [(A)]TJ/F8 9.9626 Tf 7.472 0 Td [(.)]TJ -172.085 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.551 0 Td [(the)-333(lo)-28(cal)-333(p)-28(ortion)-333(of)-334(global)-333(sparse)-333(matrix)]TJ/F11 9.9626 Tf 178.968 0 Td [(A)]TJ/F8 9.9626 Tf 7.472 0 Td [(.)]TJ -172.084 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 254.323 cm +1 0 0 1 312.036 254.323 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 254.124 Td [(Tspmat)]TJ +/F30 9.9626 Tf 315.174 254.124 Td [(Tspmat)]TJ ET q -1 0 0 1 397.993 254.323 cm +1 0 0 1 347.183 254.323 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 401.131 254.124 Td [(type)]TJ +/F30 9.9626 Tf 350.322 254.124 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -271.347 -19.078 Td [(prec)]TJ +/F27 9.9626 Tf -271.348 -19.078 Td [(prec)]TJ 0 g 0 G -/F8 9.9626 Tf 26.408 0 Td [(The)-333(data)-334(structure)-333(con)28(taining)-333(the)-334(preconditioner.)]TJ -1.502 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 26.408 0 Td [(The)-333(data)-334(structure)-333(con)28(taining)-333(the)-334(preconditioner.)]TJ -1.501 -11.956 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 362.845 187.424 cm +1 0 0 1 312.036 187.424 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 365.983 187.225 Td [(prec)]TJ +/F30 9.9626 Tf 315.174 187.225 Td [(prec)]TJ ET q -1 0 0 1 387.532 187.424 cm +1 0 0 1 336.723 187.424 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 390.67 187.225 Td [(type)]TJ +/F30 9.9626 Tf 339.861 187.225 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.922 0 Td [(.)]TJ +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -19.079 Td [(b)]TJ 0 g 0 G -/F8 9.9626 Tf 11.346 0 Td [(The)-333(RHS)-334(v)28(ector.)]TJ 13.56 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-334(ar)1(ra)27(y)84(.)]TJ +/F8 9.9626 Tf 11.347 0 Td [(The)-333(RHS)-334(v)28(ector.)]TJ 13.56 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-333(arra)27(y)-333(or)-333(an)-334(ob)-55(ject)-333(of)-334(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 223.496 0 Td [(psb)]TJ +ET +q +1 0 0 1 364.616 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 367.754 120.326 Td [(T)]TJ +ET +q +1 0 0 1 373.612 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 376.751 120.326 Td [(vect)]TJ +ET +q +1 0 0 1 398.3 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 401.438 120.326 Td [(type)]TJ +0 g 0 G +/F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G - 139.477 -29.888 Td [(126)]TJ + -158.08 -29.888 Td [(127)]TJ 0 g 0 G ET endstream endobj -1497 0 obj << +1533 0 obj << /Type /Page -/Contents 1498 0 R -/Resources 1496 0 R +/Contents 1534 0 R +/Resources 1532 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1470 0 R -/Annots [ 1494 0 R 1495 0 R ] +/Parent 1536 0 R +/Annots [ 1528 0 R 1529 0 R 1530 0 R ] >> endobj -1494 0 obj << +1528 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 250.914 423.049 262.039] +/Rect [294.721 250.914 372.239 262.039] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1495 0 obj << +1529 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.53 184.015 412.588 195.14] +/Rect [294.721 184.015 361.779 195.14] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1499 0 obj << -/D [1497 0 R /XYZ 150.705 740.998 null] +1530 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [347.301 117.115 423.355 128.24] +/Subtype /Link +/A << /S /GoTo /D (vdata) >> >> endobj -466 0 obj << -/D [1497 0 R /XYZ 150.705 697.37 null] +1535 0 obj << +/D [1533 0 R /XYZ 99.895 740.998 null] >> endobj -1496 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F7 665 0 R /F30 664 0 R /F27 477 0 R >> +470 0 obj << +/D [1533 0 R /XYZ 99.895 697.37 null] +>> endobj +1532 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F7 670 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1503 0 obj << -/Length 5689 +1541 0 obj << +/Length 6690 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F27 9.9626 Tf 99.895 706.129 Td [(x)]TJ +/F27 9.9626 Tf 150.705 706.129 Td [(x)]TJ +0 g 0 G +/F8 9.9626 Tf 11.028 0 Td [(The)-333(initial)-334(guess.)]TJ 13.878 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-334(ar)1(ra)27(y)-333(or)-333(an)-334(ob)-55(ject)-333(of)-334(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 223.496 0 Td [(psb)]TJ +ET +q +1 0 0 1 415.426 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 418.564 658.308 Td [(T)]TJ +ET +q +1 0 0 1 424.422 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 427.56 658.308 Td [(vect)]TJ +ET +q +1 0 0 1 449.109 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 452.247 658.308 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(The)-333(initial)-334(guess.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-333(arra)27(y)84(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.427 Td [(eps)]TJ +/F27 9.9626 Tf -322.464 -19.427 Td [(eps)]TJ 0 g 0 G -/F8 9.9626 Tf 21.117 0 Td [(The)-333(stopping)-334(tolerance.)]TJ 3.79 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(real)-333(n)28(um)27(b)-27(er.)]TJ +/F8 9.9626 Tf 21.116 0 Td [(The)-333(stopping)-334(tolerance.)]TJ 3.79 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(real)-333(n)28(um)27(b)-27(er.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.427 Td [(desc)]TJ +/F27 9.9626 Tf -24.906 -19.427 Td [(desc)]TJ ET q -1 0 0 1 121.81 571.832 cm +1 0 0 1 172.619 571.832 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 125.247 571.633 Td [(a)]TJ +/F27 9.9626 Tf 176.057 571.633 Td [(a)]TJ 0 g 0 G -/F8 9.9626 Tf 10.551 0 Td [(con)28(tains)-334(d)1(ata)-334(structures)-333(for)-333(com)-1(m)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ +/F8 9.9626 Tf 10.55 0 Td [(con)28(tains)-334(data)-333(structures)-333(for)-333(c)-1(omm)28(unications.)]TJ -10.996 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(structured)-333(data)-333(of)-334(t)28(yp)-28(e)]TJ 0 0 1 rg 0 0 1 RG /F30 9.9626 Tf 170.915 0 Td [(psb)]TJ ET q -1 0 0 1 312.036 524.012 cm +1 0 0 1 362.845 524.012 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 315.174 523.813 Td [(desc)]TJ +/F30 9.9626 Tf 365.983 523.813 Td [(desc)]TJ ET q -1 0 0 1 336.723 524.012 cm +1 0 0 1 387.532 524.012 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 339.861 523.813 Td [(type)]TJ +/F30 9.9626 Tf 390.67 523.813 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf 20.921 0 Td [(.)]TJ +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -260.887 -19.428 Td [(itmax)]TJ 0 g 0 G -/F8 9.9626 Tf 33.783 0 Td [(The)-333(maxim)27(um)-333(n)28(um)28(b)-28(er)-333(of)-334(iterations)-333(to)-333(p)-28(erform.)]TJ -8.876 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Default:)]TJ/F11 9.9626 Tf 39.436 0 Td [(itmax)]TJ/F8 9.9626 Tf 29.504 0 Td [(=)-278(1000.)]TJ -68.94 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable)]TJ/F11 9.9626 Tf 142.079 0 Td [(itmax)]TJ/F14 9.9626 Tf 29.504 0 Td [(\025)]TJ/F8 9.9626 Tf 10.516 0 Td [(1.)]TJ +/F8 9.9626 Tf 33.783 0 Td [(The)-333(maxim)27(um)-333(n)28(um)28(b)-28(er)-333(of)-334(iterations)-333(to)-333(p)-28(erform.)]TJ -8.877 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Default:)]TJ/F11 9.9626 Tf 39.436 0 Td [(itmax)]TJ/F8 9.9626 Tf 29.505 0 Td [(=)-278(1000.)]TJ -68.941 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(v)55(ariable)]TJ/F11 9.9626 Tf 142.079 0 Td [(itmax)]TJ/F14 9.9626 Tf 29.505 0 Td [(\025)]TJ/F8 9.9626 Tf 10.516 0 Td [(1.)]TJ 0 g 0 G /F27 9.9626 Tf -207.006 -19.428 Td [(itrace)]TJ 0 g 0 G -/F8 9.9626 Tf 33.251 0 Td [(If)]TJ/F11 9.9626 Tf 8.911 0 Td [(>)]TJ/F8 9.9626 Tf 10.517 0 Td [(0)-228(prin)28(t)-228(out)-228(an)-227(informational)-228(message)-228(ab)-28(out)-228(con)28(v)28(ergence)-228(ev)28(e)-1(r)1(y)]TJ/F11 9.9626 Tf 265.015 0 Td [(itr)-28(ace)]TJ/F8 9.9626 Tf -292.787 -11.955 Td [(iterations.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ +/F8 9.9626 Tf 33.25 0 Td [(If)]TJ/F11 9.9626 Tf 8.912 0 Td [(>)]TJ/F8 9.9626 Tf 10.516 0 Td [(0)-228(prin)28(t)-228(out)-228(an)-228(i)1(nformational)-228(message)-228(ab)-28(out)-228(con)28(v)28(ergence)-228(ev)27(ery)]TJ/F11 9.9626 Tf 265.015 0 Td [(itr)-28(ace)]TJ/F8 9.9626 Tf -292.787 -11.955 Td [(iterations.)]TJ 0 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ 0 g 0 G /F27 9.9626 Tf -67.94 -31.383 Td [(irst)]TJ 0 g 0 G -/F8 9.9626 Tf 21.857 0 Td [(An)-333(in)28(te)-1(ger)-333(sp)-28(ecifying)-333(the)-333(restart)-334(parameter.)]TJ 3.05 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(V)83(alues:)]TJ/F11 9.9626 Tf 37.506 0 Td [(ir)-28(st)-447(>)]TJ/F8 9.9626 Tf 33.135 0 Td [(0.)-750(This)-435(is)-435(emplo)28(y)28(e)-1(d)-435(for)-435(the)-435(BiCGST)84(AB)-1(L)-435(or)-435(R)28(GMRES)]TJ -70.641 -11.956 Td [(metho)-28(ds,)-333(otherwise)-334(it)-333(is)-333(ignored.)]TJ +/F8 9.9626 Tf 21.857 0 Td [(An)-333(in)28(tege)-1(r)-333(sp)-28(ecifying)-333(the)-333(restart)-334(par)1(a)-1(meter.)]TJ 3.049 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf 40.576 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(V)83(alues:)]TJ/F11 9.9626 Tf 37.507 0 Td [(ir)-28(st)-447(>)]TJ/F8 9.9626 Tf 33.134 0 Td [(0.)-750(This)-435(is)-435(emplo)28(y)27(ed)-435(for)-435(the)-435(BiCGST)83(ABL)-435(or)-435(R)28(GMRES)]TJ -70.641 -11.956 Td [(metho)-28(ds,)-333(otherwise)-334(it)-333(is)-333(ignored.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.427 Td [(istop)]TJ +/F27 9.9626 Tf -24.906 -19.427 Td [(istop)]TJ 0 g 0 G -/F8 9.9626 Tf 29.232 0 Td [(An)-333(in)28(te)-1(ger)-333(sp)-28(ecifying)-333(the)-333(stopping)-334(crit)1(e)-1(ri)1(on.)]TJ -4.325 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf 40.577 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(V)83(alues:)-478(1:)-479(use)-351(th)1(e)-351(norm)28(wise)-351(bac)28(kw)28(ard)-351(error,)-354(2:)-479(use)-350(the)-351(scaled)-350(2-norm)-351(of)]TJ 0 -11.956 Td [(the)-333(residual.)-445(Default:)-444(2.)]TJ +/F8 9.9626 Tf 29.232 0 Td [(An)-333(in)28(tege)-1(r)-333(sp)-28(ecifying)-333(the)-333(stopping)-333(c)-1(r)1(iterion.)]TJ -4.326 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf 40.576 0 Td [(.)]TJ -70.188 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(V)83(alues:)-478(1:)-479(use)-351(the)-350(norm)28(wise)-351(bac)28(kw)28(ard)-351(error,)-354(2:)-479(use)-350(the)-351(scaled)-350(2-norm)-351(of)]TJ 0 -11.956 Td [(the)-333(residual.)-445(Default:)-444(2.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.427 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -24.906 -19.427 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.427 Td [(x)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(The)-333(computed)-334(solution.)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-333(arra)27(y)84(.)]TJ +/F8 9.9626 Tf 11.028 0 Td [(The)-333(computed)-334(solution.)]TJ 13.878 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(rank)-333(one)-334(ar)1(ra)27(y)-333(or)-333(an)-334(ob)-55(ject)-333(of)-334(t)28(yp)-28(e)]TJ +0 0 1 rg 0 0 1 RG +/F30 9.9626 Tf 223.496 0 Td [(psb)]TJ +ET +q +1 0 0 1 415.426 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 418.564 120.326 Td [(T)]TJ +ET +q +1 0 0 1 424.422 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 427.56 120.326 Td [(vect)]TJ +ET +q +1 0 0 1 449.109 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F30 9.9626 Tf 452.247 120.326 Td [(type)]TJ +0 g 0 G +/F8 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G - 139.477 -29.887 Td [(127)]TJ + -158.081 -29.888 Td [(128)]TJ 0 g 0 G ET endstream endobj -1502 0 obj << +1540 0 obj << /Type /Page -/Contents 1503 0 R -/Resources 1501 0 R +/Contents 1541 0 R +/Resources 1539 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1505 0 R -/Annots [ 1500 0 R ] +/Parent 1536 0 R +/Annots [ 1531 0 R 1537 0 R 1538 0 R ] >> endobj -1500 0 obj << +1531 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.111 655.098 474.165 666.223] +/Subtype /Link +/A << /S /GoTo /D (vdata) >> +>> endobj +1537 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.721 520.602 361.779 531.727] +/Rect [345.53 520.602 412.588 531.727] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1504 0 obj << -/D [1502 0 R /XYZ 99.895 740.998 null] +1538 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.111 117.115 474.165 128.24] +/Subtype /Link +/A << /S /GoTo /D (vdata) >> >> endobj -1501 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R /F11 649 0 R /F14 667 0 R >> +1542 0 obj << +/D [1540 0 R /XYZ 150.705 740.998 null] +>> endobj +1539 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1508 0 obj << -/Length 2484 +1545 0 obj << +/Length 2478 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F27 9.9626 Tf 150.705 706.129 Td [(iter)]TJ +/F27 9.9626 Tf 99.895 706.129 Td [(iter)]TJ 0 g 0 G -/F8 9.9626 Tf 22.589 0 Td [(The)-333(n)27(u)1(m)27(b)-27(e)-1(r)-333(of)-333(iterations)-333(p)-28(erformed.)]TJ 2.317 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Returned)-333(as:)-445(an)-333(in)28(teger)-334(v)56(ariable.)]TJ +/F8 9.9626 Tf 22.589 0 Td [(The)-333(n)27(um)28(b)-28(er)-333(of)-333(iterations)-333(p)-28(erformed.)]TJ 2.318 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Returned)-333(as:)-445(an)-333(in)28(teger)-334(v)56(ariable.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -19.925 Td [(err)]TJ +/F27 9.9626 Tf -24.907 -19.925 Td [(err)]TJ 0 g 0 G -/F8 9.9626 Tf 19.669 0 Td [(The)-333(con)27(v)28(ergence)-333(estimate)-334(on)-333(exit.)]TJ 5.237 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Returned)-333(as:)-445(a)-333(real)-333(n)27(um)28(b)-28(er.)]TJ +/F8 9.9626 Tf 19.67 0 Td [(The)-333(con)27(v)28(ergence)-333(estimate)-334(on)-333(exit.)]TJ 5.237 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.956 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Returned)-333(as:)-445(a)-333(real)-333(n)27(um)28(b)-28(er.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -19.925 Td [(cond)]TJ +/F27 9.9626 Tf -24.907 -19.925 Td [(cond)]TJ 0 g 0 G -/F8 9.9626 Tf 28.532 0 Td [(An)-280(estimate)-280(of)-279(the)-280(condition)-280(n)28(um)28(b)-28(er)-280(of)-279(matrix)]TJ/F11 9.9626 Tf 204.226 0 Td [(A)]TJ/F8 9.9626 Tf 7.472 0 Td [(;)-298(only)-279(a)28(v)55(ailable)-280(with)-279(the)]TJ/F11 9.9626 Tf -215.324 -11.955 Td [(C)-72(G)]TJ/F8 9.9626 Tf 18.988 0 Td [(metho)-28(d.)]TJ -18.988 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Returned)-333(as:)-445(a)-333(real)-333(n)27(um)28(b)-28(er.)]TJ +/F8 9.9626 Tf 28.532 0 Td [(An)-280(estimate)-280(of)-279(the)-280(condition)-280(n)28(um)28(b)-28(er)-280(of)-279(matrix)]TJ/F11 9.9626 Tf 204.226 0 Td [(A)]TJ/F8 9.9626 Tf 7.472 0 Td [(;)-298(only)-279(a)27(v)56(ailable)-280(with)-279(the)]TJ/F11 9.9626 Tf -215.323 -11.955 Td [(C)-72(G)]TJ/F8 9.9626 Tf 18.987 0 Td [(metho)-28(d.)]TJ -18.987 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(global)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(optional)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(Returned)-333(as:)-445(a)-333(real)-333(n)27(um)28(b)-28(er.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -19.925 Td [(info)]TJ +/F27 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.148 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(required)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(te)-1(ger)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detec)-1(ted.)]TJ +/F8 9.9626 Tf 23.758 0 Td [(Error)-333(co)-28(de.)]TJ 1.149 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -32.379 -11.956 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.611 0 Td [(required)]TJ/F8 9.9626 Tf -29.611 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(out)]TJ/F8 9.9626 Tf 16.549 0 Td [(.)]TJ -50.035 -11.955 Td [(An)-333(in)28(tege)-1(r)-333(v)56(alue;)-334(0)-333(means)-333(no)-334(error)-333(has)-333(b)-28(een)-333(detecte)-1(d)1(.)]TJ 0 g 0 G - 139.477 -352.677 Td [(128)]TJ + 139.477 -352.677 Td [(129)]TJ 0 g 0 G ET endstream endobj -1507 0 obj << +1544 0 obj << /Type /Page -/Contents 1508 0 R -/Resources 1506 0 R +/Contents 1545 0 R +/Resources 1543 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1505 0 R +/Parent 1536 0 R >> endobj -1509 0 obj << -/D [1507 0 R /XYZ 150.705 740.998 null] +1546 0 obj << +/D [1544 0 R /XYZ 99.895 740.998 null] >> endobj -1506 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1543 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1512 0 obj << +1549 0 obj << +/Length 80 +>> +stream +0 g 0 G +0 g 0 G +0 g 0 G +BT +/F8 9.9626 Tf 315.088 90.438 Td [(130)]TJ +0 g 0 G +ET +endstream +endobj +1548 0 obj << +/Type /Page +/Contents 1549 0 R +/Resources 1547 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1536 0 R +>> endobj +1550 0 obj << +/D [1548 0 R /XYZ 150.705 740.998 null] +>> endobj +1547 0 obj << +/Font << /F8 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1553 0 obj << /Length 7011 >> stream @@ -18055,65 +18877,65 @@ BT 0 g 0 G [-500(S.)-267(Filipp)-27(one,)-280(P)83(.)-267(D'Am)28(bra,)-280(M.)-267(Cola)-55(janni,)]TJ/F17 9.9626 Tf 197.776 0 Td [(Using)-297(a)-296(Par)51(al)-51(lel)-297(Libr)52(ary)-297(of)-296(Sp)51(arse)]TJ -177.297 -11.955 Td [(Line)51(ar)-352(A)26(lgebr)51(a)-352(in)-352(a)-352(Fluid)-352(Dynami)1(cs)-352(Applic)51(ations)-352(Co)51(de)-352(on)-352(Linux)-352(Clusters)]TJ/F8 9.9626 Tf 320.465 0 Td [(,)]TJ -320.465 -11.955 Td [(in)-398(G.)-399(Jou)1(b)-28(ert,)-415(A.)-398(Murli,)-414(F.)-399(P)28(eters,)-414(M.)-399(V)84(annesc)27(hi,)-414(editors,)-415(P)28(arallel)-398(Com-)]TJ 0 -11.955 Td [(puting)-354(-)-354(Adv)55(ances)-354(&)-354(Curren)28(t)-355(Issues,)-359(pp.)-354(441{448,)-360(Imp)-28(erial)-354(College)-354(Press,)]TJ 0 -11.955 Td [(2002.)]TJ 0 g 0 G - 143.905 -29.888 Td [(129)]TJ + 143.905 -29.888 Td [(131)]TJ 0 g 0 G ET endstream endobj -1511 0 obj << +1552 0 obj << /Type /Page -/Contents 1512 0 R -/Resources 1510 0 R +/Contents 1553 0 R +/Resources 1551 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1505 0 R +/Parent 1536 0 R >> endobj -1513 0 obj << -/D [1511 0 R /XYZ 99.895 740.998 null] +1554 0 obj << +/D [1552 0 R /XYZ 99.895 740.998 null] >> endobj -1514 0 obj << -/D [1511 0 R /XYZ 99.895 696.263 null] +1555 0 obj << +/D [1552 0 R /XYZ 99.895 696.263 null] >> endobj -633 0 obj << -/D [1511 0 R /XYZ 99.895 699.619 null] +638 0 obj << +/D [1552 0 R /XYZ 99.895 699.619 null] >> endobj -1515 0 obj << -/D [1511 0 R /XYZ 99.895 643.15 null] +1556 0 obj << +/D [1552 0 R /XYZ 99.895 643.15 null] >> endobj -686 0 obj << -/D [1511 0 R /XYZ 99.895 588.618 null] +691 0 obj << +/D [1552 0 R /XYZ 99.895 588.618 null] >> endobj -685 0 obj << -/D [1511 0 R /XYZ 99.895 534.087 null] +690 0 obj << +/D [1552 0 R /XYZ 99.895 534.087 null] >> endobj -639 0 obj << -/D [1511 0 R /XYZ 99.895 479.555 null] +644 0 obj << +/D [1552 0 R /XYZ 99.895 479.555 null] >> endobj -640 0 obj << -/D [1511 0 R /XYZ 99.895 436.978 null] +645 0 obj << +/D [1552 0 R /XYZ 99.895 436.978 null] >> endobj -657 0 obj << -/D [1511 0 R /XYZ 99.895 394.402 null] +662 0 obj << +/D [1552 0 R /XYZ 99.895 394.402 null] >> endobj -636 0 obj << -/D [1511 0 R /XYZ 99.895 351.272 null] +641 0 obj << +/D [1552 0 R /XYZ 99.895 351.272 null] >> endobj -637 0 obj << -/D [1511 0 R /XYZ 99.895 308.696 null] +642 0 obj << +/D [1552 0 R /XYZ 99.895 308.696 null] >> endobj -1516 0 obj << -/D [1511 0 R /XYZ 99.895 266.119 null] +1557 0 obj << +/D [1552 0 R /XYZ 99.895 266.119 null] >> endobj -632 0 obj << -/D [1511 0 R /XYZ 99.895 223.543 null] +637 0 obj << +/D [1552 0 R /XYZ 99.895 223.543 null] >> endobj -1517 0 obj << -/D [1511 0 R /XYZ 99.895 181.52 null] +1558 0 obj << +/D [1552 0 R /XYZ 99.895 181.52 null] >> endobj -1510 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F17 629 0 R >> +1551 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F17 634 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1520 0 obj << +1561 0 obj << /Length 3124 >> stream @@ -18149,99 +18971,99 @@ BT 0 g 0 G [-500(M.)-443(Snir,)-471(S.)-443(Otto,)-471(S.)-443(Huss-Lederman,)-471(D.)-443(W)84(alk)27(er)-443(and)-443(J.)-443(Dongarra,)]TJ/F17 9.9626 Tf 321.124 0 Td [(MPI:)]TJ -300.645 -11.955 Td [(The)-365(Complete)-365(R)51(efer)51(enc)51(e.)-365(V)76(ol)1(ume)-366(1)-365(-)-365(The)-365(MPI)-365(Cor)51(e)]TJ/F8 9.9626 Tf 228.803 0 Td [(,)-343(sec)-1(on)1(d)-342(edition,)-343(MIT)]TJ -228.803 -11.955 Td [(Press,)-333(1998.)]TJ 0 g 0 G - 143.905 -352.677 Td [(130)]TJ + 143.905 -352.677 Td [(132)]TJ 0 g 0 G ET endstream endobj -1519 0 obj << +1560 0 obj << /Type /Page -/Contents 1520 0 R -/Resources 1518 0 R +/Contents 1561 0 R +/Resources 1559 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1505 0 R +/Parent 1536 0 R >> endobj -1521 0 obj << -/D [1519 0 R /XYZ 150.705 740.998 null] +1562 0 obj << +/D [1560 0 R /XYZ 150.705 740.998 null] >> endobj -779 0 obj << -/D [1519 0 R /XYZ 150.705 716.092 null] +789 0 obj << +/D [1560 0 R /XYZ 150.705 716.092 null] >> endobj -672 0 obj << -/D [1519 0 R /XYZ 150.705 688.251 null] +677 0 obj << +/D [1560 0 R /XYZ 150.705 688.251 null] >> endobj -638 0 obj << -/D [1519 0 R /XYZ 150.705 632.184 null] +643 0 obj << +/D [1560 0 R /XYZ 150.705 632.184 null] >> endobj -635 0 obj << -/D [1519 0 R /XYZ 150.705 590.562 null] +640 0 obj << +/D [1560 0 R /XYZ 150.705 590.562 null] >> endobj -631 0 obj << -/D [1519 0 R /XYZ 150.705 544.789 null] +636 0 obj << +/D [1560 0 R /XYZ 150.705 544.789 null] >> endobj -634 0 obj << -/D [1519 0 R /XYZ 150.705 512.909 null] +639 0 obj << +/D [1560 0 R /XYZ 150.705 512.909 null] >> endobj -1522 0 obj << -/D [1519 0 R /XYZ 150.705 480.475 null] +1563 0 obj << +/D [1560 0 R /XYZ 150.705 480.475 null] >> endobj -1518 0 obj << -/Font << /F8 478 0 R /F17 629 0 R /F30 664 0 R >> +1559 0 obj << +/Font << /F8 482 0 R /F17 634 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1523 0 obj +1564 0 obj [399.7 399.7 513.9 799.4 285.5 342.6 285.5 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 285.5 285.5 285.5 799.4 485.3 485.3 799.4 770.7 727.9 742.3 785 699.4 670.8 806.5 770.7 371 528.1 799.2 642.3 942 770.7 799.4 699.4 799.4 756.5 571 742.3 770.7 770.7 1056.2 770.7 770.7 628.1 285.5 513.9 285.5 513.9 285.5 285.5 513.9 571 456.8 571 457.2 314 513.9 571 285.5 314 542.4 285.5 856.5 571 513.9 571 542.4 402 405.4] endobj -1524 0 obj +1565 0 obj [892.9 339.3 892.9 585.3 892.9 585.3 892.9 892.9 892.9 892.9 892.9 892.9 892.9 1138.9 585.3 585.3 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 1138.9 1138.9 892.9 892.9 1138.9 1138.9 585.3 585.3 1138.9 1138.9 1138.9 892.9 1138.9 1138.9 708.3 708.3 1138.9 1138.9 1138.9 892.9 329.4 1138.9] endobj -1525 0 obj +1566 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj -1526 0 obj +1567 0 obj [533.6] endobj -1527 0 obj +1568 0 obj [413.2 413.2 531.3 826.4 295.1 354.2 295.1 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 295.1 295.1 826.4 501.7 501.7 826.4 795.8 752.1 767.4 811.1 722.6 693.1 833.5 795.8 382.6 545.5 825.4 663.6 972.9 795.8 826.4 722.6 826.4 781.6 590.3 767.4 795.8 795.8 1091 795.8 795.8 649.3 295.1 531.3 295.1 531.3 295.1 295.1 531.3 590.3 472.2 590.3 472.2 324.7 531.3 590.3 295.1 324.7 560.8 295.1 885.4 590.3 531.3 590.3 560.8 414.1 419.1 413.2 590.3 560.8 767.4 560.8 560.8] endobj -1528 0 obj +1569 0 obj [611.1 611.1 611.1] endobj -1529 0 obj +1570 0 obj [777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500 277.8 833.3 750 833.3 416.7 666.7 666.7 777.8 777.8 444.4] endobj -1530 0 obj +1571 0 obj [339.3 892.9 585.3 892.9 585.3 610.1 859.1 863.2 819.4 934.1 838.7 724.5 889.4 935.6 506.3 632 959.9 783.7 1089.4 904.9 868.9 727.3 899.7 860.6 701.5 674.8 778.2 674.6 1074.4 936.9 671.5 778.4 462.3 462.3 462.3 1138.9 1138.9 478.2 619.7 502.4 510.5 594.7 542 557.1 557.3 668.8 404.2 472.7 607.3 361.3 1013.7 706.2] endobj -1531 0 obj +1572 0 obj [569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 323.4] endobj -1532 0 obj +1573 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj -1533 0 obj +1574 0 obj [639.7 565.6 517.7 444.4 405.9 437.5 496.5 469.4 353.9 576.2 583.3 602.6 494 437.5 570 517 571.4 437.2 540.3 595.8 625.7 651.4 622.5 466.3 591.4 828.1 517 362.8 654.2 1000 1000 1000 1000 277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.3 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2 484.7 503.1 446.4 451.2 468.8 361.1 572.5 484.7 715.9 571.5 490.3 465.1] endobj -1534 0 obj +1575 0 obj [613.3 562.2 587.8 881.7 894.4 306.7 332.2 511.1 511.1 511.1 511.1 511.1 831.3 460 536.7 715.6 715.6 511.1 882.8 985 766.7 255.6 306.7 514.4 817.8 769.1 817.8 766.7 306.7 408.9 408.9 511.1 766.7 306.7 357.8 306.7 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 306.7 306.7 766.7 511.1 511.1 766.7 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6 525 768.9 627.2 896.7 743.3 766.7 678.3 766.7 729.4 562.2 715.6 743.3 743.3 998.9 743.3 743.3 613.3 306.7 514.4 306.7 511.1 306.7 306.7 511.1 460 460 511.1 460 306.7 460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 460 664.4 463.9 485.6] endobj -1535 0 obj +1576 0 obj [583.3 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500] endobj -1536 0 obj +1577 0 obj [638.9 638.9 958.3 958.3 319.4 351.4 575 575 575 575 575 869.4 511.1 597.2 830.6 894.4 575 1041.7 1169.4 894.4 319.4 350 602.8 958.3 575 958.3 894.4 319.4 447.2 447.2 575 894.4 319.4 383.3 319.4 575 575 575 575 575 575 575 575 575 575 575 319.4 319.4 350 894.4 543.1 543.1 894.4 869.4 818.1 830.6 881.9 755.6 723.6 904.2 900 436.1 594.4 901.4 691.7 1091.7 900 863.9 786.1 863.9 862.5 638.9 800 884.7 869.4 1188.9 869.4 869.4 702.8 319.4 602.8 319.4 575 319.4 319.4 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9 511.1 575 1150] endobj -1537 0 obj +1578 0 obj [726.9 688.4 700 738.4 663.4 638.4 756.7 726.9 376.9 513.4 751.9 613.4 876.9 726.9 750 663.4 750 713.4 550 700 726.9 726.9 976.9 726.9 726.9 600 300 500 300 500 300 300 500 450 450 500 450 300 450 500 300 300 450 250 800 550 500 500 450 412.5 400 325 525 450 650 450 475] endobj -1538 0 obj +1579 0 obj [625 625 937.5 937.5 312.5 343.7 562.5 562.5 562.5 562.5 562.5 849.5 500 574.1 812.5 875 562.5 1018.5 1143.5 875 312.5 342.6 581 937.5 562.5 937.5 875 312.5 437.5 437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 875 531.2 531.2 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 343.7 593.7 312.5 937.5 625 562.5 625 593.7 459.5 443.8 437.5 625 593.7 812.5 593.7 593.7 500 562.5 1125] endobj -1539 0 obj << -/Length1 1745 -/Length2 12042 +1580 0 obj << +/Length1 1785 +/Length2 12275 /Length3 0 -/Length 13787 +/Length 14060 >> stream %!PS-AdobeFont-1.1: CMBX10 1.00B @@ -18257,7 +19079,7 @@ stream /ItalicAngle 0 def /isFixedPitch false def end readonly def -/FontName /STSKKW+CMBX10 def +/FontName /GLQIZN+CMBX10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def @@ -18302,6 +19124,7 @@ dup 13 /fl put dup 52 /four put dup 103 /g put dup 104 /h put +dup 45 /hyphen put dup 105 /i put dup 106 /j put dup 107 /k put @@ -18314,6 +19137,7 @@ dup 49 /one put dup 112 /p put dup 46 /period put dup 113 /q put +dup 63 /question put dup 39 /quoteright put dup 114 /r put dup 115 /s put @@ -18343,49 +19167,51 @@ S ?] •ˆFÂx¸Âºþz¯‹DÈL•_‰¡>b T¼vÊ»¿b–Þ§œ×ÈÆpñ'aŽ™uµšˆ…á&õzØM7nGkßÚÈhûjúÙÖ”µa#ÄÙõSfÐSµ/+ 츮 †Å5æ&`8­¬þ1?Îá¢æ‰’¬Ê{·ù—p~£wÓ~¦ÿ5¿¼(f¥r³‘ù¸Eh]º^bñfè‰÷hü•»Ç‘XÂ;/Ñ%o†¦OvÙšcŠÀÜß9³ÁÂÙr²çXo$²Ý’-#z}ÿýfSUÏ»îy;ÿÍ”Ïýº>r^ÜôÍä0~;‘‰:6]ô:S½ÒSŽ( xŽ:b´ NPc´ Ái:(O¤>©¶EÿQÀÓú@q;¨y¿Ãʨ¹Ø… Áª‹¾§ïFšï nÍ<&ª½S^Ÿ½ÅÏ…‹üØ'¤,ÅÌÄñ5:8 N‰ø «:U6øHíÞ¢ êS¥µîK¢äL M7ÿ Aä“þÚoKrî;pzþ·ÉYHbòЫFÎ&/ԋ㊞á5Ý;–O*öÿ÷'²Ïà;Øòƒûh2Ãã÷˸¼«2Ï*ŽaK»2GËÿAÖ`ÀOn˜r!¸Ll‡>ó¹Šâ¨¬%hª.ŠrÂYèã ­ð'‰‰Ì¬e1ÆgµÏ$•ìušÐîbSÝ>Y`TBÌ”¸ÚÛ3ÐIø¼`ë»H,·.ÅŠ×áîÇ0Ta÷¯Z¥·ëÖ¼× â2Ÿ†ö̧«)Ö¤ßÍ–÷¥qáKæ©“ dT‘,O%ž+]ìeù>ºû0K¦Ÿ£‘jób(lŒFØ,7.7DqôÊ‚[‚*uz¿A‡…×)v>\û2ńȪE½æ¸3ŒÜ9#;Œ01¦57ÔQLòÐè‚­8!¼UP÷K#½¸H^MÎ"yëDc]—fOÙs=¨Æ7­nntþ ÁÙñ³–”Î(ßÞ–Ç—¡^G¸÷RqÝ_^¬P”„íÓþÛ*¿g8 “º#µ¡^𫲠WYEIÕÕ:ÅYa_Êq2!“hA¡Ã;ðK‘®Ë€eãÓòx|ï!.úff»ã3D!Huž¢àÁNî’KMuEXûîÿå<Â>nÖj òDPr%…SY­¤„j” -©»ÕÍåaÕp”0b,As8HŒ9 ËðDÌoä5¢Ô2¬,νŽ0>2¾I¥ŠÝöGÊ%=æ¨Ý•ÙÑÉXöŽÎÓÓ§@ -3mØ\¨S¥P¦—žÇ÷,šÆ‡6ÍÕW'Ë8(…..ó1™~´„pÈÙó\šÎo‹Ãs…«Ï µ*þÄØ``:ÒV7¨çm¢rè½ê»­ÍBŸÀ«Ø¿£ßi¤yM°ÀY&Ëäžµ@Ãu³Ú·ÜÎl[v}»1ªÅÌïóÛK«³Ó e2ÿï2`Ú¿!„U¿á"ÐùGƒMmA¢º;£©GóGbí}Nÿ9æÝâ(Ù×#;(xT}\I]Üža8æÀÂÄ­ ÁA%\ â©A¿9ƒ³ë±°¥½ùÐqÐC¿2© Ä»Ÿo±S~7ä/o‘­xRÍáï*4@¹¥”nŸ5ÿ7CÆmËL߇ásÜœ%-ïu¸:<2îîBá5˜¦Ò+îiÞZxnc3¹/ÆÐH­âNfC¶6ûR5Ù”8ŸÍüSŸ n«€½¾h·P1H*è¤I¬ÌYå—Πðúi,È~Šl…{ÜŽ‚„íðÜ×¥a¿>Uù¸ÏSv“Ư?ßWDu8¢C5-Ÿ‰‘ê¶cûª»­ƒ<¡Åª WM!vJJÒ×>8ÈI”æÝLaLÀ­—9ç«Špn*@Ú:µ5`B‚äÛâ /Ïe_8_‰xêTv“© -²ÂH´d.CªG–‡yÖø,H_§ßÃçëÕ³Çku@̬Ñç¬%}WÛà -ñVk6šŒÃRIï+XFb T‘Ûv’I9;aøS°mæ€ý ->z|¤Áë;'ó5íø>¼Pà½WÛ_Kwæê:núØÿÀ2Õ,{D×ü¼ÓHÿØ$^ë§èѱ2¢µû½‰®#¾a°€¿è÷óî!Á›i•¿Ìÿæ9#K°æG”QŒ?%ðâIëK5“QD–·ñœ7 ï5È•ï)Ö˜‚tH1w#}m¬¤ôl qãXqŸf\6!Ä°°Ïù&Û±'Õ¸âÙêͬF%`Åq;}Ì*¯sð«¯ã/­õÕÈQa뢬„õnœ Þá㩲ôÁ˜@¢ï~,ú¥D·»îÆØ#hãaÔl¿ª#¤_jÍTµ‚Pðù–$Þv\®„ÞƒÝ{~ÆzÀØŽ®þó™kfºqѸ¹6"Ô$ºmþ²›¤ Ö|Ôveû؆À©ýhËbuf’]Ý -Œ®!O‚¶ÁG¡&w/LðF;ÄÙSˆÌà±r³F̼Ð4cô<+`3ÜÛ5ÉÁ …5¡»)™)ÜÕÎ+f*€a)A¯8Òbð¨‡Å˜ï.x€õä/; ÿ3†¾"Ä0œè¥éâ*ê¥È¶#æR¹tŽÂôÔjhh€9'Ð6Œù†kçìËVéí÷’þ¡=ñÍ6ůRö8§ÅAÛ€ßþTytɈ ½Wwt±Ø“™²¥,ؘ[‡/Ó]¿AÜxÔx:ÁWÒÛ2Ÿ†/á,TN*FB•L62(ý#QÜ€ÛVâýÌÝ^þxÊèš -íÒMÉÔ§$TÄ0 ãE”õÈHиîÚ!oUÛª£d,ršFIþ•YHØ•;ÍÞu‡×]+}&ì; º€y&°[BÝ6ðz]¼¶¹;/*ò†„vAäË[[»ÑÕƒphœê¨ÔŠŠI¢­¸LTóþÅ„7ºÂÄ¥áÄè™÷{{î’í¼ð^µ™K$¡,@ßÃÓÆCW¾Y)‹C›ö%üÛ©þ#Œ!eš¬½Û=×Çô‡Zï!öÒfqÂÁIĨd6·£æЖ˜È°nDIÙÍɾ/íçK0åd2-UÔÞa¾âf~1ø£ßß¹ùÔéä3_ÓW#0L÷Õ­ŸF[Çä&*¿å‰Áû¬ˆ«þ0šˆ5ÌbâÜÉØú ³à›£?¨6“žô6²ÈÂ× ˜”¹¯ûÒp&M>ºêêr¨LF}3â>_ gÙ‚ÚU|X|¦ ŠÙÒ=˜-ŠïtL£F\àÄ_á[âÏ3‹l5¥·f¬{‹ÜÆ›ï¹fO×`ÌBdG­uZYîW¦â0NÍ}*òcÍîÄ5ªßl¶sRQ}I¥•6ð,ls.GboiñAí+pIt4¶(d°¬]\é"»pZG{òòä}å¬g£°É+R]ÊœÞ̦xŠÑƒ€UtܱäT—^Ü0~ ÖCíƒ ²¢:õFÙð =y×Î[®¤Žî‚tHpOOlYgø ¯Oÿµ‹¯iκ§˜ù8¾"V†˜hZ¾ÒcüãŠ'†™Ú8ÏW]Y¬¸à ž12ÇIò‚›@p« - ý¿Êþ‰[˜æDe7¬sÿÑrÅ ^áç6VÜl¤™ò1?Ï£Z Í@†á!L¾ÝKº¨v9°…©ßþƒÈ´ÕŠ‰' -úÿ¶hæ`Ê ã(¬ýŒh±êÂG½ß†Ó³ü¨Éjž(qb^Á,Þc}eÙ©l?°’k—LÄ £ËÙh 4'k¦Wí NÎ>ÌϬU6¦FpfžâÂN¯”>°Q¢D>±¹Kalz˜$cŽ0öÌ6OK»‡·œ>Fx¸×ã s%±ÜOàè$꺪Õ+U€%Ƽ»cÇ#uÊç tŠX½Z/V*9´b­²=¨‡áÒFÀÃ+g2vCW’#ŒÓmÕ¸eFÙBjAxÆ­@­à!—Ò¥/³=»Ã¯Õ )Ì%°oØ]»žšŠàY]í7üÃÉ4¢›o£ï„R!94A_Áh!DO]z²Ä¸ßØHMNq+×ìšX‰•øÝÿ¥óÀeqŠÇ†Ã˜ÐëP)£dG¾«•1oH"d¢š±K6žn$„×æણ˜]iäòÐXÊ¢ica\Qßn¯ø3I>îUæAeh±åu¤J -RLoÊÙ4¾®ÚLçÀ if˜ã4‰3`‹¤ßx†®ðuÅœa—x“Ù‰éY¤ÎÍÅ0Ýì.syÿAözV˜1:=Òrþd±TÙù6³o™ ø:Û—ò£V QÔèÂËR¶™¥Ñí× -ÿ¨_-ωU5[yŠ³:]i9ýà -D9ÚnÁŽêø _XíolPM] úÛLè\Ɖô…yp²šór{îWuî*h× @Kšî0xcSšÖoeÒ©Ç7?pîºñ#ñÜlê¿}„KÈXœð ØRŒ=!­üm³¨^Œ^}''ÝœµÃpq˜IyyaÅáKÂã¹ÄA•¨i,ÓGÇØFOí}p†“Ê×ÃvT8„*Œù’V½SjÊ®7‰~êU”Vˆ~óR-7eI5Û¹‘¯ÂZ“q½·f]fš6CÊÌÊþqÕ¥]±BµÜÔÖ}=©ª0‘ÃË¢EÕØ)&Ó'/´‚šŸ•¶ØäN‹Ös5Ó€•ì·R{¦NŠ¹£N!äºç0öÇÇó¤«È «s©ßÀLÉïÝÍ‚F ~NAÁ,I¿Ú—Éö ÂÙ±ÏFÁ ÿ”=¶Ër«Íwf¼d'ŠðFXŸK‘»ÓSs’5¥`ÅY‰ˆéT;rÈôch"›¶uTÿRo - Jm¸Nÿ^f%—êþÝ~i<êóhd‡ÊZ é_³®÷(ÄãßaÔm)£”¶{Y¶ÌàŸ&…uêÚ 0W¯¤sÞMw­— ¨c0ë—¼†F I¯`¦gòKg&ìÑ1¨]·oAYQn¦CL¾ŸÜÙ™:à„Ö=K&¾ÔlÔdr¿·NiÜÿäɆN[Ãøg™:BüWÉn‡ª;ÅF¨^¶oDõòÃ4I5Ë6‡é¥ÌêˆVèõ§l)‹Ûï•äéYLÀ\SÑ;‚ýŒ¹?ßA&wÈf¨Hã.þZÔÈé ¦ì~ãªvè§âhüæå{ìt<8º†~ ôw§§Àö.¬0 gWGŒ=¨õ[ï>~šOªÖæ(Ë+ùo?€«o y‡*h2£n9ëy(‚­Ëz^g´:€‰2„,­ª’ÓéSj3+U3ÌyFó¼¨Ážü“¼Néåµ ¥¹µseÒ†4¾ïåUj†ßúb‡–¸²à–ôÕn¿^ŸÜÔ]ºêJùâÝÒMW•ëBÈÌÚ£½gã²Õ¥ŸTºÕ ‹V!Á¾éákwîj¢„¿qÆÝrÙØ@%ûø*}b;Å!|¶K0ƒaį%B+'îˇҧoZ}Xòn7.šoLÁ}¾h~.ØÅn,¯Ìr´{AÂ&ÆçP¯I,mµà!…tÓJ­û3M#Ï«Ê·:Öiøæ÷âm'Y6Cª]Øòúì«k¸Úâ©BÃË coR,CûŠ+~&Y×SÜàm·¿þL\Ë[ô`ö–Ô’Qôö¤·t½„{Bê5€‹¡ù¢õ<2.ƒvb7è¯[}íªrNªM`¶ðïÓ£¾H~È°ªg'ºqÏlŸTH?gAAn a]e2…œ3ªeÓûØä€Ë~š`"¡š ¬+ó܃ßwÍ]$ûˆñÙÈçÖ²\B«‡ä’CĹgÝZ¡zã†ìávË¡MðsŸÅ®w±b*às0ÝÙíj€Cfú>WO F™³vön0î- Òˆw£ðäÈ$?<À?îΠx -Wó‚UBøëÎæ^ª¤ŽèÛ´v® Cu£mÞßåwÄ—0ôÖÝÛ–äÅÀ'¿@Á$· 0ãrW‹ ´99qà„à‚¶ëñ­ÈZ$âB¯ìs’Åßyž„Ê@ã ^òäB•ÕeɆz΄<ª tÊ š6AN„ø qŸI¡yÜøì X€wvNgŒz¸œÕ•× ðòPS5ÈÈ@.Ü) ±¥$-Å"h?´LïÓP®Ætó‘j׸úÍ*×å3JTÉF?§7î§tãµðbÛy¤2Q+=™hæçZ#ñ¶±äurîGÚ&Ó;Ôx˜#Æ -N¥÷›÷ål|©˜ímM#ä,«ýŒ¬L§„fùq‘úžîÒö8«‚‘ê㲸…6´±½HhØ—a²ËµÞ¡’™&ìëßÌn~{Å.I‹$ZIêSIóR5ö‡ÑŒ´d?ˆnW¦Õ"w5 -tÂ{8ÁIËQ@Ç^§Z éÜ4yþغPfšè¡Š©‰|@vÇqDæ„­¦hHìRcçMèûÚ,yu’ÞQ›îZÊ•T=[%q¶,ä5çmmhý¨ü‰lƒòêË@Þ¬w† y2Ž²œ,\Zw-ÁÜBáíi†œœØ܉P.iê"mÖÛ…ãZ'q^RYâE"=¦?Ý–J%ü¡ÏÊ V­å¡¨«I7ŒG -ÕeŠ¬¶êñc.4¨²­õÜ—ëza&ó&XK‡}Y « ãáô„Xg¼ïSrkÔkêMŸüÖ (Ž Vp-ð®ˆ+Sëø2kG¬yÿ¹Ê ¸Ÿ‡XÏÐë”®Jz–Y°$ úˆ+ÊïdœD~Xðœ»j7 €¦Zˆð=Y6Ý*,#bc¶ƒP ák‡FÒ^q,o=ÕÞrLë[Ë öÇú++×)¨¸8‚ž0‚{\8ƒ^å'Q&"lò¬™qJŽj!û¶4º‹Î¿!")âÍÿÚRöµ¬²VŸ¢@íRHí5³Ó˜³÷Æ À`R©þÈà4º@J«þÞŽR÷ì;‰ª:CÛnþ€|Ó€X˜ì<|ž®x®ºv.²jO¹‘×Ã!FHí_‡·œPïµ÷I¦ZP*Ÿ-ØuÄEÈ_Ñ >%¤|¤–ã>ìÞÆ%ŸsW{¬ FÂl½ˆdí"IÀKµðq¢`²¤VÒLÐÇIJw6ãt0ü‰µpùžÁcš³a'ª.ÜM”Ôñ‡m¨•Î¤)›µú8j!]4azr§–9UòFÀH 0^€†ûiäxIº5²»®Žõúèq¿äßð{q‰1~„É–qŽJÿg,bþT¸@(ECóæ¶â¶-V‹plúæÙ5–YáLAÈQç¥Óì\z©,ðÉ*s Ø­ÍAÁš ô|Ðõû `f¥ù@±P²R9"÷vAzÝòàÓ¦_ä5¥Ô¾ lhÂ(ÄÌUãòÔ@pž~€S} -*·Æ¸‰í"¯UL^ŸQÞZ`ÒwYÜ4©Æ8VÙõ‘ÇC˜¼RïZ]s'á¹1JõngˆB³­§(ÞŒ“«I”d_ÀØVrv…M³!ž¤örøAk³íG¡ô´¬Û lô(E W–ŒÄªÒš#€ÑiUühr‡V/¤Ö”ÊBbs$1–jÙèH4A¸g ªÑîxËqœ…¨ùÊAßùN&1,ìæ¼fJdñjzc_§Ã¨V„·ËoôÏ¡XÀlTêƒgq°T^¥nÆëaJoŸÂjOWŠ8þ(~5 /edWñÀÄ[n¯™ÂÅñbUöÀ[òEh4Œ Ú¼›\—=Gó+Ãà€õW}HMX Ñ9¶œÝãàú7”<Ó[Æ“% ‰\Nø†qåHÅ -ÕbR¯9;Ý'µ/®ÝVËèšX]!Ak9- üÊs8köWO½b!cƒ WšÓjýM½üVHèòy+ϳJ~q†ì§žæÐ/*2}‚„LÎäž·ëÚ½$¬„¬‘®óˆlÚÃ×d²ýŽŽ€â#<=F9¢Ñd×:ìú-¦ìA.ê´¹éÍ…Ô0ÿYÞ” !ÓÆQBËÊtWõ®™Zã=!dÀ¼æïÃ> É®0,/,@§àl,vZÈì>—¾á>Dï-ó1îBöÌ™ƒ(œ8C£°õåœHŒÍõ€IÐw–Ò ·Bá¶N­2D‚8{ͱ™®72vIÏ+ºE]Up¦Hþ„džUJ4Üž)ê°¥<Ä@@åA´Zõ.Ù=+Ø_öÆQf?ꇾ澌½Â•Ì(ÔÂîPD¯Õ¢Ë K\Ž3®‘içv±iÝ0.7›GD„D†ãå¯—é² .–ª÷‰Éø"xq~±i1õË<æÞþt?¢âU=_¼¦Qº §¹Bø¨ÔuD@l"*¯=yã¾êìðJ`§c• ²›"wýœpˆ¹)ÊhÊÌÃ2 ¤§E…ņd æ«kª°Iri‡ûdOØ4N›C‚ZÒ!|`±7HŽàî'ûÂHú Á= òE”æ$­Tò!0VŠ¹±×Ôî9«ÎÁ ׆.:$½Ù%ÙÄ x¢=ÑD øµˆâß|J¡ ü<ñ(Ë$‹˜\êYÚv?ÝÈV–æhžù®‹ÃÛÎáš7|¤þËå¡É¢a2aÎᛟÑkddpW/h)¼€‰¡-§Xè$ÌÃàé<ÄRPáÕS‡µ¶>ÐÊÃÞ“ÁEI€ê©9>†bàÁc×XóËŽ¤ûô½Gl§©“;Ë«(¡×ßÜq_Ö£,íÖEÐ…„¿ð›kûü‘ë„^ÖÄK5šäšWOâ3ÿÞÍp¥ÃG¼#dzSûvþe´« ´'Âdºá˜ø*Øœé‘ñˆ®Ì ÓÞF^¬ @@%>~¢ð¢H8»´“[ío—Ó‘ªQ5(EìšEFyoá"œûMÖrÓÉs8ãV¨ÚÌ™‰w~†)åX×TrnóÃ<'âK]Üþ";Ÿ}°2¼B_—"sÝŠ <‚‹€‡¶©ôc•féì›áÏóX]Ê«m_œîkà#òáðd„LÈÕPeåë2Sà7˜'kfÆ>–=ØÔdz-{”ʇ%UFJ5*pF dj£Äü>Zb™Õ -MêÓ#ÙȘ3ØSÐL¯ -YšŸ«Béœ(aì@Ík³ º¦ ̶!—|Íì¥ÐlQa9<¥¾ï1GŠE»,H˜ËÔ"EåØâ€éU‘d)œ}ò&Þ»)£hè(ÃG¼t£Ù訙‹àtáõD@Ù&,?ýÑy® 0!4ñ©$ënaj‚˜•ý…D -ñ§õG7hg]H·R<¿/¹4   >ò¶wP—>DÙ`à»”†ª÷-=†gŠŽ6öh –lçxÎü:Šb%iH“»6ï3Oo¡”dÿË™ÇâÙyû¦JqMÝp÷jé…×ü¿®]úËž°ßÿë:JÆÿ A®²€ƒ¡Gc¬¾ÿŸ‘_ ù½Ý8”‰ù]mÑãçéyƒ‚“zŽDŽ–²‡†Gs#b†rò¿lŽƒiÁ -Ùf[‚å//}_Ök÷uL׌¶úJu6fÃDÛÁöþ\w­ßcœææuZý¥ V¦Û|²“=¨ -<™·]R -H>î<»úùæxQÐŒ)£GiÚ_’‚ë 6m·¨‰Z&™4#–Ð à±k˜$çj½‡Uß}uŽX¯ë¾/(iZ˜W=T:E3£7›¨£H$bõ…êÒ¢/)h °ÞÀ¢¥ÈkKÞúMwÉ9ǹ°££YLv‘°Ás(ÖQ -ÌÁ²NYÚ‚úë Sej¨<³uNÜg™Å^פšZD#8¡Ì>,ÿA–7ÏRNSÊÍYëÈL.‹“OÚfär#~Þ-ù ÚúÉÐ!—2¬óq=±±~ódcŒc߶ –Šß·‹×ÒHx9m¦á¬*J³ÐÅ}˜\GŠ{¡º–uÞ”£Qw›‹\ U¸QXcƒºbfÜmRIãá6 b=¯A±,—Ñð»ûÓµlòa[ö"Ë•ƒmZ™‚—F³#ô¬ç Ï¡àiˆ!Ó®0ݬRµ7 9“dÉÕødU¹òŸXGötà!ä†ë¥Pâó©Âþ]庙¨%ù·˜Â{gÝZr-×\xZK"ÅÑÉ)PÓÊS »nÈSeôWl×G?+KPè£äÁ›Š€&ò$Ý øXe]ï†(¿­óþ¥š'µú’Ôc£N¤’ëÍ.øwÍ~ð¸?XC3O00gZø§­< Ñ%þñ%GÞÞd±Í½™KÚ¼Ì`½ýíKºgÏÒêÎŒVnY¶<Öã9Í`Ï}>Îuyc4Ûþ+'®s ×éuk?tÖ -C·©2Â8â•?¾³þà ¨'Qï‹„Ü°Ö6›HÖŒ¢dGåÅÄ,+„Ñrº;àzë'Y)w±_øÎ1/ø&Õ^|p%B³B wJ.·nz™j…‰TŠyŒ5×6ªã¥(q¸WJR¼;y’á'.ý¦dǤևþ†ÕR -‡öÞ 5U‘yòG”sD³èFd?SGØ’?°`Säتôô¯LŠþÈ‘¨tl¨“Àt«™ˆZ ?]H¼Äšé|%-b¯aùn,ÌnkÜ¢¯8®è.¨ç]TáŒ"!VÄ`›ú!LÏMˆï©© ;þÞùX 9ƒ0‚4Îï6gL˜–œBƒ,Ô_£™m3`¯+q/a¨…AçJÖGÿÐ[òø$ºì[ïöóiÃY›wré7ßPÒP}} ãFffA8n€Jº!Ü`X¿kÍ”Ãðú hÉ¥©u¶Þ•—¨2¹Ü¶¦ãठz&; 0Ô6¸ÃBý|Ç ‹zw‡"¸gƒ-ª NåJ8ƒ=åœ%½mïÖÀ|`h÷ŠŸ’O7T¶—§íÔIÐPÉ<•uO¨%AiƒEBçÑé p¥ªdͨâCÞw¹5…Ê0êêµ.\=Ëú&×mSYx©AŸI6™†t&=Û—¢‹H§ú id&þhõ§±ÇE¿ìBIk¹ã•Ý%‘#búͶ'u³Ûe_eè|5˜b5DwE¼R;OÞíU?©ë@ÌY³Fó‰ûÆ𛹈uéwòvgDŽá'kŒ¸&6ÎÍK†’âØ`RåxsÅ‚ ½gÌLÝ€¦·œpðKv"‡K¿ùXRÊŸœdr…G]M“ª?º:•9_u0öÔ_àÐK‰ù¨«–Ñ7õü¸óTóÚ=ZÅð®y]H¹¶¹÷ý°·‚¼sDkæ Ö‚ ø†ÇëÌââBdEͶîFØ”1œ¿rÐà£ãfg6ri¢—,ñ#·¼ÙrÕUt}o£CËÉ{Çëb -ÿY-ôEŽ]«4xÉ*ËîQš‚Ç Š;Q:dLù 9@®ßåíqèÒuë3×Ù´vÇ4h…»¤&V„<‚£z{,HØ6îìØØÃré18Hn£¼ÉªŒqSµ=ÉuÌ×ÂyŸiÓÌW:'¥ÓËOÓ« dšÙÖr¨=Ž?`î/#/ñßòëzRã á˜›sö"µô5,ùzði.Ïdm?%o˜Ý\‡h -TúNTÆ ¤ö$É6P@OÕßÓy§ëŠ¨qHvu 7ƒiôXV£×¤Okò„0—ây¤FÎMTm¤‘'Ù­·ýÙᇠ2!ȯñøä™^z©}"!B]Ê;Ö«º)!ñ¼ÁtÊ©  ÑâÜ[ÙsëCê¿‚ã_oT‰ëÙ­,£zø¬ÃÛU¢†î”ÏèÏä`]yí/£'ª% a¶iöøü:ä$*ùìëO˜ÙßXToà׋«‚¼_fI²©’ƒGFµ,ª˜|”ídâ¿Ì]+šf©+O/²é©ÝÕèq"Z¶Zf½) 7:¸’½ˆ9‰¹y¼hð„Ôp6ŠÓ -PtSAÖAí%Œe"AÆNš¡^ QG¥c-³=X¿jßÍÁD’€RŽ°l§sþ ÉtÁæ;“ªâa¹õR 6ð"LدzY¡ Ñó|Yí¨ ¦¬ýƒ×þQ-åæ]Ønzn  òTç|ûçšCé·çÝÁÈŠêe|#«yÞå¿»ñná ªyîRñ/[¨I¿ó­EuN2 ÜÁ³±ãNÃÕùláÚ}Š•–-Š~=D¶Ìô,ºÓæ‰p^káý2}ÂÞĶû.«! µn/«½\¶êëµ”îËÿ«‘l§£ü©#9æpàë¶Ñ@”Žš±<3…º EB5n'—‚v3ú§öen ÏPåŸÄüx’ ˜$•[…È” €nœ,RùZ¦y†~ʶré†Þe_4H;û²îïÑwæ@ÃÏx‡Õz*`i“×ó1gP% -Ö °‘n)Ç4±¸ßfA½4ð!ƒ‚®G,]¢A ’T^\E¹zÞþ%òýãZ|`4/@žç©·W‘_H•:þ1!¸±Ð‰àKYÑк'àè—¤vé’ÞzC‘¼F -ƃ›ÖdõüµTûï®6çCÿáÊ~€¹•4tˆñâð«'½\â ²UbÖ‡t›‚ѯ&ƒ j#¬ÆîhW'>ÄÆžF¼/äL*=»ÿÕãÙ<Ð3¹ÆDè¨Ø&lï,¶ÞB:0 j˜Š î‘ô\žˆêTN%o˜êëTkïÌ‹7ºT V¨e•WPIÞ%’Ke -Gúd-VNHª•‡™yʈ;Ëóìw(l-3?½õ‚wCü“†+­~„ÃÒ%ͺPÙZ±ÔsOv -ˆzႱÔß ÆàÓFëÇð!æò+Zφ¨“1é'—g…N€ôúìqÙ#£.º¶=ú@¹†½¶æe „ÙNo"XÁÚ©èÃJéP÷ÚÅÈ…ÑØçå×ñ¾E÷j{œk,¥—F‹1#Þrë%'¹Lß½ìÎQ»ðW‘â9-+~ªyÜh»ßsÐ,ЂfK“üy÷Æq¦hë˜]lé!wÜÄ×µpÀQžMš5õJ¢A¿òa­ˆa•‰wMxÐ K* -"¼OË2÷¡­a+?WVµÇ-“o,hè„åƒyÉ–[s}~# +!¥pgs˜è¸”#›ÙÁGšv™2?ôH¤ðœ¼Ò=d?yåâÎnL´‹‡1­ÉaÊr¬„!¿9÷´©¼$íS˜Ö`ÀOn˜r!¸Ll‡>ó¹Šâ¨¬%hª.ŠrÂYèí0*#ïI×ÁËÍŒãVäƶ‰·Ô³âKO¾Ï+Fˆk4Ô +æN¾UÌÀôûìƽP’-³b,5Hå­_]Ø´a§æç¡,¥8Ù…ÆTD§˜˜]‚}²ìöÅÔ!0õÏ$™LÓ°Õif’ ‚ßOÏV¿ÄQ¹ìû{˜ $„ ¨_˜+µÎNh貊‰¥n 'Kq4íâ¬Ì¼tWÈÝj’<öƒÎ‡Z_(¿¤tÍ cˆ{÷ÑдûT0VÌŠAÈ}ƒÀ³AR$Ï(3‹JŽÉy3êQG4R-€GŒŸä„½öñz,.§9ìC¢iâ•‘–­TiÑ2ãe¸EÂÄ}˜ÒšÝˆð]š¼Ò×÷]ØœƒYVS¢ç§KdÉWÜ p®ó Йù|Ä~U•ER±N`ÕƒqÂv­Çix£oße`ºÚgYu¥¨R˲<0÷óÅ^ùg/µ•KS]`Îá61¿.·)ó&»ëƒ’ÍÈ…K2)¥(FÑ.`pu¾¥Kÿ» vˆiŒ»Ì{Î6È°}|€‡Ë æ=æR?ûÜ ò"[Ý) AC2ùô0ÝH‘vŒHFg ¾G[´€À÷wàDF:5³–NEòª$,¶{$,ÙAí!RÙvÎvøé\Õ?” ]ug+(`S/äyRNÚPþx¡kµIdE7 +[5õÚ†¬‘‘{õ¦°\|IßðÕDxæäGoÍÄFöÑ"„yÅByÓOeãr§VššxNJχ>Š¿öu¿ˆ¾VWšÞIÐ8+%…ê8…ÎT8— )Åá0Y'ÎáçسսãòZ.:MX¯LÚ4[3Ëu=”¬Õš£µ—@XÃHÍz=//§Ý\ èI²_±ÅO¨_òEË”CÊ›RQ$\ÛûÃã\Á \æjŒÈR ,yø9vß@É‚’3ð'LCbŸ¥GFÕ1 :±ŒcoP]TÁlzÚ +W §ç"üõˆìSaMðÝ›~Á’+ þ}‹ãjÿÂQ2ƒÓïçyŒÂû‚‡ŸÖ£ÞÔVsØÁË/ƒ „7MÓ[õ¾›I’:7ÄÕ5l9RÌÏ<Ö4_ÅãOŽæÏAË|‹ÔQžÒ_áž=aŒœöáR£‘ §MÂoæ }›o3, Æ P—¦WcÔQy¥>Ïv¡êˆÍ£ài:Á€›x(ÂqØ“÷°)ñt12èx È’d¤Ö9 +L1ÕMÕ/%½¼C‘嶟ƥN 0ð†(a#Æï+¿ðd‚Dƒã±»(­IO„ù©©GeˆO†ÉÒÝ!kWϪÉïõZä •¶B"°ÒI¸U¤Gâd´íÀ'+æ&ä§ÖúW³û>̵ 0åOJ’b³l¹2FE ªöº!¢iÍ`•¬¨58¿…¢c£Hö+…@ÖŶ†ÞÜáðQ°N_åÃML Ѩª¼è‰`šdý…Ë ±P1pªu{öT‚Óäàñ2æáÑmGþìZ«nCµb¹FÕJ—­ñ™tí ý»7›&à¢ÐøH Aú ¥3«ÌïúnTylzhZ†½^ €•zî[›(<¦]=‹•8øÈ1³Ìõßhðç ý{”ÔMxYZ³)&ŒdfÔÁŠBª?Ìœ¾´Æ€ IÜ7ˆdkÐ^Ìà-;'Ʀº;y2qà‰»'Ìà´]&sH͈ž¶]3È98†}hA¦ £‰ÖîjV ØÆ`• ùÕ ÎtìA¨x<çeŸé¹Kqj_{Q¼îïÀŒ4ÌÉáˆÅ~¾g›”F%žæ­Vïþ/µm\R7ÆÞH5ÉòrÙ‡/v·N÷w¥ 'ð$žOYs1¾=å@0ÅcÎÔ¶ +³¯hìŒ>ßz}ª+ÿœçߵ˒ð:ˆ¶ßÅ’Ô°Œ +´™,µöðj +—ßõ¤×W›®0KÈÄ­¡Áj[A´7C)½¬´ÏK¤'“Ákiè…¡îûSûšAnÝ>|ÿT¦ +û>Ï>ëfÁê]Úk¼2¬x\æ‹jUYOa|gŽÌƒÌ H/ðÓýMLö÷ÂUüõQF ƒõPHt€°²µ;?³†¼ÅÉcMÇÀ?ú‚e­¾ $˜æiXG4u{x¤Ad®€FùlñVø8“ 1Íï1å°ü;ZW!\%ˆ§[Xuˆ\3ƒ¶Fg^ÎÜîd…~ 4/~V÷¤˜IiñËGJŠÉyzÌÙhû•¼vpõ"$×-µ€9𶞵`ËØe´è7;#HïÎãÝËAvàX/øxÏTÈK~8Õtƒ¶ˆõ…T‘~ð]³ð©ËR8) +AÙ®(ÑJLz龙ܞCd‘cmÏ_çk£€8.|:ÓêÛ÷Í`®^ú]üBsÃ1RqR,¨VÖùc6ò°„Ú…*Rm5vçê cj&8Ÿ¼"†L0LáSxǵÁxÄÿc¤Écň`Åp ; +2¼2‰î$оîνªâñß{‡BOèµ%¥cZ#öÕ M‹Ú%´«êãÍ|ÎBÜMƒ}$¯Õæ¯E/š2¥¤ð:všJO6…„i¡úŒ6w9{ ‚gJò!‘%îI >‡œµÚ7h ºÉq!eNýFÒŸ¼ttD̉̂ì36¸@Í°BÔÝ4 +‡¸Y¦$€ê]ˆóŽÅòQã"wÂðôM’ÑS΂htíü§¾ŽcpÈg®| KÉ×OKùUþæA#¹šcŽä´0IÄ»ðgöðzPÕ\j»‡IįÙÀËÑõ´/7¿-È·‚õzXJã_§•mZªÖn}‘ù©ñSFï¹áìÜUv´ß5êÈIµiŸÏ¡†#}ÍÁ`X_ÌUþw/>²â6ªu{4 ð¼rïËQßÐ5dæŒÀÄþ"0;'åŒtoŒ¬XŠì(ú÷xíß° „¹ùDÿ茀ožší Ê‰ßºUªãDH¯> -"iú<<ðžòÑÉ°IæW9’rLÕ€zD+„ØáÎÄõmßëR²l麧ýÙê!œ?›/2É= xžÿzÆþ¢¶‘‚Žq‚÷Î ´£ŸÃ/Æ·]ÉY‰ð õ/«ªË…G^nÕ©§U¡-P¶ÈžŒ:Ü¥Oâ—c˜HC _‡rÎü4ÔÐ1‘ãd:ä@eù·ËÖ„JD+þð™˜Lø¬_Äד‘] 2L“rþ÷ÖÖl >›K¥¡º>5þ‡_q7snàañ(¶¡"a8Áöë’¾ô™&ã»üJË8‚,‡†ÓÊJtáo*§ÊG>]‚†$ëÒ‚èÎØ#ZZ òk5ŧڃ­¥Rªîy™È`…B¶´5XYa¢>b¤CŠº÷q +nF©IQ +cÙÂ%÷W¼õHa;.‚á0©à]ûÞʈÇÅžÇÎKý§Š™¤ÿ¬³!­ªCÚ%j]™Ôõ]žk7™åšßT„ 3'‹s£*CPˆò)#8•ìãä·*Ýñøn§ÚÀëoë}ïë¨ø=Rè×4aS¯îtÈ¿3‡»dqF°ÁÊúaÿ±Ë sT'ì=òké~ +ÑZÝfè³€»²«SɽØŽÑ2¸7¶SÅa¨ “Ty›Iª+Tt«–Í4 È…øò qà(ý2†—uçý@뤘[ _|E&ÃïflðDÝ!NÚU/þ×<¾7p L¤CK8¢T>Ÿ±™¨àà:Àžwp2"ë vØi°æר:‹tJ€ÐuøðPÌ<ÃÒ.—i0Û ž’À° +hh4Œo„Àå·Y|L•…škÔÅ8hêÖf]ý}*Ý+¾ÝÀ½2Iß®pàØ>·ßŠ¼¯)’j38Gæ~ÍãD­!–Ž8ËçN®Sž?”ß¾6Aô©„,AŽ$ýÇÖÇp<Š7PË6늂 Â×6þk×ê,Më>0CL Zb+Ø…V•Etžk{;„¯ò†‹-”rÊHýØíY¥%';îKçÒ@Eë°ï7+̆"E‘R2òöɬ]´QD½fªÓÅ’) Eëúf¿òãêàç½ÒiW}Q+ êžaB@daâEªU1ç_„ý¡£æË«ÁErÆŠyÜW{«òÐ/ÄžPŸN'–)0Óð—veV`PÄÙÚÀô“ÿMGuÂ{‰ˆ€÷²d¦-×WsâèxM`ï7ö»¨.µ^‹†yå_¾K늨;?;BzpCæ")Ètúª[A íɚפ·# )vÑÍ o_ÍsqÑ÷cù²B*C)\ÁwfÎp¶Tk¿æÅEá CÒTþ|Hp³-jënßqÞÃoK¤—²±´Û5Dî7h ÐÔw²'§¤ljY)l}Ç™fdó‹'ÀŒeIÀ:D0;}Õößo.~hï ºaЧÚÝ2J’²ýšÝRr˜ œ]œý@’…ú[F˜dQ^lÙ…Ä’ ªvë–6rПBwÃÆd>fÛ÷µóZ4;òÞ®§{¨ûè¨HaµØ°ÉH&¸••Ø¸½M3¡h³+¦AÞëÀY;åÅEÁJá¯æÑ’øú¢–·ß«Î}¿¡¾EˆÉ±½ø³º¤Al;ZUÃüttÊ·ìûUúeï ÐÛÀ¡ nT›˜eëªJóÚÍ{NI|oÿ‚½ÈÎ8F{Â*Röž¯ÑLæäËÉ ‚ý¸”uø=î͆‹>äöR3I‹Ž/ÊÛå)©'e39÷-A˜?Ë<´1+‘¨é,)µ‘\jtœñélŽTœLoŒvV&fØQÆÙ ±Mܵž½ã6¾O!rÞÛ:püܯ‚;ÙAI4ã컵ÍvVœ{™×ZÆ)ß(*Ù1SpB~|M- ÕèTôv…ö (ü¶ß……ƒŒsZ•­»¤©øî¶þRæ—'T‡L:…7óæLùyQ¯&™RïØ¥k»©/àéàZÖpº×wמB“¯“ÍA#‰c½•“Jv+^Wm7.€ûìöÜLitÖÍ„£O¦ŽÙÝô÷½ WDqÏœªɱN^¬äûà›äX@“¨Elõõ 3& x­Ãªä4Xµ”çÈROVËCÑ5—Ôÿ?P ˜¿‰,Ž®1¢èßð¾õa|ª5“Ò7“+ß]Tþó·:’Æ^£²Y£êPæåQ*ªOàwsÀéW/«00™ƒ¹•éÇåš&ÞÛJ¼@ÄÞ}»60"ïAÏ;¨çWQ~ýc¬cXx9‹k”ê§ÜkÆâ |÷ÔÙG÷j$ +5—‹$S˧dEó&ëÄ3±;«¾ã7gjÐ?:WügÍ0Ž–—¶ß¼D%”¼…~x¢dl˜¸Ñƒ;W4Ë:/T3iÒ-Ü`6püWÂ* 8^øäÀm»ewlÊé–YâUê•ï@’eˆÛ +–žÂë¤(Ü.Àa*;A{@’~‰“—ÑêøM§s ûy {Ô ]­ßRßþ´¤*zo¸K°€…0 ŽvÜ,¿a‚ñWÌ1•¾')´)Žö†¨¥ÿËM‚8?RŸ˜#¯ý¶öangî0-=ü#²œ*ˆNíëýNH쫯ñœtâÖözÏÊÚU +šž)Š}y{®¸é”ÒÑfÑ‘~þÅz7™<]×:yN‚Yf®A&ˆsZºŽ>gW¤/Ú¾Q0®žrÿåv—…¥“ËÎdö{I$˜¾®ôè³~·:H[Óúl¹3­z74k—òÇD©¿B»Ž!1\gÐeîM‚‘3746•T1>À߀å‚Ë"°ËxF:Åëá~ŽùýÓ«O˜ó¢à„~¸»çëˆë—p$åS,’Ë=ɉ„qFU-`WéâÓ߆*–u“C"Á+Gþ)ÿVt‡ö;xf?þ`ë?cåI‰ÉC&¢†ÿFÇdô‘` +©ÊwØSœb=y²äõ»°n‚!Î×g‚eAÅüpŒ±qit6…¹'³¸$§Ué‘'ga»ç‚[è+éÓ9«7K¸­‰ZEz/ž•þî\#\7éîøø´™¦&_„úÏI!2ƒÞ S³þ Ö¶Ìñ!UVÑ5|Š9V¤¡PxŠ¢šåI/P BBÓäAf¤®Wc£•½Ñ9²X„yD\¹G¾u:ô“—Y±Oº‹<&”í‚Sð™-Îß±¡íx4ÌÞ¦4ÄïgÚOóõò¤Ôý^<ã‡G0 QW(‘ÄGU]é°eÁAÕNr˜Íïpˆ‰ï `”’\g™Ÿ9¹XD¶T@>Q¤¦y'LºÈÌq¬#Ú…€»Ã«ä×Ʀ€‹š‰Ò}7oãØuÖumûêòɶ×}Có$Â[OPq®šòÊ&Ç7šh¸Ur¸HNûÿµ)ÊuÙuoÇûA‰"4ž¤ÜÔîÁL;ýmÉ9ѹîôi¯ËùS÷en,æ¼çì\§/SÁë%´çÅqKv3mñÒá“ð–6§daÐTp)Í€M“€×ËŠ…ð]j8ç}š¤9<ðàS•×f_Øù;CDõå±½0ËÆÑ †j膚AüÏoÛ»]íæ]J蓶 ßçãj³P¥‚íOò"1pFÂf¥…*ÍÞ  ýAu"…XáÛR¼Ó@3‚X~ɲ"9ñšà(c <ñ˜”fGÿE?ñ¹,¢ÍEoÓS¤ÜĶ4(ÁŸÿ)ÀSJe6ÑÜùR’[UcZž¨hÏR]{¥’+£™ªwê˜n8ÓÇgtïɲ\­Ç_IKD2F0ˆï>1Æ°úlF¿õß62r¶&1¡®·¡ÄÚ¶ÿÆÏû¶¹\öAÜ>=äûù~TóŽû±ù h"'ñâŠB¢\«ÏæùiOš^*¢›±¾TËP‹Ò^©«ž¡Ö”(‘þÞ–…£‘i¥¡üL· (^oðQÜyqU:jpOQ*Pg&JŠgÌKVÄ›ÜÃ&È\JT;8™5í5! Quöð„/»æª¸÷N¼¯õ³: ,G/YU“²ŸrøyÓ^žŒ]6^%ÛŽµ í»®×N¸*¾\Ò÷©™^¼ö_èø85|]§Ÿµ',"bÿm½ÂÞú_¿²Í­’¾ÛщõKÕ@e$èߤ†2.p‚XCj€@³W˜NŒ¯ézÌgtö¥·;øÅ9xó>6L¯w:YäïG0|8µº€:Ó£ÜB­Zžùþ²Š²¥:!-eY³ +_!ˆýU.>2²NùÝègJn²O´Là +¢¦wÀɾה‹íDtâ&ìu¶:@ü¥p¦í¼ëuÁçsšg<él‡lYlb«¦ë¼ÉÚ2èhÅäêñÙªôºÿ¿öï×–^0pÙÒÉ)¼¹êĪ +±×v–žåh£mÄî Ç6P¥Çn`|Þ@/¤÷7ºýöÿ]‡xzŠ…=#å2Våõ°·±¥Dö×–±›ÊàIվɜŠK~š¹x¦Âè n!Z?gk+°.ŒZÙ…ÅÌ=QàVO+ŠM S7‹[<*äp:o] £ +­rEË®B×éF¢°‚p§èBVÝË+.õç&0Š%f¦\U2w¡¥¥ÀaSbr1ûùÃ~,O¦×ä'üóa?ÐÆ““o¨*Œ½ïÆDí>¬q`YŽˆ$2»'1úaµBŽSK ÑÂf‰LûFú`q£Ê,ç=³zuÈ.?¥ù̪ûKS]f ®êAri゘8†Ëüo~À‰q¨æÌ(42 ÂIupHNë;Ÿ{ "CÀUfrÕŽW?Î@õ-ÎܺÂ5ÈÜcr€p5G TÜ»òÄ(h;¼=̬øÛp@¨jQÊ,1ó_Ãÿ „KÏeèø.Š„XÂQDÿèa»á(ý RÁñ&¨µ§ ™’â“.±¯Žÿúxáb•»#{æ}oÛÌVoòë˜qàVÌŠ³6 2„&›Ëš…ÈS€¼ÒÉ_' oàËŸ9 >7Ëú¤Þ`=e¿·PÿΪÏÀm +úó´ròÀ:SâPÙùd9üÐT  $ðª"ºîp~ã²øOäô‘rª¹*X:‰mìôZrvtðg§l•T× ‰é"g*NÆñ7–×ù› F‘›NÈ6ú†6Sà8­6ZÕbbV²{W”—ý4]Â]?'‚´NB?š'¹Úw¤Íní‡UÆ®/Ù)Ú]àÉdIgÈÅk<Ôû$ÙyFPã{† +×µ¶S4þK\Ën²rY?á »–"d©Pù‘™þ°f¡JÎ…¸æ-0GåãH†s%ˆ§Ç’g#ÄMÜxJ%¸Ò;ð«º:Çìú³ÕüŸYà ãKP¼«yÏŒo Ì+Òñ¨á|Í:›ˆûƒ=)y”Œ'¨¯ˆ« Õ +×F^™Ácñ|ˆ”ò•ª¹}Ípúôöˆ8& ¬ŒÌW˜ºH¾Àô-JwB`­§ÑiúØ}ñ&nx +aë†OT7ŒÇ°'ªLÃŽ>»€\€¹œHõÂû…[.ÖÚ8Å/‚jíÝWbâé–âzôz-»‹Ÿ±­ò8ú2e¡ïÚ°ª‹‰ õµ±}™HEFÞ¾"RýôóԔͺٕ"÷omÉ&¿lhÀÞ¥Êõ‘ÍíÇNï¿*¡ÛjÍ•¬±Û§7å,‘’ õîw½¡›D/ýdÙ߃±…5 ‰;7ꘛFZi€Í¾Ž‰ŠyâÑÙF¹–îG&8lª›m%s²ÆåÒ«¼Å×£â¤AëSàLÃU©TÅy¢ßÛWÁíV][n¡ËOxw¨NIq‚MB‡ò{ÊW×M]‹Õ‰Ç±—aÜJJàŒšq…‡‹^! çº + +ɜۥÂò,Ì3JƃpÐs3êòÿîï` xѱ^¦™ï4(CÈdÒu‹Xóå™®Ñè~~½;4òÖ%Ê[kAÀÌ…Ý3«ó„»rO¥.d2ðìf·_X¶‹­Ÿ²º óðòÞîsÕûjÅ\úÔγ©ÉAä„h2ºA Ãó+*ÜŒï©ä›„önµ¾âhS“ñe¨½?¯å¡¨|HÕlV ü§éÙÈÿ7rØH†¯¤?ö9K™ö¤ ¿!]³nƒnTãGÉÿO§J1³sóVŽ Ú·iä¡ m‡9ÌŸm4*JåÖo²´¿ùa ħ'º—½üà+í°„Ajb^µ?ÒST–ß¿Ca’-Ä 9G üN‡XÃ4AuðfôÈ{uu‰3q¦µ'\gD±J‘£é%qƒW‹±ýÂ/˜ýZ SÄÞöMl¹Ù"mÞ%qÝÙÝ,ÓæÊ•Êó«ÕÔ¡­jmÃn +ð(.DL,p/È9sÆx1õŒzgF€|ùûià’T ¾wÅWÒ†ÆÔõþ΄ƒoéN´û˜¾qÀ¯aZ`¿hú°ªßÑ È]›K¢@·e]Lǃ”Ú4*•æ´°µÝ ±± ¬Åv3þdóÏžÆló¸5ÚlX©×=*÷‚”±>%xß\[¡ºäí¼òÎú!„ÁâÙ (MwÓQL)‡zšP•:–P›-^þcªsâ*Úɳož.§~ረhª›\•s»± ìˆÀOÞ8š%ÈÈBql64Þ|{¬=ßM•,Њ‡íI‚üc¹°¯eŽvq +¨×8+ôÎTu⬥âH™¾V2—@à"Ÿ¨xg>i–¤Y°É1KQÝ&v¥éxðL|Ñ­„k>pÂ`ð¨!•ß3ÉÓ[ªn즻Šº6FEÁUñ‚åco}ˈÒ£a• i[•ŸWË›³j•`Döfä„$»±hÉ }Èa&D2* ¢ˆ { 2ZҚʌ){¿>¸s/]ç¥øÅ:kõ'„Yð+Ÿ˜¤ƒå\(Ý…lÔE¿Ñ>Ö›áWX¾UÒÎ{ËVƒâÛR9PÞ4ýl2¼Ýæé<‚¢ ð¯ GA>é ‘ì˸:$h†scmªiyŠ 0<Âëmº•…:Ž{CBkx±èóí¿ûŒèÏãÅ{Æ\:“ƘµIu´ÍE[~˜ÛÝç ´û!:_6P7êÿú‘Åó%¨$7Wܼ¡!8· Ε n%Fs¥?mñÅ}: F Q„-9ƒ¿Þ˜5í² 7—:÷^rñaa_ÍNÌ ©z?EZ‚¶ Ù> Ip .KÎ1Òãc«ö£«/5rð8Κ'0¦Y>Öš…Ç•Ú£P=½ä,‹þ‹úgHw§ýîp1>¦žrG~â5Ì[; ó:Ãöêæ +"Wã ý^¾Ÿž=U#Îj«EøË>ËbÄÕ þ¿ÑB=\Cðy±rr¦çæ<ï¿¥Sê+wCï*=šdg‹ˆÅ'ò—ã6ö¥m'S2•2Gˆ³ŠvÉ?ú@; ÿA‰BÕB¬‹¹E-³ðUm¯þh ݆)]U–cö–k‰KaÀÏÔŸæ¨h)廑RY[‡Â&Kîï +ÌÌì+‹¦0'º©AyÂhG˜K°9¨gDoÀ×µÂ/”†äƒ“—ë£ê×(ɤKZ|| Šž±µÝÂJ +öz'…ä]fOnúŒrŒ4â#ãO»®’ÏŸÚ g Ýìr¨&²#ã<9¹>& ΗaGh¨ÄøÁ.eÿ^vùsUw§¬µ¾$£yQowȸx“¼e9á‹KWwëJNw5ÿuaÑÕáƒbs݃â‘5Æ&¯>8lXÿHC,C Ùm“JëÃìçÍ€…ºác%Ÿ†húuý 3#Yª×\Ë~§MD§¨&Áò?yÆý¯änpS8˜håñm¯êQåì }£[«y-ÕþZä~½›—)LUÆd]Nb¶¿»m•Ù£¥®…âg[ýŸKÅp-€·~7Ñ°Jðïδ²Ž™‡Û5ߌ×í­×«—rçxP1Z‰i¼§Ûš!/ÁEqÖt¸b€Ì–VT1POœº>mºÆÄ´Q9³»-iŽU”óθ•^§×åjöHï¸Ó‹»YÍ'_¨—ÝQvS©ëMtŸXlùý¦CäÀ¬ÍŒQ¨ðxb¥£õŒmãØyÄK;?îø-X›ÇmªÍUAžÛ®Ë@ÎêÁ¡Û©Ô¤ž®Nˆi€C½!¡“ÂBU^@ +³‹Úò"Ø©àaE0²aâ*›£:ŒÈ€³–Ö榶‘Q”b¾ÑfK5¹ÐûëûÁöñ~ÈÒÃÕÔoá[ñÏŽ§9(àIàëæòòG¤¼¿0Á•ugÿ/Š ±ß:xÄÂbB«D2Ôþ›z ö²p£7¾±H!þ"Ó@èmÔàPeCS±òY8@æNK»Üïø +_+û×]F´ß\g¡=Òí™F)㑲PŽ¥›Vu +Gk‹Ð±×Ôÿžólñ3áåw¢zŸØK…óv)tÐ Âì@:ª‹àqÓyOÍà Ë"+`ÿß%–tõCNûxWk9ë3ž±ÅBBoŽb•ð“¯‚®%B¨×œÒ1^"¨ma|L1ÉuwzQÖ½àÍ…p÷r¤)ÅIn™dÌj éô„¤çýC¢ endstream endobj -1540 0 obj << +1581 0 obj << /Type /FontDescriptor -/FontName /STSKKW+CMBX10 +/FontName /GLQIZN+CMBX10 /Flags 4 /FontBBox [-301 -250 1164 946] /Ascent 694 @@ -18394,10 +19220,10 @@ endobj /ItalicAngle 0 /StemV 114 /XHeight 444 -/CharSet (/A/B/C/D/E/F/G/H/I/J/L/M/N/O/P/R/S/T/U/V/Z/a/b/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/h/i/j/k/l/m/n/nine/o/one/p/period/q/quoteright/r/s/seven/six/t/three/two/u/v/w/x/y/z/zero) -/FontFile 1539 0 R +/CharSet (/A/B/C/D/E/F/G/H/I/J/L/M/N/O/P/R/S/T/U/V/Z/a/b/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/period/q/question/quoteright/r/s/seven/six/t/three/two/u/v/w/x/y/z/zero) +/FontFile 1580 0 R >> endobj -1541 0 obj << +1582 0 obj << /Length1 1734 /Length2 10564 /Length3 0 @@ -18527,7 +19353,7 @@ BO ­Œ$*Jü1õ‘J{Y^>y†ˆKÃ=ÿb>'¿M¾9Ì|6ðÊN¤ã®ýµì%ÍíWœýÀSù5´öL6Œ_<ûTgÊM3€ìuÆÍ,€\\Co #Ž§Ñ£Gû&òä!=D×*…0DWÙÇÙÏ)@4[ÃZIz1°‹Ö˜y©‹ÄþeRaµi=˜£( Ÿ~7aÙ„¬Üæ<¢ÞÓfë@ÇJ†,˜ì^3Ç«\`D•¦€Úþ²-@ÎÒ‡)e]R³•YÖË&–½ÐÞIÆŒ½OW,aëh俯Ԯb:âôºá÷b€ðHU65uC(½"ÂmÙKxz·˜²›èMtì¯xpÙ§èlª‘¹\€7”S9žcŠ¬juðÀXlØ\‰|f6ƒxD6WYèKr±c]ûŒþ‘)êò Ž÷@Ojñß?цnšiªûJÑ:ˆ{{ž5{b° endstream endobj -1542 0 obj << +1583 0 obj << /Type /FontDescriptor /FontName /GBHFLB+CMBX12 /Flags 4 @@ -18539,9 +19365,9 @@ endobj /StemV 109 /XHeight 444 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/a/b/c/d/e/eight/emdash/endash/f/fi/five/four/g/h/hyphen/i/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/quoteright/r/s/seven/six/t/three/two/u/v/w/x/y/z/zero) -/FontFile 1541 0 R +/FontFile 1582 0 R >> endobj -1543 0 obj << +1584 0 obj << /Length1 1397 /Length2 9610 /Length3 0 @@ -18648,7 +19474,7 @@ gR ~Š š¹Çüž±×\xÑò<Êýo’[-¯$›LÁ]0. óäájÍÃ0˜KF‚^ú[@] /ßÛÁs9,@\ªf8š3(ŠöˆÊQ•œzQ{§X Ò– Œ{ý3GŽIñòSv»ëL…¬ ^«yR6P^1Xu3ÜBl}#›¶8¦®Gw-cd½üœö8™§´6˜‰!ã´Ýh²¶èÃòêãþ 4 ¶nÖßNu»[šÑc­#•{sTÈ\kð»~¤IÊ×®7-òOhW»¥ @Ò[Ê*$Pã7T1 endstream endobj -1544 0 obj << +1585 0 obj << /Type /FontDescriptor /FontName /XOPWSZ+CMMI10 /Flags 4 @@ -18660,9 +19486,9 @@ endobj /StemV 72 /XHeight 431 /CharSet (/A/C/D/G/I/L/N/O/P/Q/T/U/X/a/alpha/b/beta/c/comma/d/e/f/g/greater/h/i/j/k/l/less/m/n/o/p/period/r/s/t/u/v/w/x/y/z) -/FontFile 1543 0 R +/FontFile 1584 0 R >> endobj -1545 0 obj << +1586 0 obj << /Length1 745 /Length2 1242 /Length3 0 @@ -18700,7 +19526,7 @@ currentfile eexec ñPŠ?–_ %œD3´)‚/Å‘ˆdL£sw(wÞ&Mʺ™E¿Ât æ7â8k¬aò;BFåŸD¦(ÐéJø endstream endobj -1546 0 obj << +1587 0 obj << /Type /FontDescriptor /FontName /RVPZIX+CMMI5 /Flags 4 @@ -18712,9 +19538,9 @@ endobj /StemV 90 /XHeight 431 /CharSet (/i) -/FontFile 1545 0 R +/FontFile 1586 0 R >> endobj -1547 0 obj << +1588 0 obj << /Length1 878 /Length2 3214 /Length3 0 @@ -18762,7 +19588,7 @@ H ­š¤þ.6aÄ÷ÊwØÐ\p'N/ ‹ÀoXüzFk%IÛo‡³êÚi‚Kƒ²\ìÞ23ÌéS[§“ðxGÇ;·°53˜Ê6„Nhb3u…NƒeçwÕ&ÂIÃ*ê¸Ñk±¼¨gFîš#åLkÿ4.ÕÒ…[_bY ¾øa Ú ÿ“Iö{ÊÀªD×Ö,=Á;‘o+x ‹*°SßÏ‘(OǶzÝÉú¬bLçàè_¨§•¸Ž9ú‡ü÷ÖNŸ'FÀ]$7éØñòjQèk­£"œP Ì endstream endobj -1548 0 obj << +1589 0 obj << /Type /FontDescriptor /FontName /ZUYGVH+CMMI7 /Flags 4 @@ -18774,9 +19600,9 @@ endobj /StemV 81 /XHeight 431 /CharSet (/H/I/T/a/comma/i/j/k/m/n) -/FontFile 1547 0 R +/FontFile 1588 0 R >> endobj -1549 0 obj << +1590 0 obj << /Length1 2026 /Length2 14861 /Length3 0 @@ -18956,7 +19782,7 @@ z ›àã™üÿÀPŒáà•Ï€$y_É°¾a9›3“P_*Uþý“‹Ë3ï\(Ó‰Å)_0)ÄbÂãP*Qv¾×%–ޑ祫Ûù>ÍTAO˸UL`¯£'jìò¤Þ=ˆØ eðS)•Æ®¿îu*ïÎ-ô£ì•]2—æk0[] endstream endobj -1550 0 obj << +1591 0 obj << /Type /FontDescriptor /FontName /KYXPCE+CMR10 /Flags 4 @@ -18968,9 +19794,9 @@ endobj /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/a/ampersand/b/bracketleft/bracketright/c/colon/comma/d/e/eight/endash/equal/f/ff/ffi/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 1549 0 R +/FontFile 1590 0 R >> endobj -1551 0 obj << +1592 0 obj << /Length1 769 /Length2 1408 /Length3 0 @@ -19012,7 +19838,7 @@ currentfile eexec µ)&ï¹ó)/@^Ð⵸PY.¾ê—(û½#´±SáRdíúmBq-‡_'ÈI-tñø‚¡ „/÷OþL»™Kô÷6§C€w\³v#ܶ>ì"L‹“+†ò¿ÜÓüà•Â½”þa+‹YEoÎ endstream endobj -1552 0 obj << +1593 0 obj << /Type /FontDescriptor /FontName /YPSQTS+CMR6 /Flags 4 @@ -19024,9 +19850,9 @@ endobj /StemV 83 /XHeight 431 /CharSet (/one/three/two) -/FontFile 1551 0 R +/FontFile 1592 0 R >> endobj -1553 0 obj << +1594 0 obj << /Length1 787 /Length2 1497 /Length3 0 @@ -19070,7 +19896,7 @@ _2 ¡b›x}‰èË÷…¹Òºz’™­ºs7'þõ¸­)Æãõ8-X“ûTåG`û‡9?óPíe•úã“:– “^­‘3¶›‚~§ÍhécîxbkÜå1!o^ëå™KÙWk«ìi7ݱ‚=3OÿÕá£ßø äô¼|ó endstream endobj -1554 0 obj << +1595 0 obj << /Type /FontDescriptor /FontName /EWABFK+CMR7 /Flags 4 @@ -19082,9 +19908,9 @@ endobj /StemV 79 /XHeight 431 /CharSet (/colon/one/three/two) -/FontFile 1553 0 R +/FontFile 1594 0 R >> endobj -1555 0 obj << +1596 0 obj << /Length1 1462 /Length2 8120 /Length3 0 @@ -19193,7 +20019,7 @@ j ë4×éùïwš4“n½]{­ŽÂô§–sú,r/Lˤ/ÝS.$Vܤ˜¶i¼+±WJv契Ž´*ö9Ã6\éu>£ÀtGÁ”Ûý¿Ò'3 (ªh[æ‚ð˜ÅWÿžu º×:=»´bA¦‡àB涌ÂMÄða§Ýw’rº“ºÏÛ–¥,Ë¿OÝS2 ?3w·;§Â/nÊJ0Rã}CpÒSé^™:Ò¶Õzâê3Ì|8¦Võg¾Ã¡µ`Æ~ä17Æ[|~9dy_*z€UIJ@ö®{t”¤åØVKƒÒ;S¯ˆÿ±’m¤£¥‰Hçî³¼ –$úX`ÝWçªÂúôÔ>Œ—:þ8ùæ÷¿³ÁE4•¾Ÿ¼3 w¼>0—Mñoƒ›vºÒL–xy÷rbQ¡ƒUˆ0_tœ¹ºu™'Iá^mÇÉ]*äÉÊ—:¬Ý\ ÛÝxK»gD÷«Ù³Õ=I8­ŠºÒ-œvx`%QÓ¢8ê™ÍEºïê+@eXnž"V¶¼ðæÅ"Ƀe‚¿Sñ:®wS%d›9Ñž#Ä`ž˜íÔ’Õ²ˆð¬ËmûMBeäPnpbÜ“^mäïbÅÃK0¾m1÷R\&òÄe{b"ŒŒW{u“ˆ)W2x cšµ9è¡|課#ᎹºJš¾ì—H1ÒTÚ³v®n-F `¢Çî5*…¨¸G™1–¯}YûŠª¹ª•ÛÚωà?ñõ‚dUfÒ o.nÔIƒ”fDg¬ðŒ/'@Tîø|Ú>1ÐØø£éU.Byþ.‘Ʀ¸25mª¹<Ês Ò—OËÇP œ®Ì÷·bM×v¬mšö¿ý²e…ö;ã{'½ì>Œ;×sáyâlµ’ØÀf9k Ƕz<È#Ž ý¤ËSðž>"zµQµ’N<)W”°ni}À;žá½!“@æe¬Þâ± šÃW&è‚=ù»ä÷óFÝÎXËÙå²Í1.8.†ˆvi˜äƒ. &×SÓ¬Ú74ÀÕRP¹ú´QC‹îNjÁ8Òq½ïàákYDå¢X4Ö±Htç7€ Azd5ZŒ†ã¿¾¹çÓ)05—ØN$HÑé=R§K+‚²h`Pèù†T¿3Œ®'/(#ž+UŠ5¤A³Î-¢ŒT endstream endobj -1556 0 obj << +1597 0 obj << /Type /FontDescriptor /FontName /TDRORS+CMR8 /Flags 4 @@ -19205,9 +20031,9 @@ endobj /StemV 76 /XHeight 431 /CharSet (/B/G/I/L/O/P/T/X/a/b/c/comma/d/e/eight/f/five/four/g/h/hyphen/i/l/m/n/nine/o/one/p/parenleft/parenright/period/q/r/s/seven/six/slash/t/three/two/u/v/w/x/y/zero) -/FontFile 1555 0 R +/FontFile 1596 0 R >> endobj -1557 0 obj << +1598 0 obj << /Length1 1125 /Length2 4765 /Length3 0 @@ -19296,7 +20122,7 @@ _ Ð*B¾ŠF™šcpB¬„©žò D…ÆýÄÃøÁ> endobj -1559 0 obj << +1600 0 obj << /Length1 1050 /Length2 2900 /Length3 0 @@ -19377,7 +20203,7 @@ R c’$”݈9`l¶|‰2*2Nú´u4œýÕâôv=¤rl³MÌp+§’…¶5ô†ÔÀµ‡™iu1Y@ãœ1[;îLE›êGÓa]:œ”Ó³öã_‰Uš¨–‘Îo#¿ÞÅÌ!|NWüÚè endstream endobj -1560 0 obj << +1601 0 obj << /Type /FontDescriptor /FontName /IMOIOS+CMSY10 /Flags 4 @@ -19389,9 +20215,9 @@ endobj /StemV 85 /XHeight 431 /CharSet (/B/H/I/arrowleft/bar/bardbl/braceleft/braceright/bullet/element/greaterequal/lessequal/minus/negationslash/radical/section) -/FontFile 1559 0 R +/FontFile 1600 0 R >> endobj -1561 0 obj << +1602 0 obj << /Length1 766 /Length2 759 /Length3 0 @@ -19429,7 +20255,7 @@ h aaT'/D…/¦v2_ÅIô÷*’XÆé¼VMäGoÆéjeÃï÷‚x"¡‘<Õ©O=}µL¾8QWÃYΞ^L„רFHyü˜ÈB9Ê2Îo¯G¥¾bv0„òÆ… 4…Fv1wz MrÀs1§‡zå; r‘*)!´î Ý·Š´ÿÝÔÕVåÕG•8 z±» Ó(O»û+¸iruþdtîOª=eb®|˜Œ‘Ô¤c<…=>òƒ?†!ÒêuóÿG\ïD3/dÈZ2)#Yboµ£˜B§cn“d¿lXë0 ]Ò%ÉMEÚmu`ò©bNßʾ”ËL›ìsë7§F„“qò¿'Z¿TÇ©c9$À ÑPâü<”»ÏÚ endstream endobj -1562 0 obj << +1603 0 obj << /Type /FontDescriptor /FontName /XNLILI+CMSY7 /Flags 4 @@ -19441,9 +20267,9 @@ endobj /StemV 93 /XHeight 431 /CharSet (/infinity/minus) -/FontFile 1561 0 R +/FontFile 1602 0 R >> endobj -1563 0 obj << +1604 0 obj << /Length1 1572 /Length2 12132 /Length3 0 @@ -19590,7 +20416,7 @@ fi ƒ­Öc@^ÕÝË´rF_¯ŒX"1ÁÖbvßÁŠÀšûòÅ5þŽÎ˜Ž×þpŒÚš5ã0²'ºÞ” ÛJ§­¦ i÷ïI•€LU·+K¹ïø,xæ㤱„‰2Dwé†îÆ®7d-ÿ΀Ðê¡­Î/»€È­ÎÍËIÄÌÃ5|Ÿr¥JÍã3ú‰Ï& endstream endobj -1564 0 obj << +1605 0 obj << /Type /FontDescriptor /FontName /HBJLDT+CMTI10 /Flags 4 @@ -19602,9 +20428,9 @@ endobj /StemV 68 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/I/L/M/N/O/P/R/S/T/U/V/a/b/c/colon/d/e/f/ff/fi/five/g/h/hyphen/i/j/l/m/n/nine/o/one/p/period/q/quoteright/r/s/slash/t/three/two/u/v/w/x/y/zero) -/FontFile 1563 0 R +/FontFile 1604 0 R >> endobj -1565 0 obj << +1606 0 obj << /Length1 1067 /Length2 5106 /Length3 0 @@ -19679,7 +20505,7 @@ Hn4*/ éÆ 'dŠÿDZ@Oëÿ{Ll§æR%M…]> endobj -1567 0 obj << +1608 0 obj << /Length1 1849 /Length2 11542 /Length3 0 @@ -19846,7 +20672,7 @@ Lr~j S“JУt0jºB–¢7å7Ð[=©)ŒZPRŠ¬ ‰•šâ ìùôée\ás° "̺Ùô~\oªÂÈ1É] ,Ø(WÁèT¢ë$¢æ=+Z|GËÒÉÿ ‹¸ÕÙž=٣Ȕ)Šûs‹9@™ÄÁ¿ ç£SÈ.ÃoUSl›Ÿt—<œì¼'棓`ÈÈð.Õ}ÑYCϦ <%ÔK\3/œ;“鹟“*ÍHÕ¦­ƒ{{´$$_gm$Jv‘xasHäÑ`…SºHo‹ß²BLó‰ÊVÑÅ´Œ ü}㣟ÀºO/Xÿ“RPEÃïúðï­|1XïH'˜Y”€b²áIŽh1†Ž*iòš®Ÿµ× CÙ„¼×S…<ŒnCM+dL‰*¼·Û¶)ôhï.³í©*zuv¼ü!ŠQÈ®zxTÿ‡þá+"€=,®>ŽÑW\=ê£+÷*ã.WFogö(Ì姎+Ž‰Ë´ÍÀðªvvp΀›3Åós˜*!vBfýïdV,è¸/œSålJ¾î9‹tO%­ØJ×%`š:µ/R)²Wä^y$AϬLFÛX ŠD¸+þésj»qÒ¥”4h<ÕÇ%‡ü?ÙŠtX׌_ßn}{}”ÙÅEšF%–„U'3ê¿=µP„‚ý½¤¥8É:J u)âÖ‹4Û[n2–¨ŸL®tÏྴÖFTÌG[×Ñ#˜ïïÄV„«ìŒƒ†8M\ÊlôZ[ó.Pº¦û;ªbþ_Ù›Ä4Tzüv¨|4ò‘ÌèýNß+Bb¿XK¨v‘–[ÅâÁÿOñõk³xö¬eå«ÀU\bžã¸>}êšÎÈJ5S˜ÃÃIAÂõuâ¼þ'sieFµ·?iÐ3whöl´¼œÔ˜îÉñ:—²˜IÎQ|Ï2? @•–ÏËS¹Cu›â>ÎaŒóßÀÅ=cžÈák3BÑ;Ôb endstream endobj -1568 0 obj << +1609 0 obj << /Type /FontDescriptor /FontName /BGSLBR+CMTT10 /Flags 4 @@ -19858,13 +20684,13 @@ endobj /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/E/F/I/K/L/M/N/O/P/R/S/T/U/W/Y/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 1567 0 R +/FontFile 1608 0 R >> endobj -1569 0 obj << -/Length1 1289 -/Length2 5599 +1610 0 obj << +/Length1 1273 +/Length2 5434 /Length3 0 -/Length 6888 +/Length 6707 >> stream %!PS-AdobeFont-1.1: CMTT9 1.0 @@ -19880,12 +20706,13 @@ stream /ItalicAngle 0 def /isFixedPitch true def end readonly def -/FontName /LEILHS+CMTT9 def +/FontName /PWOHSV+CMTT9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for +dup 84 /T put dup 97 /a put dup 98 /b put dup 99 /c put @@ -19898,7 +20725,6 @@ dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put -dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put @@ -19917,7 +20743,6 @@ dup 116 /t put dup 50 /two put dup 117 /u put dup 95 /underscore put -dup 118 /v put dup 120 /x put dup 121 /y put dup 122 /z put @@ -19926,33 +20751,25 @@ readonly def currentdict end currentfile eexec ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!Á[v´Á›„67XFšlU‡…²&3!R˜q©ˆ4‡Ýw”’Ýσ~j‡¸+Ûño¼uú£ “þ_ùc‹‚2BžØ·Ïj=‡š-)1Î_]ÆX` Yð{ænnü’9׫/¸¤ËÔu¸ìòye )å;¬9*fHHÁ„Kì»-\ûrБkg\šš5ñ&–¦ö(G<`J•7dhàn)ZÖ÷lë“”52 ZÒôžû”$Ù†a#¸žþœŠq13@²Hö…;Ûð+žôG"á1×ÕLûŠ¡(ºêsæeºËERÌ í¶;Ô±Jšè¬o "BÛèÚF¶Kküv/„òü‹‘ ÖˆÑpZC‹õåÞ¯*˜@‹;db ãs*M®mÕÙ~4Ç]®꽺–\Q¼¿±ß)¦:ƒÛÛž3#Ë‚Ð3u˜¸?O+©|õmMìÛ‰fåHÀÙÁ”É21–ûCê†2/æA«Hwñ;Ôu§&~#ˆV=@Å…²*˜†F‡¾ßtÙ¾Žä@º*¿(ê¶s9››—)ÝUdÆ•F!;„»ÊøšÅ­²“$rß)­¢½½´Ð_eò_LR–ÖXàJ*…'¦*|–o+…µ è_Ò|fýÖlWU6y€ŸMæ€`M¤FøÒ„PÂz£›Xkt¹w²_ÓÀK¡ëúý¾Å1êß½gå8ÎÒ8†¸®uÜÃkÍ1‰± Uúâ} n‚®ó{]ò~Xà °†}mzÁÚžûŠ-𕵹4¦Žá"Ú -ƒ³l•$1Xk•y a”è“9Š¦îLSp7cP^Õ|IMÙÐî OkL;§xô窃*«Muð$aém%ýh#Ë$ü†:£®^Åô¿vë*ÿyxi)‹‹½z{Al…U¨{ÛÒº8jh¼?VÜgÁ;íúJì¶=R’Šü&_7úï´ÉÁY%É® rÕÇF3Ú£KH0j‡]]t³`Ð&{ùº&ZÅ-.p ¿¸—…)t$-1°F…°@up™3 ê±½@‡€DFN}‰2ïÈ(–ǧ‹^`¯Rä Ô -ûÉXQÂA£sð[½˜mÙ§[ã.Q/‚³"§³ËÞi| -é-ø3c¿Sƒu§Æ@£Ï'ñq°êN¬ïZxk<„=}ªíü!+/ó3Ém´€ãc«è¬ àíµçk3J{²Üâ`N—¦o€gJrbK%°çÙÉ/˜YIv»3b¿ÄïŠeþæ`Îù«$á°¾1I(*ø…3ä ôÆþfBÊýÏψǶè~ßJ“å´o™õUö÷$'†/þD·¢¼@©3ÔNT½É!zäO ¨ì`jà”™s^;»¯jV[Wüy4q‰Ž -Cr˜²e*¿äfb¸&£ÇþNŽ¯¢w›vÕHj€:—ú¹ÀIÂs—°¶Çú²o£ W…–ÏÄ€R…åRݘ¥µÐB·WPï–é¤õ=¾GPà-ž˜Jšåx2Tf L4*Õ{ݘöÖ–\{Wû‘"‡˜/~çãJäˆSæ\«¹¡½¢H+zu}­Þ_©Ëo&}›üÌH²5r©ÛfbÎ}<ëH¢¬|(,Á{&^—¼+‹è‹cé`™o‡ ©“9gÞ1¤F±?Zœ÷ì“îI2lŠ oòxëäÌjêß,ÎuýÔR8[zäÒZj£ÏŸ&— -i‡AaC+âïzHª¢ÖÜpÓÿ Îk9zñ\Ê¥kà÷’Ûù—G¬ØEjØïP¾‘3‰pýÇM%Ò6ô_Ž•Èš¸€‡$—É£ì|ÙKœübNö¥Ñ°µŸýåë¡B u}u0Œ9Šj‡kr14š|ühíjg$…'Þù{{Þ؃…«ª2í©©4VˆÝ5ý»¸^ŽçRX÷ -aè'5Óe X©¹Ÿï -|ûK?o+—MaÃD¦ëfQwÕ‡ü×;D^+j³Zx ²ºrã@W3/ÔÇÉÊ®2—f>öuôEŠÎ‘ÛçqÌ&ž^êYr9úòÂÄg„W"6…4Îa^b]ŸUNN°Žùì’¥päËÍî Ô˲yx°B&‘ãÜ­zíýù$Íüÿ‚Œ³/üý¿’"TÎ\ e]t=²ÑŠ8î—~¶Žƒ½˜Bñ]UYFlë›]È—0á¥È¹U˧ØmÌ‘¬ -Õ-=G£ËœßôV IÓî8\܉Ivvs£2Úz·–pïw`}VkÝ>Ìo¾Ù¶ìÂ(å}ìkõÀÕ¯Û€ð£Sr¶ñ‰Œÿ(´º¼ÖBTö>âͦa•¯Ôð4Âz»Èý€1 ðh7¤aD?ÇWRÅr¦±û€Àü‘ä½Dç ºGúZ€Ou~©FäóïsB.DcÙ“r“¿Û¾ó>+a¬±_„6° -z(#à?{Ð0ÇMtÿ’§?Ó@§³—ü!Dâá;Þ8nu‹ã×¢áÍþ©¹]ĈäïÓip„¿ gS ´’q^Õ¦Îëþ93׺hkªe©f–rº¶àHÅ¿e`IÀânŸùßñfê>¡ éÖ G¢C=îËDñ¨êñé6°–K…±cN¼¶\%¢LíŸðÛßCr[(ÞWÔpÊH-_à²&Óí…¡PKÓ¼žÛŠ¦•ÚnÛ—ÇÓÉ‚ÜQh©¤ÈMn®yp?Ýþó r¹¸6AõúçŸ×ÖF dèZ†pv# Š³ÜèÈŸ•ÝBýÈ0ʵrºù”±è­ƒ;L¼þpoÍ&„ªÇ×N”Ÿã‹ pŒÓØaÌ%º›ö êÏÄJó:“Øu3µ¨°Q´8Ó¡¦ÊSÖhÄ !€â.|öë“2þ ]XJ&4u+îq¬÷9KD³·±7(éŒ/ª¶­ŒÕ_4+ßdöúPØQX‹ý³£>ž¾arXæV¤s)iõÌœV ÕÑ„¾1 -!‚`X€Z¢†øÅ‹s©/ie •Vë‚àMæ“Žé|K­dEþPü|Ï?ßøl†Ýê@¯…¬Ñ‡ªûhEO9û£þÃB… -¸I~ãíÊõTG’ãS±ÄÖè?È.­Lûÿç®dø&Ë ™Ãõž´˜;ÓæýO8ظ%>A»Þ˃zŸGë­»L!¸öT³|³}¹˜wÄœ<â3¤õÅÙ’%:vªB†$+ÂŽñ°-s¹¼›Ã±BNÜÁÛ":´HÖÇ,Ix'èU½­Ä ‡ÉXÊZÈ"6јޮÑÕh - ›'qö»|¤·ío*Ñr=Ž±#ÀÒuú6ò.]SÌPJ!weÛ˜‚|f½fvk·å`“}RŒÒͶ"“`%9wí$m±/µnžyéð&¢XM¢w5Õ`A e;DûÏ4û"“ìVñHhF¡FŽ¾¡šP"B«ï¼EˆÜìÀþÉaÔïmŠ ¼•5ø/“¹Y/œýºÃ W‰6zÒ®õ±Ê,wxÒ<ªi¢pM'Ýv;ŽöÒˆã•Ö7Wžäï¡x€¢øÃÙ“Õ-^²»Õ:iÝ~+;ÚmÞR_2 <šÎ3¦|ìA p%U¿ò×Ðæ1ÝSR6‡ ,D7ã+àW“^õhÊX³ Ú› VJŠè(œÖEB~fµ¢ÞûŒ,PË9.Š÷0»‰„>“ê›Þ'Õüüd©&Ýàæ ^dÇ ÀÌÌR;‹ƒìªAä`?b㑦&§à0ô©ìÍÀv¡š90´pCY¦Òùé:±ÏVüë'HÚl«1Ó"q¯÷Þ‘Êšu(Tµëxí+ጾeñP͆Š¦Û@€vÄU¹Cyú˜Ä²ï™âm³6J×uÎf|»Êœ“ƒ øf7Æ™:T`‹.<¡®T7ª…?õBÓ¶êëû=Ž8¬VÕçÆ𜕒ø~KgRYn%ßF¿2¿‡­ Wi( 3×4ŸUg—ÀÒ®×ÏQ‹†³ªmä=>ÆÜŠ2¼›<÷ÞÍGIüÜ6Ö½øœ0­pÍIñ¿´ýþ#9%_ÎÜÎÆú„¹O/ bæ&ßÊø9èmû¤Çà)Õ†BªÂø‡-s‹—¤EœT[c‘Nãvl-Ô)sŸ«ŸØ¯çN­]קË>s˜:‹ÎƒUü!#××oÀ ¹eÓeó+C1¼þÏBЙͣJ:q¿†¨0i1gÂÁv¸v%ýãCY7}²›E§ñ¬ÈÖBQÁSP?hÂê‹FÛCˆn÷VRé+––™©¾Ò-¨•NªCÀnGP—Éjs4¼3£5Hû_³,ö ›èfÛÏ·Þ·È:ýM¡6(c «è3>ü·H6%¾ š6cÄGš£ÿ±¾š²™¡¤(…S«{ˆ»»”Uh#‡™Ea*diwé“þ_Ô¾n67ö­û<¦´³âÀtí¤qóKÝþx]Ë°²L÷Y‚mHÙ`å7SDUH™Ué–v¨Õa™‡cŒÔU’š6ùÁŸ´Æªÿ×·FEÏN [™öEo7÷¤š_fmåVîÂB…*ÉçÌ‹Fµc=qÂñ–TâÕ{ÝŠ J¼tUØï]·ÄÉàÃI2pØ(2€d[ã»CÇZ1ÃÅM 1×}LQˆZ`Ú’/9SiÓŒÈ`0{Q0òÔZòµ¾zóy`«Ü,žIÄó7ä×äÂûUÀ#¾Âžõ@cÅf7½u5A`<¾Q€ø‰‡‹ª$Ú ZGòŠk)t&$8¢/Ž³Ú†~qbm ƒ=7¢çn\N„°ÎF =¤aùsr…\èßÿ¼ɪ¼lCƒR=W£Ü„!x|\5¼´ÚT…j“Ô:Øã€ö‰*£ó×u”Joý2.zoÚm?8ô:QQzùŠ`Bª‡í|'­»œøÜ.Ûåªw#"_Ó'ôVò]ku\H¦})ÏH3pF;l rÏ”MÍ7î'õ¥ym´åw”ßXwª¹wâØ¡[uxäyµÈcÖëR+~ôÒÊVÊ®ÐÍL´<2;Á[Ödgðœ”Í &p_8ИŸ$h];‹k8ÍÙe+‹ˆãùfE*¨Gœ†›Êª†RRA»o¬êH,ŸTÚ¢‘mc Š¬ødfê'O -ŠCÿ¹3ˆ|ô¸Ôê„[[­bµˆÖ…¾>†‰7W¹T¶Áõ„ˆ¸SÞÛý¢.,rÊù —î¶)›_Zˆ’0¦;×~.Uš¤ÆV!O‘ëúoë„` @°~aú+|¤N%^å¸K2PÔ‘¡F'ëEtÇÔÀj b—qBjMÄ&ÐY´Rô¦”oºžý–méÊè_\ïW4Á·—BjM{´·¾¹..˳Þ~æ†_ï÷ýß²«/§[¾Êt|Ít<óø[ x”0yÍä‰d„—k´Ü[èe4å¼:Í•P·5<‡;K_=ñ—ìHbew.˜‹V´b“Gµq®¸ÏÐRÈíH:žÁw{|9ÍÓbç -À±7Å“*`!-}püï¤óÚb}z„™Æ¡í}äùŸêþý°÷žr6uµÆ2tß.42 ‹vî’=¬^Bø ç­P¤N #.V¬+ùJ„ÿ[™) îVøwÁK•CÒ -±Aò á{!—î&A´ü˜|R¦°N¼ Ö «T„xzô§ÿïÍ#ayÝî6µû•í Í|Žp×AR~ù¡WGN®ÍÞ}ÇïúÚY c¤˜ýã°¦¼ªâ÷Z;œøÁ饫ô0È©âÄ7‰ù}ƇÄ_®QÎW¨@’7®`ypÚà‰éï…+-@°bæà z€L *ÜĪ£Àïq,™ámŽZÚ1ž[N]4ýBy¬ ðt*+V:Ëê9oHa­Ï­¢§iMmçCA.ìô‚zy‡7þ:?°$=ÑÝ„cXZ"ÐÌÕݼn–aêQñaâTŒ]Ä}B]„¬â'ü§¹­Å~7l&—ö´Ò±ö~‰áŠ -”ŽûAÒ×V¿kFWŒ‡%LJôÎG V* -êìÎWeŠ”~ 4æù9‰Ü§•ÇúPÉv‹(‚l7 -&îq¿²·? S”¡LŽ¦»Ï{sdÅ6R!¦Ì¯‰}69q¾®À‡ÉyøÕ Çæûͽã»83èÓ—žy¸1Ã?Íæ²1×v#MðÍõc˜½ßµ³E€ëEƒCÔ¹ÎBftÃ$j¨ãå•·&¹xŒÑ¾¼ƒ?Z–j\S,2w3dFµ -*O¬`•ÝbE¿TÑ/ÖZƒWihJ«H Et,’Åt#ZW¹ÏVtª·G .Q‰O€ZõÌ•/–UÀÄÓ¦Óù÷“"¿t4*:1Øç`õ*ò‚Š'ÍHh;1ÍjùSžäÁ+FÊ‘sT¢6›Ìó„P"1'²§HN˜ iOôI³9N;‹ §,b™Vj?&¶B -ÓSü;Ù¤ëÌUJÀ21zªô¨' ¾÷ѨZ|bmË/%iö6p‘ÜOȧ¡{ G +ÈÏÒM‘R‰hŸ7±¼ Àï趔S©•&°Öm÷xfá°Ü~R HÍ@øØ_UýÑ`»d„j{?8OâÕüþB¾OâéZªGÉEÏ÷Š yŠPyÀ'À N‹/Ñb\‰lC·âe†~•" ôŸDw8?}$LVì‰29§˜Æð²oôµª¼¹p@¨Œf>¿‰ªŠÉƒ®Ü¾Ù"²’œ:›ôS9ì +‰ª048.)›/ Œ¶ÓÜÉíßcúÝ“çÝR:ä.˜\òZv8L]ÿ@›ê¡|PìTL¨‡ V$±èÓ4:c‹-E½­Szõ‡²s7¸ýLÿ¦Eߪͷ]1Óg°5&‹whyx1“ ½=(v–,"Ã:(G88Hü¼ìhðÔ¾ Œ¢²tVÀmN8¡¦à,ð4Ç8›ñƒ&²bt±â´ûÐÐi±¦ƒªÉ+¨tuNO<ÄÓÍÈ¡Øæ—:ï„ÌÏ‚?ÅØžãFÔ.ö«NéŠnÏ[Þ%T:_m66cÛÚ’î¡-ÑÂÓÔÉ›«ÎY°¯uÌ_­)¯[’Uq8¼aMc›Qqtaš†#b$g52PÛÞø6Úßœ E¢J§¹8`q›{m÷³Ÿ2:$ñ‡ÉòÄËé[‚¥xú&AÖö:*,áÜ{(4¼í¿ì S`bñ/,Æ-"ÁчÝÄØ‹—çX(Ût4Ýžê´KËS3üÍÙ +]n¿Ô#PQ•~M«™šSd°W¯)°`ÑOÞ“ÛŒkz´zD9†·„n¬áÉTÜF8…_ã¿l­b«*£F¦99À‹%­%9N3ýr[ýE’¹Í!YaÓ»*‚vÿJîC»e"’™Á‘‡úHšös"ƨÝlâ«š½fµDWWÆËœ¦uÔµrÀÜS»®;F?ˆHÅséþÔªûú&´²h?ƒ_‚]=_ §°þ£°|š+è±·/‚;cke2ážèY·ŽíìdÛäçWÎhÈÖâÜÁÎGÅ4ììù¦Îý°L•zá_ÿÜ-1ߤÖë dt ­!évC±èÔMô>à˜Ü'Õ©gUÒ¿ÖØâ°@åéÿÄ/s—1ˤ?Yè¶P”GFtróRi;ŠQ€/bSÿi\~ùçp¸Œ:•pžx“ÐÃúg:=. ó»lXÊq‘ŒÇ™­(Òu7}=ÉÈ9Œa4òùB¨÷Gº9¸XÈIÀ~í}ž’e£äm–.«¤Ès`bù#lIR+G¯_ õ܂¸5þ#¦U©Ü59̧Né»&22ƒ§f›ZÖ°1 uTÏ,Éf2FÛú×¹ 3:³ÿiƒ‰ÝÔn|®%uÔR¬.ß;¹9ó_JhÝí÷SmYdGöMë6ÑAÈ)ÀO£ô'ÀÝV‘Ó‰Uf’We µˆNj53í”^¾éP$ï/}1&ñXŒÐY¼P†–ðÎ;¢"I\õ~ÂlÇ;#~Üyéùúš ´b!LïüH‰(9<ý!=s®¢Iìù$\ô zÝ˽‘$YåÞˆ`X‹LýO$TÒ¶K“ ~¦ê=l’$;<“‚âvÑâˆ6Ý»ð’å-¿yOç 7t`)™­ˆZŽm«Î&į÷­zÅYm_ÀÜö …i6³èUÇX:ð6ÐJÐ ^ZO¬u$\|ç¿|6’p‰†”05_¥°'ê~‘gÊÙ¶z÷ç(AuBÙ'OûÆè3—çâTôI §y´p©Ž¾WVÁð°«È[E‹ªv,‚B;Øsï‹´™Mqî.Ë×·( iŽQêð¯h|§HaBâ–Î0»Ô¼=¶L$š¼lRE¿©.…¬®æ®Kqat¦ÍÇG†KñŒ +û0-M[¯BØ¡Õn^†LÄ;”ùÀzvyEÿì -JåLßóØñ ºŠ1œQô<ジ·&㾈d¥FÌoYÛD5ƒDdo¦²Ûw‰Ü°]iÄ9¸Ÿÿú @ÅË×ÈÂ'\_NLßõ3@âΨœ”¿‘ÿG–jè1±P³ÆúÜã²ßÆ]ƒcgâÜ9"¨-˜„-ÿ–„'{‹3Ä^JÿA¿‘…`s®h9Ë*y?•ékþR̾)þŸÍBó:¬K¥aÎÇöèL*p ‡xÄB‰f0&¥EàœS6ßù¸½üTv¾†”µI˜€» ã®ÿfœ¢dĉÀÌn5»µS©´ß…‰¸œ1Ta1Ë` æä@²D³];1s«¾ms6¢ã½\Ž‰¬kÞñ?%’YuÆx=S’¥D(‘•¦ +ŒÞÜfa\»3x˜t“ +V¾+ïºv Æ´ÑwrÂ3|S–†éu"!gªcpÏk®­Ûo=™ªè‰©¤6U*ìÅ)†QËU™¬J*IúX¥Q¼ÔÒÆZíãâÿêø)¥0sEiŠW7ð}¤c‰agM‹çuº­|±üñË2HœÌ€ñ Dóe¸Ï,ZoÓŽ’ñ"þbA”™x}ÁÁdÿ©3™£ïWÎÕQ!‰atsÐ+NŸ—@‹«Ý¬ý)¬çû3g5ÂO‰rÒ)ì¢Jx¤6®N2Ëg¿^aNtM+èòöà~ã_Ô”t¼ŸxÊ +ðvU mjÈ1 ©/.aü±„ÕHPËYÒ*:8a8âiù(54ʳck/ÂÏvÒÆž=wvî×Dàd{ò“B@–¼.¼`ûÖÏ·<# ’×uúgù@Ó™W@n4ïGË,ßmpýÂÆý¬YÄ4‡Ö ™E>‡'蟛±š[Fo9ÖH½ÙÁü„Ù:jמݠ®‰ÎnØKEl>¯b´ ºKÅm€æ ñM è^%_`ñ(°‚‘¢;ȧ¿r„ïoÛîh¶yPí(Ýÿ2ÏE½>I2Õ4ìƧ|1ÖÝê>†ü +ÿßW½¿÷ý0öé*§$2ÒMO>ªiI寡Ä͇ÌS¼ÍpÊ ör; ñ ©‚¾5PпûÒ–YECW¹ÏH­V$kn>WÂ)žÕ2÷Ô-0ûhï°œ9j¬’Æ^…m¡¬ÜrÌÜ)¯3¹/õ0{iqñMpsˆ(æ×Þ ýä^9#ù(-,Vâà Öa [^~†p—=ªÛ–²j¬M‰þÌGŽ ÆXâÝ5S=boI™œPïôâeÄçÖ!ø‡qì§f$ª‰<#i'žÞ†–ËÖp‰gø4|©IIªá´­¹ytÌ8âø€§”È}£²N©À+‚‹-ƒTA&<$ê+ùë ¢ѧÛŒáSaQw“(©¹—±gí ézª",Ù7ûLomÓŠ`âJf<.}e€³æÿƒ–Ž­ +5Ð_~Ïù­rÅRŸDò¹ d¿?ˆÉ1‘×¥}RPÊS3ï¯Ú§eÚ›ñ©Ý—ÝAö ð×)Ê;[?ä•ÆŠQòÑ‹o[´—8’;|*'¢oZ!oâu…žK/dÁ.È_¶™€ýIÝ9ÿžï®zƒ ¸]#l É@¡‘.¹Ìï¶òRrnúE7/“¸Øõ¨!ùò_–C´'aÓ’_±S‘ìT_/¨Ë€Lç`€±ó«­þ.eïשœÅ#þÎÐ%ƒÃ7¨ºh=C ~†wÖcŸžR¹ª¸WYZòW _Ý·„b7¹ßú.6*ãîûW)8UßB”jø9б¹ +Fòv•Ñe v´£” úˆaßÅy Š’ã\ã­a†VÐÝW*5Ç“§š{«óŽ²)l€Š AFe]ÏØŲ1Ù N'-ò,ÅJÍÏŸÁzuu Q?÷=’e“ª» !M¹«&¢cAª3ìL— 6¢R8D^Ú7ÂoÜöTq§ÕPÕ%: ²ùZ‘ +Êo®çIuÿF䜾izi!5ˆ‰–èΚ؆âŒûSD 9F°ÝKQáN Z 8t³ djtfNC³ÞkéÉ2Ì=€I+iÇREœÀœ£šxòO7BC ¯ÂÅàúüb=ggP\ç¹Îj ;]BE¨Oƒué¶Kÿ )ä<;dÔGÄ­ÿ©AÚ›×ÉaNîÈH$ßÚÁ&JàTëѺÇ<¹=\Ý}j`y^Ì‚V(®ïï4,;”ð ¬Ð*ëxÛ+Ý_#q踇¹w‹Ï162ÀÚ={Cê¢ùÛ¶ ácà·ézì’…ü­ä¸€ßùhÄòÚÒí}€5FÌ؃er–=ž‰;*±ÿu‡©@ßG°vŠ”Ï*À ô) 3þË8Z0”P8NÌ2ÜkisÿmΊì¾ïöåêIâÒ'kR]Pˆ—r2[³‡çª1RÒ£YºÇ`JéÓ]Ê"ÒçáY‰ ¦no™ýPDì]œ˜1{@ˆø˜$ÖDO…”'Ïvwªôcb–óàÄü›|œ<’Òz½u8AJõiMüÝ´nFo>èÈ“ßÁÊï6ÌácÒÎ7­ÕÞi’Z›*U²f•­ÆùÍ;Ó¦rœN ývìÐä ¼¯›fs’q4<±P˜œÀ$kwšŽ`Œ²’q-¯ÚuÉ4Æø†Y9¥¦\Þ—7L4À:ØÏÉtè{3ñ~7À®K†ý;^JÍä“|âp‹ð×»øË´+=ûdýñwPTkp1å„ o4döð0QLs >†Ð ¶ÅËÔ ‚J-1»Tƒ>ÿßïþà=Ä"ΣV14*^µ·Äø¥Â ¿ÙŸ4éMÔçÑ)ºMH¨×aèÔ±\ØyµØ,i¥› V¼^`K~´`wð¢2br™-Á£T^eæ:Œ(Ⱥ“cm‡«CnvЂŸ~>¡CP‡WW* ú0èó#¨«û]î”ãœwØ´Á4©TI¥Â%d„.…Ññ”ýê,ól¿ehŒ¾ÚÉ8ðñ­´%©vH¯ZwÓ‡†ijz @UÎóe£—Õ™x*@LíôÃÝß +=ZýóÌUÄã¼»Ft9f™KÛJ¢´•R¢ý‚¨‹,›ûzÌ¢¡aßV¡ê0¥{ý¯²0áÀ}¨¶ÑŒŒØíQ­‘þÉÇàcî³ØTÝiù0ÎPüÅ·Õ…žÜ†sÞ[ú*Îy¤Œ”¤ÜÎç$Ìjÿ-Q Ü óÛ5ë©CÿÖ~f(¿)-i¹ÜÝÄ7½0+{}¾íA^ð0˜x]Шÿ¶Kš!Œ9jÖ™ð,¼GÕØJ¶çè7-8ž¸k„dˆCœö‰gÑ<[­ÊíCxñIíycYã;Ö«~È(‚Ñš3ßÊ$¶Äåɤ _”Ïâ*Î^†Œ +wÀcÜYþÈ;'!‡\ôqÌ/æF'¨÷¯™¸dÏî²<‚>Ó üê !“ÂZ'K¶WF-üGÓŸ˜awö=Cv'…àôbîåÒ QÉçÚ÷ôÐv9ƒ’a||RM°l,ÏßHf¼ì% }Ë~s ûÀíÁ÷‚‘ÕgxÅ@ üÑÂÿçY;E •$Ĭ¢åù4z.r°¬•8‹z‰eԌˀ_Bò;‡ ,q-ýÜˤÀô€|Pþ±ý„7¶¢ñö½s—K„ë„Nᣨ­ó]U¼½boÝš¥AöI%!3B-3FhŸÌ©¾°÷émõ%`>“p×v2 jì<ê£&vý†šLÌÓ(P µ|°i5‘*E’Sbà ô [" :4ØEèë¾@ê»zm´ÝO°8P¹Ê"òàAÅù«¤‘ºòŸ¸à£JCfäf endstream endobj -1570 0 obj << +1611 0 obj << /Type /FontDescriptor -/FontName /LEILHS+CMTT9 +/FontName /PWOHSV+CMTT9 /Flags 4 /FontBBox [-6 -233 542 698] /Ascent 611 @@ -19961,814 +20778,821 @@ endobj /ItalicAngle 0 /StemV 74 /XHeight 431 -/CharSet (/a/b/c/colon/comma/d/e/equal/f/g/h/i/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/quoteright/r/s/t/two/u/underscore/v/x/y/z) -/FontFile 1569 0 R +/CharSet (/T/a/b/c/colon/comma/d/e/equal/f/g/h/i/l/m/n/nine/o/one/p/parenleft/parenright/period/q/quoteright/r/s/t/two/u/underscore/x/y/z) +/FontFile 1610 0 R >> endobj -477 0 obj << +481 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /STSKKW+CMBX10 -/FontDescriptor 1540 0 R +/BaseFont /GLQIZN+CMBX10 +/FontDescriptor 1581 0 R /FirstChar 12 /LastChar 124 -/Widths 1536 0 R +/Widths 1577 0 R >> endobj -475 0 obj << +479 0 obj << /Type /Font /Subtype /Type1 /BaseFont /GBHFLB+CMBX12 -/FontDescriptor 1542 0 R +/FontDescriptor 1583 0 R /FirstChar 12 /LastChar 124 -/Widths 1538 0 R +/Widths 1579 0 R >> endobj -649 0 obj << +654 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XOPWSZ+CMMI10 -/FontDescriptor 1544 0 R +/FontDescriptor 1585 0 R /FirstChar 11 /LastChar 122 -/Widths 1533 0 R +/Widths 1574 0 R >> endobj -697 0 obj << +702 0 obj << /Type /Font /Subtype /Type1 /BaseFont /RVPZIX+CMMI5 -/FontDescriptor 1546 0 R +/FontDescriptor 1587 0 R /FirstChar 105 /LastChar 105 -/Widths 1526 0 R +/Widths 1567 0 R >> endobj -666 0 obj << +671 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ZUYGVH+CMMI7 -/FontDescriptor 1548 0 R +/FontDescriptor 1589 0 R /FirstChar 59 /LastChar 110 -/Widths 1530 0 R +/Widths 1571 0 R >> endobj -478 0 obj << +482 0 obj << /Type /Font /Subtype /Type1 /BaseFont /KYXPCE+CMR10 -/FontDescriptor 1550 0 R +/FontDescriptor 1591 0 R /FirstChar 11 /LastChar 123 -/Widths 1535 0 R +/Widths 1576 0 R >> endobj -668 0 obj << +673 0 obj << /Type /Font /Subtype /Type1 /BaseFont /YPSQTS+CMR6 -/FontDescriptor 1552 0 R +/FontDescriptor 1593 0 R /FirstChar 49 /LastChar 51 -/Widths 1528 0 R +/Widths 1569 0 R >> endobj -665 0 obj << +670 0 obj << /Type /Font /Subtype /Type1 /BaseFont /EWABFK+CMR7 -/FontDescriptor 1554 0 R +/FontDescriptor 1595 0 R /FirstChar 49 /LastChar 58 -/Widths 1531 0 R +/Widths 1572 0 R >> endobj -670 0 obj << +675 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TDRORS+CMR8 -/FontDescriptor 1556 0 R +/FontDescriptor 1597 0 R /FirstChar 40 /LastChar 121 -/Widths 1527 0 R +/Widths 1568 0 R >> endobj -1013 0 obj << +1028 0 obj << /Type /Font /Subtype /Type1 /BaseFont /HLSVSX+CMR9 -/FontDescriptor 1558 0 R +/FontDescriptor 1599 0 R /FirstChar 40 /LastChar 115 -/Widths 1523 0 R +/Widths 1564 0 R >> endobj -667 0 obj << +672 0 obj << /Type /Font /Subtype /Type1 /BaseFont /IMOIOS+CMSY10 -/FontDescriptor 1560 0 R +/FontDescriptor 1601 0 R /FirstChar 0 /LastChar 120 -/Widths 1529 0 R +/Widths 1570 0 R >> endobj -932 0 obj << +946 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XNLILI+CMSY7 -/FontDescriptor 1562 0 R +/FontDescriptor 1603 0 R /FirstChar 0 /LastChar 49 -/Widths 1524 0 R +/Widths 1565 0 R >> endobj -629 0 obj << +634 0 obj << /Type /Font /Subtype /Type1 /BaseFont /HBJLDT+CMTI10 -/FontDescriptor 1564 0 R +/FontDescriptor 1605 0 R /FirstChar 11 /LastChar 121 -/Widths 1534 0 R +/Widths 1575 0 R >> endobj -476 0 obj << +480 0 obj << /Type /Font /Subtype /Type1 /BaseFont /OZJPZO+CMTI12 -/FontDescriptor 1566 0 R +/FontDescriptor 1607 0 R /FirstChar 65 /LastChar 121 -/Widths 1537 0 R +/Widths 1578 0 R >> endobj -664 0 obj << +669 0 obj << /Type /Font /Subtype /Type1 /BaseFont /BGSLBR+CMTT10 -/FontDescriptor 1568 0 R +/FontDescriptor 1609 0 R /FirstChar 37 /LastChar 126 -/Widths 1532 0 R +/Widths 1573 0 R >> endobj -814 0 obj << +825 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /LEILHS+CMTT9 -/FontDescriptor 1570 0 R +/BaseFont /PWOHSV+CMTT9 +/FontDescriptor 1611 0 R /FirstChar 39 /LastChar 122 -/Widths 1525 0 R +/Widths 1566 0 R >> endobj -479 0 obj << +483 0 obj << /Type /Pages /Count 6 -/Parent 1571 0 R -/Kids [470 0 R 481 0 R 531 0 R 583 0 R 609 0 R 613 0 R] +/Parent 1612 0 R +/Kids [474 0 R 485 0 R 535 0 R 587 0 R 614 0 R 618 0 R] >> endobj -630 0 obj << +635 0 obj << /Type /Pages /Count 6 -/Parent 1571 0 R -/Kids [627 0 R 647 0 R 661 0 R 677 0 R 690 0 R 694 0 R] +/Parent 1612 0 R +/Kids [632 0 R 652 0 R 666 0 R 682 0 R 695 0 R 699 0 R] >> endobj -723 0 obj << +729 0 obj << /Type /Pages /Count 6 -/Parent 1571 0 R -/Kids [707 0 R 726 0 R 732 0 R 738 0 R 750 0 R 762 0 R] +/Parent 1612 0 R +/Kids [713 0 R 731 0 R 742 0 R 748 0 R 760 0 R 772 0 R] >> endobj -769 0 obj << +779 0 obj << /Type /Pages /Count 6 -/Parent 1571 0 R -/Kids [766 0 R 774 0 R 782 0 R 786 0 R 791 0 R 797 0 R] +/Parent 1612 0 R +/Kids [776 0 R 784 0 R 792 0 R 796 0 R 801 0 R 807 0 R] >> endobj -808 0 obj << +819 0 obj << /Type /Pages /Count 6 -/Parent 1571 0 R -/Kids [804 0 R 810 0 R 817 0 R 821 0 R 832 0 R 839 0 R] +/Parent 1612 0 R +/Kids [815 0 R 821 0 R 828 0 R 839 0 R 846 0 R 856 0 R] >> endobj -853 0 obj << +864 0 obj << /Type /Pages /Count 6 -/Parent 1571 0 R -/Kids [849 0 R 855 0 R 865 0 R 870 0 R 877 0 R 885 0 R] +/Parent 1612 0 R +/Kids [861 0 R 872 0 R 877 0 R 884 0 R 892 0 R 900 0 R] >> endobj -897 0 obj << +912 0 obj << /Type /Pages /Count 6 -/Parent 1572 0 R -/Kids [893 0 R 902 0 R 907 0 R 914 0 R 922 0 R 929 0 R] +/Parent 1613 0 R +/Kids [908 0 R 914 0 R 921 0 R 929 0 R 936 0 R 943 0 R] >> endobj -947 0 obj << +961 0 obj << /Type /Pages /Count 6 -/Parent 1572 0 R -/Kids [940 0 R 956 0 R 962 0 R 973 0 R 979 0 R 984 0 R] +/Parent 1613 0 R +/Kids [954 0 R 970 0 R 976 0 R 987 0 R 993 0 R 998 0 R] >> endobj -995 0 obj << +1010 0 obj << /Type /Pages /Count 6 -/Parent 1572 0 R -/Kids [991 0 R 1000 0 R 1010 0 R 1017 0 R 1026 0 R 1034 0 R] +/Parent 1613 0 R +/Kids [1006 0 R 1015 0 R 1025 0 R 1033 0 R 1042 0 R 1050 0 R] >> endobj -1041 0 obj << +1057 0 obj << /Type /Pages /Count 6 -/Parent 1572 0 R -/Kids [1038 0 R 1050 0 R 1055 0 R 1061 0 R 1066 0 R 1070 0 R] +/Parent 1613 0 R +/Kids [1054 0 R 1067 0 R 1072 0 R 1078 0 R 1083 0 R 1087 0 R] >> endobj -1079 0 obj << +1096 0 obj << /Type /Pages /Count 6 -/Parent 1572 0 R -/Kids [1075 0 R 1081 0 R 1090 0 R 1096 0 R 1104 0 R 1111 0 R] +/Parent 1613 0 R +/Kids [1092 0 R 1099 0 R 1104 0 R 1114 0 R 1119 0 R 1128 0 R] >> endobj -1119 0 obj << +1138 0 obj << /Type /Pages /Count 6 -/Parent 1572 0 R -/Kids [1116 0 R 1123 0 R 1127 0 R 1135 0 R 1145 0 R 1149 0 R] +/Parent 1613 0 R +/Kids [1135 0 R 1141 0 R 1147 0 R 1151 0 R 1159 0 R 1169 0 R] >> endobj -1164 0 obj << +1185 0 obj << /Type /Pages /Count 6 -/Parent 1573 0 R -/Kids [1161 0 R 1166 0 R 1178 0 R 1184 0 R 1190 0 R 1195 0 R] +/Parent 1614 0 R +/Kids [1173 0 R 1189 0 R 1193 0 R 1205 0 R 1211 0 R 1218 0 R] >> endobj -1204 0 obj << +1227 0 obj << /Type /Pages /Count 6 -/Parent 1573 0 R -/Kids [1199 0 R 1207 0 R 1212 0 R 1216 0 R 1221 0 R 1225 0 R] +/Parent 1614 0 R +/Kids [1224 0 R 1229 0 R 1238 0 R 1244 0 R 1248 0 R 1253 0 R] >> endobj -1235 0 obj << +1262 0 obj << /Type /Pages /Count 6 -/Parent 1573 0 R -/Kids [1232 0 R 1238 0 R 1244 0 R 1250 0 R 1256 0 R 1262 0 R] +/Parent 1614 0 R +/Kids [1257 0 R 1265 0 R 1270 0 R 1276 0 R 1282 0 R 1288 0 R] >> endobj -1274 0 obj << +1299 0 obj << /Type /Pages /Count 6 -/Parent 1573 0 R -/Kids [1269 0 R 1277 0 R 1281 0 R 1291 0 R 1295 0 R 1299 0 R] +/Parent 1614 0 R +/Kids [1294 0 R 1302 0 R 1309 0 R 1313 0 R 1323 0 R 1327 0 R] >> endobj -1315 0 obj << +1343 0 obj << /Type /Pages /Count 6 -/Parent 1573 0 R -/Kids [1312 0 R 1317 0 R 1323 0 R 1329 0 R 1336 0 R 1340 0 R] +/Parent 1614 0 R +/Kids [1331 0 R 1345 0 R 1349 0 R 1355 0 R 1361 0 R 1368 0 R] >> endobj -1347 0 obj << +1375 0 obj << /Type /Pages /Count 6 -/Parent 1573 0 R -/Kids [1344 0 R 1349 0 R 1353 0 R 1357 0 R 1361 0 R 1367 0 R] +/Parent 1614 0 R +/Kids [1372 0 R 1377 0 R 1381 0 R 1385 0 R 1389 0 R 1393 0 R] >> endobj -1378 0 obj << +1404 0 obj << /Type /Pages /Count 6 -/Parent 1574 0 R -/Kids [1373 0 R 1380 0 R 1386 0 R 1392 0 R 1397 0 R 1404 0 R] +/Parent 1615 0 R +/Kids [1399 0 R 1406 0 R 1412 0 R 1418 0 R 1424 0 R 1429 0 R] >> endobj -1413 0 obj << +1439 0 obj << /Type /Pages /Count 6 -/Parent 1574 0 R -/Kids [1410 0 R 1415 0 R 1419 0 R 1423 0 R 1427 0 R 1431 0 R] +/Parent 1615 0 R +/Kids [1436 0 R 1443 0 R 1447 0 R 1451 0 R 1455 0 R 1459 0 R] >> endobj -1439 0 obj << +1466 0 obj << /Type /Pages /Count 6 -/Parent 1574 0 R -/Kids [1436 0 R 1442 0 R 1447 0 R 1451 0 R 1456 0 R 1460 0 R] +/Parent 1615 0 R +/Kids [1463 0 R 1469 0 R 1474 0 R 1479 0 R 1483 0 R 1488 0 R] >> endobj -1470 0 obj << +1495 0 obj << /Type /Pages /Count 6 -/Parent 1574 0 R -/Kids [1466 0 R 1476 0 R 1482 0 R 1487 0 R 1491 0 R 1497 0 R] +/Parent 1615 0 R +/Kids [1492 0 R 1499 0 R 1508 0 R 1516 0 R 1521 0 R 1525 0 R] >> endobj -1505 0 obj << +1536 0 obj << /Type /Pages -/Count 4 -/Parent 1574 0 R -/Kids [1502 0 R 1507 0 R 1511 0 R 1519 0 R] +/Count 6 +/Parent 1615 0 R +/Kids [1533 0 R 1540 0 R 1544 0 R 1548 0 R 1552 0 R 1560 0 R] >> endobj -1571 0 obj << +1612 0 obj << /Type /Pages /Count 36 -/Parent 1575 0 R -/Kids [479 0 R 630 0 R 723 0 R 769 0 R 808 0 R 853 0 R] +/Parent 1616 0 R +/Kids [483 0 R 635 0 R 729 0 R 779 0 R 819 0 R 864 0 R] >> endobj -1572 0 obj << +1613 0 obj << /Type /Pages /Count 36 -/Parent 1575 0 R -/Kids [897 0 R 947 0 R 995 0 R 1041 0 R 1079 0 R 1119 0 R] +/Parent 1616 0 R +/Kids [912 0 R 961 0 R 1010 0 R 1057 0 R 1096 0 R 1138 0 R] >> endobj -1573 0 obj << +1614 0 obj << /Type /Pages /Count 36 -/Parent 1575 0 R -/Kids [1164 0 R 1204 0 R 1235 0 R 1274 0 R 1315 0 R 1347 0 R] +/Parent 1616 0 R +/Kids [1185 0 R 1227 0 R 1262 0 R 1299 0 R 1343 0 R 1375 0 R] >> endobj -1574 0 obj << +1615 0 obj << /Type /Pages -/Count 28 -/Parent 1575 0 R -/Kids [1378 0 R 1413 0 R 1439 0 R 1470 0 R 1505 0 R] +/Count 30 +/Parent 1616 0 R +/Kids [1404 0 R 1439 0 R 1466 0 R 1495 0 R 1536 0 R] >> endobj -1575 0 obj << +1616 0 obj << /Type /Pages -/Count 136 -/Kids [1571 0 R 1572 0 R 1573 0 R 1574 0 R] +/Count 138 +/Kids [1612 0 R 1613 0 R 1614 0 R 1615 0 R] >> endobj -1576 0 obj << +1617 0 obj << /Type /Outlines /First 7 0 R /Last 7 0 R /Count 1 >> endobj +471 0 obj << +/Title 472 0 R +/A 469 0 R +/Parent 467 0 R +>> endobj 467 0 obj << /Title 468 0 R /A 465 0 R -/Parent 463 0 R +/Parent 7 0 R +/Prev 447 0 R +/First 471 0 R +/Last 471 0 R +/Count -1 >> endobj 463 0 obj << /Title 464 0 R /A 461 0 R -/Parent 7 0 R -/Prev 443 0 R -/First 467 0 R -/Last 467 0 R -/Count -1 +/Parent 447 0 R +/Prev 459 0 R >> endobj 459 0 obj << /Title 460 0 R /A 457 0 R -/Parent 443 0 R +/Parent 447 0 R /Prev 455 0 R +/Next 463 0 R >> endobj 455 0 obj << /Title 456 0 R /A 453 0 R -/Parent 443 0 R +/Parent 447 0 R /Prev 451 0 R /Next 459 0 R >> endobj 451 0 obj << /Title 452 0 R /A 449 0 R -/Parent 443 0 R -/Prev 447 0 R +/Parent 447 0 R /Next 455 0 R >> endobj 447 0 obj << /Title 448 0 R /A 445 0 R -/Parent 443 0 R -/Next 451 0 R +/Parent 7 0 R +/Prev 423 0 R +/Next 467 0 R +/First 451 0 R +/Last 463 0 R +/Count -4 >> endobj 443 0 obj << /Title 444 0 R /A 441 0 R -/Parent 7 0 R -/Prev 419 0 R -/Next 463 0 R -/First 447 0 R -/Last 459 0 R -/Count -4 +/Parent 427 0 R +/Prev 439 0 R >> endobj 439 0 obj << /Title 440 0 R /A 437 0 R -/Parent 423 0 R +/Parent 427 0 R /Prev 435 0 R +/Next 443 0 R >> endobj 435 0 obj << /Title 436 0 R /A 433 0 R -/Parent 423 0 R +/Parent 427 0 R /Prev 431 0 R /Next 439 0 R >> endobj 431 0 obj << /Title 432 0 R /A 429 0 R -/Parent 423 0 R -/Prev 427 0 R +/Parent 427 0 R /Next 435 0 R >> endobj 427 0 obj << /Title 428 0 R /A 425 0 R /Parent 423 0 R -/Next 431 0 R +/First 431 0 R +/Last 443 0 R +/Count -4 >> endobj 423 0 obj << /Title 424 0 R /A 421 0 R -/Parent 419 0 R +/Parent 7 0 R +/Prev 403 0 R +/Next 447 0 R /First 427 0 R -/Last 439 0 R -/Count -4 +/Last 427 0 R +/Count -1 >> endobj 419 0 obj << /Title 420 0 R /A 417 0 R -/Parent 7 0 R -/Prev 399 0 R -/Next 443 0 R -/First 423 0 R -/Last 423 0 R -/Count -1 +/Parent 403 0 R +/Prev 415 0 R >> endobj 415 0 obj << /Title 416 0 R /A 413 0 R -/Parent 399 0 R +/Parent 403 0 R /Prev 411 0 R +/Next 419 0 R >> endobj 411 0 obj << /Title 412 0 R /A 409 0 R -/Parent 399 0 R +/Parent 403 0 R /Prev 407 0 R /Next 415 0 R >> endobj 407 0 obj << /Title 408 0 R /A 405 0 R -/Parent 399 0 R -/Prev 403 0 R +/Parent 403 0 R /Next 411 0 R >> endobj 403 0 obj << /Title 404 0 R /A 401 0 R -/Parent 399 0 R -/Next 407 0 R +/Parent 7 0 R +/Prev 335 0 R +/Next 423 0 R +/First 407 0 R +/Last 419 0 R +/Count -4 >> endobj 399 0 obj << /Title 400 0 R /A 397 0 R -/Parent 7 0 R -/Prev 331 0 R -/Next 419 0 R -/First 403 0 R -/Last 415 0 R -/Count -4 +/Parent 335 0 R +/Prev 395 0 R >> endobj 395 0 obj << /Title 396 0 R /A 393 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 391 0 R +/Next 399 0 R >> endobj 391 0 obj << /Title 392 0 R /A 389 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 387 0 R /Next 395 0 R >> endobj 387 0 obj << /Title 388 0 R /A 385 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 383 0 R /Next 391 0 R >> endobj 383 0 obj << /Title 384 0 R /A 381 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 379 0 R /Next 387 0 R >> endobj 379 0 obj << /Title 380 0 R /A 377 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 375 0 R /Next 383 0 R >> endobj 375 0 obj << /Title 376 0 R /A 373 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 371 0 R /Next 379 0 R >> endobj 371 0 obj << /Title 372 0 R /A 369 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 367 0 R /Next 375 0 R >> endobj 367 0 obj << /Title 368 0 R /A 365 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 363 0 R /Next 371 0 R >> endobj 363 0 obj << /Title 364 0 R /A 361 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 359 0 R /Next 367 0 R >> endobj 359 0 obj << /Title 360 0 R /A 357 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 355 0 R /Next 363 0 R >> endobj 355 0 obj << /Title 356 0 R /A 353 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 351 0 R /Next 359 0 R >> endobj 351 0 obj << /Title 352 0 R /A 349 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 347 0 R /Next 355 0 R >> endobj 347 0 obj << /Title 348 0 R /A 345 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 343 0 R /Next 351 0 R >> endobj 343 0 obj << /Title 344 0 R /A 341 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 339 0 R /Next 347 0 R >> endobj 339 0 obj << /Title 340 0 R /A 337 0 R -/Parent 331 0 R -/Prev 335 0 R +/Parent 335 0 R /Next 343 0 R >> endobj 335 0 obj << /Title 336 0 R /A 333 0 R -/Parent 331 0 R -/Next 339 0 R +/Parent 7 0 R +/Prev 223 0 R +/Next 403 0 R +/First 339 0 R +/Last 399 0 R +/Count -16 >> endobj 331 0 obj << /Title 332 0 R /A 329 0 R -/Parent 7 0 R -/Prev 219 0 R -/Next 399 0 R -/First 335 0 R -/Last 395 0 R -/Count -16 +/Parent 223 0 R +/Prev 327 0 R >> endobj 327 0 obj << /Title 328 0 R /A 325 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 323 0 R +/Next 331 0 R >> endobj 323 0 obj << /Title 324 0 R /A 321 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 319 0 R /Next 327 0 R >> endobj 319 0 obj << /Title 320 0 R /A 317 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 315 0 R /Next 323 0 R >> endobj 315 0 obj << /Title 316 0 R /A 313 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 311 0 R /Next 319 0 R >> endobj 311 0 obj << /Title 312 0 R /A 309 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 307 0 R /Next 315 0 R >> endobj 307 0 obj << /Title 308 0 R /A 305 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 303 0 R /Next 311 0 R >> endobj 303 0 obj << /Title 304 0 R /A 301 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 299 0 R /Next 307 0 R >> endobj 299 0 obj << /Title 300 0 R /A 297 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 295 0 R /Next 303 0 R >> endobj 295 0 obj << /Title 296 0 R /A 293 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 291 0 R /Next 299 0 R >> endobj 291 0 obj << /Title 292 0 R /A 289 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 287 0 R /Next 295 0 R >> endobj 287 0 obj << /Title 288 0 R /A 285 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 283 0 R /Next 291 0 R >> endobj 283 0 obj << /Title 284 0 R /A 281 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 279 0 R /Next 287 0 R >> endobj 279 0 obj << /Title 280 0 R /A 277 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 275 0 R /Next 283 0 R >> endobj 275 0 obj << /Title 276 0 R /A 273 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 271 0 R /Next 279 0 R >> endobj 271 0 obj << /Title 272 0 R /A 269 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 267 0 R /Next 275 0 R >> endobj 267 0 obj << /Title 268 0 R /A 265 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 263 0 R /Next 271 0 R >> endobj 263 0 obj << /Title 264 0 R /A 261 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 259 0 R /Next 267 0 R >> endobj 259 0 obj << /Title 260 0 R /A 257 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 255 0 R /Next 263 0 R >> endobj 255 0 obj << /Title 256 0 R /A 253 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 251 0 R /Next 259 0 R >> endobj 251 0 obj << /Title 252 0 R /A 249 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 247 0 R /Next 255 0 R >> endobj 247 0 obj << /Title 248 0 R /A 245 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 243 0 R /Next 251 0 R >> endobj 243 0 obj << /Title 244 0 R /A 241 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 239 0 R /Next 247 0 R >> endobj 239 0 obj << /Title 240 0 R /A 237 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 235 0 R /Next 243 0 R >> endobj 235 0 obj << /Title 236 0 R /A 233 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 231 0 R /Next 239 0 R >> endobj 231 0 obj << /Title 232 0 R /A 229 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 227 0 R /Next 235 0 R >> endobj 227 0 obj << /Title 228 0 R /A 225 0 R -/Parent 219 0 R -/Prev 223 0 R +/Parent 223 0 R /Next 231 0 R >> endobj 223 0 obj << /Title 224 0 R /A 221 0 R -/Parent 219 0 R -/Next 227 0 R +/Parent 7 0 R +/Prev 203 0 R +/Next 335 0 R +/First 227 0 R +/Last 331 0 R +/Count -27 >> endobj 219 0 obj << /Title 220 0 R /A 217 0 R -/Parent 7 0 R -/Prev 199 0 R -/Next 331 0 R -/First 223 0 R -/Last 327 0 R -/Count -27 +/Parent 203 0 R +/Prev 215 0 R >> endobj 215 0 obj << /Title 216 0 R /A 213 0 R -/Parent 199 0 R +/Parent 203 0 R /Prev 211 0 R +/Next 219 0 R >> endobj 211 0 obj << /Title 212 0 R /A 209 0 R -/Parent 199 0 R +/Parent 203 0 R /Prev 207 0 R /Next 215 0 R >> endobj 207 0 obj << /Title 208 0 R /A 205 0 R -/Parent 199 0 R -/Prev 203 0 R +/Parent 203 0 R /Next 211 0 R >> endobj 203 0 obj << /Title 204 0 R /A 201 0 R -/Parent 199 0 R -/Next 207 0 R +/Parent 7 0 R +/Prev 147 0 R +/Next 223 0 R +/First 207 0 R +/Last 219 0 R +/Count -4 >> endobj 199 0 obj << /Title 200 0 R /A 197 0 R -/Parent 7 0 R -/Prev 147 0 R -/Next 219 0 R -/First 203 0 R -/Last 215 0 R -/Count -4 +/Parent 147 0 R +/Prev 195 0 R >> endobj 195 0 obj << /Title 196 0 R /A 193 0 R /Parent 147 0 R /Prev 191 0 R +/Next 199 0 R >> endobj 191 0 obj << /Title 192 0 R @@ -20850,224 +21674,225 @@ endobj /Title 148 0 R /A 145 0 R /Parent 7 0 R -/Prev 35 0 R -/Next 199 0 R +/Prev 39 0 R +/Next 203 0 R /First 151 0 R -/Last 195 0 R -/Count -12 +/Last 199 0 R +/Count -13 >> endobj 143 0 obj << /Title 144 0 R /A 141 0 R -/Parent 35 0 R -/Prev 139 0 R +/Parent 39 0 R +/Prev 123 0 R >> endobj 139 0 obj << /Title 140 0 R /A 137 0 R -/Parent 35 0 R -/Prev 119 0 R -/Next 143 0 R +/Parent 123 0 R +/Prev 135 0 R >> endobj 135 0 obj << /Title 136 0 R /A 133 0 R -/Parent 119 0 R +/Parent 123 0 R /Prev 131 0 R +/Next 139 0 R >> endobj 131 0 obj << /Title 132 0 R /A 129 0 R -/Parent 119 0 R +/Parent 123 0 R /Prev 127 0 R /Next 135 0 R >> endobj 127 0 obj << /Title 128 0 R /A 125 0 R -/Parent 119 0 R -/Prev 123 0 R +/Parent 123 0 R /Next 131 0 R >> endobj 123 0 obj << /Title 124 0 R /A 121 0 R -/Parent 119 0 R -/Next 127 0 R +/Parent 39 0 R +/Prev 83 0 R +/Next 143 0 R +/First 127 0 R +/Last 139 0 R +/Count -4 >> endobj 119 0 obj << /Title 120 0 R /A 117 0 R -/Parent 35 0 R -/Prev 79 0 R -/Next 139 0 R -/First 123 0 R -/Last 135 0 R -/Count -4 +/Parent 83 0 R +/Prev 115 0 R >> endobj 115 0 obj << /Title 116 0 R /A 113 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 111 0 R +/Next 119 0 R >> endobj 111 0 obj << /Title 112 0 R /A 109 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 107 0 R /Next 115 0 R >> endobj 107 0 obj << /Title 108 0 R /A 105 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 103 0 R /Next 111 0 R >> endobj 103 0 obj << /Title 104 0 R /A 101 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 99 0 R /Next 107 0 R >> endobj 99 0 obj << /Title 100 0 R /A 97 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 95 0 R /Next 103 0 R >> endobj 95 0 obj << /Title 96 0 R /A 93 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 91 0 R /Next 99 0 R >> endobj 91 0 obj << /Title 92 0 R /A 89 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 87 0 R /Next 95 0 R >> endobj 87 0 obj << /Title 88 0 R /A 85 0 R -/Parent 79 0 R -/Prev 83 0 R +/Parent 83 0 R /Next 91 0 R >> endobj 83 0 obj << /Title 84 0 R /A 81 0 R -/Parent 79 0 R -/Next 87 0 R +/Parent 39 0 R +/Prev 43 0 R +/Next 123 0 R +/First 87 0 R +/Last 119 0 R +/Count -9 >> endobj 79 0 obj << /Title 80 0 R /A 77 0 R -/Parent 35 0 R -/Prev 39 0 R -/Next 119 0 R -/First 83 0 R -/Last 115 0 R -/Count -9 +/Parent 43 0 R +/Prev 75 0 R >> endobj 75 0 obj << /Title 76 0 R /A 73 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 71 0 R +/Next 79 0 R >> endobj 71 0 obj << /Title 72 0 R /A 69 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 67 0 R /Next 75 0 R >> endobj 67 0 obj << /Title 68 0 R /A 65 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 63 0 R /Next 71 0 R >> endobj 63 0 obj << /Title 64 0 R /A 61 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 59 0 R /Next 67 0 R >> endobj 59 0 obj << /Title 60 0 R /A 57 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 55 0 R /Next 63 0 R >> endobj 55 0 obj << /Title 56 0 R /A 53 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 51 0 R /Next 59 0 R >> endobj 51 0 obj << /Title 52 0 R /A 49 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 47 0 R /Next 55 0 R >> endobj 47 0 obj << /Title 48 0 R /A 45 0 R -/Parent 39 0 R -/Prev 43 0 R +/Parent 43 0 R /Next 51 0 R >> endobj 43 0 obj << /Title 44 0 R /A 41 0 R /Parent 39 0 R -/Next 47 0 R +/Next 83 0 R +/First 47 0 R +/Last 79 0 R +/Count -9 >> endobj 39 0 obj << /Title 40 0 R /A 37 0 R -/Parent 35 0 R -/Next 79 0 R +/Parent 7 0 R +/Prev 15 0 R +/Next 147 0 R /First 43 0 R -/Last 75 0 R -/Count -9 +/Last 143 0 R +/Count -4 >> endobj 35 0 obj << /Title 36 0 R /A 33 0 R -/Parent 7 0 R -/Prev 15 0 R -/Next 147 0 R -/First 39 0 R -/Last 143 0 R -/Count -5 +/Parent 15 0 R +/Prev 27 0 R >> endobj 31 0 obj << /Title 32 0 R /A 29 0 R -/Parent 15 0 R -/Prev 27 0 R +/Parent 27 0 R >> endobj 27 0 obj << /Title 28 0 R /A 25 0 R /Parent 15 0 R /Prev 23 0 R -/Next 31 0 R +/Next 35 0 R +/First 31 0 R +/Last 31 0 R +/Count -1 >> endobj 23 0 obj << /Title 24 0 R @@ -21087,9 +21912,9 @@ endobj /A 13 0 R /Parent 7 0 R /Prev 11 0 R -/Next 35 0 R +/Next 39 0 R /First 19 0 R -/Last 31 0 R +/Last 35 0 R /Count -4 >> endobj 11 0 obj << @@ -21101,2041 +21926,2107 @@ endobj 7 0 obj << /Title 8 0 R /A 5 0 R -/Parent 1576 0 R +/Parent 1617 0 R /First 11 0 R -/Last 463 0 R +/Last 467 0 R /Count -11 >> endobj -1577 0 obj << -/Names [(Doc-Start) 474 0 R (Hfootnote.1) 669 0 R (Hfootnote.2) 671 0 R (Hfootnote.3) 1469 0 R (Item.1) 698 0 R (Item.10) 711 0 R] +1618 0 obj << +/Names [(Doc-Start) 478 0 R (Hfootnote.1) 674 0 R (Hfootnote.2) 676 0 R (Hfootnote.3) 1502 0 R (Item.1) 703 0 R (Item.10) 717 0 R] /Limits [(Doc-Start) (Item.10)] >> endobj -1578 0 obj << -/Names [(Item.100) 1370 0 R (Item.101) 1371 0 R (Item.102) 1376 0 R (Item.103) 1377 0 R (Item.104) 1383 0 R (Item.105) 1384 0 R] +1619 0 obj << +/Names [(Item.100) 1342 0 R (Item.101) 1352 0 R (Item.102) 1353 0 R (Item.103) 1358 0 R (Item.104) 1359 0 R (Item.105) 1364 0 R] /Limits [(Item.100) (Item.105)] >> endobj -1579 0 obj << -/Names [(Item.106) 1389 0 R (Item.107) 1390 0 R (Item.108) 1395 0 R (Item.109) 1400 0 R (Item.11) 712 0 R (Item.12) 713 0 R] -/Limits [(Item.106) (Item.12)] +1620 0 obj << +/Names [(Item.106) 1365 0 R (Item.107) 1366 0 R (Item.108) 1396 0 R (Item.109) 1397 0 R (Item.11) 718 0 R (Item.110) 1402 0 R] +/Limits [(Item.106) (Item.110)] >> endobj -1580 0 obj << -/Names [(Item.13) 714 0 R (Item.14) 715 0 R (Item.15) 716 0 R (Item.16) 717 0 R (Item.17) 718 0 R (Item.18) 719 0 R] -/Limits [(Item.13) (Item.18)] +1621 0 obj << +/Names [(Item.111) 1403 0 R (Item.112) 1409 0 R (Item.113) 1410 0 R (Item.114) 1415 0 R (Item.115) 1416 0 R (Item.116) 1421 0 R] +/Limits [(Item.111) (Item.116)] >> endobj -1581 0 obj << -/Names [(Item.19) 720 0 R (Item.2) 699 0 R (Item.20) 721 0 R (Item.21) 722 0 R (Item.22) 741 0 R (Item.23) 742 0 R] -/Limits [(Item.19) (Item.23)] +1622 0 obj << +/Names [(Item.117) 1422 0 R (Item.118) 1427 0 R (Item.119) 1432 0 R (Item.12) 719 0 R (Item.13) 720 0 R (Item.14) 721 0 R] +/Limits [(Item.117) (Item.14)] >> endobj -1582 0 obj << -/Names [(Item.24) 743 0 R (Item.25) 744 0 R (Item.26) 745 0 R (Item.27) 746 0 R (Item.28) 747 0 R (Item.29) 748 0 R] -/Limits [(Item.24) (Item.29)] +1623 0 obj << +/Names [(Item.15) 722 0 R (Item.16) 723 0 R (Item.17) 724 0 R (Item.18) 725 0 R (Item.19) 726 0 R (Item.2) 704 0 R] +/Limits [(Item.15) (Item.2)] >> endobj -1583 0 obj << -/Names [(Item.3) 700 0 R (Item.30) 753 0 R (Item.31) 754 0 R (Item.32) 755 0 R (Item.33) 756 0 R (Item.34) 757 0 R] -/Limits [(Item.3) (Item.34)] +1624 0 obj << +/Names [(Item.20) 727 0 R (Item.21) 728 0 R (Item.22) 734 0 R (Item.23) 735 0 R (Item.24) 736 0 R (Item.25) 737 0 R] +/Limits [(Item.20) (Item.25)] >> endobj -1584 0 obj << -/Names [(Item.35) 789 0 R (Item.36) 1029 0 R (Item.37) 1030 0 R (Item.38) 1031 0 R (Item.39) 1078 0 R (Item.4) 701 0 R] -/Limits [(Item.35) (Item.4)] +1625 0 obj << +/Names [(Item.26) 738 0 R (Item.27) 739 0 R (Item.28) 751 0 R (Item.29) 752 0 R (Item.3) 705 0 R (Item.30) 753 0 R] +/Limits [(Item.26) (Item.30)] >> endobj -1585 0 obj << -/Names [(Item.40) 1084 0 R (Item.41) 1085 0 R (Item.42) 1086 0 R (Item.43) 1087 0 R (Item.44) 1088 0 R (Item.45) 1093 0 R] -/Limits [(Item.40) (Item.45)] +1626 0 obj << +/Names [(Item.31) 754 0 R (Item.32) 755 0 R (Item.33) 756 0 R (Item.34) 757 0 R (Item.35) 758 0 R (Item.36) 763 0 R] +/Limits [(Item.31) (Item.36)] >> endobj -1586 0 obj << -/Names [(Item.46) 1099 0 R (Item.47) 1100 0 R (Item.48) 1107 0 R (Item.49) 1130 0 R (Item.5) 702 0 R (Item.50) 1131 0 R] -/Limits [(Item.46) (Item.50)] +1627 0 obj << +/Names [(Item.37) 764 0 R (Item.38) 765 0 R (Item.39) 766 0 R (Item.4) 706 0 R (Item.40) 767 0 R (Item.41) 799 0 R] +/Limits [(Item.37) (Item.41)] >> endobj -1587 0 obj << -/Names [(Item.51) 1138 0 R (Item.52) 1139 0 R (Item.53) 1140 0 R (Item.54) 1152 0 R (Item.55) 1153 0 R (Item.56) 1154 0 R] -/Limits [(Item.51) (Item.56)] +1628 0 obj << +/Names [(Item.42) 1045 0 R (Item.43) 1046 0 R (Item.44) 1047 0 R (Item.45) 1095 0 R (Item.46) 1102 0 R (Item.47) 1107 0 R] +/Limits [(Item.42) (Item.47)] >> endobj -1588 0 obj << -/Names [(Item.57) 1155 0 R (Item.58) 1156 0 R (Item.59) 1157 0 R (Item.6) 703 0 R (Item.60) 1169 0 R (Item.61) 1170 0 R] -/Limits [(Item.57) (Item.61)] +1629 0 obj << +/Names [(Item.48) 1108 0 R (Item.49) 1109 0 R (Item.5) 707 0 R (Item.50) 1110 0 R (Item.51) 1111 0 R (Item.52) 1122 0 R] +/Limits [(Item.48) (Item.52)] >> endobj -1589 0 obj << -/Names [(Item.62) 1171 0 R (Item.63) 1172 0 R (Item.64) 1173 0 R (Item.65) 1174 0 R (Item.66) 1187 0 R (Item.67) 1202 0 R] -/Limits [(Item.62) (Item.67)] +1630 0 obj << +/Names [(Item.53) 1123 0 R (Item.54) 1124 0 R (Item.55) 1131 0 R (Item.56) 1154 0 R (Item.57) 1155 0 R (Item.58) 1162 0 R] +/Limits [(Item.53) (Item.58)] >> endobj -1590 0 obj << -/Names [(Item.68) 1203 0 R (Item.69) 1228 0 R (Item.7) 704 0 R (Item.70) 1229 0 R (Item.71) 1241 0 R (Item.72) 1247 0 R] -/Limits [(Item.68) (Item.72)] +1631 0 obj << +/Names [(Item.59) 1163 0 R (Item.6) 708 0 R (Item.60) 1164 0 R (Item.61) 1176 0 R (Item.62) 1177 0 R (Item.63) 1178 0 R] +/Limits [(Item.59) (Item.63)] >> endobj -1591 0 obj << -/Names [(Item.73) 1253 0 R (Item.74) 1259 0 R (Item.75) 1265 0 R (Item.76) 1266 0 R (Item.77) 1272 0 R (Item.78) 1273 0 R] -/Limits [(Item.73) (Item.78)] +1632 0 obj << +/Names [(Item.64) 1179 0 R (Item.65) 1180 0 R (Item.66) 1181 0 R (Item.67) 1182 0 R (Item.68) 1183 0 R (Item.69) 1184 0 R] +/Limits [(Item.64) (Item.69)] >> endobj -1592 0 obj << -/Names [(Item.79) 1284 0 R (Item.8) 705 0 R (Item.80) 1285 0 R (Item.81) 1286 0 R (Item.82) 1302 0 R (Item.83) 1303 0 R] -/Limits [(Item.79) (Item.83)] +1633 0 obj << +/Names [(Item.7) 709 0 R (Item.70) 1196 0 R (Item.71) 1197 0 R (Item.72) 1198 0 R (Item.73) 1199 0 R (Item.74) 1200 0 R] +/Limits [(Item.7) (Item.74)] >> endobj -1593 0 obj << -/Names [(Item.84) 1304 0 R (Item.85) 1305 0 R (Item.86) 1306 0 R (Item.87) 1307 0 R (Item.88) 1308 0 R (Item.89) 1309 0 R] -/Limits [(Item.84) (Item.89)] +1634 0 obj << +/Names [(Item.75) 1201 0 R (Item.76) 1214 0 R (Item.77) 1232 0 R (Item.78) 1233 0 R (Item.79) 1260 0 R (Item.8) 710 0 R] +/Limits [(Item.75) (Item.8)] >> endobj -1594 0 obj << -/Names [(Item.9) 710 0 R (Item.90) 1310 0 R (Item.91) 1320 0 R (Item.92) 1321 0 R (Item.93) 1326 0 R (Item.94) 1327 0 R] -/Limits [(Item.9) (Item.94)] +1635 0 obj << +/Names [(Item.80) 1261 0 R (Item.81) 1273 0 R (Item.82) 1279 0 R (Item.83) 1285 0 R (Item.84) 1291 0 R (Item.85) 1297 0 R] +/Limits [(Item.80) (Item.85)] >> endobj -1595 0 obj << -/Names [(Item.95) 1332 0 R (Item.96) 1333 0 R (Item.97) 1334 0 R (Item.98) 1364 0 R (Item.99) 1365 0 R (cite.2007c) 685 0 R] -/Limits [(Item.95) (cite.2007c)] +1636 0 obj << +/Names [(Item.86) 1298 0 R (Item.87) 1305 0 R (Item.88) 1306 0 R (Item.89) 1316 0 R (Item.9) 716 0 R (Item.90) 1317 0 R] +/Limits [(Item.86) (Item.90)] >> endobj -1596 0 obj << -/Names [(cite.2007d) 686 0 R (cite.BLACS) 657 0 R (cite.BLAS1) 638 0 R (cite.BLAS2) 639 0 R (cite.BLAS3) 640 0 R (cite.DesPat:11) 633 0 R] -/Limits [(cite.2007d) (cite.DesPat:11)] +1637 0 obj << +/Names [(Item.91) 1318 0 R (Item.92) 1334 0 R (Item.93) 1335 0 R (Item.94) 1336 0 R (Item.95) 1337 0 R (Item.96) 1338 0 R] +/Limits [(Item.91) (Item.96)] >> endobj -1597 0 obj << -/Names [(cite.DesignPatterns) 779 0 R (cite.KIVA3PSBLAS) 1517 0 R (cite.METIS) 672 0 R (cite.MPI1) 1522 0 R (cite.PARA04FOREST) 1515 0 R (cite.PSBLAS) 1516 0 R] -/Limits [(cite.DesignPatterns) (cite.PSBLAS)] +1638 0 obj << +/Names [(Item.97) 1339 0 R (Item.98) 1340 0 R (Item.99) 1341 0 R (cite.2007c) 690 0 R (cite.2007d) 691 0 R (cite.BLACS) 662 0 R] +/Limits [(Item.97) (cite.BLACS)] >> endobj -1598 0 obj << -/Names [(cite.RouXiaXu:11) 634 0 R (cite.Sparse03) 632 0 R (cite.machiels) 635 0 R (cite.metcalf) 631 0 R (cite.sblas02) 637 0 R (cite.sblas97) 636 0 R] -/Limits [(cite.RouXiaXu:11) (cite.sblas97)] +1639 0 obj << +/Names [(cite.BLAS1) 643 0 R (cite.BLAS2) 644 0 R (cite.BLAS3) 645 0 R (cite.DesPat:11) 638 0 R (cite.DesignPatterns) 789 0 R (cite.KIVA3PSBLAS) 1558 0 R] +/Limits [(cite.BLAS1) (cite.KIVA3PSBLAS)] >> endobj -1599 0 obj << -/Names [(descdata) 735 0 R (equation.1) 943 0 R (equation.2) 944 0 R (equation.3) 945 0 R (figure.1) 650 0 R (figure.10) 1408 0 R] -/Limits [(descdata) (figure.10)] +1640 0 obj << +/Names [(cite.METIS) 677 0 R (cite.MPI1) 1563 0 R (cite.PARA04FOREST) 1556 0 R (cite.PSBLAS) 1557 0 R (cite.RouXiaXu:11) 639 0 R (cite.Sparse03) 637 0 R] +/Limits [(cite.METIS) (cite.Sparse03)] >> endobj -1600 0 obj << -/Names [(figure.2) 680 0 R (figure.3) 758 0 R (figure.4) 780 0 R (figure.5) 801 0 R (figure.6) 815 0 R (figure.7) 1003 0 R] -/Limits [(figure.2) (figure.7)] +1641 0 obj << +/Names [(cite.machiels) 640 0 R (cite.metcalf) 636 0 R (cite.sblas02) 642 0 R (cite.sblas97) 641 0 R (descdata) 745 0 R (equation.1) 957 0 R] +/Limits [(cite.machiels) (equation.1)] >> endobj -1601 0 obj << -/Names [(figure.8) 1032 0 R (figure.9) 1407 0 R (page.1) 473 0 R (page.10) 740 0 R (page.100) 1359 0 R (page.101) 1363 0 R] -/Limits [(figure.8) (page.101)] +1642 0 obj << +/Names [(equation.2) 958 0 R (equation.3) 959 0 R (figure.1) 655 0 R (figure.10) 1441 0 R (figure.2) 685 0 R (figure.3) 768 0 R] +/Limits [(equation.2) (figure.3)] >> endobj -1602 0 obj << -/Names [(page.102) 1369 0 R (page.103) 1375 0 R (page.104) 1382 0 R (page.105) 1388 0 R (page.106) 1394 0 R (page.107) 1399 0 R] -/Limits [(page.102) (page.107)] +1643 0 obj << +/Names [(figure.4) 790 0 R (figure.5) 812 0 R (figure.6) 826 0 R (figure.7) 1018 0 R (figure.8) 1048 0 R (figure.9) 1440 0 R] +/Limits [(figure.4) (figure.9)] >> endobj -1603 0 obj << -/Names [(page.108) 1406 0 R (page.109) 1412 0 R (page.11) 752 0 R (page.110) 1417 0 R (page.111) 1421 0 R (page.112) 1425 0 R] -/Limits [(page.108) (page.112)] +1644 0 obj << +/Names [(page.1) 477 0 R (page.10) 750 0 R (page.100) 1387 0 R (page.101) 1391 0 R (page.102) 1395 0 R (page.103) 1401 0 R] +/Limits [(page.1) (page.103)] >> endobj -1604 0 obj << -/Names [(page.113) 1429 0 R (page.114) 1433 0 R (page.115) 1438 0 R (page.116) 1444 0 R (page.117) 1449 0 R (page.118) 1453 0 R] -/Limits [(page.113) (page.118)] +1645 0 obj << +/Names [(page.104) 1408 0 R (page.105) 1414 0 R (page.106) 1420 0 R (page.107) 1426 0 R (page.108) 1431 0 R (page.109) 1438 0 R] +/Limits [(page.104) (page.109)] >> endobj -1605 0 obj << -/Names [(page.119) 1458 0 R (page.12) 764 0 R (page.120) 1462 0 R (page.121) 1468 0 R (page.122) 1478 0 R (page.123) 1484 0 R] -/Limits [(page.119) (page.123)] +1646 0 obj << +/Names [(page.11) 762 0 R (page.110) 1445 0 R (page.111) 1449 0 R (page.112) 1453 0 R (page.113) 1457 0 R (page.114) 1461 0 R] +/Limits [(page.11) (page.114)] >> endobj -1606 0 obj << -/Names [(page.124) 1489 0 R (page.125) 1493 0 R (page.126) 1499 0 R (page.127) 1504 0 R (page.128) 1509 0 R (page.129) 1513 0 R] -/Limits [(page.124) (page.129)] +1647 0 obj << +/Names [(page.115) 1465 0 R (page.116) 1471 0 R (page.117) 1476 0 R (page.118) 1481 0 R (page.119) 1485 0 R (page.12) 774 0 R] +/Limits [(page.115) (page.12)] >> endobj -1607 0 obj << -/Names [(page.13) 768 0 R (page.130) 1521 0 R (page.14) 776 0 R (page.15) 784 0 R (page.16) 788 0 R (page.17) 793 0 R] -/Limits [(page.13) (page.17)] +1648 0 obj << +/Names [(page.120) 1490 0 R (page.121) 1494 0 R (page.122) 1501 0 R (page.123) 1510 0 R (page.124) 1518 0 R (page.125) 1523 0 R] +/Limits [(page.120) (page.125)] >> endobj -1608 0 obj << -/Names [(page.18) 799 0 R (page.19) 806 0 R (page.2) 483 0 R (page.20) 812 0 R (page.21) 819 0 R (page.22) 823 0 R] +1649 0 obj << +/Names [(page.126) 1527 0 R (page.127) 1535 0 R (page.128) 1542 0 R (page.129) 1546 0 R (page.13) 778 0 R (page.130) 1550 0 R] +/Limits [(page.126) (page.130)] +>> endobj +1650 0 obj << +/Names [(page.131) 1554 0 R (page.132) 1562 0 R (page.14) 786 0 R (page.15) 794 0 R (page.16) 798 0 R (page.17) 803 0 R] +/Limits [(page.131) (page.17)] +>> endobj +1651 0 obj << +/Names [(page.18) 809 0 R (page.19) 817 0 R (page.2) 487 0 R (page.20) 823 0 R (page.21) 830 0 R (page.22) 841 0 R] /Limits [(page.18) (page.22)] >> endobj -1609 0 obj << -/Names [(page.23) 834 0 R (page.24) 841 0 R (page.25) 851 0 R (page.26) 857 0 R (page.27) 867 0 R (page.28) 872 0 R] +1652 0 obj << +/Names [(page.23) 848 0 R (page.24) 858 0 R (page.25) 863 0 R (page.26) 874 0 R (page.27) 879 0 R (page.28) 886 0 R] /Limits [(page.23) (page.28)] >> endobj -1610 0 obj << -/Names [(page.29) 879 0 R (page.3) 663 0 R (page.30) 887 0 R (page.31) 895 0 R (page.32) 904 0 R (page.33) 909 0 R] +1653 0 obj << +/Names [(page.29) 894 0 R (page.3) 668 0 R (page.30) 902 0 R (page.31) 910 0 R (page.32) 916 0 R (page.33) 923 0 R] /Limits [(page.29) (page.33)] >> endobj -1611 0 obj << -/Names [(page.34) 916 0 R (page.35) 924 0 R (page.36) 931 0 R (page.37) 942 0 R (page.38) 958 0 R (page.39) 964 0 R] +1654 0 obj << +/Names [(page.34) 931 0 R (page.35) 938 0 R (page.36) 945 0 R (page.37) 956 0 R (page.38) 972 0 R (page.39) 978 0 R] /Limits [(page.34) (page.39)] >> endobj -1612 0 obj << -/Names [(page.4) 679 0 R (page.40) 975 0 R (page.41) 981 0 R (page.42) 986 0 R (page.43) 993 0 R (page.44) 1002 0 R] +1655 0 obj << +/Names [(page.4) 684 0 R (page.40) 989 0 R (page.41) 995 0 R (page.42) 1000 0 R (page.43) 1008 0 R (page.44) 1017 0 R] /Limits [(page.4) (page.44)] >> endobj -1613 0 obj << -/Names [(page.45) 1012 0 R (page.46) 1019 0 R (page.47) 1028 0 R (page.48) 1036 0 R (page.49) 1040 0 R (page.5) 692 0 R] +1656 0 obj << +/Names [(page.45) 1027 0 R (page.46) 1035 0 R (page.47) 1044 0 R (page.48) 1052 0 R (page.49) 1056 0 R (page.5) 697 0 R] /Limits [(page.45) (page.5)] >> endobj -1614 0 obj << -/Names [(page.50) 1052 0 R (page.51) 1057 0 R (page.52) 1063 0 R (page.53) 1068 0 R (page.54) 1072 0 R (page.55) 1077 0 R] +1657 0 obj << +/Names [(page.50) 1069 0 R (page.51) 1074 0 R (page.52) 1080 0 R (page.53) 1085 0 R (page.54) 1089 0 R (page.55) 1094 0 R] /Limits [(page.50) (page.55)] >> endobj -1615 0 obj << -/Names [(page.56) 1083 0 R (page.57) 1092 0 R (page.58) 1098 0 R (page.59) 1106 0 R (page.6) 696 0 R (page.60) 1113 0 R] +1658 0 obj << +/Names [(page.56) 1101 0 R (page.57) 1106 0 R (page.58) 1116 0 R (page.59) 1121 0 R (page.6) 701 0 R (page.60) 1130 0 R] /Limits [(page.56) (page.60)] >> endobj -1616 0 obj << -/Names [(page.61) 1118 0 R (page.62) 1125 0 R (page.63) 1129 0 R (page.64) 1137 0 R (page.65) 1147 0 R (page.66) 1151 0 R] +1659 0 obj << +/Names [(page.61) 1137 0 R (page.62) 1143 0 R (page.63) 1149 0 R (page.64) 1153 0 R (page.65) 1161 0 R (page.66) 1171 0 R] /Limits [(page.61) (page.66)] >> endobj -1617 0 obj << -/Names [(page.67) 1163 0 R (page.68) 1168 0 R (page.69) 1180 0 R (page.7) 709 0 R (page.70) 1186 0 R (page.71) 1192 0 R] +1660 0 obj << +/Names [(page.67) 1175 0 R (page.68) 1191 0 R (page.69) 1195 0 R (page.7) 715 0 R (page.70) 1207 0 R (page.71) 1213 0 R] /Limits [(page.67) (page.71)] >> endobj -1618 0 obj << -/Names [(page.72) 1197 0 R (page.73) 1201 0 R (page.74) 1209 0 R (page.75) 1214 0 R (page.76) 1218 0 R (page.77) 1223 0 R] +1661 0 obj << +/Names [(page.72) 1220 0 R (page.73) 1226 0 R (page.74) 1231 0 R (page.75) 1240 0 R (page.76) 1246 0 R (page.77) 1250 0 R] /Limits [(page.72) (page.77)] >> endobj -1619 0 obj << -/Names [(page.78) 1227 0 R (page.79) 1234 0 R (page.8) 728 0 R (page.80) 1240 0 R (page.81) 1246 0 R (page.82) 1252 0 R] +1662 0 obj << +/Names [(page.78) 1255 0 R (page.79) 1259 0 R (page.8) 733 0 R (page.80) 1267 0 R (page.81) 1272 0 R (page.82) 1278 0 R] /Limits [(page.78) (page.82)] >> endobj -1620 0 obj << -/Names [(page.83) 1258 0 R (page.84) 1264 0 R (page.85) 1271 0 R (page.86) 1279 0 R (page.87) 1283 0 R (page.88) 1293 0 R] +1663 0 obj << +/Names [(page.83) 1284 0 R (page.84) 1290 0 R (page.85) 1296 0 R (page.86) 1304 0 R (page.87) 1311 0 R (page.88) 1315 0 R] /Limits [(page.83) (page.88)] >> endobj -1621 0 obj << -/Names [(page.89) 1297 0 R (page.9) 734 0 R (page.90) 1301 0 R (page.91) 1314 0 R (page.92) 1319 0 R (page.93) 1325 0 R] +1664 0 obj << +/Names [(page.89) 1325 0 R (page.9) 744 0 R (page.90) 1329 0 R (page.91) 1333 0 R (page.92) 1347 0 R (page.93) 1351 0 R] /Limits [(page.89) (page.93)] >> endobj -1622 0 obj << -/Names [(page.94) 1331 0 R (page.95) 1338 0 R (page.96) 1342 0 R (page.97) 1346 0 R (page.98) 1351 0 R (page.99) 1355 0 R] +1665 0 obj << +/Names [(page.94) 1357 0 R (page.95) 1363 0 R (page.96) 1370 0 R (page.97) 1374 0 R (page.98) 1379 0 R (page.99) 1383 0 R] /Limits [(page.94) (page.99)] >> endobj -1623 0 obj << -/Names [(page.i) 533 0 R (page.ii) 585 0 R (page.iii) 611 0 R (page.iv) 615 0 R (precdata) 813 0 R (section*.1) 534 0 R] +1666 0 obj << +/Names [(page.i) 537 0 R (page.ii) 589 0 R (page.iii) 616 0 R (page.iv) 620 0 R (precdata) 824 0 R (section*.1) 538 0 R] /Limits [(page.i) (section*.1)] >> endobj -1624 0 obj << -/Names [(section*.10) 90 0 R (section*.11) 94 0 R (section*.12) 98 0 R (section*.13) 102 0 R (section*.14) 106 0 R (section*.15) 110 0 R] +1667 0 obj << +/Names [(section*.10) 94 0 R (section*.11) 98 0 R (section*.12) 102 0 R (section*.13) 106 0 R (section*.14) 110 0 R (section*.15) 114 0 R] /Limits [(section*.10) (section*.15)] >> endobj -1625 0 obj << -/Names [(section*.16) 126 0 R (section*.17) 807 0 R (section*.18) 130 0 R (section*.19) 134 0 R (section*.2) 46 0 R (section*.20) 150 0 R] +1668 0 obj << +/Names [(section*.16) 130 0 R (section*.17) 818 0 R (section*.18) 134 0 R (section*.19) 138 0 R (section*.2) 50 0 R (section*.20) 150 0 R] /Limits [(section*.16) (section*.20)] >> endobj -1626 0 obj << +1669 0 obj << /Names [(section*.21) 154 0 R (section*.22) 158 0 R (section*.23) 162 0 R (section*.24) 166 0 R (section*.25) 170 0 R (section*.26) 174 0 R] /Limits [(section*.21) (section*.26)] >> endobj -1627 0 obj << -/Names [(section*.27) 178 0 R (section*.28) 182 0 R (section*.29) 186 0 R (section*.3) 50 0 R (section*.30) 190 0 R (section*.31) 194 0 R] +1670 0 obj << +/Names [(section*.27) 178 0 R (section*.28) 182 0 R (section*.29) 186 0 R (section*.3) 54 0 R (section*.30) 190 0 R (section*.31) 194 0 R] /Limits [(section*.27) (section*.31)] >> endobj -1628 0 obj << -/Names [(section*.32) 202 0 R (section*.33) 206 0 R (section*.34) 210 0 R (section*.35) 214 0 R (section*.36) 222 0 R (section*.37) 226 0 R] +1671 0 obj << +/Names [(section*.32) 198 0 R (section*.33) 206 0 R (section*.34) 210 0 R (section*.35) 214 0 R (section*.36) 218 0 R (section*.37) 226 0 R] /Limits [(section*.32) (section*.37)] >> endobj -1629 0 obj << -/Names [(section*.38) 230 0 R (section*.39) 234 0 R (section*.4) 54 0 R (section*.40) 238 0 R (section*.41) 242 0 R (section*.42) 246 0 R] +1672 0 obj << +/Names [(section*.38) 230 0 R (section*.39) 234 0 R (section*.4) 58 0 R (section*.40) 238 0 R (section*.41) 242 0 R (section*.42) 246 0 R] /Limits [(section*.38) (section*.42)] >> endobj -1630 0 obj << +1673 0 obj << /Names [(section*.43) 250 0 R (section*.44) 254 0 R (section*.45) 258 0 R (section*.46) 262 0 R (section*.47) 266 0 R (section*.48) 270 0 R] /Limits [(section*.43) (section*.48)] >> endobj -1631 0 obj << -/Names [(section*.49) 274 0 R (section*.5) 58 0 R (section*.50) 278 0 R (section*.51) 282 0 R (section*.52) 286 0 R (section*.53) 290 0 R] +1674 0 obj << +/Names [(section*.49) 274 0 R (section*.5) 62 0 R (section*.50) 278 0 R (section*.51) 282 0 R (section*.52) 286 0 R (section*.53) 290 0 R] /Limits [(section*.49) (section*.53)] >> endobj -1632 0 obj << +1675 0 obj << /Names [(section*.54) 294 0 R (section*.55) 298 0 R (section*.56) 302 0 R (section*.57) 306 0 R (section*.58) 310 0 R (section*.59) 314 0 R] /Limits [(section*.54) (section*.59)] >> endobj -1633 0 obj << -/Names [(section*.6) 62 0 R (section*.60) 318 0 R (section*.61) 322 0 R (section*.62) 326 0 R (section*.63) 334 0 R (section*.64) 338 0 R] +1676 0 obj << +/Names [(section*.6) 66 0 R (section*.60) 318 0 R (section*.61) 322 0 R (section*.62) 326 0 R (section*.63) 330 0 R (section*.64) 338 0 R] /Limits [(section*.6) (section*.64)] >> endobj -1634 0 obj << -/Names [(section*.65) 342 0 R (section*.66) 346 0 R (section*.67) 350 0 R (section*.68) 354 0 R (section*.69) 358 0 R (section*.7) 66 0 R] +1677 0 obj << +/Names [(section*.65) 342 0 R (section*.66) 346 0 R (section*.67) 350 0 R (section*.68) 354 0 R (section*.69) 358 0 R (section*.7) 70 0 R] /Limits [(section*.65) (section*.7)] >> endobj -1635 0 obj << +1678 0 obj << /Names [(section*.70) 362 0 R (section*.71) 366 0 R (section*.72) 370 0 R (section*.73) 374 0 R (section*.74) 378 0 R (section*.75) 382 0 R] /Limits [(section*.70) (section*.75)] >> endobj -1636 0 obj << -/Names [(section*.76) 386 0 R (section*.77) 390 0 R (section*.78) 394 0 R (section*.79) 402 0 R (section*.8) 70 0 R (section*.80) 406 0 R] +1679 0 obj << +/Names [(section*.76) 386 0 R (section*.77) 390 0 R (section*.78) 394 0 R (section*.79) 398 0 R (section*.8) 74 0 R (section*.80) 406 0 R] /Limits [(section*.76) (section*.80)] >> endobj -1637 0 obj << -/Names [(section*.81) 410 0 R (section*.82) 414 0 R (section*.83) 422 0 R (section*.84) 426 0 R (section*.85) 430 0 R (section*.86) 434 0 R] +1680 0 obj << +/Names [(section*.81) 410 0 R (section*.82) 414 0 R (section*.83) 418 0 R (section*.84) 426 0 R (section*.85) 430 0 R (section*.86) 434 0 R] /Limits [(section*.81) (section*.86)] >> endobj -1638 0 obj << -/Names [(section*.87) 438 0 R (section*.88) 446 0 R (section*.89) 450 0 R (section*.9) 86 0 R (section*.90) 454 0 R (section*.91) 458 0 R] +1681 0 obj << +/Names [(section*.87) 438 0 R (section*.88) 442 0 R (section*.89) 450 0 R (section*.9) 90 0 R (section*.90) 454 0 R (section*.91) 458 0 R] /Limits [(section*.87) (section*.91)] >> endobj -1639 0 obj << -/Names [(section*.92) 466 0 R (section*.93) 1514 0 R (section.1) 10 0 R (section.10) 442 0 R (section.11) 462 0 R (section.2) 14 0 R] -/Limits [(section*.92) (section.2)] +1682 0 obj << +/Names [(section*.92) 462 0 R (section*.93) 470 0 R (section*.94) 1555 0 R (section.1) 10 0 R (section.10) 446 0 R (section.11) 466 0 R] +/Limits [(section*.92) (section.11)] >> endobj -1640 0 obj << -/Names [(section.3) 34 0 R (section.4) 146 0 R (section.5) 198 0 R (section.6) 218 0 R (section.7) 330 0 R (section.8) 398 0 R] -/Limits [(section.3) (section.8)] +1683 0 obj << +/Names [(section.2) 14 0 R (section.3) 38 0 R (section.4) 146 0 R (section.5) 202 0 R (section.6) 222 0 R (section.7) 334 0 R] +/Limits [(section.2) (section.7)] >> endobj -1641 0 obj << -/Names [(section.9) 418 0 R (spbasedata) 778 0 R (spdata) 777 0 R (subsection.2.1) 18 0 R (subsection.2.2) 22 0 R (subsection.2.3) 26 0 R] -/Limits [(section.9) (subsection.2.3)] +1684 0 obj << +/Names [(section.8) 402 0 R (section.9) 422 0 R (spbasedata) 788 0 R (spdata) 787 0 R (subsection.2.1) 18 0 R (subsection.2.2) 22 0 R] +/Limits [(section.8) (subsection.2.2)] >> endobj -1642 0 obj << -/Names [(subsection.2.4) 30 0 R (subsection.3.1) 38 0 R (subsection.3.2) 78 0 R (subsection.3.3) 118 0 R (subsection.3.4) 138 0 R (subsection.3.5) 142 0 R] -/Limits [(subsection.2.4) (subsection.3.5)] +1685 0 obj << +/Names [(subsection.2.3) 26 0 R (subsection.2.4) 34 0 R (subsection.3.1) 42 0 R (subsection.3.2) 82 0 R (subsection.3.3) 122 0 R (subsection.3.4) 142 0 R] +/Limits [(subsection.2.3) (subsection.3.4)] >> endobj -1643 0 obj << -/Names [(subsubsection.3.1.1) 42 0 R (subsubsection.3.1.2) 74 0 R (subsubsection.3.2.1) 82 0 R (subsubsection.3.2.2) 114 0 R (subsubsection.3.3.1) 122 0 R (table.1) 835 0 R] -/Limits [(subsubsection.3.1.1) (table.1)] +1686 0 obj << +/Names [(subsubsection.2.3.1) 30 0 R (subsubsection.3.1.1) 46 0 R (subsubsection.3.1.2) 78 0 R (subsubsection.3.2.1) 86 0 R (subsubsection.3.2.2) 118 0 R (subsubsection.3.3.1) 126 0 R] +/Limits [(subsubsection.2.3.1) (subsubsection.3.3.1)] >> endobj -1644 0 obj << -/Names [(table.10) 933 0 R (table.11) 946 0 R (table.12) 965 0 R (table.13) 994 0 R (table.14) 1020 0 R (table.15) 1053 0 R] -/Limits [(table.10) (table.15)] +1687 0 obj << +/Names [(table.1) 842 0 R (table.10) 939 0 R (table.11) 947 0 R (table.12) 960 0 R (table.13) 979 0 R (table.14) 1009 0 R] +/Limits [(table.1) (table.14)] >> endobj -1645 0 obj << -/Names [(table.16) 1064 0 R (table.2) 852 0 R (table.3) 868 0 R (table.4) 880 0 R (table.5) 888 0 R (table.6) 896 0 R] -/Limits [(table.16) (table.6)] +1688 0 obj << +/Names [(table.15) 1036 0 R (table.16) 1070 0 R (table.17) 1081 0 R (table.2) 859 0 R (table.3) 875 0 R (table.4) 887 0 R] +/Limits [(table.15) (table.4)] >> endobj -1646 0 obj << -/Names [(table.7) 905 0 R (table.8) 917 0 R (table.9) 925 0 R (title.0) 6 0 R (vdata) 800 0 R] -/Limits [(table.7) (vdata)] +1689 0 obj << +/Names [(table.5) 895 0 R (table.6) 903 0 R (table.7) 911 0 R (table.8) 924 0 R (table.9) 932 0 R (title.0) 6 0 R] +/Limits [(table.5) (title.0)] >> endobj -1647 0 obj << -/Kids [1577 0 R 1578 0 R 1579 0 R 1580 0 R 1581 0 R 1582 0 R] -/Limits [(Doc-Start) (Item.29)] +1690 0 obj << +/Names [(vbasedata) 811 0 R (vdata) 810 0 R] +/Limits [(vbasedata) (vdata)] >> endobj -1648 0 obj << -/Kids [1583 0 R 1584 0 R 1585 0 R 1586 0 R 1587 0 R 1588 0 R] -/Limits [(Item.3) (Item.61)] +1691 0 obj << +/Kids [1618 0 R 1619 0 R 1620 0 R 1621 0 R 1622 0 R 1623 0 R] +/Limits [(Doc-Start) (Item.2)] >> endobj -1649 0 obj << -/Kids [1589 0 R 1590 0 R 1591 0 R 1592 0 R 1593 0 R 1594 0 R] -/Limits [(Item.62) (Item.94)] +1692 0 obj << +/Kids [1624 0 R 1625 0 R 1626 0 R 1627 0 R 1628 0 R 1629 0 R] +/Limits [(Item.20) (Item.52)] >> endobj -1650 0 obj << -/Kids [1595 0 R 1596 0 R 1597 0 R 1598 0 R 1599 0 R 1600 0 R] -/Limits [(Item.95) (figure.7)] +1693 0 obj << +/Kids [1630 0 R 1631 0 R 1632 0 R 1633 0 R 1634 0 R 1635 0 R] +/Limits [(Item.53) (Item.85)] >> endobj -1651 0 obj << -/Kids [1601 0 R 1602 0 R 1603 0 R 1604 0 R 1605 0 R 1606 0 R] -/Limits [(figure.8) (page.129)] +1694 0 obj << +/Kids [1636 0 R 1637 0 R 1638 0 R 1639 0 R 1640 0 R 1641 0 R] +/Limits [(Item.86) (equation.1)] >> endobj -1652 0 obj << -/Kids [1607 0 R 1608 0 R 1609 0 R 1610 0 R 1611 0 R 1612 0 R] -/Limits [(page.13) (page.44)] +1695 0 obj << +/Kids [1642 0 R 1643 0 R 1644 0 R 1645 0 R 1646 0 R 1647 0 R] +/Limits [(equation.2) (page.12)] >> endobj -1653 0 obj << -/Kids [1613 0 R 1614 0 R 1615 0 R 1616 0 R 1617 0 R 1618 0 R] -/Limits [(page.45) (page.77)] +1696 0 obj << +/Kids [1648 0 R 1649 0 R 1650 0 R 1651 0 R 1652 0 R 1653 0 R] +/Limits [(page.120) (page.33)] >> endobj -1654 0 obj << -/Kids [1619 0 R 1620 0 R 1621 0 R 1622 0 R 1623 0 R 1624 0 R] -/Limits [(page.78) (section*.15)] +1697 0 obj << +/Kids [1654 0 R 1655 0 R 1656 0 R 1657 0 R 1658 0 R 1659 0 R] +/Limits [(page.34) (page.66)] >> endobj -1655 0 obj << -/Kids [1625 0 R 1626 0 R 1627 0 R 1628 0 R 1629 0 R 1630 0 R] -/Limits [(section*.16) (section*.48)] +1698 0 obj << +/Kids [1660 0 R 1661 0 R 1662 0 R 1663 0 R 1664 0 R 1665 0 R] +/Limits [(page.67) (page.99)] >> endobj -1656 0 obj << -/Kids [1631 0 R 1632 0 R 1633 0 R 1634 0 R 1635 0 R 1636 0 R] -/Limits [(section*.49) (section*.80)] +1699 0 obj << +/Kids [1666 0 R 1667 0 R 1668 0 R 1669 0 R 1670 0 R 1671 0 R] +/Limits [(page.i) (section*.37)] >> endobj -1657 0 obj << -/Kids [1637 0 R 1638 0 R 1639 0 R 1640 0 R 1641 0 R 1642 0 R] -/Limits [(section*.81) (subsection.3.5)] +1700 0 obj << +/Kids [1672 0 R 1673 0 R 1674 0 R 1675 0 R 1676 0 R 1677 0 R] +/Limits [(section*.38) (section*.7)] >> endobj -1658 0 obj << -/Kids [1643 0 R 1644 0 R 1645 0 R 1646 0 R] -/Limits [(subsubsection.3.1.1) (vdata)] +1701 0 obj << +/Kids [1678 0 R 1679 0 R 1680 0 R 1681 0 R 1682 0 R 1683 0 R] +/Limits [(section*.70) (section.7)] >> endobj -1659 0 obj << -/Kids [1647 0 R 1648 0 R 1649 0 R 1650 0 R 1651 0 R 1652 0 R] -/Limits [(Doc-Start) (page.44)] +1702 0 obj << +/Kids [1684 0 R 1685 0 R 1686 0 R 1687 0 R 1688 0 R 1689 0 R] +/Limits [(section.8) (title.0)] >> endobj -1660 0 obj << -/Kids [1653 0 R 1654 0 R 1655 0 R 1656 0 R 1657 0 R 1658 0 R] -/Limits [(page.45) (vdata)] +1703 0 obj << +/Kids [1690 0 R] +/Limits [(vbasedata) (vdata)] >> endobj -1661 0 obj << -/Kids [1659 0 R 1660 0 R] +1704 0 obj << +/Kids [1691 0 R 1692 0 R 1693 0 R 1694 0 R 1695 0 R 1696 0 R] +/Limits [(Doc-Start) (page.33)] +>> endobj +1705 0 obj << +/Kids [1697 0 R 1698 0 R 1699 0 R 1700 0 R 1701 0 R 1702 0 R] +/Limits [(page.34) (title.0)] +>> endobj +1706 0 obj << +/Kids [1703 0 R] +/Limits [(vbasedata) (vdata)] +>> endobj +1707 0 obj << +/Kids [1704 0 R 1705 0 R 1706 0 R] /Limits [(Doc-Start) (vdata)] >> endobj -1662 0 obj << -/Dests 1661 0 R +1708 0 obj << +/Dests 1707 0 R >> endobj -1663 0 obj << +1709 0 obj << /Type /Catalog -/Pages 1575 0 R -/Outlines 1576 0 R -/Names 1662 0 R +/Pages 1616 0 R +/Outlines 1617 0 R +/Names 1708 0 R /URI (http://ce.uniroma2.it/psblas) /PageMode/UseOutlines/PageLabels << /Nums [0 << /S /D >> 2 << /S /r >> 6 << /S /D >> ] >> -/OpenAction 469 0 R +/OpenAction 473 0 R >> endobj -1664 0 obj << - /Title (Parallel Sparse BLAS V. 3.0-beta) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id: userguide.tex 5441 2011-12-16 16:45:25Z sfilippo $) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.3)/Keywords() -/CreationDate (D:20120224171907+01'00') -/ModDate (D:20120224171907+01'00') +1710 0 obj << + /Title (Parallel Sparse BLAS V. 3.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id: userguide.tex 5897 2012-05-04 12:05:16Z sfilippo $) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.3)/Keywords() +/CreationDate (D:20120525120128+02'00') +/ModDate (D:20120525120128+02'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6) >> endobj xref -0 1665 +0 1711 0000000001 65535 f 0000000002 00000 f 0000000003 00000 f 0000000004 00000 f 0000000000 00000 f 0000000015 00000 n -0000011002 00000 n -0000926451 00000 n +0000011049 00000 n +0000958294 00000 n 0000000058 00000 n -0000000105 00000 n -0000090724 00000 n -0000926379 00000 n -0000000150 00000 n -0000000183 00000 n -0000102334 00000 n -0000926256 00000 n -0000000229 00000 n -0000000266 00000 n -0000112167 00000 n -0000926182 00000 n -0000000317 00000 n -0000000358 00000 n -0000120506 00000 n -0000926095 00000 n -0000000409 00000 n -0000000448 00000 n -0000135770 00000 n -0000926008 00000 n -0000000499 00000 n -0000000543 00000 n -0000148388 00000 n -0000925934 00000 n +0000000100 00000 n +0000091358 00000 n +0000958222 00000 n +0000000145 00000 n +0000000178 00000 n +0000102968 00000 n +0000958099 00000 n +0000000224 00000 n +0000000261 00000 n +0000112801 00000 n +0000958025 00000 n +0000000312 00000 n +0000000353 00000 n +0000121140 00000 n +0000957938 00000 n +0000000404 00000 n +0000000443 00000 n +0000136404 00000 n +0000957814 00000 n +0000000494 00000 n +0000000538 00000 n +0000153008 00000 n +0000957753 00000 n 0000000594 00000 n -0000000634 00000 n -0000157563 00000 n -0000925809 00000 n -0000000680 00000 n -0000000728 00000 n -0000157623 00000 n -0000925698 00000 n -0000000779 00000 n -0000000827 00000 n -0000177326 00000 n -0000925624 00000 n -0000000883 00000 n -0000000915 00000 n -0000177387 00000 n -0000925537 00000 n -0000000962 00000 n -0000001002 00000 n -0000177448 00000 n -0000925450 00000 n -0000001049 00000 n -0000001089 00000 n -0000177509 00000 n -0000925363 00000 n -0000001136 00000 n -0000001177 00000 n -0000182170 00000 n -0000925276 00000 n -0000001224 00000 n -0000001265 00000 n -0000182230 00000 n -0000925189 00000 n -0000001312 00000 n -0000001345 00000 n -0000182290 00000 n -0000925102 00000 n -0000001392 00000 n -0000001449 00000 n -0000182350 00000 n -0000925015 00000 n -0000001496 00000 n -0000001553 00000 n -0000193075 00000 n -0000924941 00000 n -0000001609 00000 n -0000001649 00000 n -0000193136 00000 n -0000924815 00000 n -0000001700 00000 n -0000001742 00000 n -0000198629 00000 n -0000924741 00000 n -0000001798 00000 n -0000001830 00000 n -0000198689 00000 n -0000924654 00000 n -0000001877 00000 n -0000001908 00000 n -0000198749 00000 n -0000924567 00000 n -0000001956 00000 n -0000001987 00000 n -0000202699 00000 n -0000924480 00000 n -0000002035 00000 n -0000002068 00000 n -0000202822 00000 n -0000924391 00000 n -0000002116 00000 n -0000002147 00000 n -0000206920 00000 n -0000924300 00000 n -0000002196 00000 n -0000002222 00000 n -0000206981 00000 n -0000924208 00000 n -0000002271 00000 n +0000000646 00000 n +0000153441 00000 n +0000957679 00000 n +0000000697 00000 n +0000000737 00000 n +0000162501 00000 n +0000957554 00000 n +0000000783 00000 n +0000000831 00000 n +0000162561 00000 n +0000957443 00000 n +0000000882 00000 n +0000000930 00000 n +0000181981 00000 n +0000957369 00000 n +0000000986 00000 n +0000001018 00000 n +0000182042 00000 n +0000957282 00000 n +0000001065 00000 n +0000001105 00000 n +0000182103 00000 n +0000957195 00000 n +0000001152 00000 n +0000001192 00000 n +0000182164 00000 n +0000957108 00000 n +0000001239 00000 n +0000001280 00000 n +0000186825 00000 n +0000957021 00000 n +0000001327 00000 n +0000001368 00000 n +0000186885 00000 n +0000956934 00000 n +0000001415 00000 n +0000001448 00000 n +0000186945 00000 n +0000956847 00000 n +0000001495 00000 n +0000001552 00000 n +0000187005 00000 n +0000956760 00000 n +0000001599 00000 n +0000001656 00000 n +0000197730 00000 n +0000956686 00000 n +0000001712 00000 n +0000001752 00000 n +0000197791 00000 n +0000956560 00000 n +0000001803 00000 n +0000001845 00000 n +0000203089 00000 n +0000956486 00000 n +0000001901 00000 n +0000001933 00000 n +0000203149 00000 n +0000956399 00000 n +0000001980 00000 n +0000002011 00000 n +0000203209 00000 n +0000956312 00000 n +0000002059 00000 n +0000002090 00000 n +0000207093 00000 n +0000956223 00000 n +0000002138 00000 n +0000002172 00000 n +0000207216 00000 n +0000956132 00000 n +0000002221 00000 n +0000002252 00000 n +0000211314 00000 n +0000956040 00000 n 0000002301 00000 n -0000207042 00000 n -0000924116 00000 n -0000002350 00000 n -0000002401 00000 n -0000215306 00000 n -0000924038 00000 n -0000002458 00000 n -0000002499 00000 n -0000215368 00000 n -0000923908 00000 n -0000002551 00000 n -0000002602 00000 n -0000215492 00000 n -0000923829 00000 n -0000002659 00000 n -0000002692 00000 n -0000215554 00000 n -0000923736 00000 n -0000002741 00000 n -0000002778 00000 n -0000219645 00000 n -0000923643 00000 n -0000002827 00000 n -0000002858 00000 n -0000219706 00000 n -0000923564 00000 n -0000002907 00000 n -0000002943 00000 n -0000219767 00000 n -0000923472 00000 n -0000002995 00000 n +0000002327 00000 n +0000211375 00000 n +0000955948 00000 n +0000002376 00000 n +0000002406 00000 n +0000211436 00000 n +0000955856 00000 n +0000002455 00000 n +0000002506 00000 n +0000219957 00000 n +0000955778 00000 n +0000002563 00000 n +0000002604 00000 n +0000220019 00000 n +0000955648 00000 n +0000002656 00000 n +0000002707 00000 n +0000223892 00000 n +0000955569 00000 n +0000002764 00000 n +0000002797 00000 n +0000223953 00000 n +0000955476 00000 n +0000002846 00000 n +0000002883 00000 n +0000224075 00000 n +0000955383 00000 n +0000002932 00000 n +0000002963 00000 n +0000224136 00000 n +0000955304 00000 n +0000003012 00000 n 0000003048 00000 n -0000226063 00000 n -0000923394 00000 n +0000226737 00000 n +0000955226 00000 n 0000003100 00000 n -0000003146 00000 n -0000226606 00000 n -0000923264 00000 n -0000003193 00000 n -0000003237 00000 n -0000235308 00000 n -0000923185 00000 n -0000003286 00000 n -0000003320 00000 n -0000248153 00000 n -0000923092 00000 n -0000003369 00000 n -0000003401 00000 n -0000259035 00000 n -0000922999 00000 n -0000003450 00000 n -0000003483 00000 n -0000268003 00000 n -0000922906 00000 n -0000003532 00000 n -0000003565 00000 n -0000275308 00000 n -0000922813 00000 n -0000003614 00000 n -0000003648 00000 n -0000282980 00000 n -0000922720 00000 n -0000003697 00000 n -0000003730 00000 n -0000291341 00000 n -0000922627 00000 n -0000003779 00000 n -0000003813 00000 n -0000299992 00000 n -0000922534 00000 n -0000003862 00000 n -0000003896 00000 n -0000307126 00000 n -0000922441 00000 n -0000003945 00000 n -0000003979 00000 n -0000313426 00000 n -0000922348 00000 n -0000004028 00000 n -0000004061 00000 n -0000321906 00000 n -0000922255 00000 n -0000004110 00000 n -0000004141 00000 n -0000338173 00000 n -0000922176 00000 n -0000004190 00000 n -0000004221 00000 n -0000354149 00000 n -0000922046 00000 n -0000004268 00000 n -0000004312 00000 n -0000361045 00000 n -0000921967 00000 n -0000004361 00000 n -0000004392 00000 n -0000381402 00000 n -0000921874 00000 n -0000004441 00000 n -0000004472 00000 n -0000405807 00000 n -0000921781 00000 n -0000004521 00000 n -0000004554 00000 n -0000415411 00000 n -0000921702 00000 n -0000004603 00000 n -0000004637 00000 n -0000424711 00000 n -0000921571 00000 n -0000004684 00000 n -0000004730 00000 n -0000424774 00000 n -0000921492 00000 n -0000004779 00000 n -0000004811 00000 n -0000449533 00000 n -0000921399 00000 n -0000004860 00000 n -0000004892 00000 n -0000453918 00000 n -0000921306 00000 n -0000004941 00000 n -0000004973 00000 n -0000458009 00000 n -0000921213 00000 n -0000005022 00000 n -0000005054 00000 n -0000460843 00000 n -0000921120 00000 n -0000005103 00000 n -0000005136 00000 n -0000467507 00000 n -0000921027 00000 n -0000005185 00000 n -0000005220 00000 n -0000475219 00000 n -0000920934 00000 n -0000005269 00000 n -0000005301 00000 n -0000483007 00000 n -0000920841 00000 n -0000005350 00000 n -0000005382 00000 n -0000494166 00000 n -0000920748 00000 n -0000005431 00000 n -0000005463 00000 n -0000500971 00000 n -0000920655 00000 n -0000005512 00000 n -0000005545 00000 n -0000505696 00000 n -0000920562 00000 n -0000005594 00000 n -0000005625 00000 n -0000510954 00000 n -0000920469 00000 n -0000005674 00000 n -0000005706 00000 n -0000517734 00000 n -0000920376 00000 n -0000005755 00000 n -0000005787 00000 n -0000522227 00000 n -0000920283 00000 n -0000005836 00000 n -0000005868 00000 n -0000525699 00000 n -0000920190 00000 n -0000005917 00000 n -0000005950 00000 n -0000529556 00000 n -0000920097 00000 n -0000005999 00000 n -0000006030 00000 n -0000536713 00000 n -0000920004 00000 n -0000006079 00000 n -0000006123 00000 n -0000544203 00000 n -0000919911 00000 n -0000006172 00000 n -0000006216 00000 n -0000548079 00000 n -0000919818 00000 n -0000006265 00000 n -0000006303 00000 n -0000553720 00000 n -0000919725 00000 n -0000006352 00000 n -0000006393 00000 n -0000557627 00000 n -0000919632 00000 n -0000006442 00000 n -0000006480 00000 n -0000563252 00000 n -0000919539 00000 n -0000006529 00000 n -0000006570 00000 n -0000567722 00000 n -0000919446 00000 n -0000006619 00000 n -0000006661 00000 n -0000572095 00000 n -0000919353 00000 n -0000006710 00000 n -0000006751 00000 n -0000578600 00000 n -0000919260 00000 n -0000006800 00000 n -0000006839 00000 n -0000587909 00000 n -0000919167 00000 n -0000006888 00000 n -0000006921 00000 n -0000594095 00000 n -0000919088 00000 n -0000006970 00000 n -0000007007 00000 n -0000602673 00000 n -0000918957 00000 n -0000007054 00000 n -0000007105 00000 n -0000608640 00000 n -0000918878 00000 n -0000007154 00000 n -0000007185 00000 n -0000613859 00000 n -0000918785 00000 n -0000007234 00000 n -0000007265 00000 n -0000618784 00000 n -0000918692 00000 n -0000007314 00000 n -0000007345 00000 n -0000621581 00000 n -0000918599 00000 n -0000007394 00000 n -0000007435 00000 n -0000625024 00000 n -0000918506 00000 n -0000007484 00000 n -0000007522 00000 n -0000626649 00000 n -0000918413 00000 n -0000007571 00000 n -0000007603 00000 n -0000628541 00000 n -0000918320 00000 n -0000007652 00000 n -0000007686 00000 n -0000630319 00000 n -0000918227 00000 n -0000007735 00000 n -0000007767 00000 n -0000635271 00000 n -0000918134 00000 n -0000007816 00000 n -0000007848 00000 n -0000640862 00000 n -0000918041 00000 n -0000007897 00000 n -0000007927 00000 n -0000646618 00000 n -0000917948 00000 n -0000007976 00000 n -0000008006 00000 n -0000652351 00000 n -0000917855 00000 n -0000008055 00000 n -0000008085 00000 n -0000658199 00000 n -0000917762 00000 n -0000008134 00000 n -0000008164 00000 n -0000664020 00000 n -0000917669 00000 n -0000008213 00000 n -0000008243 00000 n -0000669960 00000 n -0000917576 00000 n -0000008292 00000 n -0000008322 00000 n -0000675820 00000 n -0000917497 00000 n -0000008371 00000 n -0000008401 00000 n -0000683066 00000 n -0000917367 00000 n -0000008448 00000 n -0000008484 00000 n -0000690757 00000 n -0000917288 00000 n -0000008533 00000 n -0000008567 00000 n -0000692327 00000 n -0000917195 00000 n -0000008616 00000 n -0000008648 00000 n -0000693996 00000 n -0000917102 00000 n -0000008697 00000 n -0000008743 00000 n -0000696126 00000 n -0000917023 00000 n -0000008792 00000 n -0000008835 00000 n -0000697072 00000 n -0000916893 00000 n -0000008882 00000 n -0000008913 00000 n -0000702093 00000 n -0000916789 00000 n -0000008962 00000 n -0000008992 00000 n -0000707542 00000 n -0000916710 00000 n -0000009041 00000 n -0000009072 00000 n -0000711368 00000 n -0000916617 00000 n -0000009121 00000 n -0000009158 00000 n -0000715051 00000 n -0000916524 00000 n -0000009207 00000 n -0000009245 00000 n -0000719353 00000 n -0000916445 00000 n -0000009294 00000 n -0000009332 00000 n -0000720685 00000 n -0000916315 00000 n -0000009380 00000 n -0000009426 00000 n -0000726084 00000 n -0000916236 00000 n -0000009475 00000 n -0000009510 00000 n -0000731991 00000 n -0000916143 00000 n -0000009559 00000 n -0000009593 00000 n -0000737744 00000 n -0000916050 00000 n -0000009642 00000 n -0000009677 00000 n -0000740332 00000 n -0000915971 00000 n -0000009726 00000 n -0000009762 00000 n -0000741350 00000 n -0000915855 00000 n -0000009810 00000 n -0000009850 00000 n -0000749299 00000 n -0000915790 00000 n +0000003153 00000 n +0000227429 00000 n +0000955096 00000 n +0000003200 00000 n +0000003244 00000 n +0000236091 00000 n +0000955017 00000 n +0000003293 00000 n +0000003327 00000 n +0000248929 00000 n +0000954924 00000 n +0000003376 00000 n +0000003408 00000 n +0000259759 00000 n +0000954831 00000 n +0000003457 00000 n +0000003490 00000 n +0000268734 00000 n +0000954738 00000 n +0000003539 00000 n +0000003572 00000 n +0000276055 00000 n +0000954645 00000 n +0000003621 00000 n +0000003655 00000 n +0000283716 00000 n +0000954552 00000 n +0000003704 00000 n +0000003737 00000 n +0000292039 00000 n +0000954459 00000 n +0000003786 00000 n +0000003820 00000 n +0000300705 00000 n +0000954366 00000 n +0000003869 00000 n +0000003903 00000 n +0000307862 00000 n +0000954273 00000 n +0000003952 00000 n +0000003986 00000 n +0000314155 00000 n +0000954180 00000 n +0000004035 00000 n +0000004068 00000 n +0000320455 00000 n +0000954087 00000 n +0000004117 00000 n +0000004150 00000 n +0000328937 00000 n +0000953994 00000 n +0000004199 00000 n +0000004230 00000 n +0000345214 00000 n +0000953915 00000 n +0000004279 00000 n +0000004310 00000 n +0000361201 00000 n +0000953785 00000 n +0000004357 00000 n +0000004401 00000 n +0000368645 00000 n +0000953706 00000 n +0000004450 00000 n +0000004481 00000 n +0000389674 00000 n +0000953613 00000 n +0000004530 00000 n +0000004561 00000 n +0000414657 00000 n +0000953520 00000 n +0000004610 00000 n +0000004643 00000 n +0000424374 00000 n +0000953441 00000 n +0000004692 00000 n +0000004726 00000 n +0000433684 00000 n +0000953310 00000 n +0000004773 00000 n +0000004819 00000 n +0000433747 00000 n +0000953231 00000 n +0000004868 00000 n +0000004900 00000 n +0000462764 00000 n +0000953138 00000 n +0000004949 00000 n +0000004981 00000 n +0000470907 00000 n +0000953045 00000 n +0000005030 00000 n +0000005062 00000 n +0000475000 00000 n +0000952952 00000 n +0000005111 00000 n +0000005143 00000 n +0000477833 00000 n +0000952859 00000 n +0000005192 00000 n +0000005225 00000 n +0000484510 00000 n +0000952766 00000 n +0000005274 00000 n +0000005309 00000 n +0000492218 00000 n +0000952673 00000 n +0000005358 00000 n +0000005390 00000 n +0000499622 00000 n +0000952580 00000 n +0000005439 00000 n +0000005471 00000 n +0000514228 00000 n +0000952487 00000 n +0000005520 00000 n +0000005552 00000 n +0000521017 00000 n +0000952394 00000 n +0000005601 00000 n +0000005634 00000 n +0000525759 00000 n +0000952301 00000 n +0000005683 00000 n +0000005714 00000 n +0000531683 00000 n +0000952208 00000 n +0000005763 00000 n +0000005795 00000 n +0000539263 00000 n +0000952115 00000 n +0000005844 00000 n +0000005876 00000 n +0000546983 00000 n +0000952022 00000 n +0000005925 00000 n +0000005957 00000 n +0000551124 00000 n +0000951929 00000 n +0000006006 00000 n +0000006039 00000 n +0000554980 00000 n +0000951836 00000 n +0000006088 00000 n +0000006119 00000 n +0000562143 00000 n +0000951743 00000 n +0000006168 00000 n +0000006212 00000 n +0000569633 00000 n +0000951650 00000 n +0000006261 00000 n +0000006305 00000 n +0000573502 00000 n +0000951557 00000 n +0000006354 00000 n +0000006392 00000 n +0000579145 00000 n +0000951464 00000 n +0000006441 00000 n +0000006482 00000 n +0000583047 00000 n +0000951371 00000 n +0000006531 00000 n +0000006569 00000 n +0000588699 00000 n +0000951278 00000 n +0000006618 00000 n +0000006659 00000 n +0000593188 00000 n +0000951185 00000 n +0000006708 00000 n +0000006750 00000 n +0000597558 00000 n +0000951092 00000 n +0000006799 00000 n +0000006840 00000 n +0000604059 00000 n +0000950999 00000 n +0000006889 00000 n +0000006928 00000 n +0000613379 00000 n +0000950906 00000 n +0000006977 00000 n +0000007010 00000 n +0000619577 00000 n +0000950827 00000 n +0000007059 00000 n +0000007096 00000 n +0000628125 00000 n +0000950696 00000 n +0000007143 00000 n +0000007194 00000 n +0000634085 00000 n +0000950617 00000 n +0000007243 00000 n +0000007274 00000 n +0000639294 00000 n +0000950524 00000 n +0000007323 00000 n +0000007354 00000 n +0000644222 00000 n +0000950431 00000 n +0000007403 00000 n +0000007434 00000 n +0000647015 00000 n +0000950338 00000 n +0000007483 00000 n +0000007524 00000 n +0000650453 00000 n +0000950245 00000 n +0000007573 00000 n +0000007611 00000 n +0000652099 00000 n +0000950152 00000 n +0000007660 00000 n +0000007692 00000 n +0000654001 00000 n +0000950059 00000 n +0000007741 00000 n +0000007775 00000 n +0000655777 00000 n +0000949966 00000 n +0000007824 00000 n +0000007856 00000 n +0000660748 00000 n +0000949873 00000 n +0000007905 00000 n +0000007937 00000 n +0000666392 00000 n +0000949780 00000 n +0000007986 00000 n +0000008016 00000 n +0000672116 00000 n +0000949687 00000 n +0000008065 00000 n +0000008095 00000 n +0000677870 00000 n +0000949594 00000 n +0000008144 00000 n +0000008174 00000 n +0000683682 00000 n +0000949501 00000 n +0000008223 00000 n +0000008253 00000 n +0000689526 00000 n +0000949408 00000 n +0000008302 00000 n +0000008332 00000 n +0000695445 00000 n +0000949315 00000 n +0000008381 00000 n +0000008411 00000 n +0000701316 00000 n +0000949236 00000 n +0000008460 00000 n +0000008490 00000 n +0000708538 00000 n +0000949106 00000 n +0000008537 00000 n +0000008573 00000 n +0000716216 00000 n +0000949027 00000 n +0000008622 00000 n +0000008656 00000 n +0000717783 00000 n +0000948934 00000 n +0000008705 00000 n +0000008737 00000 n +0000719450 00000 n +0000948841 00000 n +0000008786 00000 n +0000008832 00000 n +0000721584 00000 n +0000948762 00000 n +0000008881 00000 n +0000008924 00000 n +0000722529 00000 n +0000948632 00000 n +0000008971 00000 n +0000009002 00000 n +0000727536 00000 n +0000948528 00000 n +0000009051 00000 n +0000009081 00000 n +0000733005 00000 n +0000948449 00000 n +0000009130 00000 n +0000009161 00000 n +0000736824 00000 n +0000948356 00000 n +0000009210 00000 n +0000009247 00000 n +0000740505 00000 n +0000948263 00000 n +0000009296 00000 n +0000009334 00000 n +0000744814 00000 n +0000948184 00000 n +0000009383 00000 n +0000009421 00000 n +0000746144 00000 n +0000948054 00000 n +0000009469 00000 n +0000009515 00000 n +0000751555 00000 n +0000947975 00000 n +0000009564 00000 n +0000009599 00000 n +0000759897 00000 n +0000947882 00000 n +0000009648 00000 n +0000009682 00000 n +0000766956 00000 n +0000947789 00000 n +0000009731 00000 n +0000009766 00000 n +0000769551 00000 n +0000947710 00000 n +0000009815 00000 n +0000009851 00000 n +0000770579 00000 n +0000947594 00000 n 0000009899 00000 n -0000009925 00000 n -0000010761 00000 n -0000011061 00000 n -0000009977 00000 n -0000010880 00000 n -0000010941 00000 n -0000910165 00000 n -0000911902 00000 n -0000910019 00000 n -0000910748 00000 n -0000912339 00000 n -0000011488 00000 n -0000011307 00000 n -0000011171 00000 n -0000011426 00000 n -0000029928 00000 n -0000030079 00000 n -0000030229 00000 n -0000030386 00000 n -0000030543 00000 n -0000030700 00000 n -0000030857 00000 n -0000031008 00000 n -0000031165 00000 n -0000031326 00000 n -0000031479 00000 n -0000031632 00000 n -0000031785 00000 n -0000031937 00000 n -0000032088 00000 n -0000032241 00000 n -0000032394 00000 n -0000032555 00000 n -0000032711 00000 n -0000032873 00000 n -0000033026 00000 n -0000033180 00000 n -0000033334 00000 n -0000033488 00000 n -0000033642 00000 n -0000033796 00000 n -0000033949 00000 n -0000034111 00000 n -0000034268 00000 n -0000034430 00000 n -0000034584 00000 n -0000034738 00000 n -0000034892 00000 n -0000035049 00000 n -0000035205 00000 n -0000035356 00000 n -0000035510 00000 n -0000035664 00000 n -0000035818 00000 n -0000035972 00000 n -0000036126 00000 n -0000036279 00000 n -0000036433 00000 n -0000036587 00000 n -0000036741 00000 n -0000059202 00000 n -0000037016 00000 n -0000029437 00000 n -0000011559 00000 n -0000036894 00000 n -0000036955 00000 n -0000059354 00000 n -0000059508 00000 n -0000059660 00000 n -0000059814 00000 n -0000059968 00000 n -0000060122 00000 n -0000060275 00000 n -0000060426 00000 n -0000060579 00000 n -0000060733 00000 n -0000060887 00000 n -0000061041 00000 n -0000061195 00000 n -0000061349 00000 n -0000061503 00000 n -0000061657 00000 n -0000061811 00000 n -0000061965 00000 n -0000062119 00000 n -0000062272 00000 n -0000062425 00000 n -0000062578 00000 n -0000062732 00000 n -0000062886 00000 n -0000063040 00000 n -0000063193 00000 n -0000063346 00000 n -0000063498 00000 n -0000063652 00000 n -0000063806 00000 n -0000063959 00000 n -0000064111 00000 n -0000064265 00000 n -0000064419 00000 n -0000064573 00000 n -0000064725 00000 n -0000064879 00000 n -0000065033 00000 n -0000065186 00000 n -0000065339 00000 n -0000065492 00000 n -0000065646 00000 n -0000065800 00000 n -0000065953 00000 n -0000066105 00000 n -0000066258 00000 n -0000076331 00000 n -0000066473 00000 n -0000058695 00000 n -0000037113 00000 n -0000066411 00000 n -0000076485 00000 n -0000076638 00000 n -0000076791 00000 n -0000076944 00000 n -0000077098 00000 n -0000077249 00000 n -0000077402 00000 n -0000077556 00000 n -0000077709 00000 n -0000077863 00000 n -0000078014 00000 n -0000078166 00000 n -0000078320 00000 n -0000078473 00000 n -0000078627 00000 n -0000078780 00000 n -0000078932 00000 n -0000079085 00000 n -0000079239 00000 n -0000079393 00000 n -0000079547 00000 n -0000079698 00000 n -0000079913 00000 n -0000076016 00000 n -0000066557 00000 n -0000079852 00000 n -0000080316 00000 n -0000080135 00000 n -0000079997 00000 n -0000080254 00000 n -0000089175 00000 n -0000089329 00000 n -0000089485 00000 n -0000089642 00000 n -0000089801 00000 n -0000089957 00000 n -0000090111 00000 n -0000090265 00000 n -0000090418 00000 n -0000090571 00000 n -0000090784 00000 n -0000088964 00000 n -0000080387 00000 n -0000911756 00000 n -0000912457 00000 n -0000770370 00000 n -0000766525 00000 n -0000765904 00000 n -0000770433 00000 n -0000770307 00000 n -0000766338 00000 n -0000766400 00000 n -0000770244 00000 n -0000766152 00000 n -0000766214 00000 n -0000101879 00000 n -0000102029 00000 n -0000102182 00000 n -0000096676 00000 n -0000111648 00000 n -0000102455 00000 n -0000096521 00000 n -0000090881 00000 n -0000910311 00000 n -0000102395 00000 n -0000097886 00000 n -0000098132 00000 n -0000098179 00000 n -0000098572 00000 n -0000098593 00000 n -0000098900 00000 n -0000766276 00000 n -0000111799 00000 n -0000111953 00000 n -0000112351 00000 n -0000111493 00000 n -0000102580 00000 n -0000112106 00000 n -0000912048 00000 n -0000911036 00000 n -0000910603 00000 n -0000911468 00000 n -0000910893 00000 n -0000112227 00000 n -0000911179 00000 n -0000112289 00000 n -0000770181 00000 n -0000120076 00000 n -0000120229 00000 n -0000118105 00000 n +0000009939 00000 n +0000779204 00000 n +0000947529 00000 n +0000009988 00000 n +0000010014 00000 n +0000010808 00000 n +0000011108 00000 n +0000010066 00000 n +0000010927 00000 n +0000010988 00000 n +0000941883 00000 n +0000943620 00000 n +0000941737 00000 n +0000942466 00000 n +0000944057 00000 n +0000011535 00000 n +0000011354 00000 n +0000011218 00000 n +0000011473 00000 n +0000029954 00000 n +0000030105 00000 n +0000030255 00000 n +0000030412 00000 n +0000030569 00000 n +0000030726 00000 n +0000030888 00000 n +0000031045 00000 n +0000031196 00000 n +0000031352 00000 n +0000031514 00000 n +0000031667 00000 n +0000031820 00000 n +0000031972 00000 n +0000032124 00000 n +0000032277 00000 n +0000032430 00000 n +0000032583 00000 n +0000032745 00000 n +0000032902 00000 n +0000033064 00000 n +0000033217 00000 n +0000033371 00000 n +0000033525 00000 n +0000033679 00000 n +0000033833 00000 n +0000033986 00000 n +0000034140 00000 n +0000034302 00000 n +0000034459 00000 n +0000034620 00000 n +0000034772 00000 n +0000034926 00000 n +0000035080 00000 n +0000035236 00000 n +0000035387 00000 n +0000035541 00000 n +0000035695 00000 n +0000035849 00000 n +0000036003 00000 n +0000036157 00000 n +0000036310 00000 n +0000036464 00000 n +0000036618 00000 n +0000036772 00000 n +0000059223 00000 n +0000037047 00000 n +0000029463 00000 n +0000011606 00000 n +0000036925 00000 n +0000036986 00000 n +0000059377 00000 n +0000059529 00000 n +0000059683 00000 n +0000059835 00000 n +0000059989 00000 n +0000060143 00000 n +0000060296 00000 n +0000060449 00000 n +0000060600 00000 n +0000060753 00000 n +0000060907 00000 n +0000061061 00000 n +0000061215 00000 n +0000061369 00000 n +0000061523 00000 n +0000061677 00000 n +0000061831 00000 n +0000061985 00000 n +0000062139 00000 n +0000062292 00000 n +0000062445 00000 n +0000062598 00000 n +0000062752 00000 n +0000062906 00000 n +0000063060 00000 n +0000063213 00000 n +0000063366 00000 n +0000063518 00000 n +0000063672 00000 n +0000063826 00000 n +0000063980 00000 n +0000064133 00000 n +0000064285 00000 n +0000064439 00000 n +0000064593 00000 n +0000064747 00000 n +0000064899 00000 n +0000065053 00000 n +0000065206 00000 n +0000065359 00000 n +0000065512 00000 n +0000065666 00000 n +0000065820 00000 n +0000065973 00000 n +0000066125 00000 n +0000066278 00000 n +0000076811 00000 n +0000066493 00000 n +0000058716 00000 n +0000037144 00000 n +0000066431 00000 n +0000076965 00000 n +0000077118 00000 n +0000077272 00000 n +0000077424 00000 n +0000077578 00000 n +0000077731 00000 n +0000077881 00000 n +0000078035 00000 n +0000078188 00000 n +0000078342 00000 n +0000078496 00000 n +0000078645 00000 n +0000078799 00000 n +0000078952 00000 n +0000079106 00000 n +0000079259 00000 n +0000079413 00000 n +0000079565 00000 n +0000079719 00000 n +0000079873 00000 n +0000080027 00000 n +0000080181 00000 n +0000080332 00000 n +0000080547 00000 n +0000076488 00000 n +0000066577 00000 n +0000080486 00000 n +0000080950 00000 n +0000080769 00000 n +0000080631 00000 n +0000080888 00000 n +0000089809 00000 n +0000089963 00000 n +0000090119 00000 n +0000090276 00000 n +0000090435 00000 n +0000090591 00000 n +0000090745 00000 n +0000090899 00000 n +0000091052 00000 n +0000091205 00000 n +0000091418 00000 n +0000089598 00000 n +0000081021 00000 n +0000943474 00000 n +0000944175 00000 n +0000801982 00000 n +0000798137 00000 n +0000797516 00000 n +0000802045 00000 n +0000801919 00000 n +0000797950 00000 n +0000798012 00000 n +0000801856 00000 n +0000797764 00000 n +0000797826 00000 n +0000102513 00000 n +0000102663 00000 n +0000102816 00000 n +0000097310 00000 n +0000112282 00000 n +0000103089 00000 n +0000097155 00000 n +0000091515 00000 n +0000942029 00000 n +0000103029 00000 n +0000098520 00000 n +0000098766 00000 n +0000098813 00000 n +0000099206 00000 n +0000099227 00000 n +0000099534 00000 n +0000797888 00000 n +0000112433 00000 n +0000112587 00000 n +0000112985 00000 n +0000112127 00000 n +0000103214 00000 n +0000112740 00000 n +0000943766 00000 n +0000942754 00000 n +0000942321 00000 n +0000943186 00000 n +0000942611 00000 n +0000112861 00000 n +0000942897 00000 n +0000112923 00000 n +0000801793 00000 n +0000120710 00000 n +0000120863 00000 n +0000118739 00000 n +0000121201 00000 n +0000118592 00000 n +0000113185 00000 n +0000121016 00000 n +0000121078 00000 n +0000120448 00000 n 0000120567 00000 n -0000117958 00000 n -0000112551 00000 n -0000120382 00000 n -0000120444 00000 n -0000119814 00000 n -0000119933 00000 n -0000119980 00000 n -0000120054 00000 n -0000766090 00000 n -0000766028 00000 n -0000126399 00000 n -0000126550 00000 n -0000126763 00000 n -0000126252 00000 n -0000120731 00000 n -0000126702 00000 n -0000136327 00000 n -0000135589 00000 n -0000126873 00000 n -0000135708 00000 n -0000910457 00000 n -0000135831 00000 n -0000135893 00000 n -0000135955 00000 n -0000136017 00000 n -0000136079 00000 n -0000136141 00000 n -0000136203 00000 n -0000136265 00000 n -0000144383 00000 n -0000143414 00000 n -0000136462 00000 n -0000143533 00000 n -0000143594 00000 n -0000143655 00000 n -0000143716 00000 n -0000143777 00000 n -0000143837 00000 n -0000143898 00000 n -0000143959 00000 n -0000144019 00000 n -0000144080 00000 n -0000144141 00000 n -0000144202 00000 n -0000144263 00000 n -0000144323 00000 n -0000912575 00000 n -0000148169 00000 n -0000148449 00000 n -0000148030 00000 n -0000144467 00000 n -0000148326 00000 n -0000157193 00000 n -0000157345 00000 n -0000157745 00000 n -0000157046 00000 n -0000148559 00000 n -0000157502 00000 n -0000157683 00000 n -0000164774 00000 n -0000165484 00000 n -0000164635 00000 n -0000157868 00000 n -0000164926 00000 n -0000164988 00000 n -0000165050 00000 n -0000165112 00000 n -0000165174 00000 n -0000165236 00000 n -0000165298 00000 n -0000165360 00000 n -0000165422 00000 n -0000171481 00000 n -0000170934 00000 n -0000165581 00000 n -0000171053 00000 n -0000171114 00000 n -0000171175 00000 n -0000171236 00000 n -0000171297 00000 n -0000171358 00000 n -0000171419 00000 n -0000176961 00000 n -0000177113 00000 n -0000177570 00000 n -0000176814 00000 n -0000171578 00000 n -0000177264 00000 n -0000182410 00000 n -0000181990 00000 n -0000177693 00000 n -0000182109 00000 n -0000912693 00000 n -0000192547 00000 n -0000192708 00000 n -0000192863 00000 n -0000193321 00000 n -0000192392 00000 n -0000182520 00000 n -0000193013 00000 n -0000193197 00000 n -0000193259 00000 n -0000770118 00000 n -0000198567 00000 n -0000198809 00000 n -0000198387 00000 n -0000193431 00000 n -0000198506 00000 n -0000202883 00000 n -0000202518 00000 n -0000198906 00000 n -0000202637 00000 n -0000202760 00000 n -0000207102 00000 n -0000206740 00000 n -0000202980 00000 n -0000206859 00000 n -0000214942 00000 n -0000215094 00000 n -0000215616 00000 n -0000214795 00000 n -0000207199 00000 n -0000215244 00000 n -0000215430 00000 n -0000219524 00000 n -0000225221 00000 n -0000219828 00000 n -0000219344 00000 n -0000215726 00000 n -0000219463 00000 n -0000219586 00000 n -0000912811 00000 n -0000225558 00000 n -0000225082 00000 n -0000219938 00000 n -0000225372 00000 n -0000225434 00000 n -0000912194 00000 n -0000225496 00000 n -0000226124 00000 n -0000225883 00000 n -0000225655 00000 n -0000226002 00000 n -0000226668 00000 n -0000226425 00000 n -0000226208 00000 n -0000226544 00000 n -0000234351 00000 n -0000234501 00000 n -0000234649 00000 n -0000234799 00000 n -0000234949 00000 n -0000235097 00000 n -0000238435 00000 n -0000235430 00000 n -0000234172 00000 n -0000226752 00000 n -0000235247 00000 n -0000235369 00000 n -0000238586 00000 n -0000238733 00000 n -0000238945 00000 n -0000238280 00000 n -0000235566 00000 n -0000238883 00000 n -0000247196 00000 n -0000247344 00000 n -0000247494 00000 n -0000247642 00000 n +0000120614 00000 n +0000120688 00000 n +0000797702 00000 n +0000797640 00000 n +0000127033 00000 n +0000127184 00000 n +0000127397 00000 n +0000126886 00000 n +0000121365 00000 n +0000127336 00000 n +0000136961 00000 n +0000136223 00000 n +0000127507 00000 n +0000136342 00000 n +0000942175 00000 n +0000136465 00000 n +0000136527 00000 n +0000136589 00000 n +0000136651 00000 n +0000136713 00000 n +0000136775 00000 n +0000136837 00000 n +0000136899 00000 n +0000152789 00000 n +0000145017 00000 n +0000144048 00000 n +0000137096 00000 n +0000144167 00000 n +0000144228 00000 n +0000144289 00000 n +0000144350 00000 n +0000144411 00000 n +0000144471 00000 n +0000144532 00000 n +0000144593 00000 n +0000144653 00000 n +0000144714 00000 n +0000144775 00000 n +0000144836 00000 n +0000144897 00000 n +0000144957 00000 n +0000944293 00000 n +0000153502 00000 n +0000152650 00000 n +0000145101 00000 n +0000152946 00000 n +0000153069 00000 n +0000153131 00000 n +0000153193 00000 n +0000153255 00000 n +0000153317 00000 n +0000153379 00000 n +0000162288 00000 n +0000162683 00000 n +0000162149 00000 n +0000153650 00000 n +0000162440 00000 n +0000162621 00000 n +0000169712 00000 n +0000170422 00000 n +0000169573 00000 n +0000162806 00000 n +0000169864 00000 n +0000169926 00000 n +0000169988 00000 n +0000170050 00000 n +0000170112 00000 n +0000170174 00000 n +0000170236 00000 n +0000170298 00000 n +0000170360 00000 n +0000176136 00000 n +0000175590 00000 n +0000170519 00000 n +0000175709 00000 n +0000175770 00000 n +0000175831 00000 n +0000175891 00000 n +0000175952 00000 n +0000176013 00000 n +0000176074 00000 n +0000181616 00000 n +0000181768 00000 n +0000182225 00000 n +0000181469 00000 n +0000176233 00000 n +0000181919 00000 n +0000187065 00000 n +0000186645 00000 n +0000182348 00000 n +0000186764 00000 n +0000944411 00000 n +0000197202 00000 n +0000197363 00000 n +0000197518 00000 n +0000197976 00000 n +0000197047 00000 n +0000187175 00000 n +0000197668 00000 n +0000197852 00000 n +0000197914 00000 n +0000801730 00000 n +0000203027 00000 n +0000203269 00000 n +0000202847 00000 n +0000198086 00000 n +0000202966 00000 n +0000207277 00000 n +0000206912 00000 n +0000203366 00000 n +0000207031 00000 n +0000207154 00000 n +0000211496 00000 n +0000211134 00000 n +0000207374 00000 n +0000211253 00000 n +0000219592 00000 n +0000219744 00000 n +0000220265 00000 n +0000219445 00000 n +0000211593 00000 n +0000219895 00000 n +0000220081 00000 n +0000220143 00000 n +0000220203 00000 n +0000226524 00000 n +0000224197 00000 n +0000223712 00000 n +0000220375 00000 n +0000223831 00000 n +0000224014 00000 n +0000944529 00000 n +0000226923 00000 n +0000226385 00000 n +0000224294 00000 n +0000226675 00000 n +0000226799 00000 n +0000943912 00000 n +0000226861 00000 n +0000227490 00000 n +0000227249 00000 n +0000227033 00000 n +0000227368 00000 n +0000235133 00000 n +0000235283 00000 n +0000235431 00000 n +0000235581 00000 n +0000235731 00000 n +0000235879 00000 n +0000239223 00000 n +0000236214 00000 n +0000234954 00000 n +0000227574 00000 n +0000236029 00000 n +0000236153 00000 n +0000239374 00000 n +0000239521 00000 n +0000239732 00000 n +0000239068 00000 n +0000236350 00000 n +0000239671 00000 n +0000247971 00000 n +0000248119 00000 n +0000248269 00000 n +0000248417 00000 n +0000248567 00000 n +0000248718 00000 n +0000249052 00000 n 0000247792 00000 n -0000247943 00000 n -0000248275 00000 n -0000247017 00000 n -0000239055 00000 n -0000248092 00000 n -0000248213 00000 n -0000912929 00000 n -0000249289 00000 n -0000249108 00000 n -0000248424 00000 n -0000249227 00000 n -0000258079 00000 n -0000258227 00000 n -0000258376 00000 n -0000258524 00000 n -0000258674 00000 n -0000258825 00000 n -0000259157 00000 n -0000257900 00000 n -0000249373 00000 n -0000258974 00000 n -0000259095 00000 n -0000260171 00000 n -0000259990 00000 n -0000259306 00000 n -0000260109 00000 n -0000267495 00000 n -0000267643 00000 n -0000267791 00000 n -0000268125 00000 n -0000267340 00000 n -0000260255 00000 n -0000267942 00000 n -0000268063 00000 n -0000274798 00000 n -0000274946 00000 n -0000275096 00000 n -0000275431 00000 n -0000274643 00000 n -0000268274 00000 n -0000275246 00000 n -0000275369 00000 n -0000282470 00000 n -0000282618 00000 n -0000282768 00000 n -0000283102 00000 n -0000282315 00000 n -0000275580 00000 n -0000282919 00000 n -0000283040 00000 n -0000913047 00000 n -0000290834 00000 n -0000290980 00000 n -0000291129 00000 n -0000291465 00000 n -0000290679 00000 n -0000283263 00000 n -0000291279 00000 n -0000291403 00000 n -0000292489 00000 n -0000292309 00000 n -0000291626 00000 n -0000292428 00000 n -0000299482 00000 n -0000299629 00000 n -0000299779 00000 n -0000300115 00000 n -0000299327 00000 n -0000292573 00000 n -0000299930 00000 n -0000300053 00000 n -0000306617 00000 n -0000306765 00000 n -0000306914 00000 n -0000307248 00000 n -0000306462 00000 n -0000300264 00000 n -0000307065 00000 n -0000307186 00000 n -0000313064 00000 n -0000313213 00000 n -0000313549 00000 n -0000312917 00000 n -0000307396 00000 n -0000313364 00000 n -0000911613 00000 n -0000313487 00000 n -0000321246 00000 n -0000321397 00000 n -0000321546 00000 n -0000321694 00000 n -0000329595 00000 n -0000322214 00000 n -0000321083 00000 n -0000313698 00000 n -0000321845 00000 n -0000321966 00000 n -0000322028 00000 n -0000322090 00000 n -0000322152 00000 n -0000913165 00000 n -0000329746 00000 n -0000329893 00000 n -0000330044 00000 n -0000330195 00000 n -0000330348 00000 n -0000330501 00000 n -0000330654 00000 n -0000330867 00000 n -0000329400 00000 n -0000322375 00000 n -0000330805 00000 n -0000337962 00000 n -0000346497 00000 n -0000338296 00000 n -0000337823 00000 n -0000330977 00000 n -0000338112 00000 n -0000338234 00000 n -0000346649 00000 n -0000346796 00000 n -0000346947 00000 n -0000347098 00000 n -0000347245 00000 n -0000347396 00000 n -0000347608 00000 n -0000346310 00000 n -0000338470 00000 n -0000347546 00000 n -0000352613 00000 n -0000352764 00000 n -0000352976 00000 n -0000352466 00000 n -0000347744 00000 n -0000352915 00000 n -0000353935 00000 n -0000354211 00000 n -0000353796 00000 n -0000353086 00000 n -0000354087 00000 n -0000360532 00000 n -0000360683 00000 n -0000360834 00000 n -0000361167 00000 n -0000360377 00000 n -0000354295 00000 n -0000360984 00000 n -0000361105 00000 n -0000913283 00000 n -0000369870 00000 n -0000365631 00000 n -0000370020 00000 n -0000370298 00000 n -0000365482 00000 n -0000361303 00000 n -0000370170 00000 n -0000370234 00000 n -0000369530 00000 n -0000369650 00000 n -0000369698 00000 n -0000369773 00000 n -0000369847 00000 n -0000373744 00000 n -0000373559 00000 n -0000370449 00000 n -0000373681 00000 n -0000911323 00000 n -0000381035 00000 n -0000381187 00000 n -0000381528 00000 n -0000380883 00000 n -0000373830 00000 n -0000381338 00000 n -0000381464 00000 n -0000387765 00000 n -0000393087 00000 n -0000387917 00000 n -0000388067 00000 n -0000388470 00000 n -0000387604 00000 n -0000381678 00000 n -0000388219 00000 n -0000388282 00000 n -0000388345 00000 n -0000388408 00000 n -0000397474 00000 n -0000392472 00000 n -0000392286 00000 n -0000388607 00000 n -0000392408 00000 n -0000397538 00000 n -0000392964 00000 n -0000392557 00000 n -0000397411 00000 n -0000913406 00000 n -0000397071 00000 n -0000397191 00000 n -0000397239 00000 n -0000397314 00000 n -0000397388 00000 n -0000405440 00000 n -0000405592 00000 n -0000405933 00000 n -0000405287 00000 n -0000397639 00000 n -0000405743 00000 n -0000405869 00000 n -0000407696 00000 n -0000407510 00000 n -0000406095 00000 n -0000407633 00000 n -0000415196 00000 n -0000417622 00000 n -0000415538 00000 n -0000415052 00000 n -0000407781 00000 n -0000415347 00000 n -0000415474 00000 n -0000417837 00000 n -0000417478 00000 n -0000415700 00000 n -0000417774 00000 n -0000424837 00000 n -0000424524 00000 n -0000417935 00000 n -0000424647 00000 n -0000431518 00000 n -0000431796 00000 n -0000431374 00000 n -0000424974 00000 n -0000431670 00000 n -0000431733 00000 n -0000913531 00000 n -0000442501 00000 n -0000441994 00000 n -0000431907 00000 n -0000442117 00000 n -0000442181 00000 n -0000442245 00000 n -0000442309 00000 n -0000442373 00000 n -0000442437 00000 n -0000443454 00000 n -0000443205 00000 n -0000442638 00000 n -0000443328 00000 n -0000443391 00000 n -0000449318 00000 n -0000449721 00000 n -0000449174 00000 n -0000443539 00000 n -0000449469 00000 n -0000449595 00000 n -0000449659 00000 n -0000453552 00000 n -0000453703 00000 n -0000454042 00000 n -0000453399 00000 n -0000449845 00000 n -0000453855 00000 n -0000453979 00000 n -0000457644 00000 n -0000457794 00000 n -0000458071 00000 n -0000457491 00000 n -0000454153 00000 n -0000457945 00000 n -0000460629 00000 n -0000460904 00000 n -0000460485 00000 n -0000458182 00000 n -0000460780 00000 n -0000913656 00000 n -0000467144 00000 n -0000467292 00000 n -0000467570 00000 n -0000466991 00000 n -0000461015 00000 n -0000467443 00000 n -0000469670 00000 n -0000469358 00000 n -0000467707 00000 n -0000469481 00000 n -0000469544 00000 n -0000469607 00000 n -0000474858 00000 n -0000475008 00000 n -0000475473 00000 n -0000474705 00000 n -0000469755 00000 n -0000475155 00000 n -0000475281 00000 n -0000475345 00000 n -0000475409 00000 n -0000482492 00000 n -0000482643 00000 n -0000482793 00000 n -0000483068 00000 n -0000482330 00000 n -0000475597 00000 n -0000482944 00000 n -0000486837 00000 n -0000486266 00000 n -0000483192 00000 n -0000486389 00000 n -0000486453 00000 n -0000486517 00000 n -0000486581 00000 n -0000486645 00000 n -0000486709 00000 n -0000486773 00000 n -0000493802 00000 n -0000493953 00000 n -0000494227 00000 n -0000493649 00000 n -0000486948 00000 n -0000494103 00000 n -0000913781 00000 n -0000497223 00000 n -0000496653 00000 n -0000494338 00000 n -0000496776 00000 n -0000496840 00000 n -0000496904 00000 n -0000496968 00000 n -0000497032 00000 n -0000497096 00000 n -0000497160 00000 n -0000500607 00000 n -0000500756 00000 n -0000501032 00000 n -0000500454 00000 n -0000497308 00000 n -0000500908 00000 n -0000505332 00000 n -0000505481 00000 n -0000505823 00000 n -0000505179 00000 n -0000501143 00000 n -0000505632 00000 n -0000505759 00000 n -0000510741 00000 n -0000511015 00000 n -0000510597 00000 n -0000505934 00000 n -0000510891 00000 n -0000517519 00000 n -0000517796 00000 n -0000517375 00000 n -0000511139 00000 n -0000517670 00000 n -0000518846 00000 n -0000518534 00000 n -0000517920 00000 n -0000518657 00000 n -0000518720 00000 n -0000518783 00000 n -0000913906 00000 n -0000522012 00000 n -0000522289 00000 n -0000521868 00000 n -0000518931 00000 n -0000522163 00000 n -0000525485 00000 n -0000525760 00000 n -0000525341 00000 n -0000522400 00000 n -0000525636 00000 n -0000529618 00000 n -0000529369 00000 n -0000525871 00000 n -0000529492 00000 n -0000536499 00000 n -0000536774 00000 n -0000536355 00000 n -0000529755 00000 n -0000536650 00000 n -0000537978 00000 n -0000537663 00000 n -0000536898 00000 n -0000537786 00000 n -0000537850 00000 n -0000537914 00000 n -0000543988 00000 n -0000544264 00000 n -0000543844 00000 n -0000538063 00000 n -0000544140 00000 n -0000914031 00000 n -0000547864 00000 n -0000548205 00000 n -0000547720 00000 n -0000544388 00000 n -0000548015 00000 n -0000548141 00000 n -0000553505 00000 n -0000553844 00000 n -0000553361 00000 n -0000548329 00000 n -0000553657 00000 n -0000553781 00000 n -0000557412 00000 n -0000557753 00000 n -0000557268 00000 n -0000553968 00000 n -0000557563 00000 n -0000557689 00000 n -0000563037 00000 n -0000563376 00000 n -0000562893 00000 n -0000557877 00000 n -0000563189 00000 n -0000563313 00000 n -0000567508 00000 n -0000567912 00000 n -0000567364 00000 n -0000563500 00000 n -0000567658 00000 n -0000567784 00000 n -0000567848 00000 n -0000571881 00000 n -0000572282 00000 n -0000571737 00000 n -0000568023 00000 n -0000572032 00000 n -0000572156 00000 n -0000572219 00000 n -0000914156 00000 n -0000578387 00000 n -0000578663 00000 n -0000578243 00000 n -0000572393 00000 n -0000578536 00000 n -0000582923 00000 n -0000582548 00000 n -0000578787 00000 n -0000582671 00000 n -0000582734 00000 n -0000582797 00000 n -0000582860 00000 n -0000587395 00000 n -0000587544 00000 n -0000587695 00000 n -0000587971 00000 n -0000587233 00000 n -0000583047 00000 n -0000587845 00000 n -0000594157 00000 n -0000593909 00000 n -0000588095 00000 n -0000594032 00000 n -0000602123 00000 n -0000601361 00000 n -0000594281 00000 n -0000601484 00000 n -0000601548 00000 n -0000601612 00000 n -0000601676 00000 n -0000601740 00000 n -0000601804 00000 n -0000601868 00000 n -0000601931 00000 n -0000601995 00000 n -0000602059 00000 n -0000602735 00000 n -0000602487 00000 n -0000602246 00000 n -0000602610 00000 n -0000914281 00000 n -0000608830 00000 n -0000608453 00000 n -0000602820 00000 n -0000608576 00000 n -0000608702 00000 n -0000608766 00000 n -0000614046 00000 n -0000613673 00000 n -0000608967 00000 n -0000613796 00000 n -0000613921 00000 n -0000613983 00000 n -0000619038 00000 n -0000618597 00000 n -0000614183 00000 n -0000618720 00000 n -0000618846 00000 n -0000618910 00000 n -0000618974 00000 n -0000621642 00000 n -0000621395 00000 n -0000619175 00000 n -0000621518 00000 n -0000625086 00000 n -0000624837 00000 n -0000621753 00000 n -0000624960 00000 n -0000626710 00000 n -0000626463 00000 n -0000625223 00000 n -0000626586 00000 n -0000914406 00000 n -0000628603 00000 n -0000628354 00000 n -0000626821 00000 n -0000628477 00000 n -0000630380 00000 n -0000630133 00000 n -0000628714 00000 n -0000630256 00000 n -0000635333 00000 n -0000635084 00000 n -0000630491 00000 n -0000635207 00000 n -0000641049 00000 n -0000640676 00000 n -0000635470 00000 n -0000640799 00000 n -0000640923 00000 n -0000640986 00000 n -0000646808 00000 n -0000646431 00000 n -0000641186 00000 n -0000646554 00000 n -0000646680 00000 n -0000646744 00000 n -0000652538 00000 n -0000652165 00000 n -0000646945 00000 n -0000652288 00000 n -0000652412 00000 n -0000652475 00000 n -0000914531 00000 n -0000658389 00000 n -0000658012 00000 n -0000652675 00000 n -0000658135 00000 n -0000658261 00000 n -0000658325 00000 n -0000664207 00000 n -0000663834 00000 n -0000658526 00000 n -0000663957 00000 n -0000664081 00000 n -0000664144 00000 n -0000670085 00000 n -0000669773 00000 n -0000664344 00000 n -0000669896 00000 n -0000670022 00000 n -0000675943 00000 n -0000675634 00000 n -0000670222 00000 n -0000675757 00000 n -0000675881 00000 n -0000682700 00000 n -0000682850 00000 n -0000683129 00000 n -0000682547 00000 n -0000676080 00000 n -0000683002 00000 n -0000687326 00000 n -0000687390 00000 n -0000687454 00000 n -0000687140 00000 n -0000683227 00000 n -0000687263 00000 n -0000914656 00000 n -0000690819 00000 n -0000690570 00000 n -0000687552 00000 n -0000690693 00000 n -0000692389 00000 n -0000692141 00000 n -0000690930 00000 n -0000692264 00000 n -0000694059 00000 n -0000693809 00000 n -0000692500 00000 n -0000693932 00000 n -0000696188 00000 n -0000695940 00000 n -0000694170 00000 n -0000696063 00000 n -0000697135 00000 n -0000696885 00000 n -0000696299 00000 n -0000697008 00000 n -0000701880 00000 n -0000702155 00000 n -0000701736 00000 n -0000697233 00000 n -0000702030 00000 n -0000914781 00000 n -0000707329 00000 n -0000707605 00000 n -0000707185 00000 n -0000702266 00000 n -0000707478 00000 n -0000711155 00000 n -0000711430 00000 n -0000711011 00000 n -0000707716 00000 n -0000711305 00000 n -0000715114 00000 n -0000714864 00000 n -0000711541 00000 n -0000714987 00000 n -0000719140 00000 n -0000719415 00000 n -0000718996 00000 n -0000715225 00000 n -0000719290 00000 n -0000720748 00000 n -0000720498 00000 n -0000719526 00000 n -0000720621 00000 n -0000725714 00000 n -0000725866 00000 n -0000726208 00000 n -0000725561 00000 n -0000720859 00000 n -0000726021 00000 n -0000726145 00000 n -0000914906 00000 n -0000731325 00000 n -0000731474 00000 n -0000731624 00000 n -0000731776 00000 n -0000732053 00000 n -0000731154 00000 n -0000726370 00000 n -0000731927 00000 n -0000737378 00000 n -0000737529 00000 n -0000737805 00000 n -0000737225 00000 n -0000732164 00000 n -0000737681 00000 n -0000740116 00000 n -0000740395 00000 n -0000739972 00000 n -0000737916 00000 n -0000740268 00000 n -0000741412 00000 n -0000741164 00000 n -0000740506 00000 n -0000741287 00000 n -0000748936 00000 n -0000749085 00000 n -0000749361 00000 n -0000748783 00000 n -0000741510 00000 n -0000749235 00000 n -0000755416 00000 n -0000755631 00000 n -0000755272 00000 n -0000749523 00000 n -0000755568 00000 n -0000915031 00000 n -0000758486 00000 n -0000758299 00000 n -0000755755 00000 n -0000758422 00000 n -0000766649 00000 n -0000765655 00000 n -0000758584 00000 n -0000765778 00000 n -0000765841 00000 n -0000765966 00000 n -0000766462 00000 n -0000766587 00000 n -0000770560 00000 n -0000769931 00000 n -0000766747 00000 n -0000770054 00000 n -0000770496 00000 n -0000770658 00000 n -0000771111 00000 n -0000771445 00000 n -0000771801 00000 n -0000771827 00000 n -0000772338 00000 n -0000772376 00000 n -0000773071 00000 n -0000773404 00000 n -0000773484 00000 n -0000773864 00000 n -0000774506 00000 n -0000775170 00000 n -0000775798 00000 n -0000776441 00000 n -0000776731 00000 n -0000777384 00000 n -0000791272 00000 n -0000791694 00000 n -0000804093 00000 n -0000804521 00000 n -0000815628 00000 n -0000815963 00000 n -0000818049 00000 n -0000818271 00000 n -0000822462 00000 n -0000822705 00000 n -0000839693 00000 n -0000840228 00000 n -0000842504 00000 n -0000842736 00000 n -0000845119 00000 n -0000845357 00000 n -0000855039 00000 n -0000855416 00000 n -0000861406 00000 n -0000861726 00000 n -0000865776 00000 n -0000866120 00000 n -0000867743 00000 n -0000867979 00000 n -0000881784 00000 n -0000882163 00000 n -0000888436 00000 n -0000888704 00000 n -0000902196 00000 n -0000902685 00000 n -0000909673 00000 n -0000915138 00000 n -0000915258 00000 n -0000915381 00000 n -0000915507 00000 n -0000915624 00000 n -0000915716 00000 n -0000926550 00000 n -0000926737 00000 n -0000926922 00000 n -0000927102 00000 n -0000927273 00000 n -0000927443 00000 n -0000927614 00000 n -0000927783 00000 n -0000927956 00000 n -0000928133 00000 n -0000928308 00000 n -0000928485 00000 n -0000928660 00000 n -0000928837 00000 n -0000929012 00000 n -0000929189 00000 n -0000929364 00000 n -0000929541 00000 n -0000929715 00000 n -0000929897 00000 n -0000930100 00000 n -0000930331 00000 n -0000930552 00000 n -0000930740 00000 n -0000930920 00000 n -0000931100 00000 n -0000931285 00000 n -0000931468 00000 n -0000931653 00000 n -0000931836 00000 n -0000932021 00000 n -0000932194 00000 n -0000932364 00000 n -0000932535 00000 n -0000932705 00000 n -0000932876 00000 n -0000933046 00000 n -0000933220 00000 n -0000933397 00000 n -0000933572 00000 n -0000933749 00000 n -0000933924 00000 n -0000934101 00000 n -0000934276 00000 n -0000934453 00000 n -0000934628 00000 n -0000934805 00000 n -0000934982 00000 n -0000935182 00000 n -0000935383 00000 n -0000935586 00000 n -0000935787 00000 n -0000935990 00000 n -0000936191 00000 n -0000936394 00000 n -0000936595 00000 n -0000936798 00000 n -0000936998 00000 n -0000937198 00000 n -0000937401 00000 n -0000937602 00000 n -0000937805 00000 n -0000938006 00000 n -0000938200 00000 n -0000938386 00000 n -0000938588 00000 n -0000938812 00000 n -0000939052 00000 n -0000939233 00000 n -0000939407 00000 n -0000939554 00000 n -0000939672 00000 n -0000939787 00000 n -0000939903 00000 n -0000940020 00000 n -0000940138 00000 n -0000940254 00000 n -0000940370 00000 n -0000940490 00000 n -0000940614 00000 n -0000940738 00000 n -0000940865 00000 n -0000940973 00000 n -0000941091 00000 n -0000941205 00000 n -0000941285 00000 n -0000941325 00000 n -0000941562 00000 n +0000239842 00000 n +0000248867 00000 n +0000248990 00000 n +0000250064 00000 n +0000249884 00000 n +0000249201 00000 n +0000250003 00000 n +0000944647 00000 n +0000258802 00000 n +0000258950 00000 n +0000259099 00000 n +0000259247 00000 n +0000259397 00000 n +0000259548 00000 n +0000259882 00000 n +0000258623 00000 n +0000250148 00000 n +0000259697 00000 n +0000259820 00000 n +0000260894 00000 n +0000260714 00000 n +0000260031 00000 n +0000260833 00000 n +0000268225 00000 n +0000268373 00000 n +0000268521 00000 n +0000268857 00000 n +0000268070 00000 n +0000260978 00000 n +0000268672 00000 n +0000268795 00000 n +0000275546 00000 n +0000275694 00000 n +0000275844 00000 n +0000276177 00000 n +0000275391 00000 n +0000269006 00000 n +0000275994 00000 n +0000276115 00000 n +0000283205 00000 n +0000283353 00000 n +0000283503 00000 n +0000283839 00000 n +0000283050 00000 n +0000276326 00000 n +0000283654 00000 n +0000283777 00000 n +0000291532 00000 n +0000291679 00000 n +0000291828 00000 n +0000292162 00000 n +0000291377 00000 n +0000284000 00000 n +0000291978 00000 n +0000292100 00000 n +0000944765 00000 n +0000293188 00000 n +0000293007 00000 n +0000292323 00000 n +0000293126 00000 n +0000300195 00000 n +0000300343 00000 n +0000300493 00000 n +0000300827 00000 n +0000300040 00000 n +0000293272 00000 n +0000300644 00000 n +0000300765 00000 n +0000307352 00000 n +0000307500 00000 n +0000307649 00000 n +0000307985 00000 n +0000307197 00000 n +0000300976 00000 n +0000307800 00000 n +0000307923 00000 n +0000313794 00000 n +0000313943 00000 n +0000314277 00000 n +0000313647 00000 n +0000308133 00000 n +0000314094 00000 n +0000314215 00000 n +0000320093 00000 n +0000320242 00000 n +0000320578 00000 n +0000319946 00000 n +0000314425 00000 n +0000320393 00000 n +0000943331 00000 n +0000320516 00000 n +0000328277 00000 n +0000328428 00000 n +0000328577 00000 n +0000328725 00000 n +0000336635 00000 n +0000329245 00000 n +0000328114 00000 n +0000320727 00000 n +0000328876 00000 n +0000328997 00000 n +0000329059 00000 n +0000329121 00000 n +0000329183 00000 n +0000944883 00000 n +0000336786 00000 n +0000336934 00000 n +0000337085 00000 n +0000337236 00000 n +0000337389 00000 n +0000337542 00000 n +0000337695 00000 n +0000337908 00000 n +0000336440 00000 n +0000329406 00000 n +0000337846 00000 n +0000345003 00000 n +0000353546 00000 n +0000345337 00000 n +0000344864 00000 n +0000338018 00000 n +0000345153 00000 n +0000345275 00000 n +0000353698 00000 n +0000353846 00000 n +0000353997 00000 n +0000354148 00000 n +0000354296 00000 n +0000354447 00000 n +0000354659 00000 n +0000353359 00000 n +0000345511 00000 n +0000354597 00000 n +0000359664 00000 n +0000359815 00000 n +0000360027 00000 n +0000359517 00000 n +0000354795 00000 n +0000359966 00000 n +0000360986 00000 n +0000361263 00000 n +0000360847 00000 n +0000360137 00000 n +0000361138 00000 n +0000367977 00000 n +0000368126 00000 n +0000368278 00000 n +0000368430 00000 n +0000368770 00000 n +0000367806 00000 n +0000361347 00000 n +0000368582 00000 n +0000368706 00000 n +0000945001 00000 n +0000377479 00000 n +0000373239 00000 n +0000377630 00000 n +0000377909 00000 n +0000373086 00000 n +0000368907 00000 n +0000377781 00000 n +0000377845 00000 n +0000377139 00000 n +0000377259 00000 n +0000377307 00000 n +0000377382 00000 n +0000377456 00000 n +0000381358 00000 n +0000381172 00000 n +0000378062 00000 n +0000381295 00000 n +0000943041 00000 n +0000389159 00000 n +0000389307 00000 n +0000389459 00000 n +0000389800 00000 n +0000388997 00000 n +0000381444 00000 n +0000389610 00000 n +0000389736 00000 n +0000396038 00000 n +0000401361 00000 n +0000396190 00000 n +0000396340 00000 n +0000396743 00000 n +0000395876 00000 n +0000389950 00000 n +0000396492 00000 n +0000396555 00000 n +0000396618 00000 n +0000396681 00000 n +0000405748 00000 n +0000400746 00000 n +0000400559 00000 n +0000396880 00000 n +0000400682 00000 n +0000405812 00000 n +0000401238 00000 n +0000400831 00000 n +0000405685 00000 n +0000945126 00000 n +0000405345 00000 n +0000405465 00000 n +0000405513 00000 n +0000405588 00000 n +0000405662 00000 n +0000414141 00000 n +0000414290 00000 n +0000414442 00000 n +0000414783 00000 n +0000413979 00000 n +0000405913 00000 n +0000414593 00000 n +0000414719 00000 n +0000416646 00000 n +0000416460 00000 n +0000414945 00000 n +0000416583 00000 n +0000424159 00000 n +0000426585 00000 n +0000424501 00000 n +0000424015 00000 n +0000416744 00000 n +0000424310 00000 n +0000424437 00000 n +0000426800 00000 n +0000426441 00000 n +0000424663 00000 n +0000426737 00000 n +0000433810 00000 n +0000433497 00000 n +0000426898 00000 n +0000433620 00000 n +0000440788 00000 n +0000441066 00000 n +0000440644 00000 n +0000433947 00000 n +0000440940 00000 n +0000441003 00000 n +0000945251 00000 n +0000451443 00000 n +0000451734 00000 n +0000451299 00000 n +0000441190 00000 n +0000451606 00000 n +0000451670 00000 n +0000455090 00000 n +0000454591 00000 n +0000451871 00000 n +0000454714 00000 n +0000454777 00000 n +0000454840 00000 n +0000454903 00000 n +0000454966 00000 n +0000455029 00000 n +0000462550 00000 n +0000462826 00000 n +0000462406 00000 n +0000455175 00000 n +0000462700 00000 n +0000466310 00000 n +0000466725 00000 n +0000466166 00000 n +0000462950 00000 n +0000466473 00000 n +0000466536 00000 n +0000466599 00000 n +0000466662 00000 n +0000470542 00000 n +0000470692 00000 n +0000471033 00000 n +0000470389 00000 n +0000466836 00000 n +0000470843 00000 n +0000470969 00000 n +0000474634 00000 n +0000474785 00000 n +0000475061 00000 n +0000474481 00000 n +0000471144 00000 n +0000474937 00000 n +0000945376 00000 n +0000477619 00000 n +0000477895 00000 n +0000477475 00000 n +0000475172 00000 n +0000477769 00000 n +0000484146 00000 n +0000484295 00000 n +0000484572 00000 n +0000483993 00000 n +0000478006 00000 n +0000484447 00000 n +0000486671 00000 n +0000486356 00000 n +0000484709 00000 n +0000486479 00000 n +0000486543 00000 n +0000486607 00000 n +0000491856 00000 n +0000492007 00000 n +0000492468 00000 n +0000491703 00000 n +0000486756 00000 n +0000492155 00000 n +0000492279 00000 n +0000492342 00000 n +0000492405 00000 n +0000499258 00000 n +0000499410 00000 n +0000506100 00000 n +0000499685 00000 n +0000499105 00000 n +0000492592 00000 n +0000499558 00000 n +0000506880 00000 n +0000505956 00000 n +0000499809 00000 n +0000506251 00000 n +0000506314 00000 n +0000506377 00000 n +0000506440 00000 n +0000506503 00000 n +0000506565 00000 n +0000506628 00000 n +0000506691 00000 n +0000506754 00000 n +0000506817 00000 n +0000945501 00000 n +0000513865 00000 n +0000514015 00000 n +0000514290 00000 n +0000513712 00000 n +0000507004 00000 n +0000514164 00000 n +0000517272 00000 n +0000516709 00000 n +0000514401 00000 n +0000516832 00000 n +0000516895 00000 n +0000516958 00000 n +0000517021 00000 n +0000517084 00000 n +0000517147 00000 n +0000517210 00000 n +0000520654 00000 n +0000520802 00000 n +0000521079 00000 n +0000520501 00000 n +0000517357 00000 n +0000520953 00000 n +0000525394 00000 n +0000525544 00000 n +0000525884 00000 n +0000525241 00000 n +0000521190 00000 n +0000525696 00000 n +0000525821 00000 n +0000531319 00000 n +0000531470 00000 n +0000531745 00000 n +0000531166 00000 n +0000525995 00000 n +0000531619 00000 n +0000538899 00000 n +0000539051 00000 n +0000539324 00000 n +0000538746 00000 n +0000531869 00000 n +0000539200 00000 n +0000945626 00000 n +0000540938 00000 n +0000540623 00000 n +0000539448 00000 n +0000540746 00000 n +0000540810 00000 n +0000540874 00000 n +0000546473 00000 n +0000546623 00000 n +0000546772 00000 n +0000547044 00000 n +0000546311 00000 n +0000541036 00000 n +0000546920 00000 n +0000550760 00000 n +0000550908 00000 n +0000551186 00000 n +0000550607 00000 n +0000547168 00000 n +0000551060 00000 n +0000555041 00000 n +0000554794 00000 n +0000551297 00000 n +0000554917 00000 n +0000561929 00000 n +0000562205 00000 n +0000561785 00000 n +0000555178 00000 n +0000562079 00000 n +0000563393 00000 n +0000563081 00000 n +0000562329 00000 n +0000563204 00000 n +0000563267 00000 n +0000563330 00000 n +0000945751 00000 n +0000569418 00000 n +0000569695 00000 n +0000569274 00000 n +0000563478 00000 n +0000569569 00000 n +0000573287 00000 n +0000573626 00000 n +0000573143 00000 n +0000569819 00000 n +0000573439 00000 n +0000573563 00000 n +0000578930 00000 n +0000579271 00000 n +0000578786 00000 n +0000573750 00000 n +0000579081 00000 n +0000579207 00000 n +0000582832 00000 n +0000583171 00000 n +0000582688 00000 n +0000579395 00000 n +0000582984 00000 n +0000583108 00000 n +0000588484 00000 n +0000588825 00000 n +0000588340 00000 n +0000583295 00000 n +0000588635 00000 n +0000588761 00000 n +0000592974 00000 n +0000593375 00000 n +0000592830 00000 n +0000588949 00000 n +0000593125 00000 n +0000593249 00000 n +0000593312 00000 n +0000945876 00000 n +0000597344 00000 n +0000597748 00000 n +0000597200 00000 n +0000593486 00000 n +0000597494 00000 n +0000597620 00000 n +0000597684 00000 n +0000603846 00000 n +0000604121 00000 n +0000603702 00000 n +0000597859 00000 n +0000603996 00000 n +0000608395 00000 n +0000608016 00000 n +0000604245 00000 n +0000608139 00000 n +0000608203 00000 n +0000608267 00000 n +0000608331 00000 n +0000612864 00000 n +0000613014 00000 n +0000613166 00000 n +0000613440 00000 n +0000612702 00000 n +0000608519 00000 n +0000613316 00000 n +0000619640 00000 n +0000619390 00000 n +0000613564 00000 n +0000619513 00000 n +0000627569 00000 n +0000626817 00000 n +0000619764 00000 n +0000626940 00000 n +0000627003 00000 n +0000627066 00000 n +0000627129 00000 n +0000627192 00000 n +0000627255 00000 n +0000627318 00000 n +0000627380 00000 n +0000627443 00000 n +0000627506 00000 n +0000946001 00000 n +0000628188 00000 n +0000627938 00000 n +0000627692 00000 n +0000628061 00000 n +0000634272 00000 n +0000633899 00000 n +0000628273 00000 n +0000634022 00000 n +0000634146 00000 n +0000634209 00000 n +0000639484 00000 n +0000639107 00000 n +0000634409 00000 n +0000639230 00000 n +0000639357 00000 n +0000639420 00000 n +0000644472 00000 n +0000644036 00000 n +0000639621 00000 n +0000644159 00000 n +0000644283 00000 n +0000644346 00000 n +0000644409 00000 n +0000647077 00000 n +0000646828 00000 n +0000644609 00000 n +0000646951 00000 n +0000650514 00000 n +0000650267 00000 n +0000647188 00000 n +0000650390 00000 n +0000946126 00000 n +0000652161 00000 n +0000651912 00000 n +0000650651 00000 n +0000652035 00000 n +0000654062 00000 n +0000653815 00000 n +0000652272 00000 n +0000653938 00000 n +0000655839 00000 n +0000655590 00000 n +0000654173 00000 n +0000655713 00000 n +0000660809 00000 n +0000660562 00000 n +0000655950 00000 n +0000660685 00000 n +0000666582 00000 n +0000666205 00000 n +0000660946 00000 n +0000666328 00000 n +0000666454 00000 n +0000666518 00000 n +0000672303 00000 n +0000671930 00000 n +0000666719 00000 n +0000672053 00000 n +0000672177 00000 n +0000672240 00000 n +0000946251 00000 n +0000678060 00000 n +0000677683 00000 n +0000672440 00000 n +0000677806 00000 n +0000677932 00000 n +0000677996 00000 n +0000683869 00000 n +0000683496 00000 n +0000678197 00000 n +0000683619 00000 n +0000683743 00000 n +0000683806 00000 n +0000689716 00000 n +0000689339 00000 n +0000684006 00000 n +0000689462 00000 n +0000689588 00000 n +0000689652 00000 n +0000695568 00000 n +0000695259 00000 n +0000689853 00000 n +0000695382 00000 n +0000695506 00000 n +0000701441 00000 n +0000701129 00000 n +0000695705 00000 n +0000701252 00000 n +0000701378 00000 n +0000708172 00000 n +0000708323 00000 n +0000708600 00000 n +0000708019 00000 n +0000701578 00000 n +0000708475 00000 n +0000946376 00000 n +0000712786 00000 n +0000712850 00000 n +0000712914 00000 n +0000712599 00000 n +0000708698 00000 n +0000712722 00000 n +0000716277 00000 n +0000716030 00000 n +0000713012 00000 n +0000716153 00000 n +0000717846 00000 n +0000717596 00000 n +0000716388 00000 n +0000717719 00000 n +0000719512 00000 n +0000719264 00000 n +0000717957 00000 n +0000719387 00000 n +0000721647 00000 n +0000721397 00000 n +0000719623 00000 n +0000721520 00000 n +0000722591 00000 n +0000722343 00000 n +0000721758 00000 n +0000722466 00000 n +0000946501 00000 n +0000727323 00000 n +0000727599 00000 n +0000727179 00000 n +0000722689 00000 n +0000727472 00000 n +0000732792 00000 n +0000733067 00000 n +0000732648 00000 n +0000727710 00000 n +0000732942 00000 n +0000736611 00000 n +0000736887 00000 n +0000736467 00000 n +0000733178 00000 n +0000736760 00000 n +0000740567 00000 n +0000740319 00000 n +0000736998 00000 n +0000740442 00000 n +0000744601 00000 n +0000744877 00000 n +0000744457 00000 n +0000740678 00000 n +0000744750 00000 n +0000746206 00000 n +0000745958 00000 n +0000744988 00000 n +0000746081 00000 n +0000946626 00000 n +0000751184 00000 n +0000751336 00000 n +0000751680 00000 n +0000751031 00000 n +0000746317 00000 n +0000751491 00000 n +0000751617 00000 n +0000759230 00000 n +0000759379 00000 n +0000759530 00000 n +0000759682 00000 n +0000759958 00000 n +0000759059 00000 n +0000751842 00000 n +0000759834 00000 n +0000766292 00000 n +0000766443 00000 n +0000766591 00000 n +0000766743 00000 n +0000767018 00000 n +0000766121 00000 n +0000760069 00000 n +0000766892 00000 n +0000769336 00000 n +0000769613 00000 n +0000769192 00000 n +0000767129 00000 n +0000769488 00000 n +0000770642 00000 n +0000770392 00000 n +0000769724 00000 n +0000770515 00000 n +0000778692 00000 n +0000778842 00000 n +0000778993 00000 n +0000786339 00000 n +0000779265 00000 n +0000778530 00000 n +0000770740 00000 n +0000779141 00000 n +0000946751 00000 n +0000786488 00000 n +0000786639 00000 n +0000786851 00000 n +0000786177 00000 n +0000779427 00000 n +0000786787 00000 n +0000789699 00000 n +0000789513 00000 n +0000786975 00000 n +0000789636 00000 n +0000790124 00000 n +0000789937 00000 n +0000789797 00000 n +0000790060 00000 n +0000798261 00000 n +0000797267 00000 n +0000790196 00000 n +0000797390 00000 n +0000797453 00000 n +0000797578 00000 n +0000798074 00000 n +0000798199 00000 n +0000802172 00000 n +0000801543 00000 n +0000798359 00000 n +0000801666 00000 n +0000802108 00000 n +0000802270 00000 n +0000802723 00000 n +0000803057 00000 n +0000803413 00000 n +0000803439 00000 n +0000803950 00000 n +0000803988 00000 n +0000804683 00000 n +0000805016 00000 n +0000805096 00000 n +0000805476 00000 n +0000806118 00000 n +0000806782 00000 n +0000807410 00000 n +0000808053 00000 n +0000808343 00000 n +0000808996 00000 n +0000823157 00000 n +0000823595 00000 n +0000835994 00000 n +0000836422 00000 n +0000847529 00000 n +0000847864 00000 n +0000849950 00000 n +0000850172 00000 n +0000854363 00000 n +0000854606 00000 n +0000871594 00000 n +0000872129 00000 n +0000874405 00000 n +0000874637 00000 n +0000877020 00000 n +0000877258 00000 n +0000886940 00000 n +0000887317 00000 n +0000893307 00000 n +0000893627 00000 n +0000897677 00000 n +0000898021 00000 n +0000899644 00000 n +0000899880 00000 n +0000913685 00000 n +0000914064 00000 n +0000920337 00000 n +0000920605 00000 n +0000934097 00000 n +0000934586 00000 n +0000941393 00000 n +0000946876 00000 n +0000946996 00000 n +0000947120 00000 n +0000947246 00000 n +0000947363 00000 n +0000947455 00000 n +0000958393 00000 n +0000958580 00000 n +0000958765 00000 n +0000958948 00000 n +0000959133 00000 n +0000959311 00000 n +0000959480 00000 n +0000959651 00000 n +0000959821 00000 n +0000959992 00000 n +0000960162 00000 n +0000960339 00000 n +0000960514 00000 n +0000960691 00000 n +0000960866 00000 n +0000961043 00000 n +0000961217 00000 n +0000961391 00000 n +0000961568 00000 n +0000961743 00000 n +0000961920 00000 n +0000962106 00000 n +0000962327 00000 n +0000962544 00000 n +0000962749 00000 n +0000962936 00000 n +0000963118 00000 n +0000963296 00000 n +0000963481 00000 n +0000963663 00000 n +0000963845 00000 n +0000964030 00000 n +0000964213 00000 n +0000964389 00000 n +0000964559 00000 n +0000964730 00000 n +0000964900 00000 n +0000965071 00000 n +0000965243 00000 n +0000965417 00000 n +0000965594 00000 n +0000965769 00000 n +0000965946 00000 n +0000966121 00000 n +0000966298 00000 n +0000966473 00000 n +0000966650 00000 n +0000966825 00000 n +0000967002 00000 n +0000967179 00000 n +0000967380 00000 n +0000967581 00000 n +0000967784 00000 n +0000967985 00000 n +0000968188 00000 n +0000968389 00000 n +0000968592 00000 n +0000968793 00000 n +0000968996 00000 n +0000969196 00000 n +0000969396 00000 n +0000969599 00000 n +0000969800 00000 n +0000970003 00000 n +0000970204 00000 n +0000970402 00000 n +0000970587 00000 n +0000970785 00000 n +0000971008 00000 n +0000971271 00000 n +0000971449 00000 n +0000971627 00000 n +0000971796 00000 n +0000971895 00000 n +0000972012 00000 n +0000972128 00000 n +0000972244 00000 n +0000972363 00000 n +0000972482 00000 n +0000972599 00000 n +0000972715 00000 n +0000972831 00000 n +0000972950 00000 n +0000973073 00000 n +0000973195 00000 n +0000973313 00000 n +0000973384 00000 n +0000973502 00000 n +0000973618 00000 n +0000973689 00000 n +0000973778 00000 n +0000973818 00000 n +0000974055 00000 n trailer -<< /Size 1665 -/Root 1663 0 R -/Info 1664 0 R -/ID [ ] >> +<< /Size 1711 +/Root 1709 0 R +/Info 1710 0 R +/ID [<672A678D1B6F9902A113EC886DA0B70A> <672A678D1B6F9902A113EC886DA0B70A>] >> startxref -942204 +974692 %%EOF diff --git a/docs/src/Makefile b/docs/src/Makefile index 13f5780f..933f1510 100644 --- a/docs/src/Makefile +++ b/docs/src/Makefile @@ -158,7 +158,7 @@ TEXLNFIL = $(addprefix $(PWD)/,$(TEXFILES)) #============================================================================ -all: pdf html +all: pdf pdf: $(PDF) copypdf html: $(HTML) diff --git a/docs/src/commrout.tex b/docs/src/commrout.tex index 627f2dd8..d0070cbb 100644 --- a/docs/src/commrout.tex +++ b/docs/src/commrout.tex @@ -405,7 +405,7 @@ $glob\_x$. \\ Scope: {\bf local} \\ Type: {\bf required}\\ Intent: {\bf in}.\\ -Specified as: a rank one or two array containing numbers of the type +Specified as: a rank one or two array or an object of type \vdata\ indicated in Table~\ref{tab:gather}. \item[desc\_a] contains data structures for communications.\\ Scope: {\bf local} \\ @@ -447,7 +447,7 @@ Specified as: an integer variable $-1\le root\le np-1$, default $-1$. Scope: {\bf global} \\ Type: {\bf required}\\ Intent: {\bf out}.\\ -Specified as: a rank one or two array. +Specified as: a rank one or two array with the \verb|ALLOCATABLE| attribute. \item[info] Error code.\\ Scope: {\bf local} \\ Type: {\bf required} \\ diff --git a/docs/src/datastruct.tex b/docs/src/datastruct.tex index 2fb59016..3c282cc4 100644 --- a/docs/src/datastruct.tex +++ b/docs/src/datastruct.tex @@ -51,8 +51,8 @@ pattern and enables data communications and other operations that are necessary for implementing the various algorithms of interest to us. The data structure itself \verb|psb_desc_type| can be treated as an -opaque object handled via the tools routines of -Sec.~\ref{sec:toolsrout} and~\ref{sec:dataquery}; +opaque object handled via the tools routines of +Sec.~\ref{sec:toolsrout} or the query routines detailed below; nevertheless we include here a description for the curious reader. @@ -140,7 +140,8 @@ Specified as: an allocatable integer array of rank two. The Fortran~2003 declaration for \verb|psb_desc_type| structures is as follows: \begin{figure}[h!] - \begin{Sbox} + % \begin{Sbox} +\begin{center} \begin{minipage}[tl]{0.9\textwidth} \begin{verbatim} type psb_desc_type @@ -154,11 +155,12 @@ type psb_desc_type end type psb_desc_type \end{verbatim} \end{minipage} - \end{Sbox} - \setlength{\fboxsep}{8pt} - \begin{center} - \fbox{\TheSbox} \end{center} +% \end{Sbox} +% \setlength{\fboxsep}{8pt} +% \begin{center} +% \fbox{\TheSbox} +% \end{center} \caption{\label{fig:desctype}The PSBLAS defined data type that contains the communication descriptor.} \end{figure} @@ -389,7 +391,8 @@ specific layout can be chosen dynamically among the predefined types, or an entirely new storage layout can be implemented and passed to the library at runtime via the \verb|psb_spasb| routine. \begin{figure}[h!] - \begin{Sbox} + % \begin{Sbox} +\begin{center} \begin{minipage}[tl]{0.85\textwidth} \begin{verbatim} @@ -401,11 +404,12 @@ library at runtime via the \verb|psb_spasb| routine. \end{verbatim} \end{minipage} - \end{Sbox} - \setlength{\fboxsep}{8pt} - \begin{center} - \fbox{\TheSbox} \end{center} +% \end{Sbox} +% \setlength{\fboxsep}{8pt} +% \begin{center} +% \fbox{\TheSbox} +% \end{center} \caption{\label{fig:spmattype} The PSBLAS defined data type that contains a sparse matrix.} @@ -629,7 +633,9 @@ Scope: {\bf local}\\ \subsection{Dense Vector Data Structure} \label{sec:vecttype} The \hypertarget{vdata}{{\tt psb\_T\_vect\_type}} data structure -encapsulates the dense vectors in a way similar to sparse matrices. +encapsulates the dense vectors in a way similar to sparse matrices, +i.e. including a base type \hypertarget{vbasedata}{{\tt + psb\_T\_base\_vect\_type}}. The user will not, in general, access the vector components directly, but rather via the routines of sec.~\ref{sec:toolsrout}. Among other simple things, we define here an extraction method that can be used to @@ -653,7 +659,8 @@ available elsewhere outside the direct control of the compiler/application, e.g. data stored in a graphics accelerator's private memory. \begin{figure}[h!] - \begin{Sbox} + % \begin{Sbox} +\begin{center} \begin{minipage}[tl]{0.85\textwidth} \begin{verbatim} type psb_T_base_vect_type @@ -666,11 +673,12 @@ private memory. \end{verbatim} \end{minipage} - \end{Sbox} - \setlength{\fboxsep}{8pt} - \begin{center} - \fbox{\TheSbox} \end{center} +% \end{Sbox} +% \setlength{\fboxsep}{8pt} +% \begin{center} +% \fbox{\TheSbox} +% \end{center} \caption{\label{fig:vectype} The PSBLAS defined data type that contains a dense vector.} @@ -772,66 +780,27 @@ associated communication descriptor.%% which may be different than the %% \verb|psb_precbld| subroutine. %% This data structure wants to be flexible enough to easily allow the %% implementation of new kind of preconditioners. -The values contained in -the \verb|iprcparm| and \verb|rprcparm| define tha type of -preconditioner along with all the parameters related to it; thus, -\verb|iprcparm| and \verb|rprcparm| define how the other records have -to be interpreted. This data structure is the basis of more complex -preconditioning strategies, which are the subject of further -research. +The internal preconditioner is allocated appropriately with the +dynamic type corresponding to the desired preconditioner. \begin{figure}[h!] \small - \begin{Sbox} + % \begin{Sbox} +\begin{center} \begin{minipage}[tl]{0.9\textwidth} \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_dspmat_type), allocatable :: av(:) - real(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_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 + type psb_Tprec_type + class(psb_T_base_prec_type), allocatable :: prec + end type psb_Tprec_type \end{verbatim} \end{minipage} - \end{Sbox} - \setlength{\fboxsep}{8pt} - \begin{center} - \fbox{\TheSbox} \end{center} +% \end{Sbox} +% \setlength{\fboxsep}{8pt} +% \begin{center} +% \fbox{\TheSbox} +% \end{center} \caption{\label{fig:prectype}The PSBLAS defined data type that contains a preconditioner.} \end{figure} @@ -855,8 +824,8 @@ research. %% \end{description} -\subsection{Data structure Methods} -\label{sec:dataquery} +% \subsection{Data structure Methods} +% \label{sec:dataquery} diff --git a/docs/src/intro.tex b/docs/src/intro.tex index f5bad6e1..fbf48020 100644 --- a/docs/src/intro.tex +++ b/docs/src/intro.tex @@ -103,8 +103,7 @@ further details on our communication layer see Sec.~\ref{sec:parenv}. \ifcase\pdfoutput \includegraphics[scale=0.65]{figures/psblas.eps} \or -%\rotatebox{-90}{\includegraphics[scale=0.65]{figures/psblas}} -{\includegraphics[scale=0.65]{figures/psblas}} +\includegraphics[scale=0.65]{figures/psblas} \fi \end{center} \caption{PSBLAS library components hierarchy.\label{fig:psblas}} @@ -297,6 +296,7 @@ constant whose current value is \verb|3.0.0| \subsection{Application structure} +\label{sec:appstruct} The main underlying principle of the PSBLAS library is that the library objects are created and exist with reference to a discretized @@ -411,6 +411,38 @@ single call to \verb|psb_spins|; this, however, would entail a doubling of memory occupation, and thus would be almost always far from optimal. +\subsubsection{User-defined index mappings} +\label{sec:usermaps} +PSBLAS supports user-defined global to local index mappings, subject +to the constraints outlined in sec.~\ref{sec:appstruct}: +\begin{enumerate} +\item The set of indices owned locally must be mapped to the set + $1\dots n_{\hbox{row}_i}$; +\item The set of halo points must be mapped to the set + $n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$; +\end{enumerate} +but otherwise the mapping is arbitrary. The user application is +responsible to ensure consistency of this mapping; some errors may be +caught by the library, but this is not guaranteed. +The application structure to +support this usage is as follows: +\begin{enumerate} +\item Initialize index space with + \verb|psb_cdall(ictx,desc,info,vl=vl,lidx=lidx)| passing the vectors + \verb|vl(:)| containing the set of global indices owned by the + current process and \verb|lidx(:)| containing the corresponding + local indices; +\item Add the halo points \verb|ja(:)| and their associated local + indices \verb|lidx(:)| with a(some) call(s) to + \verb|psb_cdins(nz,ja,desc,info,lidx=lidx)|; +\item Assemble the descriptor with \verb|psb_cdasb|; +\item Build the sparse matrices and vectors, optionally making use in + \verb|psb_spins| and \verb|psb_geins| of the \verb|local| argument + specifying that the indices in \verb|ia|, \verb|ja| and \verb|irw|, + respectively, are already local indices. +\end{enumerate} + + \subsection{Programming model} The PSBLAS librarary is based on the Single Program Multiple Data diff --git a/docs/src/methods.tex b/docs/src/methods.tex index 9d271c3d..27eec2f8 100644 --- a/docs/src/methods.tex +++ b/docs/src/methods.tex @@ -62,12 +62,12 @@ Specified as: a structured data of type \precdata. Scope: {\bf local} \\ Type: {\bf required}\\ Intent: {\bf in}.\\ -Specified as: a rank one array. +Specified as: a rank one array or an object of type \vdata. \item[x] The initial guess. \\ Scope: {\bf local} \\ Type: {\bf required}\\ Intent: {\bf inout}.\\ -Specified as: a rank one array. +Specified as: a rank one array or an object of type \vdata. \item[eps] The stopping tolerance. \\ Scope: {\bf global} \\ Type: {\bf required}\\ @@ -107,7 +107,7 @@ of the residual. Default: 2. Scope: {\bf local} \\ Type: {\bf required}\\ Intent: {\bf inout}.\\ -Specified as: a rank one array. +Specified as: a rank one array or an object of type \vdata. \item[iter] The number of iterations performed.\\ Scope: {\bf global} \\ Type: {\bf optional}\\ diff --git a/docs/src/precs.tex b/docs/src/precs.tex index c41247d6..0f7b89dd 100644 --- a/docs/src/precs.tex +++ b/docs/src/precs.tex @@ -85,7 +85,7 @@ $ptype$ string as follows\footnote{The string is case-insensitive}: \addcontentsline{toc}{subsection}{psb\_precbld} \begin{verbatim} -call psb_precbld(a, desc_a, prec, info) +call psb_precbld(a, desc_a, prec, info,amold,vmold) \end{verbatim} \begin{description} @@ -111,6 +111,17 @@ Specified as: a communication descriptor data structure \descdata. %% Type: {\bf optional}\\ %% Intent: {\bf in}.\\ %% Specified as: a character. +\item[amold] The desired dynamic type for the internal matrix storage.\\ +Scope: {\bf local}.\\ +Type: {\bf optional}.\\ +Intent: {\bf in}.\\ +Specified as: an object of a class derived from \spbasedata. +\item[vmold] The desired dynamic type for the internal vector storage.\\ +Scope: {\bf local}.\\ +Type: {\bf optional}.\\ +Intent: {\bf in}.\\ +Specified as: an object of a class derived from \vbasedata. + \end{description} \begin{description} @@ -149,7 +160,7 @@ Specified as: a preconditioner data structure \precdata. Scope: {\bf local} \\ Type: {\bf required}\\ Intent: {\bf inout}.\\ -Specified as: a double precision array. +Specified as: a rank one array or an object of type \vdata. \item[desc\_a] the problem communication descriptor. Scope: {\bf local} \\ Type: {\bf required}\\ @@ -173,7 +184,7 @@ Specified as: a double precision array. Scope: {\bf local} \\ Type: {\bf required}\\ Intent: {\bf inout}.\\ -Specified as: a double precision array. +Specified as: a rank one array or an object of type \vdata. \item[info] Error code.\\ Scope: {\bf local} \\ Type: {\bf required} \\ diff --git a/docs/src/psbrout.tex b/docs/src/psbrout.tex index feae2961..952e2b13 100644 --- a/docs/src/psbrout.tex +++ b/docs/src/psbrout.tex @@ -691,6 +691,70 @@ An integer value; 0 means no error has been detected. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% 1-NORM OF A MATRIX +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\clearpage\subsection*{psb\_spnrm1 --- 1-Norm of Sparse Matrix} +\addcontentsline{toc}{subsection}{psb\_spnrm1} + +This function computes the 1-norm of a matrix $A$:\\ + +\[ nrm1 \leftarrow \|A\|_1 \] +where: +\begin{description} +\item[$A$] represents the global matrix $A$ +\end{description} + +\begin{table}[h] +\begin{center} +\begin{tabular}{ll} +\hline +$A$ & {\bf Function}\\ +\hline +Short Precision Real & psb\_spnrm1 \\ +Long Precision Real & psb\_spnrm1 \\ +Short Precision Complex & psb\_spnrm1 \\ +Long Precision Complex & psb\_spnrm1 \\ +\hline +\end{tabular} +\end{center} +\caption{Data types\label{tab:f90nrm1}} +\end{table} + +\begin{verbatim} +psb_spnrm1(A, desc_a, info) +\end{verbatim} + +\begin{description} +\item[Type:] Synchronous. +\item[\bf On Entry] +\item[a] the local portion of the global sparse matrix +$A$. \\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf in}.\\ +Specified as: an object of type \spdata. +\item[desc\_a] contains data structures for communications.\\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf in}.\\ +Specified as: an object of type \descdata. +\item[\bf On Return] +\item[Function value] is the 1-norm of sparse submatrix $A$.\\ +Scope: {\bf global} \\ +Specified as: a long precision real number. +\item[info] Error code.\\ +Scope: {\bf local} \\ +Type: {\bf required} \\ +Intent: {\bf out}.\\ +An integer value; 0 means no error has been detected. +\end{description} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % INFINITY-NORM OF A MATRIX diff --git a/docs/src/toolsrout.tex b/docs/src/toolsrout.tex index 6d74a194..0beb833f 100644 --- a/docs/src/toolsrout.tex +++ b/docs/src/toolsrout.tex @@ -11,7 +11,7 @@ \begin{verbatim} call psb_cdall(icontxt, desc_a, info,mg=mg,parts=parts) call psb_cdall(icontxt, desc_a, info,vg=vg,[mg=mg,flag=flag]) -call psb_cdall(icontxt, desc_a, info,vl=vl,[nl=nl,globalcheck=.true.]) +call psb_cdall(icontxt, desc_a, info,vl=vl,[nl=nl,globalcheck=.true.,lidx=lidx]) call psb_cdall(icontxt, desc_a, info,nl=nl) call psb_cdall(icontxt, desc_a, info,mg=mg,repl=.true.) \end{verbatim} @@ -64,8 +64,8 @@ Type:{\bf optional}.\\ Intent: {\bf in}.\\ Specified as: an integer value. May be specified together with \verb|vl|. -\item[repl] Data allocation: build a replicated index space (i.e. all - processes own all indices).\\ +\item[repl] Data allocation: build a replicated index space + (i.e. all processes own all indices).\\ Scope:{\bf global}.\\ Type:{\bf optional}.\\ Intent: {\bf in}.\\ @@ -76,6 +76,12 @@ Scope:{\bf global}.\\ Type:{\bf optional}.\\ Intent: {\bf in}.\\ Specified as: a logical value, default: \verb|.true.| +\item[lidx] Data allocation: the set of local indices + $lidx(1:nl)$ to be assigned to the global indices $vl$. \\ +Scope:{\bf local}.\\ +Type:{\bf optional}.\\ +Intent: {\bf in}.\\ +Specified as: an integer array. \end{description} \begin{description} @@ -139,8 +145,8 @@ An integer value; 0 means no error has been detected. problem size $mg$ is given by the range of the aggregate of the individual vectors \verb|vl| specified in the calling processes. The size may be specified via the optional - argument \verb|nl|; the default is to use the entire vector \verb|vl|, thus having - \verb|nl=size(vl)|. + argument \verb|nl|; the default is to use the entire vector + \verb|vl|, thus having \verb|nl=size(vl)|. If \verb|globalcheck=.true.| the subroutine will check how many times each entry in the global index space $(1\dots mg)$ is specified in the input lists \verb|vl|, thus allowing for the @@ -149,6 +155,14 @@ An integer value; 0 means no error has been detected. check for overlap, and may be significantly faster, but the user is implicitly guaranteeing that there are neither orphan nor overlap indices. +\item[lidx] The optional argument \verb|lidx| is available for + those cases in which the user has already established a + global-to-local mapping; if it is specified, each index in + \verb|vl(i)| will be mapped to the corresponding local index + \verb|lidx(i)|. When specifying the argument \verb|lidx| the user + would also likely employ \verb|lidx| in calls to \verb|psb_cdins| + and \verb|local| in calls to \verb|psb_spins| and \verb|psb_geins|; + see also sec.~\ref{sec:usermaps}. \item[nl] If this argument is specified alone (i.e. without \verb|vl|) the result is a generalized row-block distribution in which each process $I$ gets assigned a consecutive chunk of $N_I=nl$ global @@ -186,13 +200,17 @@ An integer value; 0 means no error has been detected. \addcontentsline{toc}{subsection}{psb\_cdins} \begin{verbatim} -call psb_cdins(nz, ia, ja, desc_a, info) +call psb_cdins(nz, ia, ja, desc_a, info [,ila,jla]) +call psb_cdins(nz,ja,desc,info[,jla,mask,lidx]) \end{verbatim} This subroutine examines the edges of the graph associated with the discretization mesh (and isomorphic to the sparsity pattern of a linear system coefficient matrix), storing them as necessary into the -communication descriptor. +communication descriptor. In the first form the edges are specified as +pairs of indices $ia(i),ja(i)$; the starting index $ia(i)$ should +belong to the current process. +In the second form only the remote indices $ja(i)$ are specified. \begin{description} \item[Type:] Asynchronous. @@ -212,9 +230,20 @@ Scope: {\bf local}.\\ Type: {\bf required}.\\ Intent: {\bf in}.\\ Specified as: an integer array of length $nz$. +\item[mask] Mask entries in \verb|ja|, they are inserted only when the + corresponding \verb|mask| entries are \verb|.true.|\\ +Scope: {\bf local}.\\ +Type: {\bf optional}.\\ +Intent: {\bf in}.\\ +Specified as: a logical array of length $nz$, default \verb|.true.|. +\item[lidx] User defined local indices for \verb|ja|.\\ +Scope: {\bf local}.\\ +Type: {\bf optional}.\\ +Intent: {\bf in}.\\ +Specified as: an integer array of length $nz$. %% \item[is] the row offset.\\ %% Scope:{\bf local}.\\ -%% Type:{\bf optional}.\\ +%% Type:{\bf optional}.\\a %% Specified as: an integer value. %% \item[js] the column offset.\\ %% Scope: {\bf local}.\\ @@ -234,6 +263,17 @@ Scope: {\bf local} \\ Type: {\bf required} \\ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. +\item[ila] the local indices of the starting vertex of the edges being inserted.\\ +Scope: {\bf local}.\\ +Type: {\bf optional}.\\ +Intent: {\bf out}.\\ +Specified as: an integer array of length $nz$. +\item[jla] the local indices of the end vertex of the edges being inserted.\\ +Scope: {\bf local}.\\ +Type: {\bf optional}.\\ +Intent: {\bf out}.\\ +Specified as: an integer array of length $nz$. + \end{description} {\par\noindent\large\bfseries Notes} \begin{enumerate} @@ -241,7 +281,9 @@ An integer value; 0 means no error has been detected. build state; \item This routine automatically ignores edges that do not insist on the current process, i.e. edges for which neither the starting -nor the end vertex belong to the current process. +nor the end vertex belong to the current process. +\item The second form of this routine will be useful when dealing with + user-specified index mappings; see also~\ref{sec:usermaps}. \end{enumerate} @@ -552,7 +594,7 @@ An integer value; 0 means no error has been detected. \addcontentsline{toc}{subsection}{psb\_spins} \begin{verbatim} -call psb_spins(nz, ia, ja, val, a, desc_a, info) +call psb_spins(nz, ia, ja, val, a, desc_a, info [,local]) \end{verbatim} \begin{description} @@ -578,12 +620,18 @@ Scope:{\bf local}.\\ Type:{\bf required}.\\ Intent: {\bf in}.\\ 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$. +of the coefficients of the sparse matrix $a$. \item[desc\_a] The communication descriptor.\\ Scope: {\bf local}. \\ Type: {\bf required}.\\ Intent: {\bf inout}.\\ Specified as: a variable of type \descdata.\\ +\item[local] Whether the entries in the indices vectors \verb|ia|, + \verb|ja| are already in local numbering. \\ + Scope:{\bf local}.\\ + Type:{\bf optional}.\\ + Specified as: a logical value; default: \verb|.false.|. + %% \item[is] the starting row on matrix $a$.\\ %% Scope:{\bf local}.\\ %% Type:{\bf optional}.\\ @@ -624,14 +672,24 @@ An integer value; 0 means no error has been detected. (implicitly) call \verb|psb_cdins| to add entries to the sparsity pattern; each sparse matrix entry implicitly defines a graph edge, that is passed to the descriptor routine for the appropriate - processing. -\item Any coefficients from matrix rows not assigned to the calling + processing; +\item The coefficients to be inserted are represented by the ordered + triples $ia(i),ja(i),val(i)$, for $i=1,\dots,nz$; these triples + should belong to the current process, i.e. $ia(i)$ should be one of + the local indices, but are otherwise arbitrary; +\item There is no + requirement that a given row must be passed in its entirety to a + single call to this routine: the buildup of a row may be split into + as many calls as desired; +\item Coefficients from different rows may also be mixed up freely + in a single call, according to the application needs; +\item Any coefficients from matrix rows not owned by the calling process are silently ignored; \item If the descriptor is in the assembled state, then any entries in the sparse matrix that would generate additional communication - requirements will be ignored; + requirements are ignored; \item If the matrix is in the update state, any entries in positions - that were not present in the original matrix will be ignored. + that were not present in the original matrix are ignored. \end{enumerate} % @@ -910,8 +968,8 @@ rank-1 array. Scope: {\bf local} \\ Type: {\bf required}\\ Intent: {\bf out}.\\ -Specified as: a rank one or two array with the ALLOCATABLE -attribute, of type real, complex or integer.\\ +Specified as: a rank one or two array with the ALLOCATABLE attribute +or an object of type \vdata, of type real, complex or integer.\\ \item[info] Error code.\\ Scope: {\bf local} \\ Type: {\bf required} \\ @@ -927,7 +985,7 @@ An integer value; 0 means no error has been detected. \addcontentsline{toc}{subsection}{psb\_geins} \begin{verbatim} -call psb_geins(m, irw, val, x, desc_a, info,dupl) +call psb_geins(m, irw, val, x, desc_a, info [,dupl,local]) \end{verbatim} \begin{description} @@ -962,6 +1020,12 @@ Type: {\bf optional}.\\ Intent: {\bf in}.\\ Specified as: integer, possible values: \verb|psb_dupl_ovwrt_|, \verb|psb_dupl_add_|. +\item[local] Whether the entries in the index vector \verb|irw|, + are already in local numbering. \\ + Scope:{\bf local}.\\ + Type:{\bf optional}.\\ + Specified as: a logical value; default: \verb|.false.|. + \end{description} \begin{description} @@ -970,8 +1034,8 @@ Specified as: integer, possible values: \verb|psb_dupl_ovwrt_|, Scope: {\bf local} \\ Type: {\bf required}\\ Intent: {\bf inout}.\\ -Specified as: a rank one or two array with the ALLOCATABLE -attribute, of type real, complex or integer.\\ +Specified as: a rank one or two array or an object of type \vdata, of +type real, complex or integer.\\ \item[info] Error code.\\ Scope: {\bf local} \\ Type: {\bf required} \\ @@ -994,7 +1058,7 @@ An integer value; 0 means no error has been detected. \addcontentsline{toc}{subsection}{psb\_geasb} \begin{verbatim} -call psb_geasb(x, desc_a, info) +call psb_geasb(x, desc_a, info, mold) \end{verbatim} \begin{description} @@ -1005,6 +1069,12 @@ Scope: {\bf local} \\ Type: {\bf required}\\ Intent: {\bf in}.\\ Specified as: a variable of type \descdata.\\ +\item[mold] The desired dynamic type for the internal vector storage.\\ +Scope: {\bf local}.\\ +Type: {\bf optional}.\\ +Intent: {\bf in}.\\ +Specified as: an object of a class derived from \vbasedata; this is +only allowed when $x$ is of type \vdata. \end{description} \begin{description} @@ -1013,8 +1083,8 @@ Specified as: a variable of type \descdata.\\ Scope: {\bf local} \\ Type: {\bf required}\\ Intent: {\bf inout}.\\ -Specified as: a rank one or two array with the ALLOCATABLE -attribute, of type real, complex or integer.\\ +Specified as: a rank one or two array with the ALLOCATABLE or an +object of type \vdata, of type real, complex or integer.\\ \item[info] Error code.\\ Scope: {\bf local} \\ Type: {\bf required} \\ @@ -1039,8 +1109,8 @@ call psb_gefree(x, desc_a, info) Scope: {\bf local} \\ Type: {\bf required}\\ Intent: {\bf inout}.\\ -Specified as: a rank one or two array with the ALLOCATABLE -attribute, of type real, complex or integer.\\ +Specified as: a rank one or two array with the ALLOCATABLE or an +object of type \vdata, of type real, complex or integer.\\ \item[desc\_a] The communication descriptor.\\ Scope: {\bf local} \\ @@ -1722,7 +1792,7 @@ position as the corresponding entries in $x$. subsequences that may be already in the desired ordering prior to the subroutine call; this situation is relatively common when dealing with groups of indices of sparse matrix entries, thus - merge-sort is often the preferred choice when a sorting is needed + merge-sort is the preferred choice when a sorting is needed by other routines in the library. \end{enumerate} \end{enumerate} diff --git a/docs/src/userguide.tex b/docs/src/userguide.tex index 9a664410..7d7b5391 100644 --- a/docs/src/userguide.tex +++ b/docs/src/userguide.tex @@ -24,7 +24,7 @@ \relax \pdfcompresslevel=0 %-- 0 = none, 9 = best \pdfinfo{ %-- Info dictionary of PDF output /Author (Alfredo Buttari) - /Title (Parallel Sparse BLAS V. 3.0-beta) + /Title (Parallel Sparse BLAS V. 3.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) @@ -76,10 +76,11 @@ \newcommand{\spdata}{\hyperlink{spdata}{{\tt psb\_Tspmat\_type}}} \newcommand{\vdata}{\hyperlink{vdata}{{\tt psb\_T\_vect\_type}}} \newcommand{\spbasedata}{\hypertarget{spbasedata}{{\tt psb\_T\_base\_sparse\_mat}}} +\newcommand{\vbasedata}{\hypertarget{vbasedata}{{\tt psb\_T\_base\_vect\_type}}} \begin{document} -\pdfbookmark{PSBLAS-v3.0-beta User's Guide}{title} +\pdfbookmark{PSBLAS-v3.0 User's Guide}{title} \newlength{\centeroffset} \setlength{\centeroffset}{-0.5\oddsidemargin} @@ -89,7 +90,7 @@ \vspace*{\stretch{1}} \noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth} \flushright -{\Huge\bfseries PSBLAS 3.0-beta User's guide +{\Huge\bfseries PSBLAS 3.0 User's guide } \noindent\rule[-1ex]{\textwidth}{5pt}\\[2.5ex] \hfill\emph{\Large A reference guide for the Parallel Sparse BLAS library} @@ -102,7 +103,7 @@ by Salvatore Filippone\\ and Alfredo Buttari}\\ University of Rome ``Tor Vergata''.\\[3ex] -December 15th, 2011. +May 25, 2012 \end{minipage}} %\addtolength{\textwidth}{\centeroffset} diff --git a/docs/src/userhtml.tex b/docs/src/userhtml.tex index 323be30d..a7740272 100644 --- a/docs/src/userhtml.tex +++ b/docs/src/userhtml.tex @@ -75,6 +75,8 @@ \newcommand{\spdata}{\hyperlink{spdata}{{\tt psb\_Tspmat\_type}}} \newcommand{\vdata}{\hyperlink{vdata}{{\tt psb\_T\_vect\_type}}} \newcommand{\spbasedata}{\hypertarget{spbasedata}{{\tt psb\_T\_base\_sparse\_mat}}} +\newcommand{\vbasedata}{\hypertarget{vbasedata}{{\tt psb\_T\_base\_vect\_type}}} + \begin{document} {\LARGE\bfseries PSBLAS\\[.8ex] User's and Reference Guide}\\[\baselineskip] @@ -84,9 +86,9 @@ University of Rome ``Tor Vergata'', Italy\\[2ex] %\\[10ex] %\today -Software version: 3.0-beta\\ +Software version: 3.0\\ %\today -December 15th, 2011 +May 25, 2012. \cleardoublepage \begingroup \renewcommand*{\thepage}{toc} diff --git a/krylov/psb_base_krylov_conv_mod.f90 b/krylov/psb_base_krylov_conv_mod.f90 index 54f6adc4..3dff58b4 100644 --- a/krylov/psb_base_krylov_conv_mod.f90 +++ b/krylov/psb_base_krylov_conv_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_c_krylov_conv_mod.f90 b/krylov/psb_c_krylov_conv_mod.f90 index 573a6e72..812db782 100644 --- a/krylov/psb_c_krylov_conv_mod.f90 +++ b/krylov/psb_c_krylov_conv_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_cbicg.f90 b/krylov/psb_cbicg.f90 index 2ae8f3e9..1beb3ad1 100644 --- a/krylov/psb_cbicg.f90 +++ b/krylov/psb_cbicg.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_ccg.f90 b/krylov/psb_ccg.f90 index 61552c95..3ea0e53a 100644 --- a/krylov/psb_ccg.f90 +++ b/krylov/psb_ccg.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_ccgs.f90 b/krylov/psb_ccgs.f90 index 4db565db..d9203e0f 100644 --- a/krylov/psb_ccgs.f90 +++ b/krylov/psb_ccgs.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_ccgstab.f90 b/krylov/psb_ccgstab.f90 index de08e968..65f8f709 100644 --- a/krylov/psb_ccgstab.f90 +++ b/krylov/psb_ccgstab.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_ccgstabl.f90 b/krylov/psb_ccgstabl.f90 index 590aabfa..d4971c3d 100644 --- a/krylov/psb_ccgstabl.f90 +++ b/krylov/psb_ccgstabl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_ckrylov.f90 b/krylov/psb_ckrylov.f90 index 949cd354..bdd0ff77 100644 --- a/krylov/psb_ckrylov.f90 +++ b/krylov/psb_ckrylov.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_crgmres.f90 b/krylov/psb_crgmres.f90 index afaa5c74..f2d73164 100644 --- a/krylov/psb_crgmres.f90 +++ b/krylov/psb_crgmres.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -506,7 +506,7 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& character(len=*), parameter :: methdname='RGMRES' info = psb_success_ - name = 'psb_sgmres' + name = 'psb_cgmres' call psb_erractionsave(err_act) debug_unit = psb_get_debug_unit() debug_level = psb_get_debug_level() @@ -717,7 +717,7 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& scal=cone/h(i+1,i) call psb_geaxpby(scal,w,czero,v(i+1),desc_a,info) do k=2,i - call crot(1,h(k-1,i),1,h(k,i),1,real(c(k-1)),s(k-1)) + call crot(1,h(k-1,i),1,h(k,i),1,real(c(k-1),kind=psb_spk_),s(k-1)) enddo @@ -725,9 +725,9 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& rti1 = h(i+1,i) call crotg(rti,rti1,tmp,s(i)) c(i) = cmplx(tmp,szero) - call crot(1,h(i,i),1,h(i+1,i),1,real(c(i)),s(i)) + call crot(1,h(i,i),1,h(i+1,i),1,real(c(i),kind=psb_spk_),s(i)) h(i+1,i) = czero - call crot(1,rs(i),1,rs(i+1),1,real(c(i)),s(i)) + call crot(1,rs(i),1,rs(i+1),1,real(c(i),kind=psb_spk_),s(i)) if (istop_ == 1) then ! diff --git a/krylov/psb_d_krylov_conv_mod.f90 b/krylov/psb_d_krylov_conv_mod.f90 index 46221e34..b05f8037 100644 --- a/krylov/psb_d_krylov_conv_mod.f90 +++ b/krylov/psb_d_krylov_conv_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_dbicg.f90 b/krylov/psb_dbicg.f90 index 2f15d79c..088841a0 100644 --- a/krylov/psb_dbicg.f90 +++ b/krylov/psb_dbicg.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_dcg.f90 b/krylov/psb_dcg.f90 index f043988f..2d0997ac 100644 --- a/krylov/psb_dcg.f90 +++ b/krylov/psb_dcg.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_dcgs.f90 b/krylov/psb_dcgs.f90 index 584244aa..b9508199 100644 --- a/krylov/psb_dcgs.f90 +++ b/krylov/psb_dcgs.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_dcgstab.f90 b/krylov/psb_dcgstab.f90 index 124bbf4b..4ce62d74 100644 --- a/krylov/psb_dcgstab.f90 +++ b/krylov/psb_dcgstab.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_dcgstabl.f90 b/krylov/psb_dcgstabl.f90 index 7bfdabd9..7933e36b 100644 --- a/krylov/psb_dcgstabl.f90 +++ b/krylov/psb_dcgstabl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_dkrylov.f90 b/krylov/psb_dkrylov.f90 index 81a389c2..eaae5d4c 100644 --- a/krylov/psb_dkrylov.f90 +++ b/krylov/psb_dkrylov.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_drgmres.f90 b/krylov/psb_drgmres.f90 index 2211c54e..8bf4701a 100644 --- a/krylov/psb_drgmres.f90 +++ b/krylov/psb_drgmres.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -506,7 +506,7 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& character(len=*), parameter :: methdname='RGMRES' info = psb_success_ - name = 'psb_sgmres' + name = 'psb_dgmres' call psb_erractionsave(err_act) debug_unit = psb_get_debug_unit() debug_level = psb_get_debug_level() @@ -717,17 +717,17 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& scal=done/h(i+1,i) call psb_geaxpby(scal,w,dzero,v(i+1),desc_a,info) do k=2,i - call drot(1,h(k-1,i),1,h(k,i),1,real(c(k-1)),s(k-1)) + call drot(1,h(k-1,i),1,h(k,i),1,real(c(k-1),kind=psb_dpk_),s(k-1)) enddo rti = h(i,i) rti1 = h(i+1,i) call drotg(rti,rti1,tmp,s(i)) - c(i) = cmplx(tmp,szero) - call drot(1,h(i,i),1,h(i+1,i),1,real(c(i)),s(i)) + c(i) = cmplx(tmp,dzero) + call drot(1,h(i,i),1,h(i+1,i),1,real(c(i),kind=psb_dpk_),s(i)) h(i+1,i) = dzero - call drot(1,rs(i),1,rs(i+1),1,real(c(i)),s(i)) + call drot(1,rs(i),1,rs(i+1),1,real(c(i),kind=psb_dpk_),s(i)) if (istop_ == 1) then ! diff --git a/krylov/psb_krylov_conv_mod.f90 b/krylov/psb_krylov_conv_mod.f90 index 1b76f489..d91a25af 100644 --- a/krylov/psb_krylov_conv_mod.f90 +++ b/krylov/psb_krylov_conv_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_krylov_mod.f90 b/krylov/psb_krylov_mod.f90 index 12327c9b..615d3961 100644 --- a/krylov/psb_krylov_mod.f90 +++ b/krylov/psb_krylov_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_s_krylov_conv_mod.f90 b/krylov/psb_s_krylov_conv_mod.f90 index 209bb931..f4b9f8fa 100644 --- a/krylov/psb_s_krylov_conv_mod.f90 +++ b/krylov/psb_s_krylov_conv_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_sbicg.f90 b/krylov/psb_sbicg.f90 index 781b7122..f4c95b2f 100644 --- a/krylov/psb_sbicg.f90 +++ b/krylov/psb_sbicg.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_scg.f90 b/krylov/psb_scg.f90 index 059aeaa8..5336ad6a 100644 --- a/krylov/psb_scg.f90 +++ b/krylov/psb_scg.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_scgs.f90 b/krylov/psb_scgs.f90 index 745b06cd..b17cca39 100644 --- a/krylov/psb_scgs.f90 +++ b/krylov/psb_scgs.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_scgstab.f90 b/krylov/psb_scgstab.f90 index 82507b30..90058b43 100644 --- a/krylov/psb_scgstab.f90 +++ b/krylov/psb_scgstab.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_scgstabl.f90 b/krylov/psb_scgstabl.f90 index ff616ab4..64e5d086 100644 --- a/krylov/psb_scgstabl.f90 +++ b/krylov/psb_scgstabl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_skrylov.f90 b/krylov/psb_skrylov.f90 index 78159620..29ed80c2 100644 --- a/krylov/psb_skrylov.f90 +++ b/krylov/psb_skrylov.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_srgmres.f90 b/krylov/psb_srgmres.f90 index e79fcb0f..3e671b78 100644 --- a/krylov/psb_srgmres.f90 +++ b/krylov/psb_srgmres.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -717,7 +717,7 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& scal=sone/h(i+1,i) call psb_geaxpby(scal,w,szero,v(i+1),desc_a,info) do k=2,i - call srot(1,h(k-1,i),1,h(k,i),1,real(c(k-1)),s(k-1)) + call srot(1,h(k-1,i),1,h(k,i),1,real(c(k-1),kind=psb_spk_),s(k-1)) enddo @@ -725,9 +725,9 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& rti1 = h(i+1,i) call srotg(rti,rti1,tmp,s(i)) c(i) = cmplx(tmp,szero) - call srot(1,h(i,i),1,h(i+1,i),1,real(c(i)),s(i)) + call srot(1,h(i,i),1,h(i+1,i),1,real(c(i),kind=psb_spk_),s(i)) h(i+1,i) = szero - call srot(1,rs(i),1,rs(i+1),1,real(c(i)),s(i)) + call srot(1,rs(i),1,rs(i+1),1,real(c(i),kind=psb_spk_),s(i)) if (istop_ == 1) then ! diff --git a/krylov/psb_z_krylov_conv_mod.f90 b/krylov/psb_z_krylov_conv_mod.f90 index 480e66ab..ffa11203 100644 --- a/krylov/psb_z_krylov_conv_mod.f90 +++ b/krylov/psb_z_krylov_conv_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_zbicg.f90 b/krylov/psb_zbicg.f90 index 216585cf..3a9b1c74 100644 --- a/krylov/psb_zbicg.f90 +++ b/krylov/psb_zbicg.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_zcg.f90 b/krylov/psb_zcg.f90 index 66c37363..dd3bc839 100644 --- a/krylov/psb_zcg.f90 +++ b/krylov/psb_zcg.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_zcgs.f90 b/krylov/psb_zcgs.f90 index 30efe786..757c3835 100644 --- a/krylov/psb_zcgs.f90 +++ b/krylov/psb_zcgs.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_zcgstab.f90 b/krylov/psb_zcgstab.f90 index b69b0e3e..a0e343ad 100644 --- a/krylov/psb_zcgstab.f90 +++ b/krylov/psb_zcgstab.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_zcgstabl.f90 b/krylov/psb_zcgstabl.f90 index 81091004..0b55bf3c 100644 --- a/krylov/psb_zcgstabl.f90 +++ b/krylov/psb_zcgstabl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_zkrylov.f90 b/krylov/psb_zkrylov.f90 index c2a7299a..e1a0456c 100644 --- a/krylov/psb_zkrylov.f90 +++ b/krylov/psb_zkrylov.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/krylov/psb_zrgmres.f90 b/krylov/psb_zrgmres.f90 index 81137709..5852cba9 100644 --- a/krylov/psb_zrgmres.f90 +++ b/krylov/psb_zrgmres.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -506,7 +506,7 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& character(len=*), parameter :: methdname='RGMRES' info = psb_success_ - name = 'psb_sgmres' + name = 'psb_zgmres' call psb_erractionsave(err_act) debug_unit = psb_get_debug_unit() debug_level = psb_get_debug_level() @@ -717,17 +717,17 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& scal=zone/h(i+1,i) call psb_geaxpby(scal,w,zzero,v(i+1),desc_a,info) do k=2,i - call zrot(1,h(k-1,i),1,h(k,i),1,real(c(k-1)),s(k-1)) + call zrot(1,h(k-1,i),1,h(k,i),1,real(c(k-1),kind=psb_dpk_),s(k-1)) enddo rti = h(i,i) rti1 = h(i+1,i) call zrotg(rti,rti1,tmp,s(i)) - c(i) = cmplx(tmp,szero) - call zrot(1,h(i,i),1,h(i+1,i),1,real(c(i)),s(i)) + c(i) = cmplx(tmp,dzero) + call zrot(1,h(i,i),1,h(i+1,i),1,real(c(i),kind=psb_dpk_),s(i)) h(i+1,i) = zzero - call zrot(1,rs(i),1,rs(i+1),1,real(c(i)),s(i)) + call zrot(1,rs(i),1,rs(i+1),1,real(c(i),kind=psb_dpk_),s(i)) if (istop_ == 1) then ! diff --git a/opt/Makefile b/opt/Makefile deleted file mode 100644 index 00feb9b0..00000000 --- a/opt/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -include ../Make.inc -# -# Libraries used -# -LIBDIR=../lib/ -PSBLAS_LIB= -L$(LIBDIR) -lpsb_base -#-lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base -LDLIBS=$(PSBLDLIBS) -# -# Compilers and such -# -CCOPT= -g -FINCLUDES=$(FMFLAG). $(FMFLAG)$(LIBDIR) -HERE=. -LIBMOD=*$(.mod) - -LIBDIR=../lib - -EXEDIR=./runs - -OBJS=psb_d_ell_impl.o psb_d_ell_mat_mod.o - -LIBNAME=libpsb_opt.a - -lib: $(OBJS) - $(AR) $(HERE)/$(LIBNAME) $(OBJS) - $(RANLIB) $(HERE)/$(LIBNAME) - /bin/cp -p $(CPUPDFLAG) $(HERE)/$(LIBNAME) $(LIBDIR) - /bin/cp -p $(CPUPDFLAG) *$(.mod) $(LIBDIR) - - -libpsb_opt.a: $(OBJS) - ar cur libpsb_opt.a $(OBJS) - -$(OBJS): $(LIBDIR)/$(BASEMODNAME)$(.mod) -psb_d_ell_impl.o: psb_d_ell_mat_mod.o - - -clean: - /bin/rm -f $(OBJS) *$(.mod) - -verycleanlib: - (cd ../..; make veryclean) - - - - diff --git a/opt/psb_d_ell_impl.f90 b/opt/psb_d_ell_impl.f90 deleted file mode 100644 index 1a5a198e..00000000 --- a/opt/psb_d_ell_impl.f90 +++ /dev/null @@ -1,3031 +0,0 @@ - -! == =================================== -! -! -! -! Computational routines -! -! -! -! -! -! -! == =================================== - -subroutine psb_d_ell_csmv(alpha,a,x,beta,y,info,trans) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_csmv - implicit none - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:) - real(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i,j,k,m,n, nnz, ir, jc - real(psb_dpk_) :: acc - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name='d_ell_csmv' - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info,name) - goto 9999 - endif - - - tra = (psb_toupper(trans_) == 'T').or.(psb_toupper(trans_)=='C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) psb_d_ell_csmm - implicit none - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) - real(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i,j,k,m,n, nnz, ir, jc, nxy - real(psb_dpk_), allocatable :: acc(:) - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name='d_ell_csmm' - logical, parameter :: debug=.false. - - info = psb_success_ - call psb_erractionsave(err_act) - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info,name) - goto 9999 - endif - tra = (psb_toupper(trans_) == 'T').or.(psb_toupper(trans_)=='C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) psb_d_ell_cssv - implicit none - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:) - real(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i,j,k,m,n, nnz, ir, jc - real(psb_dpk_) :: acc - real(psb_dpk_), allocatable :: tmp(:) - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name='d_ell_cssv' - logical, parameter :: debug=.false. - - info = psb_success_ - call psb_erractionsave(err_act) - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info,name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T').or.(psb_toupper(trans_)=='C') - m = a%get_nrows() - - if (.not. (a%is_triangle())) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info,name) - goto 9999 - end if - - if (size(x) psb_d_ell_cssm - implicit none - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) - real(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i,j,k,m,n, nnz, ir, jc, nxy - real(psb_dpk_), allocatable :: tmp(:,:), acc(:) - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name='d_ell_cssm' - logical, parameter :: debug=.false. - - info = psb_success_ - call psb_erractionsave(err_act) - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info,name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T').or.(psb_toupper(trans_)=='C') - m = a%get_nrows() - - if (.not. (a%is_triangle())) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info,name) - goto 9999 - end if - - if (size(x,1) psb_d_ell_csnmi - implicit none - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_) :: res - - integer(psb_ipk_) :: i,j,k,m,n, nr, ir, jc, nc - real(psb_dpk_) :: acc - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name='d_csnmi' - logical, parameter :: debug=.false. - - - res = dzero - - do i = 1, a%get_nrows() - acc = sum(abs(a%val(i,:))) - res = max(res,acc) - end do - -end function psb_d_ell_csnmi - - -function psb_d_ell_csnm1(a) result(res) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_csnm1 - - implicit none - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_) :: res - - integer(psb_ipk_) :: i,j,k,m,n, nnz, ir, jc, nc, info - real(psb_dpk_) :: acc - real(psb_dpk_), allocatable :: vt(:) - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name='d_ell_csnm1' - logical, parameter :: debug=.false. - - - res = -done - nnz = a%get_nzeros() - m = a%get_nrows() - n = a%get_ncols() - allocate(vt(n),stat=info) - if (info /= 0) return - vt(:) = dzero - do i=1, m - do j=1,a%irn(i) - k = a%ja(i,j) - vt(k) = vt(k) + abs(a%val(i,j)) - end do - end do - res = maxval(vt(1:n)) - deallocate(vt,stat=info) - - return - -end function psb_d_ell_csnm1 - - -subroutine psb_d_ell_rowsum(d,a) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_rowsum - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(out) :: d(:) - - integer(psb_ipk_) :: i,j,k,m,n, nnz, ir, jc, nc - real(psb_dpk_) :: acc - real(psb_dpk_), allocatable :: vt(:) - logical :: tra - integer(psb_ipk_) :: err_act, info, int_err(5) - character(len=20) :: name='rowsum' - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - - m = a%get_nrows() - if (size(d) < m) then - info=psb_err_input_asize_small_i_ - int_err(1) = 1 - int_err(2) = size(d) - int_err(3) = m - call psb_errpush(info,name,i_err=int_err) - goto 9999 - end if - - do i = 1, a%get_nrows() - d(i) = dzero - do j=1,a%irn(i) - d(i) = d(i) + (a%val(i,j)) - end do - end do - - return - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - - if (err_act == psb_act_abort_) then - call psb_error() - return - end if - return - -end subroutine psb_d_ell_rowsum - -subroutine psb_d_ell_arwsum(d,a) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_arwsum - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(out) :: d(:) - - integer(psb_ipk_) :: i,j,k,m,n, nnz, ir, jc, nc - real(psb_dpk_) :: acc - real(psb_dpk_), allocatable :: vt(:) - logical :: tra - integer(psb_ipk_) :: err_act, info, int_err(5) - character(len=20) :: name='rowsum' - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - - m = a%get_nrows() - if (size(d) < m) then - info=psb_err_input_asize_small_i_ - int_err(1) = 1 - int_err(2) = size(d) - int_err(3) = m - call psb_errpush(info,name,i_err=int_err) - goto 9999 - end if - - - do i = 1, a%get_nrows() - d(i) = dzero - do j=1,a%irn(i) - d(i) = d(i) + abs(a%val(i,j)) - end do - end do - - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - - if (err_act == psb_act_abort_) then - call psb_error() - return - end if - return - -end subroutine psb_d_ell_arwsum - -subroutine psb_d_ell_colsum(d,a) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_colsum - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(out) :: d(:) - - integer(psb_ipk_) :: i,j,k,m,n, nnz, ir, jc, nc - real(psb_dpk_) :: acc - real(psb_dpk_), allocatable :: vt(:) - logical :: tra - integer(psb_ipk_) :: err_act, info, int_err(5) - character(len=20) :: name='colsum' - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - - m = a%get_nrows() - n = a%get_ncols() - if (size(d) < n) then - info=psb_err_input_asize_small_i_ - int_err(1) = 1 - int_err(2) = size(d) - int_err(3) = n - call psb_errpush(info,name,i_err=int_err) - goto 9999 - end if - - d = dzero - - do i=1, m - do j=1,a%irn(i) - k = a%ja(i,j) - d(k) = d(k) + (a%val(i,j)) - end do - end do - - return - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - - if (err_act == psb_act_abort_) then - call psb_error() - return - end if - return - -end subroutine psb_d_ell_colsum - -subroutine psb_d_ell_aclsum(d,a) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_aclsum - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(out) :: d(:) - - integer(psb_ipk_) :: i,j,k,m,n, nnz, ir, jc, nc - real(psb_dpk_) :: acc - real(psb_dpk_), allocatable :: vt(:) - logical :: tra - integer(psb_ipk_) :: err_act, info, int_err(5) - character(len=20) :: name='aclsum' - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - - m = a%get_nrows() - n = a%get_ncols() - if (size(d) < n) then - info=psb_err_input_asize_small_i_ - int_err(1) = 1 - int_err(2) = size(d) - int_err(3) = n - call psb_errpush(info,name,i_err=int_err) - goto 9999 - end if - - d = dzero - - do i=1, m - do j=1,a%irn(i) - k = a%ja(i,j) - d(k) = d(k) + abs(a%val(i,j)) - end do - end do - - return - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - - if (err_act == psb_act_abort_) then - call psb_error() - return - end if - return - -end subroutine psb_d_ell_aclsum - - -subroutine psb_d_ell_get_diag(a,d,info) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_get_diag - implicit none - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(out) :: d(:) - integer(psb_ipk_), intent(out) :: info - - integer(psb_ipk_) :: err_act, mnm, i, j, k - character(len=20) :: name='get_diag' - logical, parameter :: debug=.false. - - info = psb_success_ - call psb_erractionsave(err_act) - - mnm = min(a%get_nrows(),a%get_ncols()) - if (size(d) < mnm) then - info=psb_err_input_asize_invalid_i_ - call psb_errpush(info,name,i_err=(/2,size(d),0,0,0/)) - goto 9999 - end if - - - if (a%is_triangle().and.a%is_unit()) then - d(1:mnm) = done - else - do i=1, mnm - if (1<=a%idiag(i).and.(a%idiag(i)<=size(a%ja,2))) & - & d(i) = a%val(i,a%idiag(i)) - end do - end if - do i=mnm+1,size(d) - d(i) = dzero - end do - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - if (err_act == psb_act_abort_) then - call psb_error() - return - end if - return - -end subroutine psb_d_ell_get_diag - - -subroutine psb_d_ell_scal(d,a,info) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_scal - implicit none - class(psb_d_ell_sparse_mat), intent(inout) :: a - real(psb_dpk_), intent(in) :: d(:) - integer(psb_ipk_), intent(out) :: info - - integer(psb_ipk_) :: err_act,mnm, i, j, m - character(len=20) :: name='scal' - logical, parameter :: debug=.false. - - info = psb_success_ - call psb_erractionsave(err_act) - - m = a%get_nrows() - if (size(d) < m) then - info=psb_err_input_asize_invalid_i_ - call psb_errpush(info,name,i_err=(/2,size(d),0,0,0/)) - goto 9999 - end if - - do i=1, m - a%val(i,:) = a%val(i,:) * d(i) - enddo - - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - if (err_act == psb_act_abort_) then - call psb_error() - return - end if - return - -end subroutine psb_d_ell_scal - - -subroutine psb_d_ell_scals(d,a,info) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_scals - implicit none - class(psb_d_ell_sparse_mat), intent(inout) :: a - real(psb_dpk_), intent(in) :: d - integer(psb_ipk_), intent(out) :: info - - integer(psb_ipk_) :: err_act,mnm, i, j, m - character(len=20) :: name='scal' - logical, parameter :: debug=.false. - - info = psb_success_ - call psb_erractionsave(err_act) - - - a%val(:,:) = a%val(:,:) * d - - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - if (err_act == psb_act_abort_) then - call psb_error() - return - end if - return - -end subroutine psb_d_ell_scals - - - - -! == =================================== -! -! -! -! Data management -! -! -! -! -! -! == =================================== - - -subroutine psb_d_ell_reallocate_nz(nz,a) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_reallocate_nz - implicit none - integer(psb_ipk_), intent(in) :: nz - class(psb_d_ell_sparse_mat), intent(inout) :: a - integer(psb_ipk_) :: m, nzrm - integer(psb_ipk_) :: err_act, info - character(len=20) :: name='d_ell_reallocate_nz' - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - - ! - ! What should this really do??? - ! - m = a%get_nrows() - nzrm = (nz+m-1)/m - call psb_realloc(m,nzrm,a%ja,info) - if (info == psb_success_) call psb_realloc(m,nzrm,a%val,info) - if (info /= psb_success_) then - call psb_errpush(psb_err_alloc_dealloc_,name) - goto 9999 - end if - - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - - if (err_act == psb_act_abort_) then - call psb_error() - return - end if - return - -end subroutine psb_d_ell_reallocate_nz - -subroutine psb_d_ell_mold(a,b,info) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_mold - implicit none - class(psb_d_ell_sparse_mat), intent(in) :: a - class(psb_d_base_sparse_mat), intent(out), allocatable :: b - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: err_act - character(len=20) :: name='reallocate_nz' - logical, parameter :: debug=.false. - - call psb_get_erraction(err_act) - - allocate(psb_d_ell_sparse_mat :: b, stat=info) - - if (info /= psb_success_) then - info = psb_err_alloc_dealloc_ - call psb_errpush(info, name) - goto 9999 - end if - return -9999 continue - if (err_act /= psb_act_ret_) then - call psb_error() - end if - return - -end subroutine psb_d_ell_mold - -subroutine psb_d_ell_allocate_mnnz(m,n,a,nz) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_allocate_mnnz - implicit none - integer(psb_ipk_), intent(in) :: m,n - class(psb_d_ell_sparse_mat), intent(inout) :: a - integer(psb_ipk_), intent(in), optional :: nz - integer(psb_ipk_) :: err_act, info, nz_ - character(len=20) :: name='allocate_mnz' - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - info = psb_success_ - if (m < 0) then - info = psb_err_iarg_neg_ - call psb_errpush(info,name,i_err=(/1,0,0,0,0/)) - goto 9999 - endif - if (n < 0) then - info = psb_err_iarg_neg_ - call psb_errpush(info,name,i_err=(/2,0,0,0,0/)) - goto 9999 - endif - if (present(nz)) then - nz_ = (nz + m -1 )/m - else - nz_ = (max(7*m,7*n,1)+m-1)/m - end if - if (nz_ < 0) then - info = psb_err_iarg_neg_ - call psb_errpush(info,name,i_err=(/3,0,0,0,0/)) - goto 9999 - endif - - if (info == psb_success_) call psb_realloc(m,a%irn,info) - if (info == psb_success_) call psb_realloc(m,a%idiag,info) - if (info == psb_success_) call psb_realloc(m,nz_,a%ja,info) - if (info == psb_success_) call psb_realloc(m,nz_,a%val,info) - if (info == psb_success_) then - a%irn = 0 - a%idiag = 0 - call a%set_nrows(m) - call a%set_ncols(n) - call a%set_bld() - call a%set_triangle(.false.) - call a%set_unit(.false.) - call a%set_dupl(psb_dupl_def_) - end if - - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - - if (err_act == psb_act_abort_) then - call psb_error() - return - end if - return - -end subroutine psb_d_ell_allocate_mnnz - - -subroutine psb_d_ell_csgetptn(imin,imax,a,nz,ia,ja,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_csgetptn - implicit none - - class(psb_d_ell_sparse_mat), intent(in) :: a - integer(psb_ipk_), intent(in) :: imin,imax - integer(psb_ipk_), intent(out) :: nz - integer(psb_ipk_), allocatable, intent(inout) :: ia(:), ja(:) - integer(psb_ipk_),intent(out) :: info - logical, intent(in), optional :: append - integer(psb_ipk_), intent(in), optional :: iren(:) - integer(psb_ipk_), intent(in), optional :: jmin,jmax, nzin - logical, intent(in), optional :: rscale,cscale - - logical :: append_, rscale_, cscale_ - integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i - character(len=20) :: name='csget' - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(jmin)) then - jmin_ = jmin - else - jmin_ = 1 - endif - if (present(jmax)) then - jmax_ = jmax - else - jmax_ = a%get_ncols() - endif - - if ((imax psb_d_ell_csgetrow - implicit none - - class(psb_d_ell_sparse_mat), intent(in) :: a - integer(psb_ipk_), intent(in) :: imin,imax - integer(psb_ipk_), intent(out) :: nz - integer(psb_ipk_), allocatable, intent(inout) :: ia(:), ja(:) - real(psb_dpk_), allocatable, intent(inout) :: val(:) - integer(psb_ipk_),intent(out) :: info - logical, intent(in), optional :: append - integer(psb_ipk_), intent(in), optional :: iren(:) - integer(psb_ipk_), intent(in), optional :: jmin,jmax, nzin - logical, intent(in), optional :: rscale,cscale - - logical :: append_, rscale_, cscale_ - integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i - character(len=20) :: name='csget' - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(jmin)) then - jmin_ = jmin - else - jmin_ = 1 - endif - if (present(jmax)) then - jmax_ = jmax - else - jmax_ = a%get_ncols() - endif - - if ((imax psb_d_ell_csgetblk - implicit none - - class(psb_d_ell_sparse_mat), intent(in) :: a - class(psb_d_coo_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(in) :: imin,imax - integer(psb_ipk_),intent(out) :: info - logical, intent(in), optional :: append - integer(psb_ipk_), intent(in), optional :: iren(:) - integer(psb_ipk_), intent(in), optional :: jmin,jmax - logical, intent(in), optional :: rscale,cscale - integer(psb_ipk_) :: err_act, nzin, nzout - character(len=20) :: name='csget' - logical :: append_ - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(append)) then - append_ = append - else - append_ = .false. - endif - if (append_) then - nzin = a%get_nzeros() - else - nzin = 0 - endif - - call a%csget(imin,imax,nzout,b%ia,b%ja,b%val,info,& - & jmin=jmin, jmax=jmax, iren=iren, append=append_, & - & nzin=nzin, rscale=rscale, cscale=cscale) - - if (info /= psb_success_) goto 9999 - - call b%set_nzeros(nzin+nzout) - call b%fix(info) - if (info /= psb_success_) goto 9999 - - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - - if (err_act == psb_act_abort_) then - call psb_error() - return - end if - return - -end subroutine psb_d_ell_csgetblk - - - -subroutine psb_d_ell_csput(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_csput - implicit none - - class(psb_d_ell_sparse_mat), intent(inout) :: a - real(psb_dpk_), intent(in) :: val(:) - integer(psb_ipk_), intent(in) :: nz, ia(:), ja(:), imin,imax,jmin,jmax - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), intent(in), optional :: gtl(:) - - - integer(psb_ipk_) :: err_act - character(len=20) :: name='d_ell_csput' - logical, parameter :: debug=.false. - integer(psb_ipk_) :: nza, i,j,k, nzl, isza, int_err(5) - - - call psb_erractionsave(err_act) - info = psb_success_ - - if (nz <= 0) then - info = psb_err_iarg_neg_ - int_err(1)=1 - call psb_errpush(info,name,i_err=int_err) - goto 9999 - end if - if (size(ia) < nz) then - info = psb_err_input_asize_invalid_i_ - int_err(1)=2 - call psb_errpush(info,name,i_err=int_err) - goto 9999 - end if - - if (size(ja) < nz) then - info = psb_err_input_asize_invalid_i_ - int_err(1)=3 - call psb_errpush(info,name,i_err=int_err) - goto 9999 - end if - if (size(val) < nz) then - info = psb_err_input_asize_invalid_i_ - int_err(1)=4 - call psb_errpush(info,name,i_err=int_err) - goto 9999 - end if - - if (nz == 0) return - - nza = a%get_nzeros() - - if (a%is_bld()) then - ! Build phase should only ever be in COO - info = psb_err_invalid_mat_state_ - - else if (a%is_upd()) then - call psb_d_ell_srch_upd(nz,ia,ja,val,a,& - & imin,imax,jmin,jmax,info,gtl) - - if (info /= psb_success_) then - - info = psb_err_invalid_mat_state_ - end if - - else - ! State is wrong. - info = psb_err_invalid_mat_state_ - end if - if (info /= psb_success_) then - call psb_errpush(info,name) - goto 9999 - end if - - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - - if (err_act == psb_act_abort_) then - call psb_error() - return - end if - return - - -contains - - subroutine psb_d_ell_srch_upd(nz,ia,ja,val,a,& - & imin,imax,jmin,jmax,info,gtl) - - implicit none - - class(psb_d_ell_sparse_mat), intent(inout) :: a - integer(psb_ipk_), intent(in) :: nz, imin,imax,jmin,jmax - integer(psb_ipk_), intent(in) :: ia(:),ja(:) - real(psb_dpk_), intent(in) :: val(:) - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), intent(in), optional :: gtl(:) - integer(psb_ipk_) :: i,ir,ic, ilr, ilc, ip, & - & i1,i2,nr,nc,nnz,dupl,ng - integer(psb_ipk_) :: debug_level, debug_unit - character(len=20) :: name='d_ell_srch_upd' - - info = psb_success_ - debug_unit = psb_get_debug_unit() - debug_level = psb_get_debug_level() - - dupl = a%get_dupl() - - if (.not.a%is_sorted()) then - info = -4 - return - end if - - ilr = -1 - ilc = -1 - nnz = a%get_nzeros() - nr = a%get_nrows() - nc = a%get_ncols() - - if (present(gtl)) then - ng = size(gtl) - - select case(dupl) - case(psb_dupl_ovwrt_,psb_dupl_err_) - ! Overwrite. - ! Cannot test for error, should have been caught earlier. - - ilr = -1 - ilc = -1 - do i=1, nz - ir = ia(i) - ic = ja(i) - if ((ir >=1).and.(ir<=ng).and.(ic>=1).and.(ic<=ng)) then - ir = gtl(ir) - ic = gtl(ic) - if ((ir > 0).and.(ir <= nr)) then - nc = a%irn(ir) - ip = psb_ibsrch(ic,nc,a%ja(i,1:nc)) - if (ip>0) then - a%val(i,ip) = val(i) - else - if (debug_level >= psb_debug_serial_) & - & write(debug_unit,*) trim(name),& - & ': Was searching ',ic,' in: ',nc,& - & ' : ',a%ja(i,1:nc) - info = i - return - end if - - else - - if (debug_level >= psb_debug_serial_) & - & write(debug_unit,*) trim(name),& - & ': Discarding row that does not belong to us.' - end if - end if - end do - - case(psb_dupl_add_) - ! Add - ilr = -1 - ilc = -1 - do i=1, nz - ir = ia(i) - ic = ja(i) - if ((ir >=1).and.(ir<=ng).and.(ic>=1).and.(ic<=ng)) then - ir = gtl(ir) - ic = gtl(ic) - if ((ir > 0).and.(ir <= nr)) then - nc = a%irn(ir) - ip = psb_ibsrch(ic,nc,a%ja(i,1:nc)) - if (ip>0) then - a%val(i,ip) = a%val(i,ip) + val(i) - else - if (debug_level >= psb_debug_serial_) & - & write(debug_unit,*) trim(name),& - & ': Was searching ',ic,' in: ',nc,& - & ' : ',a%ja(i,1:nc) - info = i - return - end if - else - if (debug_level >= psb_debug_serial_) & - & write(debug_unit,*) trim(name),& - & ': Discarding row that does not belong to us.' - end if - - end if - end do - - case default - info = -3 - if (debug_level >= psb_debug_serial_) & - & write(debug_unit,*) trim(name),& - & ': Duplicate handling: ',dupl - end select - - else - - select case(dupl) - case(psb_dupl_ovwrt_,psb_dupl_err_) - ! Overwrite. - ! Cannot test for error, should have been caught earlier. - - ilr = -1 - ilc = -1 - do i=1, nz - ir = ia(i) - ic = ja(i) - - if ((ir > 0).and.(ir <= nr)) then - - nc = a%irn(ir) - ip = psb_ibsrch(ic,nc,a%ja(i,1:nc)) - if (ip>0) then - a%val(i,ip) = val(i) - else - if (debug_level >= psb_debug_serial_) & - & write(debug_unit,*) trim(name),& - & ': Was searching ',ic,' in: ',nc,& - & ' : ',a%ja(i,1:nc) - info = i - return - end if - - else - if (debug_level >= psb_debug_serial_) & - & write(debug_unit,*) trim(name),& - & ': Discarding row that does not belong to us.' - end if - - end do - - case(psb_dupl_add_) - ! Add - ilr = -1 - ilc = -1 - do i=1, nz - ir = ia(i) - ic = ja(i) - if ((ir > 0).and.(ir <= nr)) then - nc = a%irn(ir) - ip = psb_ibsrch(ic,nc,a%ja(i,1:nc)) - if (ip>0) then - a%val(i,ip) = a%val(i,ip) + val(i) - else - info = i - return - end if - else - if (debug_level >= psb_debug_serial_) & - & write(debug_unit,*) trim(name),& - & ': Discarding row that does not belong to us.' - end if - end do - - case default - info = -3 - if (debug_level >= psb_debug_serial_) & - & write(debug_unit,*) trim(name),& - & ': Duplicate handling: ',dupl - end select - - end if - - end subroutine psb_d_ell_srch_upd - -end subroutine psb_d_ell_csput - - - -subroutine psb_d_ell_reinit(a,clear) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_reinit - implicit none - - class(psb_d_ell_sparse_mat), intent(inout) :: a - logical, intent(in), optional :: clear - - integer(psb_ipk_) :: err_act, info - character(len=20) :: name='reinit' - logical :: clear_ - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - info = psb_success_ - - - if (present(clear)) then - clear_ = clear - else - clear_ = .true. - end if - - if (a%is_bld() .or. a%is_upd()) then - ! do nothing - return - else if (a%is_asb()) then - if (clear_) a%val(:,:) = dzero - call a%set_upd() - else - info = psb_err_invalid_mat_state_ - call psb_errpush(info,name) - goto 9999 - end if - - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - - if (err_act == psb_act_abort_) then - call psb_error() - return - end if - return - -end subroutine psb_d_ell_reinit - -subroutine psb_d_ell_trim(a) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_trim - implicit none - class(psb_d_ell_sparse_mat), intent(inout) :: a - integer(psb_ipk_) :: err_act, info, nz, m, nzm - character(len=20) :: name='trim' - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - info = psb_success_ - m = a%get_nrows() - nzm = maxval(a%irn(1:m)) - - call psb_realloc(m,a%irn,info) - if (info == psb_success_) call psb_realloc(m,a%idiag,info) - if (info == psb_success_) call psb_realloc(m,nzm,a%ja,info) - if (info == psb_success_) call psb_realloc(m,nzm,a%val,info) - - if (info /= psb_success_) goto 9999 - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - - if (err_act == psb_act_abort_) then - call psb_error() - return - end if - return - -end subroutine psb_d_ell_trim - -subroutine psb_d_ell_print(iout,a,iv,eirs,eics,head,ivr,ivc) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_print - implicit none - - integer(psb_ipk_), intent(in) :: iout - class(psb_d_ell_sparse_mat), intent(in) :: a - integer(psb_ipk_), intent(in), optional :: iv(:) - integer(psb_ipk_), intent(in), optional :: eirs,eics - character(len=*), optional :: head - integer(psb_ipk_), intent(in), optional :: ivr(:), ivc(:) - - integer(psb_ipk_) :: err_act - character(len=20) :: name='d_ell_print' - logical, parameter :: debug=.false. - - character(len=80) :: frmtv - integer(psb_ipk_) :: irs,ics,i,j, nmx, ni, nr, nc, nz - - if (present(eirs)) then - irs = eirs - else - irs = 0 - endif - if (present(eics)) then - ics = eics - else - ics = 0 - endif - - if (present(head)) then - write(iout,'(a)') '%%MatrixMarket matrix coordinate real general' - write(iout,'(a,a)') '% ',head - write(iout,'(a)') '%' - write(iout,'(a,a)') '% COO' - endif - - nr = a%get_nrows() - nc = a%get_ncols() - nz = a%get_nzeros() - nmx = max(nr,nc,1) - ni = floor(log10(1.0*nmx)) + 1 - - write(frmtv,'(a,i3.3,a,i3.3,a)') '(2(i',ni,',1x),es26.18,1x,2(i',ni,',1x))' - write(iout,*) nr, nc, nz - if(present(iv)) then - do i=1, nr - do j=1,a%irn(i) - write(iout,frmtv) iv(i),iv(a%ja(i,j)),a%val(i,j) - end do - enddo - else - if (present(ivr).and..not.present(ivc)) then - do i=1, nr - do j=1,a%irn(i) - write(iout,frmtv) ivr(i),(a%ja(i,j)),a%val(i,j) - end do - enddo - else if (present(ivr).and.present(ivc)) then - do i=1, nr - do j=1,a%irn(i) - write(iout,frmtv) ivr(i),ivc(a%ja(i,j)),a%val(i,j) - end do - enddo - else if (.not.present(ivr).and.present(ivc)) then - do i=1, nr - do j=1,a%irn(i) - write(iout,frmtv) (i),ivc(a%ja(i,j)),a%val(i,j) - end do - enddo - else if (.not.present(ivr).and..not.present(ivc)) then - do i=1, nr - do j=1,a%irn(i) - write(iout,frmtv) (i),(a%ja(i,j)),a%val(i,j) - end do - enddo - endif - endif - -end subroutine psb_d_ell_print - - -subroutine psb_d_cp_ell_from_coo(a,b,info) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_cp_ell_from_coo - implicit none - - class(psb_d_ell_sparse_mat), intent(inout) :: a - class(psb_d_coo_sparse_mat), intent(in) :: b - integer(psb_ipk_), intent(out) :: info - - type(psb_d_coo_sparse_mat) :: tmp - integer(psb_ipk_), allocatable :: itemp(:) - !locals - logical :: rwshr_ - integer(psb_ipk_) :: nza, nr, i,j,irw, idl,err_act, nc - integer(psb_ipk_), Parameter :: maxtry=8 - integer(psb_ipk_) :: debug_level, debug_unit - character(len=20) :: name - - info = psb_success_ - ! This is to have fix_coo called behind the scenes - call b%cp_to_coo(tmp,info) - if (info == psb_success_) call a%mv_from_coo(tmp,info) - -end subroutine psb_d_cp_ell_from_coo - - - -subroutine psb_d_cp_ell_to_coo(a,b,info) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_cp_ell_to_coo - implicit none - - class(psb_d_ell_sparse_mat), intent(in) :: a - class(psb_d_coo_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - - integer(psb_ipk_), allocatable :: itemp(:) - !locals - logical :: rwshr_ - integer(psb_ipk_) :: nza, nr, nc,i,j,k,irw, idl,err_act - integer(psb_ipk_), Parameter :: maxtry=8 - integer(psb_ipk_) :: debug_level, debug_unit - character(len=20) :: name - - info = psb_success_ - - nr = a%get_nrows() - nc = a%get_ncols() - nza = a%get_nzeros() - - call b%allocate(nr,nc,nza) - call b%psb_d_base_sparse_mat%cp_from(a%psb_d_base_sparse_mat) - - k=0 - do i=1, nr - do j=1,a%irn(i) - k = k + 1 - b%ia(k) = i - b%ja(k) = a%ja(i,j) - b%val(k) = a%val(i,j) - end do - end do - call b%set_nzeros(a%get_nzeros()) - call b%fix(info) - -end subroutine psb_d_cp_ell_to_coo - -subroutine psb_d_mv_ell_to_coo(a,b,info) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_mv_ell_to_coo - implicit none - - class(psb_d_ell_sparse_mat), intent(inout) :: a - class(psb_d_coo_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - - integer(psb_ipk_), allocatable :: itemp(:) - !locals - logical :: rwshr_ - integer(psb_ipk_) :: nza, nr, nc,i,j,k,irw, idl,err_act - integer(psb_ipk_), Parameter :: maxtry=8 - integer(psb_ipk_) :: debug_level, debug_unit - character(len=20) :: name - - info = psb_success_ - - nr = a%get_nrows() - nc = a%get_ncols() - nza = a%get_nzeros() - - ! Taking a path slightly slower but with less memory footprint - deallocate(a%idiag) - call b%psb_d_base_sparse_mat%cp_from(a%psb_d_base_sparse_mat) - - call psb_realloc(nza,b%ia,info) - if (info == 0) call psb_realloc(nza,b%ja,info) - if (info /= 0) goto 9999 - k=0 - do i=1, nr - do j=1,a%irn(i) - k = k + 1 - b%ia(k) = i - b%ja(k) = a%ja(i,j) - end do - end do - deallocate(a%ja, stat=info) - - if (info == 0) call psb_realloc(nza,b%val,info) - if (info /= 0) goto 9999 - - k=0 - do i=1, nr - do j=1,a%irn(i) - k = k + 1 - b%val(k) = a%val(i,j) - end do - end do - call a%free() - call b%set_nzeros(nza) - call b%fix(info) - return - -9999 continue - info = psb_err_alloc_dealloc_ - return -end subroutine psb_d_mv_ell_to_coo - - -subroutine psb_d_mv_ell_from_coo(a,b,info) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_mv_ell_from_coo - implicit none - - class(psb_d_ell_sparse_mat), intent(inout) :: a - class(psb_d_coo_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - - integer(psb_ipk_), allocatable :: itemp(:) - !locals - logical :: rwshr_ - integer(psb_ipk_) :: nza, nr, i,j,k, idl,err_act, nc, nzm, ir, ic - integer(psb_ipk_), Parameter :: maxtry=8 - integer(psb_ipk_) :: debug_level, debug_unit - character(len=20) :: name - - info = psb_success_ - - call b%fix(info) - if (info /= psb_success_) return - - nr = b%get_nrows() - nc = b%get_ncols() - nza = b%get_nzeros() - if (b%is_sorted()) then - ! If it is sorted then we can lessen memory impact - call a%psb_d_base_sparse_mat%mv_from(b%psb_d_base_sparse_mat) - - ! First compute the number of nonzeros in each row. - call psb_realloc(nr,a%irn,info) - if (info /= 0) goto 9999 - a%irn = 0 - do i=1, nza - a%irn(b%ia(i)) = a%irn(b%ia(i)) + 1 - end do - nzm = 0 - do i=1, nr - nzm = max(nzm,a%irn(i)) - a%irn(i) = 0 - end do - ! Second: copy the column indices. - call psb_realloc(nr,a%idiag,info) - if (info == 0) call psb_realloc(nr,nzm,a%ja,info) - if (info /= 0) goto 9999 - do i=1, nza - ir = b%ia(i) - ic = b%ja(i) - j = a%irn(ir) + 1 - a%ja(ir,j) = ic - a%irn(ir) = j - end do - ! Third copy the other stuff - deallocate(b%ia,b%ja,stat=info) - if (info == 0) call psb_realloc(nr,a%idiag,info) - if (info == 0) call psb_realloc(nr,nzm,a%val,info) - if (info /= 0) goto 9999 - k = 0 - do i=1, nr - a%idiag(i) = 0 - do j=1, a%irn(i) - k = k + 1 - a%val(i,j) = b%val(k) - if (i==a%ja(i,j)) a%idiag(i)=j - end do - do j=a%irn(i)+1, nzm - a%ja(i,j) = i - a%val(i,j) = dzero - end do - end do - - else - ! If b is not sorted, the only way is to copy. - call a%cp_from_coo(b,info) - if (info /= 0) goto 9999 - end if - - call b%free() - - return - -9999 continue - info = psb_err_alloc_dealloc_ - return - - -end subroutine psb_d_mv_ell_from_coo - - -subroutine psb_d_mv_ell_to_fmt(a,b,info) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_mv_ell_to_fmt - implicit none - - class(psb_d_ell_sparse_mat), intent(inout) :: a - class(psb_d_base_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - - !locals - type(psb_d_coo_sparse_mat) :: tmp - logical :: rwshr_ - integer(psb_ipk_) :: nza, nr, i,j,irw, idl,err_act, nc - integer(psb_ipk_), Parameter :: maxtry=8 - integer(psb_ipk_) :: debug_level, debug_unit - character(len=20) :: name - - info = psb_success_ - - select type (b) - type is (psb_d_coo_sparse_mat) - call a%mv_to_coo(b,info) - ! Need to fix trivial copies! - type is (psb_d_ell_sparse_mat) - call b%psb_d_base_sparse_mat%mv_from(a%psb_d_base_sparse_mat) - call move_alloc(a%irn, b%irn) - call move_alloc(a%idiag, b%idiag) - call move_alloc(a%ja, b%ja) - call move_alloc(a%val, b%val) - call a%free() - - class default - call a%mv_to_coo(tmp,info) - if (info == psb_success_) call b%mv_from_coo(tmp,info) - end select - -end subroutine psb_d_mv_ell_to_fmt - - -subroutine psb_d_cp_ell_to_fmt(a,b,info) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_cp_ell_to_fmt - implicit none - - class(psb_d_ell_sparse_mat), intent(in) :: a - class(psb_d_base_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - - !locals - type(psb_d_coo_sparse_mat) :: tmp - logical :: rwshr_ - integer(psb_ipk_) :: nza, nr, i,j,irw, idl,err_act, nc - integer(psb_ipk_), Parameter :: maxtry=8 - integer(psb_ipk_) :: debug_level, debug_unit - character(len=20) :: name - - info = psb_success_ - - - select type (b) - type is (psb_d_coo_sparse_mat) - call a%cp_to_coo(b,info) - - type is (psb_d_ell_sparse_mat) - call b%psb_d_base_sparse_mat%cp_from(a%psb_d_base_sparse_mat) - call psb_safe_cpy( a%idiag, b%idiag , info) - call psb_safe_cpy( a%irn, b%irn , info) - call psb_safe_cpy( a%ja , b%ja , info) - call psb_safe_cpy( a%val, b%val , info) - - class default - call a%cp_to_coo(tmp,info) - if (info == psb_success_) call b%mv_from_coo(tmp,info) - end select - -end subroutine psb_d_cp_ell_to_fmt - - -subroutine psb_d_mv_ell_from_fmt(a,b,info) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_mv_ell_from_fmt - implicit none - - class(psb_d_ell_sparse_mat), intent(inout) :: a - class(psb_d_base_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - - !locals - type(psb_d_coo_sparse_mat) :: tmp - logical :: rwshr_ - integer(psb_ipk_) :: nza, nr, i,j,irw, idl,err_act, nc - integer(psb_ipk_), Parameter :: maxtry=8 - integer(psb_ipk_) :: debug_level, debug_unit - character(len=20) :: name - - info = psb_success_ - - select type (b) - type is (psb_d_coo_sparse_mat) - call a%mv_from_coo(b,info) - - type is (psb_d_ell_sparse_mat) - call a%psb_d_base_sparse_mat%mv_from(b%psb_d_base_sparse_mat) - call move_alloc(b%irn, a%irn) - call move_alloc(b%idiag, a%idiag) - call move_alloc(b%ja, a%ja) - call move_alloc(b%val, a%val) - call b%free() - - class default - call b%mv_to_coo(tmp,info) - if (info == psb_success_) call a%mv_from_coo(tmp,info) - end select - -end subroutine psb_d_mv_ell_from_fmt - - - -subroutine psb_d_cp_ell_from_fmt(a,b,info) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_cp_ell_from_fmt - implicit none - - class(psb_d_ell_sparse_mat), intent(inout) :: a - class(psb_d_base_sparse_mat), intent(in) :: b - integer(psb_ipk_), intent(out) :: info - - !locals - type(psb_d_coo_sparse_mat) :: tmp - logical :: rwshr_ - integer(psb_ipk_) :: nz, nr, i,j,irw, idl,err_act, nc - integer(psb_ipk_), Parameter :: maxtry=8 - integer(psb_ipk_) :: debug_level, debug_unit - character(len=20) :: name - - info = psb_success_ - - select type (b) - type is (psb_d_coo_sparse_mat) - call a%cp_from_coo(b,info) - - type is (psb_d_ell_sparse_mat) - call a%psb_d_base_sparse_mat%cp_from(b%psb_d_base_sparse_mat) - call psb_safe_cpy( b%irn, a%irn , info) - call psb_safe_cpy( b%idiag, a%idiag, info) - call psb_safe_cpy( b%ja , a%ja , info) - call psb_safe_cpy( b%val, a%val , info) - - class default - call b%cp_to_coo(tmp,info) - if (info == psb_success_) call a%mv_from_coo(tmp,info) - end select -end subroutine psb_d_cp_ell_from_fmt - - -subroutine psb_d_ell_cp_from(a,b) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_cp_from - implicit none - - class(psb_d_ell_sparse_mat), intent(inout) :: a - type(psb_d_ell_sparse_mat), intent(in) :: b - - - integer(psb_ipk_) :: err_act, info - character(len=20) :: name='cp_from' - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - - info = psb_success_ - - call a%allocate(b%get_nrows(),b%get_ncols(),b%get_nzeros()) - call a%psb_d_base_sparse_mat%cp_from(b%psb_d_base_sparse_mat) - call psb_safe_cpy( b%irn, a%irn , info) - call psb_safe_cpy( b%idiag, a%idiag, info) - call psb_safe_cpy( b%ja , a%ja , info) - call psb_safe_cpy( b%val, a%val , info) - - if (info /= psb_success_) goto 9999 - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - - call psb_errpush(info,name) - - if (err_act /= psb_act_ret_) then - call psb_error() - end if - return - -end subroutine psb_d_ell_cp_from - -subroutine psb_d_ell_mv_from(a,b) - use psb_base_mod - use psb_d_ell_mat_mod, psb_protect_name => psb_d_ell_mv_from - implicit none - - class(psb_d_ell_sparse_mat), intent(inout) :: a - type(psb_d_ell_sparse_mat), intent(inout) :: b - - - integer(psb_ipk_) :: err_act, info - character(len=20) :: name='mv_from' - logical, parameter :: debug=.false. - - call psb_erractionsave(err_act) - info = psb_success_ - call a%psb_d_base_sparse_mat%mv_from(b%psb_d_base_sparse_mat) - call move_alloc(b%idiag, a%idiag) - call move_alloc(b%irn, a%irn) - call move_alloc(b%ja, a%ja) - call move_alloc(b%val, a%val) - call b%free() - - call psb_erractionrestore(err_act) - return - -9999 continue - call psb_erractionrestore(err_act) - - call psb_errpush(info,name) - - if (err_act /= psb_act_ret_) then - call psb_error() - end if - return - -end subroutine psb_d_ell_mv_from - - diff --git a/opt/psb_d_ell_mat_mod.f90 b/opt/psb_d_ell_mat_mod.f90 deleted file mode 100644 index e4cea7b1..00000000 --- a/opt/psb_d_ell_mat_mod.f90 +++ /dev/null @@ -1,504 +0,0 @@ -module psb_d_ell_mat_mod - - use psb_d_base_mat_mod - - type, extends(psb_d_base_sparse_mat) :: psb_d_ell_sparse_mat - ! - ! ITPACK/ELL format, extended. - ! Based on M. Heroux "A proposal for a sparse BLAS toolkit". - ! IRN is our addition, should help in transferring to/from - ! other formats (should come in handy for GPUs). - ! Notes: - ! 1. JA holds the column indices, padded with the row index. - ! 2. VAL holds the coefficients, padded with zeros - ! 3. IDIAG hold the position of the diagonal element - ! or 0 if it is not there, but is only relevant for - ! triangular matrices. In particular, a unit triangular matrix - ! will have IDIAG==0. - ! 4. IRN holds the actual number of nonzeros stored in each row - ! 5. Within a row, the indices are sorted for use of SV. - ! - - integer(psb_ipk_), allocatable :: irn(:), ja(:,:), idiag(:) - real(psb_dpk_), allocatable :: val(:,:) - - contains - procedure, pass(a) :: get_size => d_ell_get_size - procedure, pass(a) :: get_nzeros => d_ell_get_nzeros - procedure, nopass :: get_fmt => d_ell_get_fmt - procedure, pass(a) :: sizeof => d_ell_sizeof - procedure, pass(a) :: d_csmm => psb_d_ell_csmm - procedure, pass(a) :: d_csmv => psb_d_ell_csmv - procedure, pass(a) :: d_inner_cssm => psb_d_ell_cssm - procedure, pass(a) :: d_inner_cssv => psb_d_ell_cssv - procedure, pass(a) :: d_scals => psb_d_ell_scals - procedure, pass(a) :: d_scal => psb_d_ell_scal - procedure, pass(a) :: csnmi => psb_d_ell_csnmi - procedure, pass(a) :: csnm1 => psb_d_ell_csnm1 - procedure, pass(a) :: rowsum => psb_d_ell_rowsum - procedure, pass(a) :: arwsum => psb_d_ell_arwsum - procedure, pass(a) :: colsum => psb_d_ell_colsum - procedure, pass(a) :: aclsum => psb_d_ell_aclsum - procedure, pass(a) :: reallocate_nz => psb_d_ell_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_d_ell_allocate_mnnz - procedure, pass(a) :: cp_to_coo => psb_d_cp_ell_to_coo - procedure, pass(a) :: cp_from_coo => psb_d_cp_ell_from_coo - procedure, pass(a) :: cp_to_fmt => psb_d_cp_ell_to_fmt - procedure, pass(a) :: cp_from_fmt => psb_d_cp_ell_from_fmt - procedure, pass(a) :: mv_to_coo => psb_d_mv_ell_to_coo - procedure, pass(a) :: mv_from_coo => psb_d_mv_ell_from_coo - procedure, pass(a) :: mv_to_fmt => psb_d_mv_ell_to_fmt - procedure, pass(a) :: mv_from_fmt => psb_d_mv_ell_from_fmt - procedure, pass(a) :: csput => psb_d_ell_csput - procedure, pass(a) :: get_diag => psb_d_ell_get_diag - procedure, pass(a) :: csgetptn => psb_d_ell_csgetptn - procedure, pass(a) :: d_csgetrow => psb_d_ell_csgetrow - procedure, pass(a) :: get_nz_row => d_ell_get_nz_row - procedure, pass(a) :: reinit => psb_d_ell_reinit - procedure, pass(a) :: trim => psb_d_ell_trim - procedure, pass(a) :: print => psb_d_ell_print - procedure, pass(a) :: free => d_ell_free - procedure, pass(a) :: mold => psb_d_ell_mold - procedure, pass(a) :: psb_d_ell_cp_from - generic, public :: cp_from => psb_d_ell_cp_from - procedure, pass(a) :: psb_d_ell_mv_from - generic, public :: mv_from => psb_d_ell_mv_from - - end type psb_d_ell_sparse_mat - - private :: d_ell_get_nzeros, d_ell_free, d_ell_get_fmt, & - & d_ell_get_size, d_ell_sizeof, d_ell_get_nz_row - - interface - subroutine psb_d_ell_reallocate_nz(nz,a) - import :: psb_d_ell_sparse_mat - integer(psb_ipk_), intent(in) :: nz - class(psb_d_ell_sparse_mat), intent(inout) :: a - end subroutine psb_d_ell_reallocate_nz - end interface - - interface - subroutine psb_d_ell_reinit(a,clear) - import :: psb_d_ell_sparse_mat - class(psb_d_ell_sparse_mat), intent(inout) :: a - logical, intent(in), optional :: clear - end subroutine psb_d_ell_reinit - end interface - - interface - subroutine psb_d_ell_trim(a) - import :: psb_d_ell_sparse_mat - class(psb_d_ell_sparse_mat), intent(inout) :: a - end subroutine psb_d_ell_trim - end interface - - interface - subroutine psb_d_ell_mold(a,b,info) - import :: psb_d_ell_sparse_mat, psb_d_base_sparse_mat, psb_long_int_k_ - class(psb_d_ell_sparse_mat), intent(in) :: a - class(psb_d_base_sparse_mat), intent(out), allocatable :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_ell_mold - end interface - - interface - subroutine psb_d_ell_allocate_mnnz(m,n,a,nz) - import :: psb_d_ell_sparse_mat - integer(psb_ipk_), intent(in) :: m,n - class(psb_d_ell_sparse_mat), intent(inout) :: a - integer(psb_ipk_), intent(in), optional :: nz - end subroutine psb_d_ell_allocate_mnnz - end interface - - interface - subroutine psb_d_ell_print(iout,a,iv,eirs,eics,head,ivr,ivc) - import :: psb_d_ell_sparse_mat - integer(psb_ipk_), intent(in) :: iout - class(psb_d_ell_sparse_mat), intent(in) :: a - integer(psb_ipk_), intent(in), optional :: iv(:) - integer(psb_ipk_), intent(in), optional :: eirs,eics - character(len=*), optional :: head - integer(psb_ipk_), intent(in), optional :: ivr(:), ivc(:) - end subroutine psb_d_ell_print - end interface - - interface - subroutine psb_d_cp_ell_to_coo(a,b,info) - import :: psb_d_coo_sparse_mat, psb_d_ell_sparse_mat - class(psb_d_ell_sparse_mat), intent(in) :: a - class(psb_d_coo_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_cp_ell_to_coo - end interface - - interface - subroutine psb_d_cp_ell_from_coo(a,b,info) - import :: psb_d_ell_sparse_mat, psb_d_coo_sparse_mat - class(psb_d_ell_sparse_mat), intent(inout) :: a - class(psb_d_coo_sparse_mat), intent(in) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_cp_ell_from_coo - end interface - - interface - subroutine psb_d_cp_ell_to_fmt(a,b,info) - import :: psb_d_ell_sparse_mat, psb_d_base_sparse_mat - class(psb_d_ell_sparse_mat), intent(in) :: a - class(psb_d_base_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_cp_ell_to_fmt - end interface - - interface - subroutine psb_d_cp_ell_from_fmt(a,b,info) - import :: psb_d_ell_sparse_mat, psb_d_base_sparse_mat - class(psb_d_ell_sparse_mat), intent(inout) :: a - class(psb_d_base_sparse_mat), intent(in) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_cp_ell_from_fmt - end interface - - interface - subroutine psb_d_mv_ell_to_coo(a,b,info) - import :: psb_d_ell_sparse_mat, psb_d_coo_sparse_mat - class(psb_d_ell_sparse_mat), intent(inout) :: a - class(psb_d_coo_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_mv_ell_to_coo - end interface - - interface - subroutine psb_d_mv_ell_from_coo(a,b,info) - import :: psb_d_ell_sparse_mat, psb_d_coo_sparse_mat - class(psb_d_ell_sparse_mat), intent(inout) :: a - class(psb_d_coo_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_mv_ell_from_coo - end interface - - interface - subroutine psb_d_mv_ell_to_fmt(a,b,info) - import :: psb_d_ell_sparse_mat, psb_d_base_sparse_mat - class(psb_d_ell_sparse_mat), intent(inout) :: a - class(psb_d_base_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_mv_ell_to_fmt - end interface - - interface - subroutine psb_d_mv_ell_from_fmt(a,b,info) - import :: psb_d_ell_sparse_mat, psb_d_base_sparse_mat - class(psb_d_ell_sparse_mat), intent(inout) :: a - class(psb_d_base_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_mv_ell_from_fmt - end interface - - interface - subroutine psb_d_ell_cp_from(a,b) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(inout) :: a - type(psb_d_ell_sparse_mat), intent(in) :: b - end subroutine psb_d_ell_cp_from - end interface - - interface - subroutine psb_d_ell_mv_from(a,b) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(inout) :: a - type(psb_d_ell_sparse_mat), intent(inout) :: b - end subroutine psb_d_ell_mv_from - end interface - - - interface - subroutine psb_d_ell_csput(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(inout) :: a - real(psb_dpk_), intent(in) :: val(:) - integer(psb_ipk_), intent(in) :: nz,ia(:), ja(:),& - & imin,imax,jmin,jmax - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), intent(in), optional :: gtl(:) - end subroutine psb_d_ell_csput - end interface - - interface - subroutine psb_d_ell_csgetptn(imin,imax,a,nz,ia,ja,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(in) :: a - integer(psb_ipk_), intent(in) :: imin,imax - integer(psb_ipk_), intent(out) :: nz - integer(psb_ipk_), allocatable, intent(inout) :: ia(:), ja(:) - integer(psb_ipk_),intent(out) :: info - logical, intent(in), optional :: append - integer(psb_ipk_), intent(in), optional :: iren(:) - integer(psb_ipk_), intent(in), optional :: jmin,jmax, nzin - logical, intent(in), optional :: rscale,cscale - end subroutine psb_d_ell_csgetptn - end interface - - interface - subroutine psb_d_ell_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(in) :: a - integer(psb_ipk_), intent(in) :: imin,imax - integer(psb_ipk_), intent(out) :: nz - integer(psb_ipk_), allocatable, intent(inout) :: ia(:), ja(:) - real(psb_dpk_), allocatable, intent(inout) :: val(:) - integer(psb_ipk_),intent(out) :: info - logical, intent(in), optional :: append - integer(psb_ipk_), intent(in), optional :: iren(:) - integer(psb_ipk_), intent(in), optional :: jmin,jmax, nzin - logical, intent(in), optional :: rscale,cscale - end subroutine psb_d_ell_csgetrow - end interface - - interface - subroutine psb_d_ell_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - import :: psb_d_ell_sparse_mat, psb_dpk_, psb_d_coo_sparse_mat - class(psb_d_ell_sparse_mat), intent(in) :: a - class(psb_d_coo_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(in) :: imin,imax - integer(psb_ipk_),intent(out) :: info - logical, intent(in), optional :: append - integer(psb_ipk_), intent(in), optional :: iren(:) - integer(psb_ipk_), intent(in), optional :: jmin,jmax - logical, intent(in), optional :: rscale,cscale - end subroutine psb_d_ell_csgetblk - end interface - - interface - subroutine psb_d_ell_cssv(alpha,a,x,beta,y,info,trans) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:) - real(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_ell_cssv - subroutine psb_d_ell_cssm(alpha,a,x,beta,y,info,trans) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) - real(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_ell_cssm - end interface - - interface - subroutine psb_d_ell_csmv(alpha,a,x,beta,y,info,trans) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:) - real(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_ell_csmv - subroutine psb_d_ell_csmm(alpha,a,x,beta,y,info,trans) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) - real(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_ell_csmm - end interface - - - interface - function psb_d_ell_csnmi(a) result(res) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_) :: res - end function psb_d_ell_csnmi - end interface - - interface - function psb_d_ell_csnm1(a) result(res) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_) :: res - end function psb_d_ell_csnm1 - end interface - - interface - subroutine psb_d_ell_rowsum(d,a) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(out) :: d(:) - end subroutine psb_d_ell_rowsum - end interface - - interface - subroutine psb_d_ell_arwsum(d,a) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(out) :: d(:) - end subroutine psb_d_ell_arwsum - end interface - - interface - subroutine psb_d_ell_colsum(d,a) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(out) :: d(:) - end subroutine psb_d_ell_colsum - end interface - - interface - subroutine psb_d_ell_aclsum(d,a) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(out) :: d(:) - end subroutine psb_d_ell_aclsum - end interface - - interface - subroutine psb_d_ell_get_diag(a,d,info) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(out) :: d(:) - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_ell_get_diag - end interface - - interface - subroutine psb_d_ell_scal(d,a,info) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(inout) :: a - real(psb_dpk_), intent(in) :: d(:) - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_ell_scal - end interface - - interface - subroutine psb_d_ell_scals(d,a,info) - import :: psb_d_ell_sparse_mat, psb_dpk_ - class(psb_d_ell_sparse_mat), intent(inout) :: a - real(psb_dpk_), intent(in) :: d - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_ell_scals - end interface - - - -contains - - ! == =================================== - ! - ! - ! - ! Getters - ! - ! - ! - ! - ! - ! == =================================== - - - function d_ell_sizeof(a) result(res) - implicit none - class(psb_d_ell_sparse_mat), intent(in) :: a - integer(psb_long_int_k_) :: res - res = 8 - res = res + psb_sizeof_dp * size(a%val) - res = res + psb_sizeof_int * size(a%irn) - res = res + psb_sizeof_int * size(a%idiag) - res = res + psb_sizeof_int * size(a%ja) - - end function d_ell_sizeof - - function d_ell_get_fmt() result(res) - implicit none - character(len=5) :: res - res = 'ELL' - end function d_ell_get_fmt - - function d_ell_get_nzeros(a) result(res) - implicit none - class(psb_d_ell_sparse_mat), intent(in) :: a - integer(psb_ipk_) :: res - res = sum(a%irn(1:a%get_nrows())) - end function d_ell_get_nzeros - - function d_ell_get_size(a) result(res) - implicit none - class(psb_d_ell_sparse_mat), intent(in) :: a - integer(psb_ipk_) :: res - - res = -1 - - if (allocated(a%ja)) then - if (res >= 0) then - res = min(res,size(a%ja)) - else - res = size(a%ja) - end if - end if - if (allocated(a%val)) then - if (res >= 0) then - res = min(res,size(a%val)) - else - res = size(a%val) - end if - end if - - end function d_ell_get_size - - - - function d_ell_get_nz_row(idx,a) result(res) - - implicit none - - class(psb_d_ell_sparse_mat), intent(in) :: a - integer(psb_ipk_), intent(in) :: idx - integer(psb_ipk_) :: res - - res = 0 - - if ((1<=idx).and.(idx<=a%get_nrows())) then - res = a%irn(idx) - end if - - end function d_ell_get_nz_row - - - - ! == =================================== - ! - ! - ! - ! Data management - ! - ! - ! - ! - ! - ! == =================================== - - subroutine d_ell_free(a) - implicit none - - class(psb_d_ell_sparse_mat), intent(inout) :: a - - if (allocated(a%idiag)) deallocate(a%idiag) - if (allocated(a%irn)) deallocate(a%irn) - if (allocated(a%ja)) deallocate(a%ja) - if (allocated(a%val)) deallocate(a%val) - call a%set_null() - call a%set_nrows(0) - call a%set_ncols(0) - - return - - end subroutine d_ell_free - - -end module psb_d_ell_mat_mod diff --git a/prec/impl/psb_c_bjacprec_impl.f90 b/prec/impl/psb_c_bjacprec_impl.f90 index fd7e783c..6143157f 100644 --- a/prec/impl/psb_c_bjacprec_impl.f90 +++ b/prec/impl/psb_c_bjacprec_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_c_bjac_dump(prec,info,prefix,head) use psb_base_mod @@ -116,7 +147,6 @@ subroutine psb_c_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) else allocate(ww(n_col),aux(4*n_col),stat=info) endif - if (info == psb_success_) allocate(wv%v,mold=x%v) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='Allocate') @@ -151,7 +181,7 @@ subroutine psb_c_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) call wv1%mlt(cone,prec%dv,wv,czero,info,conjgx=trans_) - if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv,& + if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv1,& & beta,y,desc_data,info,& & trans=trans_,scale='U',choice=psb_none_,work=aux) diff --git a/prec/impl/psb_c_diagprec_impl.f90 b/prec/impl/psb_c_diagprec_impl.f90 index acdcab27..b4309eac 100644 --- a/prec/impl/psb_c_diagprec_impl.f90 +++ b/prec/impl/psb_c_diagprec_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_c_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) use psb_base_mod diff --git a/prec/impl/psb_c_nullprec_impl.f90 b/prec/impl/psb_c_nullprec_impl.f90 index 25ceaf87..af76921c 100644 --- a/prec/impl/psb_c_nullprec_impl.f90 +++ b/prec/impl/psb_c_nullprec_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_c_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) use psb_base_mod use psb_c_nullprec, psb_protect_name => psb_c_null_apply_vect diff --git a/prec/impl/psb_c_prec_type_impl.f90 b/prec/impl/psb_c_prec_type_impl.f90 index 226b5d43..16661a88 100644 --- a/prec/impl/psb_c_prec_type_impl.f90 +++ b/prec/impl/psb_c_prec_type_impl.f90 @@ -1,6 +1,37 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_cilu_fct.f90 b/prec/impl/psb_cilu_fct.f90 index 2b7c33e8..9274e431 100644 --- a/prec/impl/psb_cilu_fct.f90 +++ b/prec/impl/psb_cilu_fct.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_cprecbld.f90 b/prec/impl/psb_cprecbld.f90 index c4a4508d..9ffc879d 100644 --- a/prec/impl/psb_cprecbld.f90 +++ b/prec/impl/psb_cprecbld.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_cprecinit.f90 b/prec/impl/psb_cprecinit.f90 index 8f6e65d0..80027000 100644 --- a/prec/impl/psb_cprecinit.f90 +++ b/prec/impl/psb_cprecinit.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_cprecset.f90 b/prec/impl/psb_cprecset.f90 index 8b1038fe..634ed494 100644 --- a/prec/impl/psb_cprecset.f90 +++ b/prec/impl/psb_cprecset.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_d_bjacprec_impl.f90 b/prec/impl/psb_d_bjacprec_impl.f90 index c90f0009..58bd4f22 100644 --- a/prec/impl/psb_d_bjacprec_impl.f90 +++ b/prec/impl/psb_d_bjacprec_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_d_bjac_dump(prec,info,prefix,head) use psb_base_mod @@ -116,7 +147,6 @@ subroutine psb_d_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) else allocate(ww(n_col),aux(4*n_col),stat=info) endif - if (info == psb_success_) allocate(wv%v,mold=x%v) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='Allocate') @@ -151,7 +181,7 @@ subroutine psb_d_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) call wv1%mlt(done,prec%dv,wv,dzero,info,conjgx=trans_) - if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv,& + if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv1,& & beta,y,desc_data,info,& & trans=trans_,scale='U',choice=psb_none_,work=aux) diff --git a/prec/impl/psb_d_diagprec_impl.f90 b/prec/impl/psb_d_diagprec_impl.f90 index 724191d2..350c4ee6 100644 --- a/prec/impl/psb_d_diagprec_impl.f90 +++ b/prec/impl/psb_d_diagprec_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_d_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) use psb_base_mod diff --git a/prec/impl/psb_d_nullprec_impl.f90 b/prec/impl/psb_d_nullprec_impl.f90 index 2af10bcf..b1367ac1 100644 --- a/prec/impl/psb_d_nullprec_impl.f90 +++ b/prec/impl/psb_d_nullprec_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_d_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) use psb_base_mod use psb_d_nullprec, psb_protect_name => psb_d_null_apply_vect @@ -15,6 +46,9 @@ subroutine psb_d_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) call psb_erractionsave(err_act) + ! + ! This is the base version and we should throw an error. + ! Or should it be the NULL preonditioner??? ! info = psb_success_ diff --git a/prec/impl/psb_d_prec_type_impl.f90 b/prec/impl/psb_d_prec_type_impl.f90 index 398a2593..fa5ef643 100644 --- a/prec/impl/psb_d_prec_type_impl.f90 +++ b/prec/impl/psb_d_prec_type_impl.f90 @@ -1,6 +1,37 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_dilu_fct.f90 b/prec/impl/psb_dilu_fct.f90 index a050eb51..504c8862 100644 --- a/prec/impl/psb_dilu_fct.f90 +++ b/prec/impl/psb_dilu_fct.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_dprecbld.f90 b/prec/impl/psb_dprecbld.f90 index d2620722..0d53a986 100644 --- a/prec/impl/psb_dprecbld.f90 +++ b/prec/impl/psb_dprecbld.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_dprecinit.f90 b/prec/impl/psb_dprecinit.f90 index e74caa6d..de51e035 100644 --- a/prec/impl/psb_dprecinit.f90 +++ b/prec/impl/psb_dprecinit.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_dprecset.f90 b/prec/impl/psb_dprecset.f90 index 6c18f976..cc6a17d3 100644 --- a/prec/impl/psb_dprecset.f90 +++ b/prec/impl/psb_dprecset.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_s_bjacprec_impl.f90 b/prec/impl/psb_s_bjacprec_impl.f90 index 5666336f..4f9f635e 100644 --- a/prec/impl/psb_s_bjacprec_impl.f90 +++ b/prec/impl/psb_s_bjacprec_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_s_bjac_dump(prec,info,prefix,head) use psb_base_mod @@ -116,7 +147,6 @@ subroutine psb_s_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) else allocate(ww(n_col),aux(4*n_col),stat=info) endif - if (info == psb_success_) allocate(wv%v,mold=x%v) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='Allocate') @@ -151,7 +181,7 @@ subroutine psb_s_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) call wv1%mlt(sone,prec%dv,wv,szero,info,conjgx=trans_) - if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv,& + if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv1,& & beta,y,desc_data,info,& & trans=trans_,scale='U',choice=psb_none_,work=aux) diff --git a/prec/impl/psb_s_diagprec_impl.f90 b/prec/impl/psb_s_diagprec_impl.f90 index 281dad93..6092f438 100644 --- a/prec/impl/psb_s_diagprec_impl.f90 +++ b/prec/impl/psb_s_diagprec_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_s_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) use psb_base_mod diff --git a/prec/impl/psb_s_nullprec_impl.f90 b/prec/impl/psb_s_nullprec_impl.f90 index 8624e9dc..9124f2e6 100644 --- a/prec/impl/psb_s_nullprec_impl.f90 +++ b/prec/impl/psb_s_nullprec_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_s_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) use psb_base_mod use psb_s_nullprec, psb_protect_name => psb_s_null_apply_vect diff --git a/prec/impl/psb_s_prec_type_impl.f90 b/prec/impl/psb_s_prec_type_impl.f90 index bea4cfce..ec0ac2ad 100644 --- a/prec/impl/psb_s_prec_type_impl.f90 +++ b/prec/impl/psb_s_prec_type_impl.f90 @@ -1,6 +1,37 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_silu_fct.f90 b/prec/impl/psb_silu_fct.f90 index ddb56174..653877c4 100644 --- a/prec/impl/psb_silu_fct.f90 +++ b/prec/impl/psb_silu_fct.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_sprecbld.f90 b/prec/impl/psb_sprecbld.f90 index c68bf654..786b4c0f 100644 --- a/prec/impl/psb_sprecbld.f90 +++ b/prec/impl/psb_sprecbld.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_sprecinit.f90 b/prec/impl/psb_sprecinit.f90 index e9580770..77cb7225 100644 --- a/prec/impl/psb_sprecinit.f90 +++ b/prec/impl/psb_sprecinit.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_sprecset.f90 b/prec/impl/psb_sprecset.f90 index 51ba5597..085499fe 100644 --- a/prec/impl/psb_sprecset.f90 +++ b/prec/impl/psb_sprecset.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_z_bjacprec_impl.f90 b/prec/impl/psb_z_bjacprec_impl.f90 index a07c106f..1a42d106 100644 --- a/prec/impl/psb_z_bjacprec_impl.f90 +++ b/prec/impl/psb_z_bjacprec_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_z_bjac_dump(prec,info,prefix,head) use psb_base_mod @@ -116,7 +147,6 @@ subroutine psb_z_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) else allocate(ww(n_col),aux(4*n_col),stat=info) endif - if (info == psb_success_) allocate(wv%v,mold=x%v) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='Allocate') @@ -151,7 +181,7 @@ subroutine psb_z_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) call wv1%mlt(zone,prec%dv,wv,zzero,info,conjgx=trans_) - if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv,& + if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv1,& & beta,y,desc_data,info,& & trans=trans_,scale='U',choice=psb_none_,work=aux) diff --git a/prec/impl/psb_z_diagprec_impl.f90 b/prec/impl/psb_z_diagprec_impl.f90 index d53f02cb..4793c667 100644 --- a/prec/impl/psb_z_diagprec_impl.f90 +++ b/prec/impl/psb_z_diagprec_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_z_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) use psb_base_mod diff --git a/prec/impl/psb_z_nullprec_impl.f90 b/prec/impl/psb_z_nullprec_impl.f90 index e369ab27..c978a530 100644 --- a/prec/impl/psb_z_nullprec_impl.f90 +++ b/prec/impl/psb_z_nullprec_impl.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ subroutine psb_z_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) use psb_base_mod use psb_z_nullprec, psb_protect_name => psb_z_null_apply_vect diff --git a/prec/impl/psb_z_prec_type_impl.f90 b/prec/impl/psb_z_prec_type_impl.f90 index 9cfcdb9f..7df27da4 100644 --- a/prec/impl/psb_z_prec_type_impl.f90 +++ b/prec/impl/psb_z_prec_type_impl.f90 @@ -1,6 +1,37 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_zilu_fct.f90 b/prec/impl/psb_zilu_fct.f90 index 3fa95834..b235ec23 100644 --- a/prec/impl/psb_zilu_fct.f90 +++ b/prec/impl/psb_zilu_fct.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_zprecbld.f90 b/prec/impl/psb_zprecbld.f90 index 8f2a9d17..0e7954c0 100644 --- a/prec/impl/psb_zprecbld.f90 +++ b/prec/impl/psb_zprecbld.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_zprecinit.f90 b/prec/impl/psb_zprecinit.f90 index 485c104d..4733bc1f 100644 --- a/prec/impl/psb_zprecinit.f90 +++ b/prec/impl/psb_zprecinit.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/impl/psb_zprecset.f90 b/prec/impl/psb_zprecset.f90 index fa77105c..014c2293 100644 --- a/prec/impl/psb_zprecset.f90 +++ b/prec/impl/psb_zprecset.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_c_base_prec_mod.f90 b/prec/psb_c_base_prec_mod.f90 index 482a6f6b..8f686840 100644 --- a/prec/psb_c_base_prec_mod.f90 +++ b/prec/psb_c_base_prec_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_c_bjacprec.f90 b/prec/psb_c_bjacprec.f90 index 70935466..5fc18244 100644 --- a/prec/psb_c_bjacprec.f90 +++ b/prec/psb_c_bjacprec.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psb_c_bjacprec use psb_c_base_prec_mod @@ -100,33 +131,6 @@ module psb_c_bjacprec end subroutine psb_c_bjac_precseti end interface -!!$ interface -!!$ subroutine psb_c_bjac_precsetr(prec,what,val,info) -!!$ import :: psb_ipk_, psb_desc_type, psb_c_bjac_prec_type, psb_c_vect_type, psb_spk_ -!!$ class(psb_c_bjac_prec_type),intent(inout) :: prec -!!$ integer(psb_ipk_), intent(in) :: what -!!$ real(psb_spk_), intent(in) :: val -!!$ integer(psb_ipk_), intent(out) :: info -!!$ end subroutine psb_c_bjac_precsetr -!!$ end interface -!!$ -!!$ interface -!!$ subroutine psb_c_bjac_precsetc(prec,what,val,info) -!!$ import :: psb_ipk_, psb_desc_type, psb_c_bjac_prec_type, psb_c_vect_type, psb_spk_ -!!$ class(psb_c_bjac_prec_type),intent(inout) :: prec -!!$ integer(psb_ipk_), intent(in) :: what -!!$ character(len=*), intent(in) :: val -!!$ integer(psb_ipk_), intent(out) :: info -!!$ end subroutine psb_c_bjac_precsetc -!!$ end interface -!!$ -!!$ interface -!!$ subroutine psb_c_bjac_precfree(prec,info) -!!$ import :: psb_ipk_, psb_desc_type, psb_c_bjac_prec_type, psb_c_vect_type, psb_spk_ -!!$ class(psb_c_bjac_prec_type), intent(inout) :: prec -!!$ integer(psb_ipk_), intent(out) :: info -!!$ end subroutine psb_c_bjac_precfree -!!$ end interface contains @@ -284,6 +288,9 @@ contains call prec%dv%free(info) if (info == 0) deallocate(prec%dv,stat=info) end if + if (allocated(prec%iprcparm)) then + deallocate(prec%iprcparm,stat=info) + end if call psb_erractionrestore(err_act) return diff --git a/prec/psb_c_diagprec.f90 b/prec/psb_c_diagprec.f90 index dc488c81..359915d7 100644 --- a/prec/psb_c_diagprec.f90 +++ b/prec/psb_c_diagprec.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psb_c_diagprec use psb_c_base_prec_mod diff --git a/prec/psb_c_nullprec.f90 b/prec/psb_c_nullprec.f90 index a60b866e..365cfffd 100644 --- a/prec/psb_c_nullprec.f90 +++ b/prec/psb_c_nullprec.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psb_c_nullprec use psb_c_base_prec_mod diff --git a/prec/psb_c_prec_mod.f90 b/prec/psb_c_prec_mod.f90 index add08d83..4b216da9 100644 --- a/prec/psb_c_prec_mod.f90 +++ b/prec/psb_c_prec_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_c_prec_type.f90 b/prec/psb_c_prec_type.f90 index 977fa286..bb06ecad 100644 --- a/prec/psb_c_prec_type.f90 +++ b/prec/psb_c_prec_type.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_d_base_prec_mod.f90 b/prec/psb_d_base_prec_mod.f90 index fb46f2f6..1dd1bc54 100644 --- a/prec/psb_d_base_prec_mod.f90 +++ b/prec/psb_d_base_prec_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_d_bjacprec.f90 b/prec/psb_d_bjacprec.f90 index 86994b10..98ea3173 100644 --- a/prec/psb_d_bjacprec.f90 +++ b/prec/psb_d_bjacprec.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psb_d_bjacprec use psb_d_base_prec_mod @@ -100,33 +131,6 @@ module psb_d_bjacprec end subroutine psb_d_bjac_precseti end interface -!!$ interface -!!$ subroutine psb_d_bjac_precsetr(prec,what,val,info) -!!$ import :: psb_ipk_, psb_desc_type, psb_d_bjac_prec_type, psb_d_vect_type, psb_dpk_ -!!$ class(psb_d_bjac_prec_type),intent(inout) :: prec -!!$ integer(psb_ipk_), intent(in) :: what -!!$ real(psb_dpk_), intent(in) :: val -!!$ integer(psb_ipk_), intent(out) :: info -!!$ end subroutine psb_d_bjac_precsetr -!!$ end interface -!!$ -!!$ interface -!!$ subroutine psb_d_bjac_precsetc(prec,what,val,info) -!!$ import :: psb_ipk_, psb_desc_type, psb_d_bjac_prec_type, psb_d_vect_type, psb_dpk_ -!!$ class(psb_d_bjac_prec_type),intent(inout) :: prec -!!$ integer(psb_ipk_), intent(in) :: what -!!$ character(len=*), intent(in) :: val -!!$ integer(psb_ipk_), intent(out) :: info -!!$ end subroutine psb_d_bjac_precsetc -!!$ end interface -!!$ -!!$ interface -!!$ subroutine psb_d_bjac_precfree(prec,info) -!!$ import :: psb_ipk_, psb_desc_type, psb_d_bjac_prec_type, psb_d_vect_type, psb_dpk_ -!!$ class(psb_d_bjac_prec_type), intent(inout) :: prec -!!$ integer(psb_ipk_), intent(out) :: info -!!$ end subroutine psb_d_bjac_precfree -!!$ end interface contains @@ -284,6 +288,9 @@ contains call prec%dv%free(info) if (info == 0) deallocate(prec%dv,stat=info) end if + if (allocated(prec%iprcparm)) then + deallocate(prec%iprcparm,stat=info) + end if call psb_erractionrestore(err_act) return diff --git a/prec/psb_d_diagprec.f90 b/prec/psb_d_diagprec.f90 index f116d879..f8c19fa0 100644 --- a/prec/psb_d_diagprec.f90 +++ b/prec/psb_d_diagprec.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psb_d_diagprec use psb_d_base_prec_mod diff --git a/prec/psb_d_nullprec.f90 b/prec/psb_d_nullprec.f90 index f3473553..f331aadc 100644 --- a/prec/psb_d_nullprec.f90 +++ b/prec/psb_d_nullprec.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psb_d_nullprec use psb_d_base_prec_mod diff --git a/prec/psb_d_prec_mod.f90 b/prec/psb_d_prec_mod.f90 index cb2e988b..fa42aedc 100644 --- a/prec/psb_d_prec_mod.f90 +++ b/prec/psb_d_prec_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_d_prec_type.f90 b/prec/psb_d_prec_type.f90 index ad7d1164..f7eb43d0 100644 --- a/prec/psb_d_prec_type.f90 +++ b/prec/psb_d_prec_type.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_prec_const_mod.f90 b/prec/psb_prec_const_mod.f90 index bf4626a8..34ac5575 100644 --- a/prec/psb_prec_const_mod.f90 +++ b/prec/psb_prec_const_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_prec_mod.f90 b/prec/psb_prec_mod.f90 index 667c8f2e..b4ae8ca2 100644 --- a/prec/psb_prec_mod.f90 +++ b/prec/psb_prec_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_prec_type.f90 b/prec/psb_prec_type.f90 index 10689e21..659e7fb7 100644 --- a/prec/psb_prec_type.f90 +++ b/prec/psb_prec_type.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_s_base_prec_mod.f90 b/prec/psb_s_base_prec_mod.f90 index 62bfe93a..393aa5c1 100644 --- a/prec/psb_s_base_prec_mod.f90 +++ b/prec/psb_s_base_prec_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_s_bjacprec.f90 b/prec/psb_s_bjacprec.f90 index eb308f51..2aeb14df 100644 --- a/prec/psb_s_bjacprec.f90 +++ b/prec/psb_s_bjacprec.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psb_s_bjacprec use psb_s_base_prec_mod @@ -100,33 +131,6 @@ module psb_s_bjacprec end subroutine psb_s_bjac_precseti end interface -!!$ interface -!!$ subroutine psb_s_bjac_precsetr(prec,what,val,info) -!!$ import :: psb_ipk_, psb_desc_type, psb_s_bjac_prec_type, psb_s_vect_type, psb_spk_ -!!$ class(psb_s_bjac_prec_type),intent(inout) :: prec -!!$ integer(psb_ipk_), intent(in) :: what -!!$ real(psb_spk_), intent(in) :: val -!!$ integer(psb_ipk_), intent(out) :: info -!!$ end subroutine psb_s_bjac_precsetr -!!$ end interface -!!$ -!!$ interface -!!$ subroutine psb_s_bjac_precsetc(prec,what,val,info) -!!$ import :: psb_ipk_, psb_desc_type, psb_s_bjac_prec_type, psb_s_vect_type, psb_spk_ -!!$ class(psb_s_bjac_prec_type),intent(inout) :: prec -!!$ integer(psb_ipk_), intent(in) :: what -!!$ character(len=*), intent(in) :: val -!!$ integer(psb_ipk_), intent(out) :: info -!!$ end subroutine psb_s_bjac_precsetc -!!$ end interface -!!$ -!!$ interface -!!$ subroutine psb_s_bjac_precfree(prec,info) -!!$ import :: psb_ipk_, psb_desc_type, psb_s_bjac_prec_type, psb_s_vect_type, psb_spk_ -!!$ class(psb_s_bjac_prec_type), intent(inout) :: prec -!!$ integer(psb_ipk_), intent(out) :: info -!!$ end subroutine psb_s_bjac_precfree -!!$ end interface contains @@ -284,6 +288,9 @@ contains call prec%dv%free(info) if (info == 0) deallocate(prec%dv,stat=info) end if + if (allocated(prec%iprcparm)) then + deallocate(prec%iprcparm,stat=info) + end if call psb_erractionrestore(err_act) return diff --git a/prec/psb_s_diagprec.f90 b/prec/psb_s_diagprec.f90 index 87304ccc..6271454a 100644 --- a/prec/psb_s_diagprec.f90 +++ b/prec/psb_s_diagprec.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psb_s_diagprec use psb_s_base_prec_mod diff --git a/prec/psb_s_nullprec.f90 b/prec/psb_s_nullprec.f90 index 0d998bdc..e156ce2e 100644 --- a/prec/psb_s_nullprec.f90 +++ b/prec/psb_s_nullprec.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psb_s_nullprec use psb_s_base_prec_mod diff --git a/prec/psb_s_prec_mod.f90 b/prec/psb_s_prec_mod.f90 index c8b6168a..ada18db7 100644 --- a/prec/psb_s_prec_mod.f90 +++ b/prec/psb_s_prec_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_s_prec_type.f90 b/prec/psb_s_prec_type.f90 index 3cd7edea..8113c034 100644 --- a/prec/psb_s_prec_type.f90 +++ b/prec/psb_s_prec_type.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_z_base_prec_mod.f90 b/prec/psb_z_base_prec_mod.f90 index 381265fe..cd4aaebb 100644 --- a/prec/psb_z_base_prec_mod.f90 +++ b/prec/psb_z_base_prec_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_z_bjacprec.f90 b/prec/psb_z_bjacprec.f90 index f4bd7980..0d7c7137 100644 --- a/prec/psb_z_bjacprec.f90 +++ b/prec/psb_z_bjacprec.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psb_z_bjacprec use psb_z_base_prec_mod @@ -100,33 +131,6 @@ module psb_z_bjacprec end subroutine psb_z_bjac_precseti end interface -!!$ interface -!!$ subroutine psb_z_bjac_precsetr(prec,what,val,info) -!!$ import :: psb_ipk_, psb_desc_type, psb_z_bjac_prec_type, psb_z_vect_type, psb_dpk_ -!!$ class(psb_z_bjac_prec_type),intent(inout) :: prec -!!$ integer(psb_ipk_), intent(in) :: what -!!$ real(psb_dpk_), intent(in) :: val -!!$ integer(psb_ipk_), intent(out) :: info -!!$ end subroutine psb_z_bjac_precsetr -!!$ end interface -!!$ -!!$ interface -!!$ subroutine psb_z_bjac_precsetc(prec,what,val,info) -!!$ import :: psb_ipk_, psb_desc_type, psb_z_bjac_prec_type, psb_z_vect_type, psb_dpk_ -!!$ class(psb_z_bjac_prec_type),intent(inout) :: prec -!!$ integer(psb_ipk_), intent(in) :: what -!!$ character(len=*), intent(in) :: val -!!$ integer(psb_ipk_), intent(out) :: info -!!$ end subroutine psb_z_bjac_precsetc -!!$ end interface -!!$ -!!$ interface -!!$ subroutine psb_z_bjac_precfree(prec,info) -!!$ import :: psb_ipk_, psb_desc_type, psb_z_bjac_prec_type, psb_z_vect_type, psb_dpk_ -!!$ class(psb_z_bjac_prec_type), intent(inout) :: prec -!!$ integer(psb_ipk_), intent(out) :: info -!!$ end subroutine psb_z_bjac_precfree -!!$ end interface contains @@ -284,6 +288,9 @@ contains call prec%dv%free(info) if (info == 0) deallocate(prec%dv,stat=info) end if + if (allocated(prec%iprcparm)) then + deallocate(prec%iprcparm,stat=info) + end if call psb_erractionrestore(err_act) return diff --git a/prec/psb_z_diagprec.f90 b/prec/psb_z_diagprec.f90 index fba7ea43..607436ec 100644 --- a/prec/psb_z_diagprec.f90 +++ b/prec/psb_z_diagprec.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psb_z_diagprec use psb_z_base_prec_mod diff --git a/prec/psb_z_nullprec.f90 b/prec/psb_z_nullprec.f90 index f2b10c0f..0150285a 100644 --- a/prec/psb_z_nullprec.f90 +++ b/prec/psb_z_nullprec.f90 @@ -1,3 +1,34 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ module psb_z_nullprec use psb_z_base_prec_mod diff --git a/prec/psb_z_prec_mod.f90 b/prec/psb_z_prec_mod.f90 index 7b8e7dbf..af5d00b6 100644 --- a/prec/psb_z_prec_mod.f90 +++ b/prec/psb_z_prec_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/prec/psb_z_prec_type.f90 b/prec/psb_z_prec_type.f90 index b3eeea13..b4f11a7b 100644 --- a/prec/psb_z_prec_type.f90 +++ b/prec/psb_z_prec_type.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/test/fileread/cf_sample.f90 b/test/fileread/cf_sample.f90 index 625873f1..3855f33a 100644 --- a/test/fileread/cf_sample.f90 +++ b/test/fileread/cf_sample.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -273,7 +273,7 @@ program cf_sample write(psb_out_unit,'("Iterations to convergence: ",i6)')iter write(psb_out_unit,'("Error estimate on exit : ",es12.5)') err write(psb_out_unit,'("Time to buil prec. : ",es12.5)')tprec - write(psb_out_unit,'("Time to solve matrix : ",es12.5)')t2 + write(psb_out_unit,'("Time to solve system : ",es12.5)')t2 write(psb_out_unit,'("Time per iteration : ",es12.5)')t2/(iter) write(psb_out_unit,'("Total time : ",es12.5)')t2+tprec write(psb_out_unit,'("Residual norm 2 : ",es12.5)')resmx @@ -286,27 +286,24 @@ program cf_sample & desc_a%indxmap%get_fmt() end if - allocate(x_col_glob(m_problem),r_col_glob(m_problem),stat=ierr) - if (ierr /= 0) then - write(psb_err_unit,*) 'allocation error: no data collection' - else - call psb_gather(x_col_glob,x_col,desc_a,info,root=psb_root_) - call psb_gather(r_col_glob,r_col,desc_a,info,root=psb_root_) - if (iam == psb_root_) then - write(psb_err_unit,'(" ")') - write(psb_err_unit,'("Saving x on file")') - write(20,*) 'matrix: ',mtrx_file - write(20,*) 'computed solution on ',np,' processors.' - write(20,*) 'iterations to convergence: ',iter - write(20,*) 'error estimate (infinity norm) on exit:', & - & ' ||r||/(||a||||x||+||b||) = ',err - write(20,'("Residual norm 2 : ",es12.5)')resmx - write(20,'("Residual norm inf : ",es12.5)')resmxp - write(20,'(a8,4(2x,a20))') 'I','X(I)','R(I)','B(I)' - do i=1,m_problem - write(20,998) i,x_col_glob(i),r_col_glob(i),b_col_glob(i) - enddo - end if + call psb_gather(x_col_glob,x_col,desc_a,info,root=psb_root_) + if (info == psb_success_) & + & call psb_gather(r_col_glob,r_col,desc_a,info,root=psb_root_) + if (info /= psb_success_) goto 9999 + if (iam == psb_root_) then + write(psb_err_unit,'(" ")') + write(psb_err_unit,'("Saving x on file")') + write(20,*) 'matrix: ',mtrx_file + write(20,*) 'computed solution on ',np,' processors.' + write(20,*) 'iterations to convergence: ',iter + write(20,*) 'error estimate (infinity norm) on exit:', & + & ' ||r||/(||a||||x||+||b||) = ',err + write(20,'("Residual norm 2 : ",es12.5)')resmx + write(20,'("Residual norm inf : ",es12.5)')resmxp + write(20,'(a8,4(2x,a20))') 'I','X(I)','R(I)','B(I)' + do i=1,m_problem + write(20,998) i,x_col_glob(i),r_col_glob(i),b_col_glob(i) + enddo end if 998 format(i8,6(1x,g11.5)) 993 format(i6,4(1x,e12.6)) diff --git a/test/fileread/df_sample.f90 b/test/fileread/df_sample.f90 index 19461566..59a3786b 100644 --- a/test/fileread/df_sample.f90 +++ b/test/fileread/df_sample.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -279,7 +279,7 @@ program df_sample write(psb_out_unit,'("Iterations to convergence: ",i6)')iter write(psb_out_unit,'("Error estimate on exit : ",es12.5)') err write(psb_out_unit,'("Time to buil prec. : ",es12.5)')tprec - write(psb_out_unit,'("Time to solve matrix : ",es12.5)')t2 + write(psb_out_unit,'("Time to solve system : ",es12.5)')t2 write(psb_out_unit,'("Time per iteration : ",es12.5)')t2/(iter) write(psb_out_unit,'("Total time : ",es12.5)')t2+tprec write(psb_out_unit,'("Residual norm 2 : ",es12.5)')resmx @@ -293,27 +293,24 @@ program df_sample end if !!$ call psb_precdump(prec,info,prefix=trim(mtrx_file)//'_') - allocate(x_col_glob(m_problem),r_col_glob(m_problem),stat=ierr) - if (ierr /= 0) then - write(psb_err_unit,*) 'allocation error: no data collection' - else - call psb_gather(x_col_glob,x_col,desc_a,info,root=psb_root_) - call psb_gather(r_col_glob,r_col,desc_a,info,root=psb_root_) - if (iam == psb_root_) then - write(psb_err_unit,'(" ")') - write(psb_err_unit,'("Saving x on file")') - write(20,*) 'matrix: ',mtrx_file - write(20,*) 'computed solution on ',np,' processors.' - write(20,*) 'iterations to convergence: ',iter - write(20,*) 'error estimate (infinity norm) on exit:', & - & ' ||r||/(||a||||x||+||b||) = ',err - write(20,'("Residual norm 2 : ",es12.5)')resmx - write(20,'("Residual norm inf : ",es12.5)')resmxp - write(20,'(a8,4(2x,a20))') 'I','X(I)','R(I)','B(I)' - do i=1,m_problem - write(20,998) i,x_col_glob(i),r_col_glob(i),b_col_glob(i) - enddo - end if + call psb_gather(x_col_glob,x_col,desc_a,info,root=psb_root_) + if (info == psb_success_) & + & call psb_gather(r_col_glob,r_col,desc_a,info,root=psb_root_) + if (info /= psb_success_) goto 9999 + if (iam == psb_root_) then + write(psb_err_unit,'(" ")') + write(psb_err_unit,'("Saving x on file")') + write(20,*) 'matrix: ',mtrx_file + write(20,*) 'computed solution on ',np,' processors.' + write(20,*) 'iterations to convergence: ',iter + write(20,*) 'error estimate (infinity norm) on exit:', & + & ' ||r||/(||a||||x||+||b||) = ',err + write(20,'("Residual norm 2 : ",es12.5)')resmx + write(20,'("Residual norm inf : ",es12.5)')resmxp + write(20,'(a8,4(2x,a20))') 'I','X(I)','R(I)','B(I)' + do i=1,m_problem + write(20,998) i,x_col_glob(i),r_col_glob(i),b_col_glob(i) + enddo end if 998 format(i8,4(2x,g20.14)) 993 format(i6,4(1x,e12.6)) diff --git a/test/fileread/getp.f90 b/test/fileread/getp.f90 index 18922411..fea2b594 100644 --- a/test/fileread/getp.f90 +++ b/test/fileread/getp.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/test/fileread/sf_sample.f90 b/test/fileread/sf_sample.f90 index aff706d5..a8a900dc 100644 --- a/test/fileread/sf_sample.f90 +++ b/test/fileread/sf_sample.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -276,7 +276,7 @@ program sf_sample write(psb_out_unit,'("Iterations to convergence: ",i6)')iter write(psb_out_unit,'("Error estimate on exit : ",es12.5)') err write(psb_out_unit,'("Time to buil prec. : ",es12.5)')tprec - write(psb_out_unit,'("Time to solve matrix : ",es12.5)')t2 + write(psb_out_unit,'("Time to solve system : ",es12.5)')t2 write(psb_out_unit,'("Time per iteration : ",es12.5)')t2/(iter) write(psb_out_unit,'("Total time : ",es12.5)')t2+tprec write(psb_out_unit,'("Residual norm 2 : ",es12.5)')resmx @@ -290,27 +290,24 @@ program sf_sample end if !!$ call psb_precdump(prec,info,prefix=trim(mtrx_file)//'_') - allocate(x_col_glob(m_problem),r_col_glob(m_problem),stat=ierr) - if (ierr /= 0) then - write(psb_err_unit,*) 'allocation error: no data collection' - else - call psb_gather(x_col_glob,x_col,desc_a,info,root=psb_root_) - call psb_gather(r_col_glob,r_col,desc_a,info,root=psb_root_) - if (iam == psb_root_) then - write(psb_err_unit,'(" ")') - write(psb_err_unit,'("Saving x on file")') - write(20,*) 'matrix: ',mtrx_file - write(20,*) 'computed solution on ',np,' processors.' - write(20,*) 'iterations to convergence: ',iter - write(20,*) 'error estimate (infinity norm) on exit:', & - & ' ||r||/(||a||||x||+||b||) = ',err - write(20,'("Residual norm 2 : ",es12.5)')resmx - write(20,'("Residual norm inf : ",es12.5)')resmxp - write(20,'(a8,4(2x,a20))') 'I','X(I)','R(I)','B(I)' - do i=1,m_problem - write(20,998) i,x_col_glob(i),r_col_glob(i),b_col_glob(i) - enddo - end if + call psb_gather(x_col_glob,x_col,desc_a,info,root=psb_root_) + if (info == psb_success_) & + & call psb_gather(r_col_glob,r_col,desc_a,info,root=psb_root_) + if (info /= psb_success_) goto 9999 + if (iam == psb_root_) then + write(psb_err_unit,'(" ")') + write(psb_err_unit,'("Saving x on file")') + write(20,*) 'matrix: ',mtrx_file + write(20,*) 'computed solution on ',np,' processors.' + write(20,*) 'iterations to convergence: ',iter + write(20,*) 'error estimate (infinity norm) on exit:', & + & ' ||r||/(||a||||x||+||b||) = ',err + write(20,'("Residual norm 2 : ",es12.5)')resmx + write(20,'("Residual norm inf : ",es12.5)')resmxp + write(20,'(a8,4(2x,a20))') 'I','X(I)','R(I)','B(I)' + do i=1,m_problem + write(20,998) i,x_col_glob(i),r_col_glob(i),b_col_glob(i) + enddo end if 998 format(i8,4(2x,g20.14)) 993 format(i6,4(1x,e12.6)) diff --git a/test/fileread/zf_sample.f90 b/test/fileread/zf_sample.f90 index c8b312ba..996b11ac 100644 --- a/test/fileread/zf_sample.f90 +++ b/test/fileread/zf_sample.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -273,7 +273,7 @@ program zf_sample write(psb_out_unit,'("Iterations to convergence: ",i6)')iter write(psb_out_unit,'("Error estimate on exit : ",es12.5)') err write(psb_out_unit,'("Time to buil prec. : ",es12.5)')tprec - write(psb_out_unit,'("Time to solve matrix : ",es12.5)')t2 + write(psb_out_unit,'("Time to solve system : ",es12.5)')t2 write(psb_out_unit,'("Time per iteration : ",es12.5)')t2/(iter) write(psb_out_unit,'("Total time : ",es12.5)')t2+tprec write(psb_out_unit,'("Residual norm 2 : ",es12.5)')resmx @@ -286,27 +286,24 @@ program zf_sample & desc_a%indxmap%get_fmt() end if - allocate(x_col_glob(m_problem),r_col_glob(m_problem),stat=ierr) - if (ierr /= 0) then - write(psb_err_unit,*) 'allocation error: no data collection' - else - call psb_gather(x_col_glob,x_col,desc_a,info,root=psb_root_) - call psb_gather(r_col_glob,r_col,desc_a,info,root=psb_root_) - if (iam == psb_root_) then - write(psb_err_unit,'(" ")') - write(psb_err_unit,'("Saving x on file")') - write(20,*) 'matrix: ',mtrx_file - write(20,*) 'computed solution on ',np,' processors.' - write(20,*) 'iterations to convergence: ',iter - write(20,*) 'error estimate (infinity norm) on exit:', & - & ' ||r||/(||a||||x||+||b||) = ',err - write(20,'("Residual norm 2 : ",es12.5)')resmx - write(20,'("Residual norm inf : ",es12.5)')resmxp - write(20,'(a8,4(2x,a20))') 'I','X(I)','R(I)','B(I)' - do i=1,m_problem - write(20,998) i,x_col_glob(i),r_col_glob(i),b_col_glob(i) - enddo - end if + call psb_gather(x_col_glob,x_col,desc_a,info,root=psb_root_) + if (info == psb_success_) & + & call psb_gather(r_col_glob,r_col,desc_a,info,root=psb_root_) + if (info /= psb_success_) goto 9999 + if (iam == psb_root_) then + write(psb_err_unit,'(" ")') + write(psb_err_unit,'("Saving x on file")') + write(20,*) 'matrix: ',mtrx_file + write(20,*) 'computed solution on ',np,' processors.' + write(20,*) 'iterations to convergence: ',iter + write(20,*) 'error estimate (infinity norm) on exit:', & + & ' ||r||/(||a||||x||+||b||) = ',err + write(20,'("Residual norm 2 : ",es12.5)')resmx + write(20,'("Residual norm inf : ",es12.5)')resmxp + write(20,'(a8,4(2x,a20))') 'I','X(I)','R(I)','B(I)' + do i=1,m_problem + write(20,998) i,x_col_glob(i),r_col_glob(i),b_col_glob(i) + enddo end if 998 format(i8,6(1x,g11.5)) 993 format(i6,4(1x,e12.6)) diff --git a/test/kernel/d_file_spmv.f90 b/test/kernel/d_file_spmv.f90 index 50d06b5d..8d3c1b7c 100644 --- a/test/kernel/d_file_spmv.f90 +++ b/test/kernel/d_file_spmv.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/test/kernel/pdgenspmv.f90 b/test/kernel/pdgenspmv.f90 index 34427392..7ac2b9b9 100644 --- a/test/kernel/pdgenspmv.f90 +++ b/test/kernel/pdgenspmv.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 2.3.1 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/test/kernel/s_file_spmv.f90 b/test/kernel/s_file_spmv.f90 index 93ac4888..3f9e25f2 100644 --- a/test/kernel/s_file_spmv.f90 +++ b/test/kernel/s_file_spmv.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/test/pargen/ppde2d.f90 b/test/pargen/ppde2d.f90 index f9a845d7..33d0a5c9 100644 --- a/test/pargen/ppde2d.f90 +++ b/test/pargen/ppde2d.f90 @@ -55,11 +55,62 @@ ! then the corresponding vector is distributed according to a BLOCK ! data distribution. ! +module ppde2d_mod +contains + + ! + ! functions parametrizing the differential equation + ! + function b1(x,y) + use psb_base_mod, only : psb_dpk_ + real(psb_dpk_) :: b1 + real(psb_dpk_), intent(in) :: x,y + b1=1.d0/sqrt(2.d0) + end function b1 + function b2(x,y) + use psb_base_mod, only : psb_dpk_ + real(psb_dpk_) :: b2 + real(psb_dpk_), intent(in) :: x,y + b2=1.d0/sqrt(2.d0) + end function b2 + function c(x,y) + use psb_base_mod, only : psb_dpk_ + real(psb_dpk_) :: c + real(psb_dpk_), intent(in) :: x,y + c=0.d0 + end function c + function a1(x,y) + use psb_base_mod, only : psb_dpk_ + real(psb_dpk_) :: a1 + real(psb_dpk_), intent(in) :: x,y + a1=1.d0/80 + end function a1 + function a2(x,y) + use psb_base_mod, only : psb_dpk_ + real(psb_dpk_) :: a2 + real(psb_dpk_), intent(in) :: x,y + a2=1.d0/80 + end function a2 + function g(x,y) + use psb_base_mod, only : psb_dpk_, done, dzero + real(psb_dpk_) :: g + real(psb_dpk_), intent(in) :: x,y + g = dzero + if (x == done) then + g = done + else if (x == dzero) then + g = exp(-y**2) + end if + end function g + +end module ppde2d_mod + program ppde2d use psb_base_mod use psb_prec_mod use psb_krylov_mod use psb_util_mod + use ppde2d_mod implicit none ! input parameters @@ -184,7 +235,7 @@ program ppde2d if (iam == psb_root_) then write(psb_out_unit,'(" ")') - write(psb_out_unit,'("Time to solve matrix : ",es12.5)')t2 + write(psb_out_unit,'("Time to solve system : ",es12.5)')t2 write(psb_out_unit,'("Time per iteration : ",es12.5)')t2/iter write(psb_out_unit,'("Number of iterations : ",i0)')iter write(psb_out_unit,'("Convergence indicator on exit : ",es12.5)')err @@ -227,7 +278,7 @@ contains character(len=*) :: kmethd, ptype, afmt integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst integer(psb_ipk_) :: np, iam - integer(psb_ipk_) :: intbuf(10), ip + integer(psb_ipk_) :: ip call psb_info(ictxt, iam, np) @@ -238,12 +289,6 @@ contains read(psb_inp_unit,*) ptype read(psb_inp_unit,*) afmt - ! broadcast parameters to all processors - call psb_bcast(ictxt,kmethd) - call psb_bcast(ictxt,afmt) - call psb_bcast(ictxt,ptype) - - read(psb_inp_unit,*) idim if (ip >= 4) then read(psb_inp_unit,*) istopc @@ -265,14 +310,6 @@ contains else irst=1 endif - ! broadcast parameters to all processors - - intbuf(1) = idim - intbuf(2) = istopc - intbuf(3) = itmax - intbuf(4) = itrace - intbuf(5) = irst - call psb_bcast(ictxt,intbuf(1:5)) write(psb_out_unit,'("Solving matrix : ell1")') write(psb_out_unit,'("Grid dimensions : ",i5," x ",i5)')idim,idim @@ -287,17 +324,19 @@ contains call psb_abort(ictxt) stop 1 endif - else - call psb_bcast(ictxt,kmethd) - call psb_bcast(ictxt,afmt) - call psb_bcast(ictxt,ptype) - call psb_bcast(ictxt,intbuf(1:5)) - idim = intbuf(1) - istopc = intbuf(2) - itmax = intbuf(3) - itrace = intbuf(4) - irst = intbuf(5) end if + + ! broadcast parameters to all processors + call psb_bcast(ictxt,kmethd) + call psb_bcast(ictxt,afmt) + call psb_bcast(ictxt,ptype) + call psb_bcast(ictxt,idim) + call psb_bcast(ictxt,istopc) + call psb_bcast(ictxt,itmax) + call psb_bcast(ictxt,itrace) + call psb_bcast(ictxt,irst) + + return end subroutine get_parms @@ -321,52 +360,6 @@ contains write(iout,*)' >= 1 do tracing every itrace' write(iout,*)' iterations ' end subroutine pr_usage - - ! - ! functions parametrizing the differential equation - ! - function b1(x,y) - use psb_base_mod, only : psb_dpk_ - real(psb_dpk_) :: b1 - real(psb_dpk_), intent(in) :: x,y - b1=1.d0/sqrt(2.d0) - end function b1 - function b2(x,y) - use psb_base_mod, only : psb_dpk_ - real(psb_dpk_) :: b2 - real(psb_dpk_), intent(in) :: x,y - b2=1.d0/sqrt(2.d0) - end function b2 - function c(x,y) - use psb_base_mod, only : psb_dpk_ - real(psb_dpk_) :: c - real(psb_dpk_), intent(in) :: x,y - c=0.d0 - end function c - function a1(x,y) - use psb_base_mod, only : psb_dpk_ - real(psb_dpk_) :: a1 - real(psb_dpk_), intent(in) :: x,y - a1=1.d0/80 - end function a1 - function a2(x,y) - use psb_base_mod, only : psb_dpk_ - real(psb_dpk_) :: a2 - real(psb_dpk_), intent(in) :: x,y - a2=1.d0/80 - end function a2 - function g(x,y) - use psb_base_mod, only : psb_dpk_, done - real(psb_dpk_) :: g - real(psb_dpk_), intent(in) :: x,y - g = dzero - if (x == done) then - g = done - else if (x == dzero) then - g = exp(-y**2) - end if - end function g - end program ppde2d diff --git a/test/pargen/ppde3d.f90 b/test/pargen/ppde3d.f90 index 2b300db8..94fa1c71 100644 --- a/test/pargen/ppde3d.f90 +++ b/test/pargen/ppde3d.f90 @@ -55,11 +55,73 @@ ! then the corresponding vector is distributed according to a BLOCK ! data distribution. ! +module ppde3d_mod +contains + ! + ! functions parametrizing the differential equation + ! + function b1(x,y,z) + use psb_base_mod, only : psb_dpk_ + real(psb_dpk_) :: b1 + real(psb_dpk_), intent(in) :: x,y,z + b1=1.d0/sqrt(3.d0) + end function b1 + function b2(x,y,z) + use psb_base_mod, only : psb_dpk_ + real(psb_dpk_) :: b2 + real(psb_dpk_), intent(in) :: x,y,z + b2=1.d0/sqrt(3.d0) + end function b2 + function b3(x,y,z) + use psb_base_mod, only : psb_dpk_ + real(psb_dpk_) :: b3 + real(psb_dpk_), intent(in) :: x,y,z + b3=1.d0/sqrt(3.d0) + end function b3 + function c(x,y,z) + use psb_base_mod, only : psb_dpk_ + real(psb_dpk_) :: c + real(psb_dpk_), intent(in) :: x,y,z + c=0.d0 + end function c + function a1(x,y,z) + use psb_base_mod, only : psb_dpk_ + real(psb_dpk_) :: a1 + real(psb_dpk_), intent(in) :: x,y,z + a1=1.d0/80 + end function a1 + function a2(x,y,z) + use psb_base_mod, only : psb_dpk_ + real(psb_dpk_) :: a2 + real(psb_dpk_), intent(in) :: x,y,z + a2=1.d0/80 + end function a2 + function a3(x,y,z) + use psb_base_mod, only : psb_dpk_ + real(psb_dpk_) :: a3 + real(psb_dpk_), intent(in) :: x,y,z + a3=1.d0/80 + end function a3 + function g(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + real(psb_dpk_) :: g + real(psb_dpk_), intent(in) :: x,y,z + g = dzero + if (x == done) then + g = done + else if (x == dzero) then + g = exp(y**2-z**2) + end if + end function g + +end module ppde3d_mod + program ppde3d use psb_base_mod use psb_prec_mod use psb_krylov_mod use psb_util_mod + use ppde3d_mod implicit none ! input parameters @@ -105,6 +167,7 @@ program ppde3d if(psb_get_errstatus() /= 0) goto 9999 name='pde3d90' call psb_set_errverbosity(itwo) + call psb_cd_set_large_threshold(itwo) ! ! Hello world ! @@ -185,7 +248,7 @@ program ppde3d if (iam == psb_root_) then write(psb_out_unit,'(" ")') - write(psb_out_unit,'("Time to solve matrix : ",es12.5)')t2 + write(psb_out_unit,'("Time to solve system : ",es12.5)')t2 write(psb_out_unit,'("Time per iteration : ",es12.5)')t2/iter write(psb_out_unit,'("Number of iterations : ",i0)')iter write(psb_out_unit,'("Convergence indicator on exit : ",es12.5)')err @@ -228,7 +291,7 @@ contains character(len=*) :: kmethd, ptype, afmt integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst integer(psb_ipk_) :: np, iam - integer(psb_ipk_) :: intbuf(10), ip + integer(psb_ipk_) :: ip call psb_info(ictxt, iam, np) @@ -239,11 +302,6 @@ contains read(psb_inp_unit,*) ptype read(psb_inp_unit,*) afmt - ! broadcast parameters to all processors - call psb_bcast(ictxt,kmethd) - call psb_bcast(ictxt,afmt) - call psb_bcast(ictxt,ptype) - read(psb_inp_unit,*) idim if (ip >= 4) then @@ -268,12 +326,6 @@ contains endif ! broadcast parameters to all processors - intbuf(1) = idim - intbuf(2) = istopc - intbuf(3) = itmax - intbuf(4) = itrace - intbuf(5) = irst - call psb_bcast(ictxt,intbuf(1:5)) write(psb_out_unit,'("Solving matrix : ell1")') write(psb_out_unit,& @@ -290,17 +342,17 @@ contains call psb_abort(ictxt) stop 1 endif - else - call psb_bcast(ictxt,kmethd) - call psb_bcast(ictxt,afmt) - call psb_bcast(ictxt,ptype) - call psb_bcast(ictxt,intbuf(1:5)) - idim = intbuf(1) - istopc = intbuf(2) - itmax = intbuf(3) - itrace = intbuf(4) - irst = intbuf(5) end if + ! broadcast parameters to all processors + call psb_bcast(ictxt,kmethd) + call psb_bcast(ictxt,afmt) + call psb_bcast(ictxt,ptype) + call psb_bcast(ictxt,idim) + call psb_bcast(ictxt,istopc) + call psb_bcast(ictxt,itmax) + call psb_bcast(ictxt,itrace) + call psb_bcast(ictxt,irst) + return end subroutine get_parms @@ -325,63 +377,6 @@ contains write(iout,*)' iterations ' end subroutine pr_usage - ! - ! functions parametrizing the differential equation - ! - function b1(x,y,z) - use psb_base_mod, only : psb_dpk_ - real(psb_dpk_) :: b1 - real(psb_dpk_), intent(in) :: x,y,z - b1=1.d0/sqrt(3.d0) - end function b1 - function b2(x,y,z) - use psb_base_mod, only : psb_dpk_ - real(psb_dpk_) :: b2 - real(psb_dpk_), intent(in) :: x,y,z - b2=1.d0/sqrt(3.d0) - end function b2 - function b3(x,y,z) - use psb_base_mod, only : psb_dpk_ - real(psb_dpk_) :: b3 - real(psb_dpk_), intent(in) :: x,y,z - b3=1.d0/sqrt(3.d0) - end function b3 - function c(x,y,z) - use psb_base_mod, only : psb_dpk_ - real(psb_dpk_) :: c - real(psb_dpk_), intent(in) :: x,y,z - c=0.d0 - end function c - function a1(x,y,z) - use psb_base_mod, only : psb_dpk_ - real(psb_dpk_) :: a1 - real(psb_dpk_), intent(in) :: x,y,z - a1=1.d0/80 - end function a1 - function a2(x,y,z) - use psb_base_mod, only : psb_dpk_ - real(psb_dpk_) :: a2 - real(psb_dpk_), intent(in) :: x,y,z - a2=1.d0/80 - end function a2 - function a3(x,y,z) - use psb_base_mod, only : psb_dpk_ - real(psb_dpk_) :: a3 - real(psb_dpk_), intent(in) :: x,y,z - a3=1.d0/80 - end function a3 - function g(x,y,z) - use psb_base_mod, only : psb_dpk_, done - real(psb_dpk_) :: g - real(psb_dpk_), intent(in) :: x,y,z - g = dzero - if (x == done) then - g = done - else if (x == dzero) then - g = exp(y**2-z**2) - end if - end function g - end program ppde3d diff --git a/test/pargen/runs/ppde.inp b/test/pargen/runs/ppde.inp index 550d52c6..cd642036 100644 --- a/test/pargen/runs/ppde.inp +++ b/test/pargen/runs/ppde.inp @@ -2,7 +2,7 @@ BICGSTAB Iterative method BICGSTAB CGS BICG BICGSTABL RGMRES BJAC Preconditioner NONE DIAG BJAC CSR Storage format for matrix A: CSR COO JAD -060 Domain size (acutal system is this**3) +040 Domain size (acutal system is this**3) 2 Stopping criterion 1000 MAXIT -2 ITRACE diff --git a/test/pargen/spde2d.f90 b/test/pargen/spde2d.f90 index 4d7ce462..4fde7e4d 100644 --- a/test/pargen/spde2d.f90 +++ b/test/pargen/spde2d.f90 @@ -55,11 +55,61 @@ ! then the corresponding vector is distributed according to a BLOCK ! data distribution. ! +module spde2d_mod +contains + ! + ! functions parametrizing the differential equation + ! + function b1(x,y) + use psb_base_mod, only : psb_spk_ + real(psb_spk_) :: b1 + real(psb_spk_), intent(in) :: x,y + b1=1.e0/sqrt(2.e0) + end function b1 + function b2(x,y) + use psb_base_mod, only : psb_spk_ + real(psb_spk_) :: b2 + real(psb_spk_), intent(in) :: x,y + b2=1.e0/sqrt(2.e0) + end function b2 + function c(x,y) + use psb_base_mod, only : psb_spk_ + real(psb_spk_) :: c + real(psb_spk_), intent(in) :: x,y + c=0.e0 + end function c + function a1(x,y) + use psb_base_mod, only : psb_spk_ + real(psb_spk_) :: a1 + real(psb_spk_), intent(in) :: x,y + a1=1.e0/80 + end function a1 + function a2(x,y) + use psb_base_mod, only : psb_spk_ + real(psb_spk_) :: a2 + real(psb_spk_), intent(in) :: x,y + a2=1.e0/80 + end function a2 + function g(x,y) + use psb_base_mod, only : psb_spk_, sone, szero + real(psb_spk_) :: g + real(psb_spk_), intent(in) :: x,y + g = szero + if (x == sone) then + g = sone + else if (x == szero) then + g = exp(-y**2) + end if + end function g + +end module spde2d_mod + program spde2d use psb_base_mod use psb_prec_mod use psb_krylov_mod use psb_util_mod + use spde2d_mod implicit none ! input parameters @@ -184,7 +234,7 @@ program spde2d if (iam == psb_root_) then write(psb_out_unit,'(" ")') - write(psb_out_unit,'("Time to solve matrix : ",es12.5)')t2 + write(psb_out_unit,'("Time to solve system : ",es12.5)')t2 write(psb_out_unit,'("Time per iteration : ",es12.5)')t2/iter write(psb_out_unit,'("Number of iterations : ",i0)')iter write(psb_out_unit,'("Convergence indicator on exit : ",es12.5)')err @@ -227,7 +277,7 @@ contains character(len=*) :: kmethd, ptype, afmt integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst integer(psb_ipk_) :: np, iam - integer(psb_ipk_) :: intbuf(10), ip + integer(psb_ipk_) :: ip call psb_info(ictxt, iam, np) @@ -238,12 +288,6 @@ contains read(psb_inp_unit,*) ptype read(psb_inp_unit,*) afmt - ! broadcast parameters to all processors - call psb_bcast(ictxt,kmethd) - call psb_bcast(ictxt,afmt) - call psb_bcast(ictxt,ptype) - - read(psb_inp_unit,*) idim if (ip >= 4) then read(psb_inp_unit,*) istopc @@ -265,14 +309,6 @@ contains else irst=1 endif - ! broadcast parameters to all processors - - intbuf(1) = idim - intbuf(2) = istopc - intbuf(3) = itmax - intbuf(4) = itrace - intbuf(5) = irst - call psb_bcast(ictxt,intbuf(1:5)) write(psb_out_unit,'("Solving matrix : ell1")') write(psb_out_unit,'("Grid dimensions : ",i5," x ",i5)')idim,idim @@ -287,17 +323,18 @@ contains call psb_abort(ictxt) stop 1 endif - else - call psb_bcast(ictxt,kmethd) - call psb_bcast(ictxt,afmt) - call psb_bcast(ictxt,ptype) - call psb_bcast(ictxt,intbuf(1:5)) - idim = intbuf(1) - istopc = intbuf(2) - itmax = intbuf(3) - itrace = intbuf(4) - irst = intbuf(5) end if + ! broadcast parameters to all processors + call psb_bcast(ictxt,kmethd) + call psb_bcast(ictxt,afmt) + call psb_bcast(ictxt,ptype) + call psb_bcast(ictxt,idim) + call psb_bcast(ictxt,istopc) + call psb_bcast(ictxt,itmax) + call psb_bcast(ictxt,itrace) + call psb_bcast(ictxt,irst) + + return end subroutine get_parms @@ -322,51 +359,6 @@ contains write(iout,*)' iterations ' end subroutine pr_usage - ! - ! functions parametrizing the differential equation - ! - function b1(x,y) - use psb_base_mod, only : psb_spk_ - real(psb_spk_) :: b1 - real(psb_spk_), intent(in) :: x,y - b1=1.e0/sqrt(2.e0) - end function b1 - function b2(x,y) - use psb_base_mod, only : psb_spk_ - real(psb_spk_) :: b2 - real(psb_spk_), intent(in) :: x,y - b2=1.e0/sqrt(2.e0) - end function b2 - function c(x,y) - use psb_base_mod, only : psb_spk_ - real(psb_spk_) :: c - real(psb_spk_), intent(in) :: x,y - c=0.e0 - end function c - function a1(x,y) - use psb_base_mod, only : psb_spk_ - real(psb_spk_) :: a1 - real(psb_spk_), intent(in) :: x,y - a1=1.e0/80 - end function a1 - function a2(x,y) - use psb_base_mod, only : psb_spk_ - real(psb_spk_) :: a2 - real(psb_spk_), intent(in) :: x,y - a2=1.e0/80 - end function a2 - function g(x,y) - use psb_base_mod, only : psb_spk_, sone - real(psb_spk_) :: g - real(psb_spk_), intent(in) :: x,y - g = szero - if (x == sone) then - g = sone - else if (x == szero) then - g = exp(-y**2) - end if - end function g - end program spde2d diff --git a/test/pargen/spde3d.f90 b/test/pargen/spde3d.f90 index 9eadb27f..60b5c91d 100644 --- a/test/pargen/spde3d.f90 +++ b/test/pargen/spde3d.f90 @@ -56,11 +56,73 @@ ! data distribution. ! ! +module spde3d_mod +contains + + ! + ! functions parametrizing the differential equation + ! + function b1(x,y,z) + use psb_base_mod, only : psb_spk_ + real(psb_spk_) :: b1 + real(psb_spk_), intent(in) :: x,y,z + b1=1.e0/sqrt(3.e0) + end function b1 + function b2(x,y,z) + use psb_base_mod, only : psb_spk_ + real(psb_spk_) :: b2 + real(psb_spk_), intent(in) :: x,y,z + b2=1.e0/sqrt(3.e0) + end function b2 + function b3(x,y,z) + use psb_base_mod, only : psb_spk_ + real(psb_spk_) :: b3 + real(psb_spk_), intent(in) :: x,y,z + b3=1.e0/sqrt(3.e0) + end function b3 + function c(x,y,z) + use psb_base_mod, only : psb_spk_ + real(psb_spk_) :: c + real(psb_spk_), intent(in) :: x,y,z + c=0.e0 + end function c + function a1(x,y,z) + use psb_base_mod, only : psb_spk_ + real(psb_spk_) :: a1 + real(psb_spk_), intent(in) :: x,y,z + a1=1.e0/80 + end function a1 + function a2(x,y,z) + use psb_base_mod, only : psb_spk_ + real(psb_spk_) :: a2 + real(psb_spk_), intent(in) :: x,y,z + a2=1.e0/80 + end function a2 + function a3(x,y,z) + use psb_base_mod, only : psb_spk_ + real(psb_spk_) :: a3 + real(psb_spk_), intent(in) :: x,y,z + a3=1.e0/80 + end function a3 + function g(x,y,z) + use psb_base_mod, only : psb_spk_, sone, szero + real(psb_spk_) :: g + real(psb_spk_), intent(in) :: x,y,z + g = szero + if (x == sone) then + g = sone + else if (x == szero) then + g = exp(y**2-z**2) + end if + end function g +end module spde3d_mod + program spde3d use psb_base_mod use psb_prec_mod use psb_krylov_mod use psb_util_mod + use spde3d_mod implicit none ! input parameters @@ -186,7 +248,7 @@ program spde3d if (iam == psb_root_) then write(psb_out_unit,'(" ")') - write(psb_out_unit,'("Time to solve matrix : ",es12.5)')t2 + write(psb_out_unit,'("Time to solve system : ",es12.5)')t2 write(psb_out_unit,'("Time per iteration : ",es12.5)')t2/iter write(psb_out_unit,'("Number of iterations : ",i0)')iter write(psb_out_unit,'("Convergence indicator on exit : ",es12.5)')err @@ -229,7 +291,7 @@ contains character(len=*) :: kmethd, ptype, afmt integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst integer(psb_ipk_) :: np, iam - integer(psb_ipk_) :: intbuf(10), ip + integer(psb_ipk_) :: ip call psb_info(ictxt, iam, np) @@ -240,12 +302,6 @@ contains read(psb_inp_unit,*) ptype read(psb_inp_unit,*) afmt - ! broadcast parameters to all processors - call psb_bcast(ictxt,kmethd) - call psb_bcast(ictxt,afmt) - call psb_bcast(ictxt,ptype) - - read(psb_inp_unit,*) idim if (ip >= 4) then read(psb_inp_unit,*) istopc @@ -267,14 +323,6 @@ contains else irst=1 endif - ! broadcast parameters to all processors - - intbuf(1) = idim - intbuf(2) = istopc - intbuf(3) = itmax - intbuf(4) = itrace - intbuf(5) = irst - call psb_bcast(ictxt,intbuf(1:5)) write(psb_out_unit,'("Solving matrix : ell1")') write(psb_out_unit,& @@ -291,17 +339,17 @@ contains call psb_abort(ictxt) stop 1 endif - else - call psb_bcast(ictxt,kmethd) - call psb_bcast(ictxt,afmt) - call psb_bcast(ictxt,ptype) - call psb_bcast(ictxt,intbuf(1:5)) - idim = intbuf(1) - istopc = intbuf(2) - itmax = intbuf(3) - itrace = intbuf(4) - irst = intbuf(5) end if + ! broadcast parameters to all processors + call psb_bcast(ictxt,kmethd) + call psb_bcast(ictxt,afmt) + call psb_bcast(ictxt,ptype) + call psb_bcast(ictxt,idim) + call psb_bcast(ictxt,istopc) + call psb_bcast(ictxt,itmax) + call psb_bcast(ictxt,itrace) + call psb_bcast(ictxt,irst) + return end subroutine get_parms @@ -326,63 +374,6 @@ contains write(iout,*)' iterations ' end subroutine pr_usage - ! - ! functions parametrizing the differential equation - ! - function b1(x,y,z) - use psb_base_mod, only : psb_spk_ - real(psb_spk_) :: b1 - real(psb_spk_), intent(in) :: x,y,z - b1=1.e0/sqrt(3.e0) - end function b1 - function b2(x,y,z) - use psb_base_mod, only : psb_spk_ - real(psb_spk_) :: b2 - real(psb_spk_), intent(in) :: x,y,z - b2=1.e0/sqrt(3.e0) - end function b2 - function b3(x,y,z) - use psb_base_mod, only : psb_spk_ - real(psb_spk_) :: b3 - real(psb_spk_), intent(in) :: x,y,z - b3=1.e0/sqrt(3.e0) - end function b3 - function c(x,y,z) - use psb_base_mod, only : psb_spk_ - real(psb_spk_) :: c - real(psb_spk_), intent(in) :: x,y,z - c=0.e0 - end function c - function a1(x,y,z) - use psb_base_mod, only : psb_spk_ - real(psb_spk_) :: a1 - real(psb_spk_), intent(in) :: x,y,z - a1=1.e0/80 - end function a1 - function a2(x,y,z) - use psb_base_mod, only : psb_spk_ - real(psb_spk_) :: a2 - real(psb_spk_), intent(in) :: x,y,z - a2=1.e0/80 - end function a2 - function a3(x,y,z) - use psb_base_mod, only : psb_spk_ - real(psb_spk_) :: a3 - real(psb_spk_), intent(in) :: x,y,z - a3=1.e0/80 - end function a3 - function g(x,y,z) - use psb_base_mod, only : psb_spk_, sone - real(psb_spk_) :: g - real(psb_spk_), intent(in) :: x,y,z - g = szero - if (x == sone) then - g = sone - else if (x == szero) then - g = exp(y**2-z**2) - end if - end function g - end program spde3d diff --git a/test/util/dhb2mm.f90 b/test/util/dhb2mm.f90 index aae01ed0..06deecfa 100644 --- a/test/util/dhb2mm.f90 +++ b/test/util/dhb2mm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/test/util/dmm2hb.f90 b/test/util/dmm2hb.f90 index 2b16f2cf..3483eee1 100644 --- a/test/util/dmm2hb.f90 +++ b/test/util/dmm2hb.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/test/util/zhb2mm.f90 b/test/util/zhb2mm.f90 index bd402eac..fa68771a 100644 --- a/test/util/zhb2mm.f90 +++ b/test/util/zhb2mm.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/test/util/zmm2hb.f90 b/test/util/zmm2hb.f90 index edf06b1c..c3b66fff 100644 --- a/test/util/zmm2hb.f90 +++ b/test/util/zmm2hb.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_blockpart_mod.f90 b/util/psb_blockpart_mod.f90 index 7f6e6674..0dc65f36 100644 --- a/util/psb_blockpart_mod.f90 +++ b/util/psb_blockpart_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_c_hbio_impl.f90 b/util/psb_c_hbio_impl.f90 index 1cd6ad91..c86ca99e 100644 --- a/util/psb_c_hbio_impl.f90 +++ b/util/psb_c_hbio_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_c_mat_dist_impl.f90 b/util/psb_c_mat_dist_impl.f90 index 0d1565b3..7b6bb808 100644 --- a/util/psb_c_mat_dist_impl.f90 +++ b/util/psb_c_mat_dist_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_c_mmio_impl.f90 b/util/psb_c_mmio_impl.f90 index 0856d139..52ed0dbd 100644 --- a/util/psb_c_mmio_impl.f90 +++ b/util/psb_c_mmio_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_d_hbio_impl.f90 b/util/psb_d_hbio_impl.f90 index e5ede7db..7cc53645 100644 --- a/util/psb_d_hbio_impl.f90 +++ b/util/psb_d_hbio_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_d_mat_dist_impl.f90 b/util/psb_d_mat_dist_impl.f90 index 94351b9e..66bf21ef 100644 --- a/util/psb_d_mat_dist_impl.f90 +++ b/util/psb_d_mat_dist_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_d_mmio_impl.f90 b/util/psb_d_mmio_impl.f90 index f791f559..85b2bb47 100644 --- a/util/psb_d_mmio_impl.f90 +++ b/util/psb_d_mmio_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_gps_mod.f90 b/util/psb_gps_mod.f90 index 35afa751..22389ebf 100644 --- a/util/psb_gps_mod.f90 +++ b/util/psb_gps_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ @@ -112,7 +112,6 @@ CONTAINS use psb_base_mod implicit none INTEGER(psb_ipk_) :: NR, IDEGE, IBW2, IPF2, IDPTHE -!!$ INTEGER(psb_ipk_) :: STNODE, RVNODE, RENUM, STNUM, CCSTOR, SBNUM ! COMMON /GRA/ N, IDPTH, IDEG ! IT IS ASSUMED THAT THE GRAPH HAS AT MOST 50 CONNECTED COMPONENTS. ! COMMON /CC/ XCC, SIZEG(50), STPT(50) @@ -487,14 +486,14 @@ CONTAINS ! STPT(I)- INDEX INTO CCSTORE OF 1ST NODE IN ITH CON COMPT ! ISDIR- FLAG WHICH INDICATES WHICH WAY THE LARGEST CONNECTED ! COMPONENT FELL. =+1 IF LOW AND -1 IF HIGH - INTEGER(psb_ipk_) :: LVLS1(N), LVLS2(N), CCSTOR(N),idflt,isdir ! COMMON /GRA/ N, IDPTH, IDEG ! IT IS ASSUMED THAT THE GRAPH HAS AT MOST 50 COMPONENTS AND ! THAT THERE ARE AT MOST 100 LEVELS. ! COMMON /LVLW/ NHIGH(100), NLOW(100), NACUM(100) ! COMMON /CC/ XCC, SIZEG(50), STPT(50) - integer(psb_ipk_) :: SZ, ENDC,i,j,idpth,max1,max2,inode - integer(psb_ipk_) :: lvlnh, it, k, lvlnl + INTEGER(psb_ipk_) :: LVLS1(N), LVLS2(N), CCSTOR(N) + integer(psb_ipk_) :: SZ, ENDC,i,j,max1,max2,inode + integer(psb_ipk_) :: lvlnh, it, k, lvlnl,idflt,isdir ! FOR EACH CONNECTED COMPONENT DO DO 80 I=1,XCC J = STPT(I) diff --git a/util/psb_hbio_mod.f90 b/util/psb_hbio_mod.f90 index ce051ec4..e4a4269b 100644 --- a/util/psb_hbio_mod.f90 +++ b/util/psb_hbio_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_mat_dist_mod.f90 b/util/psb_mat_dist_mod.f90 index efd1f549..378c9d30 100644 --- a/util/psb_mat_dist_mod.f90 +++ b/util/psb_mat_dist_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_metispart_mod.F90 b/util/psb_metispart_mod.F90 index b19ac9bc..a57cfb54 100644 --- a/util/psb_metispart_mod.F90 +++ b/util/psb_metispart_mod.F90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_mmio_mod.f90 b/util/psb_mmio_mod.f90 index 93f84cad..7edf84db 100644 --- a/util/psb_mmio_mod.f90 +++ b/util/psb_mmio_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_s_hbio_impl.f90 b/util/psb_s_hbio_impl.f90 index 715315f0..61432731 100644 --- a/util/psb_s_hbio_impl.f90 +++ b/util/psb_s_hbio_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_s_mat_dist_impl.f90 b/util/psb_s_mat_dist_impl.f90 index 88ce64cb..b19b90fa 100644 --- a/util/psb_s_mat_dist_impl.f90 +++ b/util/psb_s_mat_dist_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_s_mmio_impl.f90 b/util/psb_s_mmio_impl.f90 index caeb8db5..756dc4db 100644 --- a/util/psb_s_mmio_impl.f90 +++ b/util/psb_s_mmio_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_util_mod.f90 b/util/psb_util_mod.f90 index f38ceac6..9fce2fa1 100644 --- a/util/psb_util_mod.f90 +++ b/util/psb_util_mod.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_z_hbio_impl.f90 b/util/psb_z_hbio_impl.f90 index 08252144..5e0a68e4 100644 --- a/util/psb_z_hbio_impl.f90 +++ b/util/psb_z_hbio_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_z_mat_dist_impl.f90 b/util/psb_z_mat_dist_impl.f90 index 685bc99d..8e6e2af4 100644 --- a/util/psb_z_mat_dist_impl.f90 +++ b/util/psb_z_mat_dist_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$ diff --git a/util/psb_z_mmio_impl.f90 b/util/psb_z_mmio_impl.f90 index a7d44ca1..cd8b61b2 100644 --- a/util/psb_z_mmio_impl.f90 +++ b/util/psb_z_mmio_impl.f90 @@ -1,6 +1,6 @@ !!$ !!$ Parallel Sparse BLAS version 3.0 -!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012 !!$ Salvatore Filippone University of Rome Tor Vergata !!$ Alfredo Buttari CNRS-IRIT, Toulouse !!$