From f2741e3f5cca603376d499437af64a2c75586195 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Mon, 23 Apr 2018 12:09:21 +0100 Subject: [PATCH 01/26] Fixed index generation in pargen. --- test/pargen/psb_d_pde2d.f90 | 10 +++++----- test/pargen/psb_d_pde3d.f90 | 14 +++++++------- test/pargen/psb_s_pde2d.f90 | 10 +++++----- test/pargen/psb_s_pde3d.f90 | 14 +++++++------- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/test/pargen/psb_d_pde2d.f90 b/test/pargen/psb_d_pde2d.f90 index a97f2d0a..6dc725f8 100644 --- a/test/pargen/psb_d_pde2d.f90 +++ b/test/pargen/psb_d_pde2d.f90 @@ -401,7 +401,7 @@ contains if (ix == 1) then zt(k) = g(dzero,y)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-2)*idim+iy + call ijk2idx(icol(icoeff),ix-1,iy,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -410,14 +410,14 @@ contains if (iy == 1) then zt(k) = g(x,dzero)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-1)*idim+(iy-1) + call ijk2idx(icol(icoeff),ix,iy-1,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif ! term depending on (x,y) val(icoeff)=(2*done)*(a1(x,y) + a2(x,y))/sqdeltah + c(x,y) - icol(icoeff) = (ix-1)*idim+iy + call ijk2idx(icol(icoeff),ix,iy,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 ! term depending on (x,y+1) @@ -425,7 +425,7 @@ contains if (iy == idim) then zt(k) = g(x,done)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-1)*idim+(iy+1) + call ijk2idx(icol(icoeff),ix,iy+1,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -434,7 +434,7 @@ contains if (ix==idim) then zt(k) = g(done,y)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix)*idim+(iy) + call ijk2idx(icol(icoeff),ix+1,iy,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif diff --git a/test/pargen/psb_d_pde3d.f90 b/test/pargen/psb_d_pde3d.f90 index 8896a95a..4eb18893 100644 --- a/test/pargen/psb_d_pde3d.f90 +++ b/test/pargen/psb_d_pde3d.f90 @@ -421,7 +421,7 @@ contains if (ix == 1) then zt(k) = g(dzero,y,z)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-2)*idim*idim+(iy-1)*idim+(iz) + call ijk2idx(icol(icoeff),ix-1,iy,iz,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -430,7 +430,7 @@ contains if (iy == 1) then zt(k) = g(x,dzero,z)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-1)*idim*idim+(iy-2)*idim+(iz) + call ijk2idx(icol(icoeff),ix,iy-1,iz,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -439,7 +439,7 @@ contains if (iz == 1) then zt(k) = g(x,y,dzero)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-1)*idim*idim+(iy-1)*idim+(iz-1) + call ijk2idx(icol(icoeff),ix,iy,iz-1,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -447,7 +447,7 @@ contains ! term depending on (x,y,z) val(icoeff)=(2*done)*(a1(x,y,z)+a2(x,y,z)+a3(x,y,z))/sqdeltah & & + c(x,y,z) - icol(icoeff) = (ix-1)*idim*idim+(iy-1)*idim+(iz) + call ijk2idx(icol(icoeff),ix,iy,iz,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 ! term depending on (x,y,z+1) @@ -455,7 +455,7 @@ contains if (iz == idim) then zt(k) = g(x,y,done)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-1)*idim*idim+(iy-1)*idim+(iz+1) + call ijk2idx(icol(icoeff),ix,iy,iz+1,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -464,7 +464,7 @@ contains if (iy == idim) then zt(k) = g(x,done,z)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-1)*idim*idim+(iy)*idim+(iz) + call ijk2idx(icol(icoeff),ix,iy+1,iz,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -473,7 +473,7 @@ contains if (ix==idim) then zt(k) = g(done,y,z)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix)*idim*idim+(iy-1)*idim+(iz) + call ijk2idx(icol(icoeff),ix+1,iy,iz,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif diff --git a/test/pargen/psb_s_pde2d.f90 b/test/pargen/psb_s_pde2d.f90 index 940fd42c..58e11402 100644 --- a/test/pargen/psb_s_pde2d.f90 +++ b/test/pargen/psb_s_pde2d.f90 @@ -401,7 +401,7 @@ contains if (ix == 1) then zt(k) = g(szero,y)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-2)*idim+iy + call ijk2idx(icol(icoeff),ix-1,iy,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -410,14 +410,14 @@ contains if (iy == 1) then zt(k) = g(x,szero)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-1)*idim+(iy-1) + call ijk2idx(icol(icoeff),ix,iy-1,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif ! term depending on (x,y) val(icoeff)=(2*sone)*(a1(x,y) + a2(x,y))/sqdeltah + c(x,y) - icol(icoeff) = (ix-1)*idim+iy + call ijk2idx(icol(icoeff),ix,iy,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 ! term depending on (x,y+1) @@ -425,7 +425,7 @@ contains if (iy == idim) then zt(k) = g(x,sone)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-1)*idim+(iy+1) + call ijk2idx(icol(icoeff),ix,iy+1,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -434,7 +434,7 @@ contains if (ix==idim) then zt(k) = g(sone,y)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix)*idim+(iy) + call ijk2idx(icol(icoeff),ix+1,iy,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif diff --git a/test/pargen/psb_s_pde3d.f90 b/test/pargen/psb_s_pde3d.f90 index 23d58e59..3287ef69 100644 --- a/test/pargen/psb_s_pde3d.f90 +++ b/test/pargen/psb_s_pde3d.f90 @@ -421,7 +421,7 @@ contains if (ix == 1) then zt(k) = g(szero,y,z)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-2)*idim*idim+(iy-1)*idim+(iz) + call ijk2idx(icol(icoeff),ix-1,iy,iz,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -430,7 +430,7 @@ contains if (iy == 1) then zt(k) = g(x,szero,z)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-1)*idim*idim+(iy-2)*idim+(iz) + call ijk2idx(icol(icoeff),ix,iy-1,iz,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -439,7 +439,7 @@ contains if (iz == 1) then zt(k) = g(x,y,szero)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-1)*idim*idim+(iy-1)*idim+(iz-1) + call ijk2idx(icol(icoeff),ix,iy,iz-1,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -447,7 +447,7 @@ contains ! term depending on (x,y,z) val(icoeff)=(2*sone)*(a1(x,y,z)+a2(x,y,z)+a3(x,y,z))/sqdeltah & & + c(x,y,z) - icol(icoeff) = (ix-1)*idim*idim+(iy-1)*idim+(iz) + call ijk2idx(icol(icoeff),ix,iy,iz,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 ! term depending on (x,y,z+1) @@ -455,7 +455,7 @@ contains if (iz == idim) then zt(k) = g(x,y,sone)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-1)*idim*idim+(iy-1)*idim+(iz+1) + call ijk2idx(icol(icoeff),ix,iy,iz+1,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -464,7 +464,7 @@ contains if (iy == idim) then zt(k) = g(x,sone,z)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix-1)*idim*idim+(iy)*idim+(iz) + call ijk2idx(icol(icoeff),ix,iy+1,iz,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif @@ -473,7 +473,7 @@ contains if (ix==idim) then zt(k) = g(sone,y,z)*(-val(icoeff)) + zt(k) else - icol(icoeff) = (ix)*idim*idim+(iy-1)*idim+(iz) + call ijk2idx(icol(icoeff),ix+1,iy,iz,idim,idim,idim) irow(icoeff) = glob_row icoeff = icoeff+1 endif From ad1b6e7074541c3e72921cb12bd02598c81bfff3 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Sat, 5 May 2018 08:03:40 +0100 Subject: [PATCH 02/26] Fix copyright string. --- base/modules/psb_const_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/modules/psb_const_mod.F90 b/base/modules/psb_const_mod.F90 index af122563..d6ffe3af 100644 --- a/base/modules/psb_const_mod.F90 +++ b/base/modules/psb_const_mod.F90 @@ -91,7 +91,7 @@ module psb_const_mod ! ! Version ! - character(len=*), parameter :: psb_version_string_ = "3.5.0" + character(len=*), parameter :: psb_version_string_ = "3.5.1" integer(psb_ipk_), parameter :: psb_version_major_ = 3 integer(psb_ipk_), parameter :: psb_version_minor_ = 5 integer(psb_ipk_), parameter :: psb_patchlevel_ = 1 From 64fdf563fcbedbe232528f33a4e1acd421f552dd Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Mon, 14 May 2018 12:10:34 +0100 Subject: [PATCH 03/26] Made test program generate symmetric matrices. --- test/pargen/psb_d_pde2d.f90 | 20 +++++++++++++++----- test/pargen/psb_d_pde3d.f90 | 20 +++++++++++++++----- test/pargen/psb_s_pde2d.f90 | 20 +++++++++++++++----- test/pargen/psb_s_pde3d.f90 | 20 +++++++++++++++----- 4 files changed, 60 insertions(+), 20 deletions(-) diff --git a/test/pargen/psb_d_pde2d.f90 b/test/pargen/psb_d_pde2d.f90 index 6dc725f8..955de6ef 100644 --- a/test/pargen/psb_d_pde2d.f90 +++ b/test/pargen/psb_d_pde2d.f90 @@ -88,20 +88,30 @@ contains ! ! functions parametrizing the differential equation - ! + ! + + ! + ! Note: b1 and b2 are the coefficients of the first + ! derivative of the unknown function. The default + ! we apply here is to have them zero, so that the resulting + ! matrix is symmetric/hermitian and suitable for + ! testing with CG and FCG. + ! When testing methods for non-hermitian matrices you can + ! change the B1/B2 functions to e.g. done/sqrt((2*done)) + ! function b1(x,y) use psb_base_mod, only : psb_dpk_, done, dzero implicit none real(psb_dpk_) :: b1 real(psb_dpk_), intent(in) :: x,y - b1=done/sqrt((2*done)) + b1=dzero end function b1 function b2(x,y) use psb_base_mod, only : psb_dpk_, done, dzero implicit none real(psb_dpk_) :: b2 real(psb_dpk_), intent(in) :: x,y - b2=done/sqrt((2*done)) + b2=dzero end function b2 function c(x,y) use psb_base_mod, only : psb_dpk_, done, dzero @@ -444,7 +454,7 @@ contains if(info /= psb_success_) exit call psb_geins(ib,myidx(ii:ii+ib-1),zt(1:ib),bv,desc_a,info) if(info /= psb_success_) exit - zt(:)=0.d0 + zt(:)=dzero call psb_geins(ib,myidx(ii:ii+ib-1),zt(1:ib),xv,desc_a,info) if(info /= psb_success_) exit end do @@ -624,7 +634,7 @@ program psb_d_pde2d if(iam == psb_root_) write(psb_out_unit,'("Calling iterative method ",a)')kmethd call psb_barrier(ictxt) t1 = psb_wtime() - eps = 1.d-9 + eps = 1.d-6 call psb_krylov(kmethd,a,prec,bv,xxv,eps,desc_a,info,& & itmax=itmax,iter=iter,err=err,itrace=itrace,istop=istopc,irst=irst) diff --git a/test/pargen/psb_d_pde3d.f90 b/test/pargen/psb_d_pde3d.f90 index 4eb18893..f3c165d1 100644 --- a/test/pargen/psb_d_pde3d.f90 +++ b/test/pargen/psb_d_pde3d.f90 @@ -90,26 +90,36 @@ contains ! ! functions parametrizing the differential equation ! + + ! + ! Note: b1, b2 and b3 are the coefficients of the first + ! derivative of the unknown function. The default + ! we apply here is to have them zero, so that the resulting + ! matrix is symmetric/hermitian and suitable for + ! testing with CG and FCG. + ! When testing methods for non-hermitian matrices you can + ! change the B1/B2/B3 functions to e.g. done/sqrt((3*done)) + ! function b1(x,y,z) use psb_base_mod, only : psb_dpk_, done, dzero implicit none real(psb_dpk_) :: b1 real(psb_dpk_), intent(in) :: x,y,z - b1=done/sqrt((3*done)) + b1=dzero end function b1 function b2(x,y,z) use psb_base_mod, only : psb_dpk_, done, dzero implicit none real(psb_dpk_) :: b2 real(psb_dpk_), intent(in) :: x,y,z - b2=done/sqrt((3*done)) + b2=dzero end function b2 function b3(x,y,z) use psb_base_mod, only : psb_dpk_, done, dzero implicit none real(psb_dpk_) :: b3 real(psb_dpk_), intent(in) :: x,y,z - b3=done/sqrt((3*done)) + b3=dzero end function b3 function c(x,y,z) use psb_base_mod, only : psb_dpk_, done, dzero @@ -248,7 +258,7 @@ contains m = idim*idim*idim n = m - nnz = ((n*9)/(np)) + nnz = ((n*7)/(np)) if(iam == psb_root_) write(psb_out_unit,'("Generating Matrix (size=",i0,")...")')n t0 = psb_wtime() select case(partition_) @@ -665,7 +675,7 @@ program psb_d_pde3d if(iam == psb_root_) write(psb_out_unit,'("Calling iterative method ",a)')kmethd call psb_barrier(ictxt) t1 = psb_wtime() - eps = 1.d-9 + eps = 1.d-6 call psb_krylov(kmethd,a,prec,bv,xxv,eps,desc_a,info,& & itmax=itmax,iter=iter,err=err,itrace=itrace,istop=istopc,irst=irst) diff --git a/test/pargen/psb_s_pde2d.f90 b/test/pargen/psb_s_pde2d.f90 index 58e11402..f4a80d0c 100644 --- a/test/pargen/psb_s_pde2d.f90 +++ b/test/pargen/psb_s_pde2d.f90 @@ -88,20 +88,30 @@ contains ! ! functions parametrizing the differential equation - ! + ! + + ! + ! Note: b1 and b2 are the coefficients of the first + ! derivative of the unknown function. The default + ! we apply here is to have them zero, so that the resulting + ! matrix is symmetric/hermitian and suitable for + ! testing with CG and FCG. + ! When testing methods for non-hermitian matrices you can + ! change the B1/B2 functions to e.g. sone/sqrt((2*sone)) + ! function b1(x,y) use psb_base_mod, only : psb_spk_, sone, szero implicit none real(psb_spk_) :: b1 real(psb_spk_), intent(in) :: x,y - b1=sone/sqrt((2*sone)) + b1=szero end function b1 function b2(x,y) use psb_base_mod, only : psb_spk_, sone, szero implicit none real(psb_spk_) :: b2 real(psb_spk_), intent(in) :: x,y - b2=sone/sqrt((2*sone)) + b2=szero end function b2 function c(x,y) use psb_base_mod, only : psb_spk_, sone, szero @@ -444,7 +454,7 @@ contains if(info /= psb_success_) exit call psb_geins(ib,myidx(ii:ii+ib-1),zt(1:ib),bv,desc_a,info) if(info /= psb_success_) exit - zt(:)=0.d0 + zt(:)=szero call psb_geins(ib,myidx(ii:ii+ib-1),zt(1:ib),xv,desc_a,info) if(info /= psb_success_) exit end do @@ -624,7 +634,7 @@ program psb_s_pde2d if(iam == psb_root_) write(psb_out_unit,'("Calling iterative method ",a)')kmethd call psb_barrier(ictxt) t1 = psb_wtime() - eps = 1.d-9 + eps = 1.d-6 call psb_krylov(kmethd,a,prec,bv,xxv,eps,desc_a,info,& & itmax=itmax,iter=iter,err=err,itrace=itrace,istop=istopc,irst=irst) diff --git a/test/pargen/psb_s_pde3d.f90 b/test/pargen/psb_s_pde3d.f90 index 3287ef69..0ca70230 100644 --- a/test/pargen/psb_s_pde3d.f90 +++ b/test/pargen/psb_s_pde3d.f90 @@ -90,26 +90,36 @@ contains ! ! functions parametrizing the differential equation ! + + ! + ! Note: b1, b2 and b3 are the coefficients of the first + ! derivative of the unknown function. The default + ! we apply here is to have them zero, so that the resulting + ! matrix is symmetric/hermitian and suitable for + ! testing with CG and FCG. + ! When testing methods for non-hermitian matrices you can + ! change the B1/B2/B3 functions to e.g. sone/sqrt((3*sone)) + ! function b1(x,y,z) use psb_base_mod, only : psb_spk_, sone, szero implicit none real(psb_spk_) :: b1 real(psb_spk_), intent(in) :: x,y,z - b1=sone/sqrt((3*sone)) + b1=szero end function b1 function b2(x,y,z) use psb_base_mod, only : psb_spk_, sone, szero implicit none real(psb_spk_) :: b2 real(psb_spk_), intent(in) :: x,y,z - b2=sone/sqrt((3*sone)) + b2=szero end function b2 function b3(x,y,z) use psb_base_mod, only : psb_spk_, sone, szero implicit none real(psb_spk_) :: b3 real(psb_spk_), intent(in) :: x,y,z - b3=sone/sqrt((3*sone)) + b3=szero end function b3 function c(x,y,z) use psb_base_mod, only : psb_spk_, sone, szero @@ -248,7 +258,7 @@ contains m = idim*idim*idim n = m - nnz = ((n*9)/(np)) + nnz = ((n*7)/(np)) if(iam == psb_root_) write(psb_out_unit,'("Generating Matrix (size=",i0,")...")')n t0 = psb_wtime() select case(partition_) @@ -665,7 +675,7 @@ program psb_s_pde3d if(iam == psb_root_) write(psb_out_unit,'("Calling iterative method ",a)')kmethd call psb_barrier(ictxt) t1 = psb_wtime() - eps = 1.d-9 + eps = 1.d-6 call psb_krylov(kmethd,a,prec,bv,xxv,eps,desc_a,info,& & itmax=itmax,iter=iter,err=err,itrace=itrace,istop=istopc,irst=irst) From ee6992e938dad66f91b54f29f89dab864263d2db Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Wed, 30 May 2018 14:42:05 +0100 Subject: [PATCH 04/26] Avoid divide by zero for desc printout. --- base/tools/psb_cdprt.f90 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/base/tools/psb_cdprt.f90 b/base/tools/psb_cdprt.f90 index 3a040ad1..8ada03cb 100644 --- a/base/tools/psb_cdprt.f90 +++ b/base/tools/psb_cdprt.f90 @@ -93,7 +93,11 @@ subroutine psb_cdprt(iout,desc_p,glob,short, verbosity) if (me == i) then write(iout,*) me,': Local descriptor data: points:',local_points,& & ' halo:',local_halo - write(iout,*) me,': Volume to surface ratio:',real(local_points,psb_dpk_)/real(local_halo,psb_dpk_) + if (local_halo>0) then + write(iout,*) me,': Volume to surface ratio:',real(local_points,psb_dpk_)/real(local_halo,psb_dpk_) + else + write(iout,*) me,': Volume to surface ratio:',0.0_psb_dpk_ + end if end if call psb_barrier(ictxt) end do From bf71bc6a04dafc30e064c71bf9370eea4a36c3d8 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Wed, 6 Jun 2018 18:44:31 +0100 Subject: [PATCH 05/26] Update configry for XLF. --- configure | 4 ++-- configure.ac | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/configure b/configure index d199bd3d..fb5b5bea 100755 --- a/configure +++ b/configure @@ -6537,8 +6537,8 @@ if test "X$FCOPT" == "X" ; then FCOPT="-g -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 -qlanglvl=extended $FCOPT" - FCFLAGS="-qhalt=e $FCFLAGS" + FCOPT="-O3 -qarch=auto -qlanglvl=extended -qxlf2003=polymorphic:autorealloc $FCOPT" + FCFLAGS="-qhalt=e -qlanglvl=extended -qxlf2003=polymorphic:autorealloc $FCFLAGS" elif test "X$psblas_cv_fc" == X"ifc" ; then # other compilers .. FCOPT="-O3 $FCOPT" diff --git a/configure.ac b/configure.ac index aac56cea..d4b211e2 100755 --- a/configure.ac +++ b/configure.ac @@ -380,8 +380,8 @@ if test "X$FCOPT" == "X" ; then FCOPT="-g -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 -qlanglvl=extended $FCOPT" - FCFLAGS="-qhalt=e $FCFLAGS" + FCOPT="-O3 -qarch=auto -qlanglvl=extended -qxlf2003=polymorphic:autorealloc $FCOPT" + FCFLAGS="-qhalt=e -qlanglvl=extended -qxlf2003=polymorphic:autorealloc $FCFLAGS" elif test "X$psblas_cv_fc" == X"ifc" ; then # other compilers .. FCOPT="-O3 $FCOPT" From eee0efe3b9732503d02aef2ec5269631f01b12c1 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Thu, 14 Jun 2018 21:37:36 +0100 Subject: [PATCH 06/26] New code for FCG method. Header update for GMRES. --- krylov/psb_cfcg.F90 | 151 +++++++++++++++++++++-------------------- krylov/psb_crgmres.f90 | 8 +-- krylov/psb_dfcg.F90 | 151 +++++++++++++++++++++-------------------- krylov/psb_drgmres.f90 | 8 +-- krylov/psb_sfcg.F90 | 151 +++++++++++++++++++++-------------------- krylov/psb_srgmres.f90 | 8 +-- krylov/psb_zfcg.F90 | 151 +++++++++++++++++++++-------------------- krylov/psb_zrgmres.f90 | 8 +-- 8 files changed, 320 insertions(+), 316 deletions(-) diff --git a/krylov/psb_cfcg.F90 b/krylov/psb_cfcg.F90 index 0e4c0271..c042571b 100644 --- a/krylov/psb_cfcg.F90 +++ b/krylov/psb_cfcg.F90 @@ -121,15 +121,15 @@ subroutine psb_cfcg_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter real(psb_spk_), Optional, Intent(out) :: err,cond ! = Local data - type(psb_c_vect_type) :: v, w - type(psb_c_vect_type), dimension(0:1) :: d - complex(psb_spk_) :: alpha, tau, tau1, beta, delta + type(psb_c_vect_type) :: v, w, d , q, r + complex(psb_spk_) :: alpha, beta, delta, gamma, theta real(psb_dpk_) :: derr integer(psb_ipk_) :: i, idx, nc2l, it, itx, istop_, itmax_, itrace_ integer(psb_ipk_) :: n_col, mglob, naux, err_act integer(psb_ipk_) :: debug_level, debug_unit integer(psb_ipk_) :: np, me, ictxt complex(psb_spk_), allocatable, target :: aux(:) + complex(psb_spk_) :: vres(3) character(len=20) :: name type(psb_itconv_type) :: stopdat character(len=*), parameter :: methdname='FCG' @@ -191,112 +191,113 @@ subroutine psb_cfcg_vect(a,prec,b,x,eps,desc_a,info,& end if - !Assemble w, v - - call psb_geasb(w,& - & desc_a,info,& - & scratch=.true.,mold=b%v) - call psb_geasb(v,& - & desc_a,info,& - & scratch=.true.,mold=b%v) - - !Assemble d(0) and d(1) - call psb_geasb(d(0),& - & desc_a,info,& + !Assemble w, v, d, q, r, u + call psb_geasb(w, desc_a,info,& & scratch=.true.,mold=x%v) - call psb_geasb(d(1),& - & desc_a,info,& + call psb_geasb(v, desc_a,info,& + & scratch=.true.,mold=x%v) + call psb_geasb(d, desc_a,info,& + & scratch=.true.,mold=x%v) + call psb_geasb(q, desc_a,info,& + & scratch=.true.,mold=x%v) + call psb_geasb(r, desc_a,info,& & scratch=.true.,mold=x%v) - - call psb_init_conv(methdname,istop_,itrace_,itmax_,a,x,b,eps,desc_a,stopdat,info) - itx=0 + call psb_init_conv(methdname,istop_,itrace_,itmax_,& + & a,x,b,eps,desc_a,stopdat,info) + itx = 0 restart: do if (itx>= itmax_) exit restart - ! w=b - call psb_geaxpby(cone,b,czero,w,& - & desc_a,info) + ! r=b -Ax + call psb_geaxpby(cone,b,czero,r, desc_a,info) + if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info) + if (info /= psb_success_) then + call psb_errpush(psb_err_internal_error_,name,& + & a_err='Error during residue') + goto 9999 + end if + - if (psb_errstatus_fatal()) then - nc2l = desc_a%get_local_cols() - info=psb_err_alloc_request_ - call psb_errpush(info,name,i_err=(/2*nc2l,izero,izero,izero,izero/),& - & a_err='complex(psb_spk_)') - goto 9999 - end if + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit restart - !Compute v = Ax - call psb_spmm(cone,a,x,czero,v,desc_a,info) + ! Apply the preconditioner v=Pr + ! Compute w = Av + call prec%apply(r,v,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(cone,a,v,czero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') + & a_err='Error during residue') goto 9999 end if - !Compute w = -Ax + b - call psb_geaxpby(-cone, v, cone, w, desc_a, info) + vres(1) = psb_gedot(r, v, desc_a, info, global = .false.) + vres(2) = psb_gedot(w, v, desc_a, info, global = .false.) - !Apply the preconditioner - idx=0 + call psb_sum(ictxt, vres(1:2)) - call prec%apply(w,d(idx),desc_a,info,work=aux) + alpha = vres(1) + beta = vres(2) - delta = psb_gedot(d(idx), w, desc_a, info) + ! d = v + call psb_geaxpby(cone, v, czero, d, desc_a, info) + ! q = w + call psb_geaxpby(cone, w, czero, q, desc_a, info) + ! compute delta=beta + ! then + ! x = x + (alpha/delta)*d + ! r = r - (alpha/delta)*q - !Loop + delta = beta + theta = alpha/delta + call psb_geaxpby(theta, d, cone, x, desc_a, info) + call psb_geaxpby(-theta, q, cone, r, desc_a, info) - if (psb_check_conv(methdname,itx ,x,w,desc_a,stopdat,info)) exit restart + iteration: do - if (info /= psb_success_) Then - call psb_errpush(psb_err_from_subroutine_non_,name) - goto 9999 - End If + itx = itx + 1 - iteration: do + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit restart - call psb_spmm(cone,a,d(idx),czero,v,desc_a,info) + ! Apply the preconditioner v = Pr + ! Compute w = Av + call prec%apply(r,v,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(cone,a,v,czero,w,desc_a,info) if (info /= psb_success_) then - call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') - goto 9999 + call psb_errpush(psb_err_internal_error_,name,& + & a_err='Error during residual'); goto 9999 end if - tau = psb_gedot(d(idx), v, desc_a, info) - - alpha = delta/tau - !Update solution x - call psb_geaxpby(alpha, d(idx), cone, x, desc_a, info) - !Update residual w - call psb_geaxpby(-alpha, v, cone, w, desc_a, info) + vres(1) = psb_gedot(r, v, desc_a, info, global = .false.) + vres(2) = psb_gedot(w, v, desc_a, info, global = .false.) + vres(3) = psb_gedot(q, v, desc_a, info, global = .false.) - itx = itx + 1 - idx=mod(itx ,2) + call psb_sum(ictxt, vres(1:3)) - call d(idx)%set(czero) - call prec%apply(w,d(idx),desc_a,info,work=aux) + alpha = vres(1) + beta = vres(2) + gamma = vres(3) - tau1= psb_gedot(d(idx), v, desc_a, info) - beta=tau1/tau + ! Compute d = v-(gamma/delta)*d + ! q = w-(gamma/delta)*q + theta= gamma/delta + call psb_geaxpby(cone, v, -theta, d, desc_a, info) + call psb_geaxpby(cone, w, -theta, q , desc_a, info) - if (idx == 1) then - call psb_geaxpby(-beta, d(idx - 1), cone, d(idx), desc_a, info) - else - call psb_geaxpby(-beta, d(idx + 1), cone, d(idx), desc_a, info) - endif - - delta = psb_gedot(w, d(idx), desc_a, info) + ! update delta + delta = beta - (gamma*gamma)/delta - if (psb_check_conv(methdname,itx ,x,w,desc_a,stopdat,info)) exit restart - if (info /= psb_success_) Then - call psb_errpush(psb_err_from_subroutine_non_,name) - goto 9999 - End If + ! update u and r + ! u = u + (alpha/delta)*d + ! r = r - (alpha/delta)*q + theta= alpha/delta + call psb_geaxpby(theta, d, cone, x, desc_a, info) + call psb_geaxpby(-theta, q, cone, r, desc_a, info) end do iteration end do restart diff --git a/krylov/psb_crgmres.f90 b/krylov/psb_crgmres.f90 index d7e75251..f68dc74b 100644 --- a/krylov/psb_crgmres.f90 +++ b/krylov/psb_crgmres.f90 @@ -29,10 +29,10 @@ ! 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. -!!$ -!!$ +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! ! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC ! C C ! C References: C diff --git a/krylov/psb_dfcg.F90 b/krylov/psb_dfcg.F90 index 2821829a..90e5b116 100644 --- a/krylov/psb_dfcg.F90 +++ b/krylov/psb_dfcg.F90 @@ -121,15 +121,15 @@ subroutine psb_dfcg_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter real(psb_dpk_), Optional, Intent(out) :: err,cond ! = Local data - type(psb_d_vect_type) :: v, w - type(psb_d_vect_type), dimension(0:1) :: d - real(psb_dpk_) :: alpha, tau, tau1, beta, delta + type(psb_d_vect_type) :: v, w, d , q, r + real(psb_dpk_) :: alpha, beta, delta, gamma, theta real(psb_dpk_) :: derr integer(psb_ipk_) :: i, idx, nc2l, it, itx, istop_, itmax_, itrace_ integer(psb_ipk_) :: n_col, mglob, naux, err_act integer(psb_ipk_) :: debug_level, debug_unit integer(psb_ipk_) :: np, me, ictxt real(psb_dpk_), allocatable, target :: aux(:) + real(psb_dpk_) :: vres(3) character(len=20) :: name type(psb_itconv_type) :: stopdat character(len=*), parameter :: methdname='FCG' @@ -191,112 +191,113 @@ subroutine psb_dfcg_vect(a,prec,b,x,eps,desc_a,info,& end if - !Assemble w, v - - call psb_geasb(w,& - & desc_a,info,& - & scratch=.true.,mold=b%v) - call psb_geasb(v,& - & desc_a,info,& - & scratch=.true.,mold=b%v) - - !Assemble d(0) and d(1) - call psb_geasb(d(0),& - & desc_a,info,& + !Assemble w, v, d, q, r, u + call psb_geasb(w, desc_a,info,& & scratch=.true.,mold=x%v) - call psb_geasb(d(1),& - & desc_a,info,& + call psb_geasb(v, desc_a,info,& + & scratch=.true.,mold=x%v) + call psb_geasb(d, desc_a,info,& + & scratch=.true.,mold=x%v) + call psb_geasb(q, desc_a,info,& + & scratch=.true.,mold=x%v) + call psb_geasb(r, desc_a,info,& & scratch=.true.,mold=x%v) - - call psb_init_conv(methdname,istop_,itrace_,itmax_,a,x,b,eps,desc_a,stopdat,info) - itx=0 + call psb_init_conv(methdname,istop_,itrace_,itmax_,& + & a,x,b,eps,desc_a,stopdat,info) + itx = 0 restart: do if (itx>= itmax_) exit restart - ! w=b - call psb_geaxpby(done,b,dzero,w,& - & desc_a,info) + ! r=b -Ax + call psb_geaxpby(done,b,dzero,r, desc_a,info) + if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info) + if (info /= psb_success_) then + call psb_errpush(psb_err_internal_error_,name,& + & a_err='Error during residue') + goto 9999 + end if + - if (psb_errstatus_fatal()) then - nc2l = desc_a%get_local_cols() - info=psb_err_alloc_request_ - call psb_errpush(info,name,i_err=(/2*nc2l,izero,izero,izero,izero/),& - & a_err='real(psb_dpk_)') - goto 9999 - end if + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit restart - !Compute v = Ax - call psb_spmm(done,a,x,dzero,v,desc_a,info) + ! Apply the preconditioner v=Pr + ! Compute w = Av + call prec%apply(r,v,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(done,a,v,dzero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') + & a_err='Error during residue') goto 9999 end if - !Compute w = -Ax + b - call psb_geaxpby(-done, v, done, w, desc_a, info) + vres(1) = psb_gedot(r, v, desc_a, info, global = .false.) + vres(2) = psb_gedot(w, v, desc_a, info, global = .false.) - !Apply the preconditioner - idx=0 + call psb_sum(ictxt, vres(1:2)) - call prec%apply(w,d(idx),desc_a,info,work=aux) + alpha = vres(1) + beta = vres(2) - delta = psb_gedot(d(idx), w, desc_a, info) + ! d = v + call psb_geaxpby(done, v, dzero, d, desc_a, info) + ! q = w + call psb_geaxpby(done, w, dzero, q, desc_a, info) + ! compute delta=beta + ! then + ! x = x + (alpha/delta)*d + ! r = r - (alpha/delta)*q - !Loop + delta = beta + theta = alpha/delta + call psb_geaxpby(theta, d, done, x, desc_a, info) + call psb_geaxpby(-theta, q, done, r, desc_a, info) - if (psb_check_conv(methdname,itx ,x,w,desc_a,stopdat,info)) exit restart + iteration: do - if (info /= psb_success_) Then - call psb_errpush(psb_err_from_subroutine_non_,name) - goto 9999 - End If + itx = itx + 1 - iteration: do + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit restart - call psb_spmm(done,a,d(idx),dzero,v,desc_a,info) + ! Apply the preconditioner v = Pr + ! Compute w = Av + call prec%apply(r,v,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(done,a,v,dzero,w,desc_a,info) if (info /= psb_success_) then - call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') - goto 9999 + call psb_errpush(psb_err_internal_error_,name,& + & a_err='Error during residual'); goto 9999 end if - tau = psb_gedot(d(idx), v, desc_a, info) - - alpha = delta/tau - !Update solution x - call psb_geaxpby(alpha, d(idx), done, x, desc_a, info) - !Update residual w - call psb_geaxpby(-alpha, v, done, w, desc_a, info) + vres(1) = psb_gedot(r, v, desc_a, info, global = .false.) + vres(2) = psb_gedot(w, v, desc_a, info, global = .false.) + vres(3) = psb_gedot(q, v, desc_a, info, global = .false.) - itx = itx + 1 - idx=mod(itx ,2) + call psb_sum(ictxt, vres(1:3)) - call d(idx)%set(dzero) - call prec%apply(w,d(idx),desc_a,info,work=aux) + alpha = vres(1) + beta = vres(2) + gamma = vres(3) - tau1= psb_gedot(d(idx), v, desc_a, info) - beta=tau1/tau + ! Compute d = v-(gamma/delta)*d + ! q = w-(gamma/delta)*q + theta= gamma/delta + call psb_geaxpby(done, v, -theta, d, desc_a, info) + call psb_geaxpby(done, w, -theta, q , desc_a, info) - if (idx == 1) then - call psb_geaxpby(-beta, d(idx - 1), done, d(idx), desc_a, info) - else - call psb_geaxpby(-beta, d(idx + 1), done, d(idx), desc_a, info) - endif - - delta = psb_gedot(w, d(idx), desc_a, info) + ! update delta + delta = beta - (gamma*gamma)/delta - if (psb_check_conv(methdname,itx ,x,w,desc_a,stopdat,info)) exit restart - if (info /= psb_success_) Then - call psb_errpush(psb_err_from_subroutine_non_,name) - goto 9999 - End If + ! update u and r + ! u = u + (alpha/delta)*d + ! r = r - (alpha/delta)*q + theta= alpha/delta + call psb_geaxpby(theta, d, done, x, desc_a, info) + call psb_geaxpby(-theta, q, done, r, desc_a, info) end do iteration end do restart diff --git a/krylov/psb_drgmres.f90 b/krylov/psb_drgmres.f90 index 368a6482..9b577903 100644 --- a/krylov/psb_drgmres.f90 +++ b/krylov/psb_drgmres.f90 @@ -29,10 +29,10 @@ ! 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. -!!$ -!!$ +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! ! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC ! C C ! C References: C diff --git a/krylov/psb_sfcg.F90 b/krylov/psb_sfcg.F90 index 2fae24b4..1f074371 100644 --- a/krylov/psb_sfcg.F90 +++ b/krylov/psb_sfcg.F90 @@ -121,15 +121,15 @@ subroutine psb_sfcg_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter real(psb_spk_), Optional, Intent(out) :: err,cond ! = Local data - type(psb_s_vect_type) :: v, w - type(psb_s_vect_type), dimension(0:1) :: d - real(psb_spk_) :: alpha, tau, tau1, beta, delta + type(psb_s_vect_type) :: v, w, d , q, r + real(psb_spk_) :: alpha, beta, delta, gamma, theta real(psb_dpk_) :: derr integer(psb_ipk_) :: i, idx, nc2l, it, itx, istop_, itmax_, itrace_ integer(psb_ipk_) :: n_col, mglob, naux, err_act integer(psb_ipk_) :: debug_level, debug_unit integer(psb_ipk_) :: np, me, ictxt real(psb_spk_), allocatable, target :: aux(:) + real(psb_spk_) :: vres(3) character(len=20) :: name type(psb_itconv_type) :: stopdat character(len=*), parameter :: methdname='FCG' @@ -191,112 +191,113 @@ subroutine psb_sfcg_vect(a,prec,b,x,eps,desc_a,info,& end if - !Assemble w, v - - call psb_geasb(w,& - & desc_a,info,& - & scratch=.true.,mold=b%v) - call psb_geasb(v,& - & desc_a,info,& - & scratch=.true.,mold=b%v) - - !Assemble d(0) and d(1) - call psb_geasb(d(0),& - & desc_a,info,& + !Assemble w, v, d, q, r, u + call psb_geasb(w, desc_a,info,& & scratch=.true.,mold=x%v) - call psb_geasb(d(1),& - & desc_a,info,& + call psb_geasb(v, desc_a,info,& + & scratch=.true.,mold=x%v) + call psb_geasb(d, desc_a,info,& + & scratch=.true.,mold=x%v) + call psb_geasb(q, desc_a,info,& + & scratch=.true.,mold=x%v) + call psb_geasb(r, desc_a,info,& & scratch=.true.,mold=x%v) - - call psb_init_conv(methdname,istop_,itrace_,itmax_,a,x,b,eps,desc_a,stopdat,info) - itx=0 + call psb_init_conv(methdname,istop_,itrace_,itmax_,& + & a,x,b,eps,desc_a,stopdat,info) + itx = 0 restart: do if (itx>= itmax_) exit restart - ! w=b - call psb_geaxpby(sone,b,szero,w,& - & desc_a,info) + ! r=b -Ax + call psb_geaxpby(sone,b,szero,r, desc_a,info) + if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info) + if (info /= psb_success_) then + call psb_errpush(psb_err_internal_error_,name,& + & a_err='Error during residue') + goto 9999 + end if + - if (psb_errstatus_fatal()) then - nc2l = desc_a%get_local_cols() - info=psb_err_alloc_request_ - call psb_errpush(info,name,i_err=(/2*nc2l,izero,izero,izero,izero/),& - & a_err='real(psb_spk_)') - goto 9999 - end if + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit restart - !Compute v = Ax - call psb_spmm(sone,a,x,szero,v,desc_a,info) + ! Apply the preconditioner v=Pr + ! Compute w = Av + call prec%apply(r,v,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(sone,a,v,szero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') + & a_err='Error during residue') goto 9999 end if - !Compute w = -Ax + b - call psb_geaxpby(-sone, v, sone, w, desc_a, info) + vres(1) = psb_gedot(r, v, desc_a, info, global = .false.) + vres(2) = psb_gedot(w, v, desc_a, info, global = .false.) - !Apply the preconditioner - idx=0 + call psb_sum(ictxt, vres(1:2)) - call prec%apply(w,d(idx),desc_a,info,work=aux) + alpha = vres(1) + beta = vres(2) - delta = psb_gedot(d(idx), w, desc_a, info) + ! d = v + call psb_geaxpby(sone, v, szero, d, desc_a, info) + ! q = w + call psb_geaxpby(sone, w, szero, q, desc_a, info) + ! compute delta=beta + ! then + ! x = x + (alpha/delta)*d + ! r = r - (alpha/delta)*q - !Loop + delta = beta + theta = alpha/delta + call psb_geaxpby(theta, d, sone, x, desc_a, info) + call psb_geaxpby(-theta, q, sone, r, desc_a, info) - if (psb_check_conv(methdname,itx ,x,w,desc_a,stopdat,info)) exit restart + iteration: do - if (info /= psb_success_) Then - call psb_errpush(psb_err_from_subroutine_non_,name) - goto 9999 - End If + itx = itx + 1 - iteration: do + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit restart - call psb_spmm(sone,a,d(idx),szero,v,desc_a,info) + ! Apply the preconditioner v = Pr + ! Compute w = Av + call prec%apply(r,v,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(sone,a,v,szero,w,desc_a,info) if (info /= psb_success_) then - call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') - goto 9999 + call psb_errpush(psb_err_internal_error_,name,& + & a_err='Error during residual'); goto 9999 end if - tau = psb_gedot(d(idx), v, desc_a, info) - - alpha = delta/tau - !Update solution x - call psb_geaxpby(alpha, d(idx), sone, x, desc_a, info) - !Update residual w - call psb_geaxpby(-alpha, v, sone, w, desc_a, info) + vres(1) = psb_gedot(r, v, desc_a, info, global = .false.) + vres(2) = psb_gedot(w, v, desc_a, info, global = .false.) + vres(3) = psb_gedot(q, v, desc_a, info, global = .false.) - itx = itx + 1 - idx=mod(itx ,2) + call psb_sum(ictxt, vres(1:3)) - call d(idx)%set(szero) - call prec%apply(w,d(idx),desc_a,info,work=aux) + alpha = vres(1) + beta = vres(2) + gamma = vres(3) - tau1= psb_gedot(d(idx), v, desc_a, info) - beta=tau1/tau + ! Compute d = v-(gamma/delta)*d + ! q = w-(gamma/delta)*q + theta= gamma/delta + call psb_geaxpby(sone, v, -theta, d, desc_a, info) + call psb_geaxpby(sone, w, -theta, q , desc_a, info) - if (idx == 1) then - call psb_geaxpby(-beta, d(idx - 1), sone, d(idx), desc_a, info) - else - call psb_geaxpby(-beta, d(idx + 1), sone, d(idx), desc_a, info) - endif - - delta = psb_gedot(w, d(idx), desc_a, info) + ! update delta + delta = beta - (gamma*gamma)/delta - if (psb_check_conv(methdname,itx ,x,w,desc_a,stopdat,info)) exit restart - if (info /= psb_success_) Then - call psb_errpush(psb_err_from_subroutine_non_,name) - goto 9999 - End If + ! update u and r + ! u = u + (alpha/delta)*d + ! r = r - (alpha/delta)*q + theta= alpha/delta + call psb_geaxpby(theta, d, sone, x, desc_a, info) + call psb_geaxpby(-theta, q, sone, r, desc_a, info) end do iteration end do restart diff --git a/krylov/psb_srgmres.f90 b/krylov/psb_srgmres.f90 index 311bc0fb..2e458d82 100644 --- a/krylov/psb_srgmres.f90 +++ b/krylov/psb_srgmres.f90 @@ -29,10 +29,10 @@ ! 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. -!!$ -!!$ +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! ! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC ! C C ! C References: C diff --git a/krylov/psb_zfcg.F90 b/krylov/psb_zfcg.F90 index 0e2ad2da..1e180685 100644 --- a/krylov/psb_zfcg.F90 +++ b/krylov/psb_zfcg.F90 @@ -121,15 +121,15 @@ subroutine psb_zfcg_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter real(psb_dpk_), Optional, Intent(out) :: err,cond ! = Local data - type(psb_z_vect_type) :: v, w - type(psb_z_vect_type), dimension(0:1) :: d - complex(psb_dpk_) :: alpha, tau, tau1, beta, delta + type(psb_z_vect_type) :: v, w, d , q, r + complex(psb_dpk_) :: alpha, beta, delta, gamma, theta real(psb_dpk_) :: derr integer(psb_ipk_) :: i, idx, nc2l, it, itx, istop_, itmax_, itrace_ integer(psb_ipk_) :: n_col, mglob, naux, err_act integer(psb_ipk_) :: debug_level, debug_unit integer(psb_ipk_) :: np, me, ictxt complex(psb_dpk_), allocatable, target :: aux(:) + complex(psb_dpk_) :: vres(3) character(len=20) :: name type(psb_itconv_type) :: stopdat character(len=*), parameter :: methdname='FCG' @@ -191,112 +191,113 @@ subroutine psb_zfcg_vect(a,prec,b,x,eps,desc_a,info,& end if - !Assemble w, v - - call psb_geasb(w,& - & desc_a,info,& - & scratch=.true.,mold=b%v) - call psb_geasb(v,& - & desc_a,info,& - & scratch=.true.,mold=b%v) - - !Assemble d(0) and d(1) - call psb_geasb(d(0),& - & desc_a,info,& + !Assemble w, v, d, q, r, u + call psb_geasb(w, desc_a,info,& & scratch=.true.,mold=x%v) - call psb_geasb(d(1),& - & desc_a,info,& + call psb_geasb(v, desc_a,info,& + & scratch=.true.,mold=x%v) + call psb_geasb(d, desc_a,info,& + & scratch=.true.,mold=x%v) + call psb_geasb(q, desc_a,info,& + & scratch=.true.,mold=x%v) + call psb_geasb(r, desc_a,info,& & scratch=.true.,mold=x%v) - - call psb_init_conv(methdname,istop_,itrace_,itmax_,a,x,b,eps,desc_a,stopdat,info) - itx=0 + call psb_init_conv(methdname,istop_,itrace_,itmax_,& + & a,x,b,eps,desc_a,stopdat,info) + itx = 0 restart: do if (itx>= itmax_) exit restart - ! w=b - call psb_geaxpby(zone,b,zzero,w,& - & desc_a,info) + ! r=b -Ax + call psb_geaxpby(zone,b,zzero,r, desc_a,info) + if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info) + if (info /= psb_success_) then + call psb_errpush(psb_err_internal_error_,name,& + & a_err='Error during residue') + goto 9999 + end if + - if (psb_errstatus_fatal()) then - nc2l = desc_a%get_local_cols() - info=psb_err_alloc_request_ - call psb_errpush(info,name,i_err=(/2*nc2l,izero,izero,izero,izero/),& - & a_err='complex(psb_dpk_)') - goto 9999 - end if + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit restart - !Compute v = Ax - call psb_spmm(zone,a,x,zzero,v,desc_a,info) + ! Apply the preconditioner v=Pr + ! Compute w = Av + call prec%apply(r,v,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(zone,a,v,zzero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') + & a_err='Error during residue') goto 9999 end if - !Compute w = -Ax + b - call psb_geaxpby(-zone, v, zone, w, desc_a, info) + vres(1) = psb_gedot(r, v, desc_a, info, global = .false.) + vres(2) = psb_gedot(w, v, desc_a, info, global = .false.) - !Apply the preconditioner - idx=0 + call psb_sum(ictxt, vres(1:2)) - call prec%apply(w,d(idx),desc_a,info,work=aux) + alpha = vres(1) + beta = vres(2) - delta = psb_gedot(d(idx), w, desc_a, info) + ! d = v + call psb_geaxpby(zone, v, zzero, d, desc_a, info) + ! q = w + call psb_geaxpby(zone, w, zzero, q, desc_a, info) + ! compute delta=beta + ! then + ! x = x + (alpha/delta)*d + ! r = r - (alpha/delta)*q - !Loop + delta = beta + theta = alpha/delta + call psb_geaxpby(theta, d, zone, x, desc_a, info) + call psb_geaxpby(-theta, q, zone, r, desc_a, info) - if (psb_check_conv(methdname,itx ,x,w,desc_a,stopdat,info)) exit restart + iteration: do - if (info /= psb_success_) Then - call psb_errpush(psb_err_from_subroutine_non_,name) - goto 9999 - End If + itx = itx + 1 - iteration: do + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit restart - call psb_spmm(zone,a,d(idx),zzero,v,desc_a,info) + ! Apply the preconditioner v = Pr + ! Compute w = Av + call prec%apply(r,v,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(zone,a,v,zzero,w,desc_a,info) if (info /= psb_success_) then - call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') - goto 9999 + call psb_errpush(psb_err_internal_error_,name,& + & a_err='Error during residual'); goto 9999 end if - tau = psb_gedot(d(idx), v, desc_a, info) - - alpha = delta/tau - !Update solution x - call psb_geaxpby(alpha, d(idx), zone, x, desc_a, info) - !Update residual w - call psb_geaxpby(-alpha, v, zone, w, desc_a, info) + vres(1) = psb_gedot(r, v, desc_a, info, global = .false.) + vres(2) = psb_gedot(w, v, desc_a, info, global = .false.) + vres(3) = psb_gedot(q, v, desc_a, info, global = .false.) - itx = itx + 1 - idx=mod(itx ,2) + call psb_sum(ictxt, vres(1:3)) - call d(idx)%set(zzero) - call prec%apply(w,d(idx),desc_a,info,work=aux) + alpha = vres(1) + beta = vres(2) + gamma = vres(3) - tau1= psb_gedot(d(idx), v, desc_a, info) - beta=tau1/tau + ! Compute d = v-(gamma/delta)*d + ! q = w-(gamma/delta)*q + theta= gamma/delta + call psb_geaxpby(zone, v, -theta, d, desc_a, info) + call psb_geaxpby(zone, w, -theta, q , desc_a, info) - if (idx == 1) then - call psb_geaxpby(-beta, d(idx - 1), zone, d(idx), desc_a, info) - else - call psb_geaxpby(-beta, d(idx + 1), zone, d(idx), desc_a, info) - endif - - delta = psb_gedot(w, d(idx), desc_a, info) + ! update delta + delta = beta - (gamma*gamma)/delta - if (psb_check_conv(methdname,itx ,x,w,desc_a,stopdat,info)) exit restart - if (info /= psb_success_) Then - call psb_errpush(psb_err_from_subroutine_non_,name) - goto 9999 - End If + ! update u and r + ! u = u + (alpha/delta)*d + ! r = r - (alpha/delta)*q + theta= alpha/delta + call psb_geaxpby(theta, d, zone, x, desc_a, info) + call psb_geaxpby(-theta, q, zone, r, desc_a, info) end do iteration end do restart diff --git a/krylov/psb_zrgmres.f90 b/krylov/psb_zrgmres.f90 index deb4111f..10738699 100644 --- a/krylov/psb_zrgmres.f90 +++ b/krylov/psb_zrgmres.f90 @@ -29,10 +29,10 @@ ! 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. -!!$ -!!$ +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! ! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC ! C C ! C References: C From 5060bfe4b576b361a9650d34ae28475899a4319a Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Mon, 2 Jul 2018 16:41:45 +0100 Subject: [PATCH 07/26] Modified name of test program in docs. --- docs/html/footnode.html | 4 +- docs/html/img139.png | Bin 0 -> 776 bytes docs/html/index.html | 8 +- docs/html/node1.html | 8 +- docs/html/node10.html | 7 +- docs/html/node100.html | 4 +- docs/html/node101.html | 4 +- docs/html/node102.html | 4 +- docs/html/node103.html | 4 +- docs/html/node104.html | 4 +- docs/html/node105.html | 4 +- docs/html/node106.html | 4 +- docs/html/node107.html | 4 +- docs/html/node108.html | 4 +- docs/html/node109.html | 4 +- docs/html/node11.html | 4 +- docs/html/node110.html | 4 +- docs/html/node111.html | 4 +- docs/html/node112.html | 4 +- docs/html/node113.html | 4 +- docs/html/node114.html | 14 ++- docs/html/node115.html | 4 +- docs/html/node116.html | 4 +- docs/html/node117.html | 4 +- docs/html/node118.html | 4 +- docs/html/node119.html | 4 +- docs/html/node12.html | 4 +- docs/html/node120.html | 4 +- docs/html/node121.html | 4 +- docs/html/node122.html | 4 +- docs/html/node123.html | 4 +- docs/html/node124.html | 4 +- docs/html/node125.html | 4 +- docs/html/node126.html | 4 +- docs/html/node127.html | 4 +- docs/html/node128.html | 4 +- docs/html/node129.html | 4 +- docs/html/node13.html | 4 +- docs/html/node130.html | 4 +- docs/html/node131.html | 4 +- docs/html/node132.html | 4 +- docs/html/node133.html | 4 +- docs/html/node14.html | 4 +- docs/html/node15.html | 4 +- docs/html/node16.html | 4 +- docs/html/node17.html | 4 +- docs/html/node18.html | 4 +- docs/html/node19.html | 4 +- docs/html/node2.html | 4 +- docs/html/node20.html | 4 +- docs/html/node21.html | 4 +- docs/html/node22.html | 4 +- docs/html/node23.html | 7 +- docs/html/node24.html | 4 +- docs/html/node25.html | 4 +- docs/html/node26.html | 4 +- docs/html/node27.html | 4 +- docs/html/node28.html | 4 +- docs/html/node29.html | 4 +- docs/html/node3.html | 4 +- docs/html/node30.html | 4 +- docs/html/node31.html | 6 +- docs/html/node32.html | 6 +- docs/html/node33.html | 4 +- docs/html/node34.html | 4 +- docs/html/node35.html | 4 +- docs/html/node36.html | 4 +- docs/html/node37.html | 4 +- docs/html/node38.html | 4 +- docs/html/node39.html | 4 +- docs/html/node4.html | 4 +- docs/html/node40.html | 4 +- docs/html/node41.html | 4 +- docs/html/node42.html | 4 +- docs/html/node43.html | 7 +- docs/html/node44.html | 4 +- docs/html/node45.html | 4 +- docs/html/node46.html | 4 +- docs/html/node47.html | 4 +- docs/html/node48.html | 4 +- docs/html/node49.html | 4 +- docs/html/node5.html | 4 +- docs/html/node50.html | 10 +- docs/html/node51.html | 4 +- docs/html/node52.html | 4 +- docs/html/node53.html | 4 +- docs/html/node54.html | 4 +- docs/html/node55.html | 4 +- docs/html/node56.html | 4 +- docs/html/node57.html | 4 +- docs/html/node58.html | 4 +- docs/html/node59.html | 4 +- docs/html/node6.html | 6 +- docs/html/node60.html | 5 +- docs/html/node61.html | 4 +- docs/html/node62.html | 4 +- docs/html/node63.html | 4 +- docs/html/node64.html | 4 +- docs/html/node65.html | 4 +- docs/html/node66.html | 4 +- docs/html/node67.html | 4 +- docs/html/node68.html | 4 +- docs/html/node69.html | 4 +- docs/html/node7.html | 4 +- docs/html/node70.html | 4 +- docs/html/node71.html | 4 +- docs/html/node72.html | 4 +- docs/html/node73.html | 4 +- docs/html/node74.html | 4 +- docs/html/node75.html | 4 +- docs/html/node76.html | 4 +- docs/html/node77.html | 4 +- docs/html/node78.html | 4 +- docs/html/node79.html | 4 +- docs/html/node8.html | 4 +- docs/html/node80.html | 4 +- docs/html/node81.html | 4 +- docs/html/node82.html | 4 +- docs/html/node83.html | 4 +- docs/html/node84.html | 4 +- docs/html/node85.html | 4 +- docs/html/node86.html | 4 +- docs/html/node87.html | 4 +- docs/html/node88.html | 4 +- docs/html/node89.html | 4 +- docs/html/node9.html | 5 +- docs/html/node90.html | 4 +- docs/html/node91.html | 4 +- docs/html/node92.html | 4 +- docs/html/node93.html | 4 +- docs/html/node94.html | 4 +- docs/html/node95.html | 4 +- docs/html/node96.html | 4 +- docs/html/node97.html | 4 +- docs/html/node98.html | 4 +- docs/html/node99.html | 4 +- docs/html/userhtml.html | 8 +- docs/psblas-3.5.pdf | 223 ++++++++++++++++++++-------------------- docs/src/intro.tex | 2 +- 139 files changed, 403 insertions(+), 411 deletions(-) diff --git a/docs/html/footnode.html b/docs/html/footnode.html index 37fb0814..fda291c2 100644 --- a/docs/html/footnode.html +++ b/docs/html/footnode.html @@ -1,6 +1,6 @@ - + Footnotes @@ -9,7 +9,7 @@ - + diff --git a/docs/html/img139.png b/docs/html/img139.png index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..dc9b21fc1be204aba7255c2ba2ede852937c94d6 100644 GIT binary patch literal 776 zcmV+j1NZ!iP)F5d1dM`s03pp>l-SHciDqs}G<#5@xs(#kO_XTf zFi@JA8yMx!fWSdP!30t@vnFr|27p;=3lE^kFjX25(#+w&aPSj^$#NM*Mw96(ArzFt8-BgBYAkr*B~JsB~azn}(qotgTQS&i5$$48#jE zUN_kbN`eHEdpHjOJ_*#uH zYzC)JriT}xT)qO%1t83N0j}aR1A}8|00Y}ajPPRt+sxnylWcz`k%FmGW37GOkh;?m0y2y|>3h*7Hm5nw}+ z=1ON^FvY34rh$Q>g#jr8M4)O;!>JP(0#*kgX++NfBA_9RM>RU&cmPh?OgBQop!?$i z5;U_4FfcU$0~}r_77)~e08F9`tiUpaH53LENYKpioq;oeuqqtj1SOSo4?;5&$xfJ$ zsGM0z)*PrnLFKF%0I!^95Ug6z0sjP8<;U^4s$K?;18~jDNJ(8_!2Y=b zt~r5J&8(6nYe51s4isp9NP%94Gn8m1SbO6GnUrXzH2?sUh=oeiQ=L!%0000 - + userhtml @@ -9,7 +9,7 @@ - + @@ -56,9 +56,7 @@ Software version: 3.5.0
Sep 1st, 2017 - - -

+

diff --git a/docs/html/node1.html b/docs/html/node1.html index 4a63189f..5acc7f7d 100644 --- a/docs/html/node1.html +++ b/docs/html/node1.html @@ -1,6 +1,6 @@ - + Contents @@ -9,7 +9,7 @@ - + @@ -103,9 +103,7 @@ Contents

- - - +



diff --git a/docs/html/node10.html b/docs/html/node10.html index e5c435bc..f34e4393 100644 --- a/docs/html/node10.html +++ b/docs/html/node10.html @@ -1,6 +1,6 @@ - + Descriptor data structure @@ -9,7 +9,7 @@ - + @@ -200,8 +200,7 @@ as follows: Figure 3: The PSBLAS defined data type that contains the communication descriptor. - -
+
-
 
diff --git a/docs/html/node100.html b/docs/html/node100.html
index f68547a4..0683e8bf 100644
--- a/docs/html/node100.html
+++ b/docs/html/node100.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_init -- Initializes PSBLAS parallel environment
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node101.html b/docs/html/node101.html
index 5b1d6453..5f3bcf8b 100644
--- a/docs/html/node101.html
+++ b/docs/html/node101.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_info -- Return information about PSBLAS parallel environment
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node102.html b/docs/html/node102.html
index a47b5306..7b43e508 100644
--- a/docs/html/node102.html
+++ b/docs/html/node102.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_exit -- Exit from PSBLAS parallel environment
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node103.html b/docs/html/node103.html
index cfea712f..86979e32 100644
--- a/docs/html/node103.html
+++ b/docs/html/node103.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_get_mpicomm -- Get the MPI communicator
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node104.html b/docs/html/node104.html
index 0598f739..855fbf3d 100644
--- a/docs/html/node104.html
+++ b/docs/html/node104.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_get_rank -- Get the MPI rank
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node105.html b/docs/html/node105.html
index 8c2f6991..a93ed542 100644
--- a/docs/html/node105.html
+++ b/docs/html/node105.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_wtime -- Wall clock timing
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node106.html b/docs/html/node106.html
index b3fa7726..74bd3f51 100644
--- a/docs/html/node106.html
+++ b/docs/html/node106.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_barrier -- Sinchronization point parallel environment
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node107.html b/docs/html/node107.html
index 38a9b41c..0f37acf3 100644
--- a/docs/html/node107.html
+++ b/docs/html/node107.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_abort -- Abort a computation
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node108.html b/docs/html/node108.html
index 08c7ae18..113fa271 100644
--- a/docs/html/node108.html
+++ b/docs/html/node108.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_bcast -- Broadcast data
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node109.html b/docs/html/node109.html
index 4db84594..41185eb8 100644
--- a/docs/html/node109.html
+++ b/docs/html/node109.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_sum -- Global sum
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node11.html b/docs/html/node11.html
index 4b9ac393..c3adba33 100644
--- a/docs/html/node11.html
+++ b/docs/html/node11.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 Descriptor Methods
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node110.html b/docs/html/node110.html
index 38ebc06e..3207aa07 100644
--- a/docs/html/node110.html
+++ b/docs/html/node110.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_max -- Global maximum
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node111.html b/docs/html/node111.html
index 7d6b75e5..62ffdea7 100644
--- a/docs/html/node111.html
+++ b/docs/html/node111.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_min -- Global minimum
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node112.html b/docs/html/node112.html
index 1caffe50..7da2ac37 100644
--- a/docs/html/node112.html
+++ b/docs/html/node112.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_amx -- Global maximum absolute value
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node113.html b/docs/html/node113.html
index ed8dd494..b3f97eb8 100644
--- a/docs/html/node113.html
+++ b/docs/html/node113.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_amn -- Global minimum absolute value
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
diff --git a/docs/html/node114.html b/docs/html/node114.html
index 8705ed4b..35177e27 100644
--- a/docs/html/node114.html
+++ b/docs/html/node114.html
@@ -1,6 +1,6 @@
 
 
-
+
 
 
 psb_nrm2 -- Global 2-norm reduction
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 
@@ -142,7 +142,10 @@ Kind, rank and size must agree on all processes.
 
  • This reduction is appropriate to compute the results of multiple (local) NRM2 operations at the same time.
  • -
  • Denoting by the value of the variable Denoting by $dat_i$ the value of the variable $dat$ on process @@ -161,7 +164,10 @@ res = \sqrt{\sum_i dat_i^2}, \end{displaymath} --> - +\begin{displaymath}res = \sqrt{\sum_i dat_i^2},\end{displaymath}

    diff --git a/docs/html/node115.html b/docs/html/node115.html index 6cec0e29..0d0f57ad 100644 --- a/docs/html/node115.html +++ b/docs/html/node115.html @@ -1,6 +1,6 @@ - + psb_snd -- Send data @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node116.html b/docs/html/node116.html index 36fffd05..8bf8a9be 100644 --- a/docs/html/node116.html +++ b/docs/html/node116.html @@ -1,6 +1,6 @@ - + psb_rcv -- Receive data @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node117.html b/docs/html/node117.html index 0372bfcb..ddce17bf 100644 --- a/docs/html/node117.html +++ b/docs/html/node117.html @@ -1,6 +1,6 @@ - + Error handling @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node118.html b/docs/html/node118.html index 51ceff35..9e19b009 100644 --- a/docs/html/node118.html +++ b/docs/html/node118.html @@ -1,6 +1,6 @@ - + Utilities @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node119.html b/docs/html/node119.html index 6610f191..027a872d 100644 --- a/docs/html/node119.html +++ b/docs/html/node119.html @@ -1,6 +1,6 @@ - + hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node12.html b/docs/html/node12.html index c6856edc..165f326d 100644 --- a/docs/html/node12.html +++ b/docs/html/node12.html @@ -1,6 +1,6 @@ - + get_local_rows -- Get number of local rows @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node120.html b/docs/html/node120.html index b796086e..5205b0eb 100644 --- a/docs/html/node120.html +++ b/docs/html/node120.html @@ -1,6 +1,6 @@ - + hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node121.html b/docs/html/node121.html index 52f273d2..5ef1126f 100644 --- a/docs/html/node121.html +++ b/docs/html/node121.html @@ -1,6 +1,6 @@ - + mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node122.html b/docs/html/node122.html index 557f80d0..7e7b5ff5 100644 --- a/docs/html/node122.html +++ b/docs/html/node122.html @@ -1,6 +1,6 @@ - + mm_array_read -- Read a dense array from a file in the MatrixMarket format @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node123.html b/docs/html/node123.html index bcd55f5e..840cc399 100644 --- a/docs/html/node123.html +++ b/docs/html/node123.html @@ -1,6 +1,6 @@ - + mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node124.html b/docs/html/node124.html index 1ea293a1..b6ce9bf9 100644 --- a/docs/html/node124.html +++ b/docs/html/node124.html @@ -1,6 +1,6 @@ - + mm_array_write -- Write a dense array from a file in the MatrixMarket format @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node125.html b/docs/html/node125.html index 8457a092..0b67b710 100644 --- a/docs/html/node125.html +++ b/docs/html/node125.html @@ -1,6 +1,6 @@ - + Preconditioner routines @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node126.html b/docs/html/node126.html index 911c5042..53d0a4ba 100644 --- a/docs/html/node126.html +++ b/docs/html/node126.html @@ -1,6 +1,6 @@ - + init -- Initialize a preconditioner @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node127.html b/docs/html/node127.html index 8b9f0e3d..e6a55901 100644 --- a/docs/html/node127.html +++ b/docs/html/node127.html @@ -1,6 +1,6 @@ - + build -- Builds a preconditioner @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node128.html b/docs/html/node128.html index 8905355e..d6071c08 100644 --- a/docs/html/node128.html +++ b/docs/html/node128.html @@ -1,6 +1,6 @@ - + apply -- Preconditioner application routine @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node129.html b/docs/html/node129.html index 618c5cc7..93dd2c96 100644 --- a/docs/html/node129.html +++ b/docs/html/node129.html @@ -1,6 +1,6 @@ - + descr -- Prints a description of current preconditioner @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node13.html b/docs/html/node13.html index f4ae181b..0fdc4242 100644 --- a/docs/html/node13.html +++ b/docs/html/node13.html @@ -1,6 +1,6 @@ - + get_local_cols -- Get number of local cols @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node130.html b/docs/html/node130.html index ef704e03..8cad168c 100644 --- a/docs/html/node130.html +++ b/docs/html/node130.html @@ -1,6 +1,6 @@ - + clone -- clone current preconditioner @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node131.html b/docs/html/node131.html index 6ffd6d59..2c00d6de 100644 --- a/docs/html/node131.html +++ b/docs/html/node131.html @@ -1,6 +1,6 @@ - + free -- Free a preconditioner @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node132.html b/docs/html/node132.html index 9e339e70..9c42bbe2 100644 --- a/docs/html/node132.html +++ b/docs/html/node132.html @@ -1,6 +1,6 @@ - + Iterative Methods @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node133.html b/docs/html/node133.html index 810fbf44..5c7a4eb3 100644 --- a/docs/html/node133.html +++ b/docs/html/node133.html @@ -1,6 +1,6 @@ - + psb_krylov -- Krylov Methods Driver Routine @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node14.html b/docs/html/node14.html index 1b308c1c..df52c1c4 100644 --- a/docs/html/node14.html +++ b/docs/html/node14.html @@ -1,6 +1,6 @@ - + get_global_rows -- Get number of global rows @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node15.html b/docs/html/node15.html index 735ad45e..32983a8e 100644 --- a/docs/html/node15.html +++ b/docs/html/node15.html @@ -1,6 +1,6 @@ - + get_global_cols -- Get number of global cols @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node16.html b/docs/html/node16.html index 1310193d..d7a1001d 100644 --- a/docs/html/node16.html +++ b/docs/html/node16.html @@ -1,6 +1,6 @@ - + get_global_indices -- Get vector of global indices @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node17.html b/docs/html/node17.html index 2be31ac9..c432cd85 100644 --- a/docs/html/node17.html +++ b/docs/html/node17.html @@ -1,6 +1,6 @@ - + get_context -- Get communication context @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node18.html b/docs/html/node18.html index 311565c5..42ebe881 100644 --- a/docs/html/node18.html +++ b/docs/html/node18.html @@ -1,6 +1,6 @@ - + Clone -- clone current object @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node19.html b/docs/html/node19.html index ff38f45c..35a0d5cb 100644 --- a/docs/html/node19.html +++ b/docs/html/node19.html @@ -1,6 +1,6 @@ - + CNV -- convert internal storage format @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node2.html b/docs/html/node2.html index 49fdb96e..3f09ef74 100644 --- a/docs/html/node2.html +++ b/docs/html/node2.html @@ -1,6 +1,6 @@ - + Introduction @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node20.html b/docs/html/node20.html index 2661f1dc..905f54a5 100644 --- a/docs/html/node20.html +++ b/docs/html/node20.html @@ -1,6 +1,6 @@ - + psb_cd_get_large_threshold -- Get threshold for index mapping switch @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node21.html b/docs/html/node21.html index 0f35d26b..3478b03a 100644 --- a/docs/html/node21.html +++ b/docs/html/node21.html @@ -1,6 +1,6 @@ - + psb_cd_set_large_threshold -- Set threshold for index mapping switch @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node22.html b/docs/html/node22.html index 2834ff8a..b733e044 100644 --- a/docs/html/node22.html +++ b/docs/html/node22.html @@ -1,6 +1,6 @@ - + Named Constants @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node23.html b/docs/html/node23.html index cb1b759b..6abadf89 100644 --- a/docs/html/node23.html +++ b/docs/html/node23.html @@ -1,6 +1,6 @@ - + Sparse Matrix class @@ -9,7 +9,7 @@ - + @@ -87,8 +87,7 @@ library at runtime via the psb_spasb routine.
  • Figure 4: The PSBLAS defined data type that contains a sparse matrix.
    -
    +
    -
    diff --git a/docs/html/node24.html b/docs/html/node24.html
    index 7c430127..660dda42 100644
    --- a/docs/html/node24.html
    +++ b/docs/html/node24.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     Sparse Matrix Methods
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node25.html b/docs/html/node25.html
    index 2946e8c2..4e11b66d 100644
    --- a/docs/html/node25.html
    +++ b/docs/html/node25.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     get_nrows -- Get number of rows in a sparse matrix
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node26.html b/docs/html/node26.html
    index 017007ef..c22ddd4c 100644
    --- a/docs/html/node26.html
    +++ b/docs/html/node26.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     get_ncols -- Get number of columns in a sparse matrix
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node27.html b/docs/html/node27.html
    index 632b31ad..a7b464d0 100644
    --- a/docs/html/node27.html
    +++ b/docs/html/node27.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     get_nnzeros -- Get number of nonzero elements in a sparse matrix
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node28.html b/docs/html/node28.html
    index d7c99061..c7f4130f 100644
    --- a/docs/html/node28.html
    +++ b/docs/html/node28.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     get_size -- Get maximum number of nonzero elements in a sparse matrix
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node29.html b/docs/html/node29.html
    index 3fe8307b..bd2a7410 100644
    --- a/docs/html/node29.html
    +++ b/docs/html/node29.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     sizeof -- Get memory occupation in bytes
    @@ -11,7 +11,7 @@ of a sparse matrix">
     <META NAME="resource-type" CONTENT="document">
     <META NAME="distribution" CONTENT="global">
     
    -<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
    +<META NAME="Generator" CONTENT="LaTeX2HTML v2018">
     <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
     
     <LINK REL="STYLESHEET" HREF="userhtml.css">
    diff --git a/docs/html/node3.html b/docs/html/node3.html
    index 68ce75bc..9d55ff44 100644
    --- a/docs/html/node3.html
    +++ b/docs/html/node3.html
    @@ -1,6 +1,6 @@
     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
     
    -<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
    +<!--Converted with LaTeX2HTML 2018 (Released Feb 1, 2018) -->
     <HTML>
     <HEAD>
     <TITLE>General overview
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node30.html b/docs/html/node30.html
    index 6747d3ff..abfd6eca 100644
    --- a/docs/html/node30.html
    +++ b/docs/html/node30.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     get_fmt -- Short description of the dynamic type
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node31.html b/docs/html/node31.html
    index 717f71d2..d12946dd 100644
    --- a/docs/html/node31.html
    +++ b/docs/html/node31.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     is_bld, is_upd, is_asb -- Status check
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    @@ -56,7 +56,7 @@ is_bld, is_upd, is_asb  -- Status check
     
     if (a%is_bld()) then 
     if (a%is_upd()) then 
    -if (a%is_asb()) then
    +if (a%is_asb()) then 
     

    diff --git a/docs/html/node32.html b/docs/html/node32.html index 552eb010..e799406e 100644 --- a/docs/html/node32.html +++ b/docs/html/node32.html @@ -1,6 +1,6 @@ - + is_lower, is_upper, is_triangle, is_unit -- Format check @@ -9,7 +9,7 @@ - + @@ -58,7 +58,7 @@ is_lower, is_upper, is_triangle, is_unit -- if (a%is_triangle()) then if (a%is_upper()) then if (a%is_lower()) then -if (a%is_unit()) then +if (a%is_unit()) then

    diff --git a/docs/html/node33.html b/docs/html/node33.html index d8e5a4df..09fdf104 100644 --- a/docs/html/node33.html +++ b/docs/html/node33.html @@ -1,6 +1,6 @@ - + cscnv -- Convert to a different storage format @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node34.html b/docs/html/node34.html index ddd40de5..c5b9402d 100644 --- a/docs/html/node34.html +++ b/docs/html/node34.html @@ -1,6 +1,6 @@ - + csclip -- Reduce to a submatrix @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node35.html b/docs/html/node35.html index f1196058..027817f2 100644 --- a/docs/html/node35.html +++ b/docs/html/node35.html @@ -1,6 +1,6 @@ - + clean_zeros -- Eliminate zero coefficients @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node36.html b/docs/html/node36.html index 2245d9bf..4768938d 100644 --- a/docs/html/node36.html +++ b/docs/html/node36.html @@ -1,6 +1,6 @@ - + get_diag -- Get main diagonal @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node37.html b/docs/html/node37.html index 152d3ad3..6cc088c9 100644 --- a/docs/html/node37.html +++ b/docs/html/node37.html @@ -1,6 +1,6 @@ - + clip_diag -- Cut out main diagonal @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node38.html b/docs/html/node38.html index 9e05ea68..a718ea45 100644 --- a/docs/html/node38.html +++ b/docs/html/node38.html @@ -1,6 +1,6 @@ - + tril -- Return the lower triangle @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node39.html b/docs/html/node39.html index be187000..685de000 100644 --- a/docs/html/node39.html +++ b/docs/html/node39.html @@ -1,6 +1,6 @@ - + triu -- Return the upper triangle @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node4.html b/docs/html/node4.html index d76c8d2d..675e62c1 100644 --- a/docs/html/node4.html +++ b/docs/html/node4.html @@ -1,6 +1,6 @@ - + Basic Nomenclature @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node40.html b/docs/html/node40.html index c2dccdae..33021ee9 100644 --- a/docs/html/node40.html +++ b/docs/html/node40.html @@ -1,6 +1,6 @@ - + psb_set_mat_default -- Set default storage format @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node41.html b/docs/html/node41.html index 5592942a..b76f447c 100644 --- a/docs/html/node41.html +++ b/docs/html/node41.html @@ -1,6 +1,6 @@ - + clone -- Clone current object @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node42.html b/docs/html/node42.html index f9eb9bf9..0810e2ec 100644 --- a/docs/html/node42.html +++ b/docs/html/node42.html @@ -1,6 +1,6 @@ - + Named Constants @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node43.html b/docs/html/node43.html index c7ac8e93..e34c4467 100644 --- a/docs/html/node43.html +++ b/docs/html/node43.html @@ -1,6 +1,6 @@ - + Dense Vector Data Structure @@ -9,7 +9,7 @@ - + @@ -95,8 +95,7 @@ private memory.

    Figure 5: The PSBLAS defined data type that contains a dense vector.
    -
    +
    diff --git a/docs/html/node44.html b/docs/html/node44.html
    index 47c59af6..d7ea4154 100644
    --- a/docs/html/node44.html
    +++ b/docs/html/node44.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     Vector Methods
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node45.html b/docs/html/node45.html
    index 62166a2c..967d15c6 100644
    --- a/docs/html/node45.html
    +++ b/docs/html/node45.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     get_nrows -- Get number of rows in a dense vector
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node46.html b/docs/html/node46.html
    index 73c5d998..85e38867 100644
    --- a/docs/html/node46.html
    +++ b/docs/html/node46.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     sizeof -- Get memory occupation in bytes
    @@ -11,7 +11,7 @@ of a dense vector">
     <META NAME="resource-type" CONTENT="document">
     <META NAME="distribution" CONTENT="global">
     
    -<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
    +<META NAME="Generator" CONTENT="LaTeX2HTML v2018">
     <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
     
     <LINK REL="STYLESHEET" HREF="userhtml.css">
    diff --git a/docs/html/node47.html b/docs/html/node47.html
    index 36a66b41..b14e02f9 100644
    --- a/docs/html/node47.html
    +++ b/docs/html/node47.html
    @@ -1,6 +1,6 @@
     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
     
    -<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
    +<!--Converted with LaTeX2HTML 2018 (Released Feb 1, 2018) -->
     <HTML>
     <HEAD>
     <TITLE>set -- Set contents of the vector
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node48.html b/docs/html/node48.html
    index 5ed4481d..fecd3360 100644
    --- a/docs/html/node48.html
    +++ b/docs/html/node48.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     get_vect -- Get a copy of the vector contents
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node49.html b/docs/html/node49.html
    index 7ecefb7a..08d0b52c 100644
    --- a/docs/html/node49.html
    +++ b/docs/html/node49.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     clone -- Clone current object
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node5.html b/docs/html/node5.html
    index 38abd7be..a2f0e2b8 100644
    --- a/docs/html/node5.html
    +++ b/docs/html/node5.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     Library contents
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node50.html b/docs/html/node50.html
    index 17b67e03..030e0a19 100644
    --- a/docs/html/node50.html
    +++ b/docs/html/node50.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     Preconditioner data structure
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    @@ -61,16 +61,14 @@ 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
    +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.
    - +
    diff --git a/docs/html/node51.html b/docs/html/node51.html
    index 8bcbb081..d7f55d82 100644
    --- a/docs/html/node51.html
    +++ b/docs/html/node51.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     Heap data structure
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node52.html b/docs/html/node52.html
    index c8636525..deb3c842 100644
    --- a/docs/html/node52.html
    +++ b/docs/html/node52.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     Computational routines
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node53.html b/docs/html/node53.html
    index 72690b09..92801a8d 100644
    --- a/docs/html/node53.html
    +++ b/docs/html/node53.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     psb_geaxpby -- General Dense Matrix Sum
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node54.html b/docs/html/node54.html
    index ae5d6b92..eca135e2 100644
    --- a/docs/html/node54.html
    +++ b/docs/html/node54.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     psb_gedot -- Dot Product
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node55.html b/docs/html/node55.html
    index 95cc3e36..2af4998b 100644
    --- a/docs/html/node55.html
    +++ b/docs/html/node55.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     psb_gedots -- Generalized Dot Product
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node56.html b/docs/html/node56.html
    index 0de3654b..43376ad4 100644
    --- a/docs/html/node56.html
    +++ b/docs/html/node56.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     psb_normi -- Infinity-Norm of Vector
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node57.html b/docs/html/node57.html
    index b5285a3e..628bb8ee 100644
    --- a/docs/html/node57.html
    +++ b/docs/html/node57.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     psb_geamaxs -- Generalized Infinity Norm
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node58.html b/docs/html/node58.html
    index e31738c2..ee1dc80b 100644
    --- a/docs/html/node58.html
    +++ b/docs/html/node58.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     psb_norm1 -- 1-Norm of Vector
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node59.html b/docs/html/node59.html
    index 088bd7b3..0e1f87ec 100644
    --- a/docs/html/node59.html
    +++ b/docs/html/node59.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     psb_geasums -- Generalized 1-Norm of Vector
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/docs/html/node6.html b/docs/html/node6.html
    index c3a74f22..db20a351 100644
    --- a/docs/html/node6.html
    +++ b/docs/html/node6.html
    @@ -1,6 +1,6 @@
     
     
    -
    +
     
     
     Application structure
    @@ -9,7 +9,7 @@
     
     
     
    -
    +
     
     
     
    @@ -174,7 +174,7 @@ follows:
     
     
     This is the structure of the sample program
    -test/pargen/ppde.f90. 
    +test/pargen/psb_d_pde3d.f90. 
     
     

    For a simulation in which the same discretization mesh is used over diff --git a/docs/html/node60.html b/docs/html/node60.html index ecce45be..86fad99c 100644 --- a/docs/html/node60.html +++ b/docs/html/node60.html @@ -1,6 +1,6 @@ - + psb_norm2 -- 2-Norm of Vector @@ -9,7 +9,7 @@ - + @@ -160,7 +160,6 @@ psb_norm2(x, desc_a, info [,global]) WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" SRC="img20.png" ALT="$x$">. -
    Scope: local
    diff --git a/docs/html/node61.html b/docs/html/node61.html index b37cc637..50dafdf6 100644 --- a/docs/html/node61.html +++ b/docs/html/node61.html @@ -1,6 +1,6 @@ - + psb_genrm2s -- Generalized 2-Norm of Vector @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node62.html b/docs/html/node62.html index 72370acc..25a1234b 100644 --- a/docs/html/node62.html +++ b/docs/html/node62.html @@ -1,6 +1,6 @@ - + psb_norm1 -- 1-Norm of Sparse Matrix @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node63.html b/docs/html/node63.html index 8403b32b..a8237f2b 100644 --- a/docs/html/node63.html +++ b/docs/html/node63.html @@ -1,6 +1,6 @@ - + psb_normi -- Infinity Norm of Sparse Matrix @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node64.html b/docs/html/node64.html index c1563adc..2320b0a3 100644 --- a/docs/html/node64.html +++ b/docs/html/node64.html @@ -1,6 +1,6 @@ - + psb_spmm -- Sparse Matrix by Dense Matrix Product @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node65.html b/docs/html/node65.html index 99711134..73ceb1a0 100644 --- a/docs/html/node65.html +++ b/docs/html/node65.html @@ -1,6 +1,6 @@ - + psb_spsm -- Triangular System Solve @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node66.html b/docs/html/node66.html index cdc88a27..e73a47eb 100644 --- a/docs/html/node66.html +++ b/docs/html/node66.html @@ -1,6 +1,6 @@ - + Communication routines @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node67.html b/docs/html/node67.html index 015b053d..e58bfd3d 100644 --- a/docs/html/node67.html +++ b/docs/html/node67.html @@ -1,6 +1,6 @@ - + psb_halo -- Halo Data Communication @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node68.html b/docs/html/node68.html index 3421d633..b4c45eb4 100644 --- a/docs/html/node68.html +++ b/docs/html/node68.html @@ -1,6 +1,6 @@ - + psb_ovrl -- Overlap Update @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node69.html b/docs/html/node69.html index cadf089f..c1ebfca0 100644 --- a/docs/html/node69.html +++ b/docs/html/node69.html @@ -1,6 +1,6 @@ - + psb_gather -- Gather Global Dense Matrix @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node7.html b/docs/html/node7.html index db996b73..155a14f7 100644 --- a/docs/html/node7.html +++ b/docs/html/node7.html @@ -1,6 +1,6 @@ - + User-defined index mappings @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node70.html b/docs/html/node70.html index 1cd035c2..16fdace2 100644 --- a/docs/html/node70.html +++ b/docs/html/node70.html @@ -1,6 +1,6 @@ - + psb_scatter -- Scatter Global Dense Matrix @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node71.html b/docs/html/node71.html index 7c38ec5a..b67bd511 100644 --- a/docs/html/node71.html +++ b/docs/html/node71.html @@ -1,6 +1,6 @@ - + Data management routines @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node72.html b/docs/html/node72.html index 58b79db9..af9ac422 100644 --- a/docs/html/node72.html +++ b/docs/html/node72.html @@ -1,6 +1,6 @@ - + psb_cdall -- Allocates a communication descriptor @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node73.html b/docs/html/node73.html index b61c998f..7f060fe7 100644 --- a/docs/html/node73.html +++ b/docs/html/node73.html @@ -1,6 +1,6 @@ - + psb_cdins -- Communication descriptor insert routine @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node74.html b/docs/html/node74.html index 90153fc2..dce0fc24 100644 --- a/docs/html/node74.html +++ b/docs/html/node74.html @@ -1,6 +1,6 @@ - + psb_cdasb -- Communication descriptor assembly routine @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node75.html b/docs/html/node75.html index c5b2b262..508603a4 100644 --- a/docs/html/node75.html +++ b/docs/html/node75.html @@ -1,6 +1,6 @@ - + psb_cdcpy -- Copies a communication descriptor @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node76.html b/docs/html/node76.html index d963d0cf..6a43fb9f 100644 --- a/docs/html/node76.html +++ b/docs/html/node76.html @@ -1,6 +1,6 @@ - + psb_cdfree -- Frees a communication descriptor @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node77.html b/docs/html/node77.html index 0fc117c8..9716704a 100644 --- a/docs/html/node77.html +++ b/docs/html/node77.html @@ -1,6 +1,6 @@ - + psb_cdbldext -- Build an extended communication descriptor @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node78.html b/docs/html/node78.html index a6434f72..2a93a784 100644 --- a/docs/html/node78.html +++ b/docs/html/node78.html @@ -1,6 +1,6 @@ - + psb_spall -- Allocates a sparse matrix @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node79.html b/docs/html/node79.html index 985137fd..2899651c 100644 --- a/docs/html/node79.html +++ b/docs/html/node79.html @@ -1,6 +1,6 @@ - + psb_spins -- Insert a cloud of elements into a sparse matrix @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node8.html b/docs/html/node8.html index b4bd2652..df750f2a 100644 --- a/docs/html/node8.html +++ b/docs/html/node8.html @@ -1,6 +1,6 @@ - + Programming model @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node80.html b/docs/html/node80.html index 0b772b19..295e944c 100644 --- a/docs/html/node80.html +++ b/docs/html/node80.html @@ -1,6 +1,6 @@ - + psb_spasb -- Sparse matrix assembly routine @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node81.html b/docs/html/node81.html index ad0cecc9..7320ea14 100644 --- a/docs/html/node81.html +++ b/docs/html/node81.html @@ -1,6 +1,6 @@ - + psb_spfree -- Frees a sparse matrix @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node82.html b/docs/html/node82.html index 178b059d..e966ada4 100644 --- a/docs/html/node82.html +++ b/docs/html/node82.html @@ -1,6 +1,6 @@ - + psb_sprn -- Reinit sparse matrix structure for psblas routines. @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node83.html b/docs/html/node83.html index 738de733..6acda544 100644 --- a/docs/html/node83.html +++ b/docs/html/node83.html @@ -1,6 +1,6 @@ - + psb_geall -- Allocates a dense matrix @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node84.html b/docs/html/node84.html index 37b805ec..9b60b9be 100644 --- a/docs/html/node84.html +++ b/docs/html/node84.html @@ -1,6 +1,6 @@ - + psb_geins -- Dense matrix insertion routine @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node85.html b/docs/html/node85.html index d398962f..c1ef7600 100644 --- a/docs/html/node85.html +++ b/docs/html/node85.html @@ -1,6 +1,6 @@ - + psb_geasb -- Assembly a dense matrix @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node86.html b/docs/html/node86.html index 727ea53c..e1744ccb 100644 --- a/docs/html/node86.html +++ b/docs/html/node86.html @@ -1,6 +1,6 @@ - + psb_gefree -- Frees a dense matrix @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node87.html b/docs/html/node87.html index a2f92e49..4ca7bac5 100644 --- a/docs/html/node87.html +++ b/docs/html/node87.html @@ -1,6 +1,6 @@ - + psb_gelp -- Applies a left permutation to a dense matrix @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node88.html b/docs/html/node88.html index dc1ef1f3..cfacedda 100644 --- a/docs/html/node88.html +++ b/docs/html/node88.html @@ -1,6 +1,6 @@ - + psb_glob_to_loc -- Global to local indices convertion @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node89.html b/docs/html/node89.html index 8f9fe79e..050152a7 100644 --- a/docs/html/node89.html +++ b/docs/html/node89.html @@ -1,6 +1,6 @@ - + psb_loc_to_glob -- Local to global indices conversion @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node9.html b/docs/html/node9.html index 0a5a735c..754b8bef 100644 --- a/docs/html/node9.html +++ b/docs/html/node9.html @@ -1,6 +1,6 @@ - + Data Structures and Classes @@ -9,7 +9,7 @@ - + @@ -58,7 +58,6 @@ Data Structures and Classes 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. -

    All the data types and the basic subroutine interfaces related to descriptors and sparse matrices are defined in diff --git a/docs/html/node90.html b/docs/html/node90.html index 06a82601..fee6dd3a 100644 --- a/docs/html/node90.html +++ b/docs/html/node90.html @@ -1,6 +1,6 @@ - + psb_is_owned -- @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node91.html b/docs/html/node91.html index d636cd7a..00db2a3e 100644 --- a/docs/html/node91.html +++ b/docs/html/node91.html @@ -1,6 +1,6 @@ - + psb_owned_index -- @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node92.html b/docs/html/node92.html index 874ce23a..725dc118 100644 --- a/docs/html/node92.html +++ b/docs/html/node92.html @@ -1,6 +1,6 @@ - + psb_is_local -- @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node93.html b/docs/html/node93.html index 675e81fa..8ff5d626 100644 --- a/docs/html/node93.html +++ b/docs/html/node93.html @@ -1,6 +1,6 @@ - + psb_local_index -- @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node94.html b/docs/html/node94.html index b58a1ece..41a1b858 100644 --- a/docs/html/node94.html +++ b/docs/html/node94.html @@ -1,6 +1,6 @@ - + psb_get_boundary -- Extract list of boundary elements @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node95.html b/docs/html/node95.html index e82e5e78..07d57981 100644 --- a/docs/html/node95.html +++ b/docs/html/node95.html @@ -1,6 +1,6 @@ - + psb_get_overlap -- Extract list of overlap elements @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node96.html b/docs/html/node96.html index 9804dc41..ca9a4144 100644 --- a/docs/html/node96.html +++ b/docs/html/node96.html @@ -1,6 +1,6 @@ - + psb_sp_getrow -- Extract row(s) from a sparse matrix @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node97.html b/docs/html/node97.html index 7f94cf70..9a446831 100644 --- a/docs/html/node97.html +++ b/docs/html/node97.html @@ -1,6 +1,6 @@ - + psb_sizeof -- Memory occupation @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node98.html b/docs/html/node98.html index da637e10..71c0deae 100644 --- a/docs/html/node98.html +++ b/docs/html/node98.html @@ -1,6 +1,6 @@ - + Sorting utilities -- @@ -9,7 +9,7 @@ - + diff --git a/docs/html/node99.html b/docs/html/node99.html index 95f9a443..24fa37b8 100644 --- a/docs/html/node99.html +++ b/docs/html/node99.html @@ -1,6 +1,6 @@ - + Parallel environment routines @@ -9,7 +9,7 @@ - + diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html index eba632d1..f55b07f2 100644 --- a/docs/html/userhtml.html +++ b/docs/html/userhtml.html @@ -1,6 +1,6 @@ - + userhtml @@ -9,7 +9,7 @@ - + @@ -56,9 +56,7 @@ Software version: 3.5.0
    Sep 1st, 2017 - - -


    +

    diff --git a/docs/psblas-3.5.pdf b/docs/psblas-3.5.pdf index 96e8c452..4f87af12 100644 --- a/docs/psblas-3.5.pdf +++ b/docs/psblas-3.5.pdf @@ -453,17 +453,17 @@ stream 0 g 0 G 0 g 0 G BT -/F16 24.7871 Tf 135.453 564.641 Td [(PSBLAS)-375(3.5.0)-375(User's)-375(guide)]TJ +/F16 24.7871 Tf 135.453 563.395 Td [(PSBLAS)-375(3.5.0)-375(User's)-375(guide)]TJ ET q -1 0 0 1 125.3 548.396 cm +1 0 0 1 125.3 547.151 cm 0 0 343.711 4.981 re f Q BT -/F18 14.3462 Tf 132.314 526.714 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 525.468 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 -133.983 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 42.624 -11.955 Td [(Sep)-333(1st,)-334(2017)]TJ +/F27 9.9626 Tf 223.567 -135.228 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 42.624 -11.955 Td [(Sep)-333(1st,)-334(2017)]TJ 0 g 0 G 0 g 0 G ET @@ -3969,7 +3969,7 @@ endstream endobj 814 0 obj << -/Length 7694 +/Length 7702 >> stream 0 g 0 G @@ -3986,7 +3986,7 @@ BT 0 g 0 G -69.503 -22.397 Td [(7.)]TJ 0 g 0 G - [-500(Call)-333(the)-334(iterativ)28(e)-333(metho)-28(d)-333(of)-334(c)28(hoice,)-333(e.g.)]TJ/F30 9.9626 Tf 189.595 0 Td [(psb_bicgstab)]TJ/F8 9.9626 Tf -201.772 -21.778 Td [(This)-333(is)-334(the)-333(structure)-333(of)-334(the)-333(sample)-333(program)]TJ/F30 9.9626 Tf 194.328 0 Td [(test/pargen/ppde.f90)]TJ/F8 9.9626 Tf 104.606 0 Td [(.)]TJ -283.99 -12.573 Td [(F)83(or)-291(a)-292(sim)28(ulation)-292(in)-291(whic)27(h)-291(the)-292(same)-292(discretization)-291(mes)-1(h)-291(is)-292(used)-291(o)27(v)28(er)-292(m)28(ultiple)]TJ -14.944 -11.955 Td [(time)-333(ste)-1(p)1(s)-1(,)-333(the)-333(follo)28(wing)-334(structure)-333(ma)28(y)-333(b)-28(e)-334(more)-333(appropriate:)]TJ + [-500(Call)-333(the)-334(iterativ)28(e)-333(metho)-28(d)-333(of)-334(c)28(hoice,)-333(e.g.)]TJ/F30 9.9626 Tf 189.595 0 Td [(psb_bicgstab)]TJ/F8 9.9626 Tf -201.772 -21.778 Td [(This)-333(is)-334(the)-333(structure)-333(of)-334(the)-333(sample)-333(program)]TJ/F30 9.9626 Tf 194.328 0 Td [(test/pargen/psb_d_pde3d.f90)]TJ/F8 9.9626 Tf 141.219 0 Td [(.)]TJ -320.603 -12.573 Td [(F)83(or)-291(a)-292(sim)28(ulation)-292(in)-291(whic)27(h)-291(the)-292(same)-292(discretization)-291(mes)-1(h)-291(is)-292(used)-291(o)27(v)28(er)-292(m)28(ultiple)]TJ -14.944 -11.955 Td [(time)-333(ste)-1(p)1(s)-1(,)-333(the)-333(follo)28(wing)-334(structure)-333(ma)28(y)-333(b)-28(e)-334(more)-333(appropriate:)]TJ 0 g 0 G 12.177 -21.779 Td [(1.)]TJ 0 g 0 G @@ -11411,7 +11411,7 @@ endstream endobj 1149 0 obj << -/Length 6975 +/Length 6976 >> stream 0 g 0 G @@ -11426,114 +11426,114 @@ BT 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -18.453 Td [(y)]TJ +/F27 9.9626 Tf -24.906 -18.597 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)-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 +/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.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)-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 592.233 cm +1 0 0 1 436.673 592.09 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.034 Td [(T)]TJ +/F30 9.9626 Tf 439.811 591.891 Td [(T)]TJ ET q -1 0 0 1 445.669 592.233 cm +1 0 0 1 445.669 592.09 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.034 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 591.891 Td [(vect)]TJ ET q -1 0 0 1 470.356 592.233 cm +1 0 0 1 470.356 592.09 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.034 Td [(type)]TJ +/F30 9.9626 Tf 473.495 591.891 Td [(type)]TJ 0 g 0 G -/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 +/F8 9.9626 Tf -297.884 -11.956 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 [-345(12)]TJ 0 g 0 G [(.)-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 -84.067 -18.454 Td [(desc)]TJ +/F27 9.9626 Tf -84.067 -18.597 Td [(desc)]TJ ET q -1 0 0 1 172.619 549.87 cm +1 0 0 1 172.619 549.583 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 549.67 Td [(a)]TJ +/F27 9.9626 Tf 176.057 549.383 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.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 ET q -1 0 0 1 327.588 502.049 cm +1 0 0 1 327.588 501.762 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 330.727 501.85 Td [(desc)]TJ +/F30 9.9626 Tf 330.727 501.563 Td [(desc)]TJ ET q -1 0 0 1 352.275 502.049 cm +1 0 0 1 352.275 501.762 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 355.414 501.85 Td [(type)]TJ +/F30 9.9626 Tf 355.414 501.563 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -225.63 -18.454 Td [(trans)]TJ +/F27 9.9626 Tf -225.63 -18.597 Td [(trans)]TJ 0 g 0 G /F8 9.9626 Tf 30.609 0 Td [(indicates)-333(what)-334(kind)-333(of)-333(op)-28(eration)-333(to)-333(p)-28(erform.)]TJ 0 g 0 G -/F27 9.9626 Tf -5.703 -18.453 Td [(trans)-383(=)-384(N)]TJ +/F27 9.9626 Tf -5.703 -18.597 Td [(trans)-383(=)-384(N)]TJ 0 g 0 G /F8 9.9626 Tf 56.124 0 Td [(the)-333(op)-28(eration)-333(is)-334(sp)-28(eci\014ed)-333(b)28(y)-333(equation)]TJ 0 0 1 rg 0 0 1 RG [-334(1)]TJ 0 g 0 G 0 g 0 G -/F27 9.9626 Tf -56.124 -14.469 Td [(trans)-383(=)-384(T)]TJ +/F27 9.9626 Tf -56.124 -14.612 Td [(trans)-383(=)-384(T)]TJ 0 g 0 G /F8 9.9626 Tf 55.128 0 Td [(the)-333(op)-28(eration)-333(is)-334(sp)-28(eci\014ed)-333(b)28(y)-333(equation)]TJ 0 0 1 rg 0 0 1 RG [-334(2)]TJ 0 g 0 G 0 g 0 G -/F27 9.9626 Tf -55.128 -14.468 Td [(trans)-383(=)-384(C)]TJ +/F27 9.9626 Tf -55.128 -14.612 Td [(trans)-383(=)-384(C)]TJ 0 g 0 G /F8 9.9626 Tf 55.433 0 Td [(the)-333(op)-28(eration)-333(is)-334(sp)-27(ec)-1(i\014)1(e)-1(d)-333(b)28(y)-333(equation)]TJ 0 0 1 rg 0 0 1 RG [-334(3)]TJ 0 g 0 G - -55.433 -18.453 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 [(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 [(tr)-28(ans)]TJ/F8 9.9626 Tf 27.052 0 Td [(=)]TJ/F11 9.9626 Tf 10.517 0 Td [(N)]TJ/F8 9.9626 Tf -77.005 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(c)28(haracter)-334(v)56(ariable.)]TJ + -55.433 -18.597 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.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Default:)]TJ/F11 9.9626 Tf 39.436 0 Td [(tr)-28(ans)]TJ/F8 9.9626 Tf 27.052 0 Td [(=)]TJ/F11 9.9626 Tf 10.517 0 Td [(N)]TJ/F8 9.9626 Tf -77.005 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(c)28(haracter)-334(v)56(ariable.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -18.454 Td [(w)32(ork)]TJ +/F27 9.9626 Tf -24.906 -18.596 Td [(w)32(ork)]TJ 0 g 0 G -/F8 9.9626 Tf 29.431 0 Td [(w)28(ork)-334(arr)1(a)27(y)84(.)]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.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 [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-487(as:)-753(a)-487(rank)-488(one)-487(arra)28(y)-488(of)-487(the)-488(same)-487(t)27(yp)-27(e)-488(of)]TJ/F11 9.9626 Tf 239.183 0 Td [(x)]TJ/F8 9.9626 Tf 10.551 0 Td [(and)]TJ/F11 9.9626 Tf 20.907 0 Td [(y)]TJ/F8 9.9626 Tf 10.099 0 Td [(with)-487(the)]TJ -280.74 -11.955 Td [(T)83(AR)28(GET)-333(attribute.)]TJ +/F8 9.9626 Tf 29.431 0 Td [(w)28(ork)-334(arr)1(a)27(y)84(.)]TJ -4.525 -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 [(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 [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-487(as:)-753(a)-487(rank)-488(one)-487(arra)28(y)-488(of)-487(the)-488(same)-487(t)27(yp)-27(e)-488(of)]TJ/F11 9.9626 Tf 239.183 0 Td [(x)]TJ/F8 9.9626 Tf 10.551 0 Td [(and)]TJ/F11 9.9626 Tf 20.907 0 Td [(y)]TJ/F8 9.9626 Tf 10.099 0 Td [(with)-487(the)]TJ -280.74 -11.955 Td [(T)83(AR)28(GET)-333(attribute.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -18.454 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -24.906 -18.597 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G - 0 -18.453 Td [(y)]TJ + 0 -18.597 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(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 +/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.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)-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(12)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -18.454 Td [(info)]TJ +/F27 9.9626 Tf -24.906 -18.597 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)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 +/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(t)1(e)-1(d.)]TJ 0 g 0 G - 141.968 -38.108 Td [(48)]TJ + 141.968 -36.529 Td [(48)]TJ 0 g 0 G ET @@ -12643,19 +12643,19 @@ endobj /Type /ObjStm /N 100 /First 995 -/Length 12718 +/Length 12713 >> stream 1116 0 248 58 1117 115 1113 174 1122 318 1119 466 1120 611 1124 758 252 817 1126 875 1121 934 1133 1080 1127 1246 1128 1393 1129 1538 1130 1682 1135 1829 256 1887 1136 1944 1137 2003 -1138 2062 1139 2121 1132 2180 1148 2337 1131 2539 1140 2686 1141 2830 1142 2977 1143 3124 1144 3275 -1145 3426 1146 3577 1150 3724 1147 3783 1154 3889 1151 4028 1156 4174 260 4232 1157 4289 1153 4348 -1166 4519 1152 4712 1159 4860 1160 5004 1161 5151 1162 5298 1163 5442 1164 5589 1168 5735 1165 5794 -1172 5926 1169 6074 1170 6221 1174 6368 1171 6426 1177 6532 1175 6671 1179 6819 264 6878 1176 6936 -1185 7016 1180 7173 1181 7317 1182 7464 1187 7611 268 7669 1188 7726 1189 7785 1190 7843 1191 7901 -1184 7959 1195 8091 1199 8239 1200 8366 1201 8409 1202 8616 1203 8854 1204 9130 1183 9366 1193 9513 -1197 9659 1198 9718 1194 9777 1208 9925 1210 10043 1207 10101 1217 10182 1213 10339 1214 10483 1215 10630 -1219 10776 272 10835 1220 10893 1221 10952 1222 11011 1223 11070 1216 11129 1229 11274 1224 11431 1226 11578 +1138 2062 1139 2121 1132 2180 1148 2337 1131 2539 1140 2686 1141 2829 1142 2975 1143 3122 1144 3273 +1145 3424 1146 3574 1150 3719 1147 3778 1154 3884 1151 4023 1156 4169 260 4227 1157 4284 1153 4343 +1166 4514 1152 4707 1159 4855 1160 4999 1161 5146 1162 5293 1163 5437 1164 5584 1168 5730 1165 5789 +1172 5921 1169 6069 1170 6216 1174 6363 1171 6421 1177 6527 1175 6666 1179 6814 264 6873 1176 6931 +1185 7011 1180 7168 1181 7312 1182 7459 1187 7606 268 7664 1188 7721 1189 7780 1190 7838 1191 7896 +1184 7954 1195 8086 1199 8234 1200 8361 1201 8404 1202 8611 1203 8849 1204 9125 1183 9361 1193 9508 +1197 9654 1198 9713 1194 9772 1208 9920 1210 10038 1207 10096 1217 10177 1213 10334 1214 10478 1215 10625 +1219 10771 272 10830 1220 10888 1221 10947 1222 11006 1223 11065 1216 11124 1229 11269 1224 11426 1226 11573 % 1116 0 obj << /D [1114 0 R /XYZ 98.895 753.953 null] @@ -12807,7 +12807,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [419.358 588.824 495.412 599.949] +/Rect [419.358 588.68 495.412 599.805] /A << /S /GoTo /D (vdata) >> >> % 1141 0 obj @@ -12815,7 +12815,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [377.029 577.145 388.984 587.994] +/Rect [377.029 577.002 388.984 587.85] /A << /S /GoTo /D (table.12) >> >> % 1142 0 obj @@ -12823,7 +12823,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [310.273 498.639 377.331 509.764] +/Rect [310.273 498.352 377.331 509.477] /A << /S /GoTo /D (descdata) >> >> % 1143 0 obj @@ -12831,7 +12831,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.199 462.009 404.172 472.858] +/Rect [397.199 461.435 404.172 472.284] /A << /S /GoTo /D (equation.4.1) >> >> % 1144 0 obj @@ -12839,7 +12839,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [396.202 447.541 403.176 458.389] +/Rect [396.202 446.823 403.176 457.672] /A << /S /GoTo /D (equation.4.2) >> >> % 1145 0 obj @@ -12847,7 +12847,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [396.507 433.073 403.481 443.921] +/Rect [396.507 432.212 403.481 443.06] /A << /S /GoTo /D (equation.4.3) >> >> % 1146 0 obj @@ -12855,7 +12855,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [253.818 191.887 265.774 202.735] +/Rect [253.818 190.452 265.774 201.3] /A << /S /GoTo /D (table.12) >> >> % 1150 0 obj @@ -19908,7 +19908,7 @@ endstream endobj 1626 0 obj << -/Length 6189 +/Length 6213 >> stream 0 g 0 G @@ -19924,54 +19924,54 @@ BT /F16 11.9552 Tf 124.986 706.129 Td [(nrm2)-375(|)-375(Global)-375(2-norm)-375(reduction)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_nrm2\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -19.604 Td [(This)-425(subroutine)-426(imp)1(le)-1(men)28(ts)-425(a)-425(2-norm)-426(v)56(alue)-425(reduction)-426(op)-27(eration)-426(based)-425(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_nrm2\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -19.794 Td [(This)-425(subroutine)-426(imp)1(le)-1(men)28(ts)-425(a)-425(2-norm)-426(v)56(alue)-425(reduction)-426(op)-27(eration)-426(based)-425(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 -18.074 Td [(T)32(yp)-32(e:)]TJ +/F27 9.9626 Tf 0 -18.226 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 Td [(On)-383(En)32(try)]TJ +/F27 9.9626 Tf -33.797 -19.076 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G - 0 -19 Td [(icon)32(txt)]TJ + 0 -19.076 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.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 Td [(dat)]TJ +/F27 9.9626 Tf -24.907 -19.076 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.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)-421(as:)-619(a)-421(real)-421(v)55(ariable,)-443(whic)28(h)-421(ma)28(y)-421(b)-28(e)-421(a)-421(scalar,)-443(or)-421(a)-420(rank)-421(1)-421(arra)28(y)83(.)]TJ 0 -11.955 Td [(Kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(ce)-1(sses.)]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(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.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)-421(as:)-619(a)-421(real)-421(v)55(ariable,)-443(whic)28(h)-421(ma)28(y)-421(b)-28(e)-421(a)-421(scalar,)-443(or)-421(a)-420(rank)-421(1)-421(arra)28(y)83(.)]TJ 0 -11.955 Td [(Kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(ce)-1(sses.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19 Td [(ro)-32(ot)]TJ +/F27 9.9626 Tf -24.907 -19.075 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.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 0 g 0 G -/F27 9.9626 Tf -251.325 -31.559 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -251.325 -31.749 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G - 0 -19 Td [(dat)]TJ + 0 -19.076 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(2-norm)-333(reduction.)]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.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(real)-333(v)55(ariable,)-333(whic)28(h)-333(ma)27(y)-333(b)-28(e)-333(a)-333(sc)-1(alar)1(,)-334(or)-333(a)-333(rank)-334(1)-333(arra)28(y)83(.)]TJ 0 -11.955 Td [(Kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(ce)-1(sses.)]TJ/F16 11.9552 Tf -24.907 -19.603 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(2-norm)-333(reduction.)]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)-333(as:)-445(a)-333(real)-333(v)55(ariable,)-333(whic)28(h)-333(ma)27(y)-333(b)-28(e)-333(a)-333(sc)-1(alar)1(,)-334(or)-333(a)-333(rank)-334(1)-333(arra)28(y)83(.)]TJ 0 -11.955 Td [(Kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(ce)-1(sses.)]TJ/F16 11.9552 Tf -24.907 -19.794 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.177 -18.075 Td [(1.)]TJ +/F8 9.9626 Tf 12.177 -18.226 Td [(1.)]TJ 0 g 0 G [-500(This)-416(reduction)-416(is)-416(appropriate)-416(to)-416(compute)-416(the)-417(results)-416(of)-416(m)28(ultiple)-416(\050lo)-28(cal\051)]TJ 12.73 -11.955 Td [(NRM2)-333(op)-28(erations)-333(at)-334(the)-333(same)-334(ti)1(m)-1(e.)]TJ 0 g 0 G - -12.73 -18.999 Td [(2.)]TJ + -12.73 -19.076 Td [(2.)]TJ 0 g 0 G - [-500(Denoting)-283(b)28(y)]TJ/F11 9.9626 Tf 68.601 0 Td [(dat)]TJ/F10 6.9738 Tf 14.05 -1.495 Td [(i)]TJ/F8 9.9626 Tf 6.138 1.495 Td [(the)-283(v)55(alue)-283(of)-283(the)-283(v)55(ariable)]TJ/F11 9.9626 Tf 106.29 0 Td [(dat)]TJ/F8 9.9626 Tf 16.87 0 Td [(on)-283(pro)-28(cess)]TJ/F11 9.9626 Tf 47.57 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(,)-293(the)-283(output)]TJ/F11 9.9626 Tf 54.503 0 Td [(r)-28(es)]TJ/F8 9.9626 Tf -304.724 -11.956 Td [(is)-333(equiv)55(alen)28(t)-333(to)-334(the)-333(computation)-333(of)]TJ/F11 9.9626 Tf 122.071 -25.714 Td [(r)-28(es)]TJ/F8 9.9626 Tf 16.847 0 Td [(=)]TJ/F1 9.9626 Tf 10.516 14.335 Td [(s)]TJ + [-500(Denoting)-283(b)28(y)]TJ/F11 9.9626 Tf 68.601 0 Td [(dat)]TJ/F10 6.9738 Tf 14.05 -1.494 Td [(i)]TJ/F8 9.9626 Tf 6.138 1.494 Td [(the)-283(v)55(alue)-283(of)-283(the)-283(v)55(ariable)]TJ/F11 9.9626 Tf 106.29 0 Td [(dat)]TJ/F8 9.9626 Tf 16.87 0 Td [(on)-283(pro)-28(cess)]TJ/F11 9.9626 Tf 47.57 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(,)-293(the)-283(output)]TJ/F11 9.9626 Tf 54.503 0 Td [(r)-28(es)]TJ/F8 9.9626 Tf -304.724 -11.955 Td [(is)-333(equiv)55(alen)28(t)-333(to)-334(the)-333(computation)-333(of)]TJ/F11 9.9626 Tf 122.071 -25.904 Td [(r)-28(es)]TJ/F8 9.9626 Tf 16.847 0 Td [(=)]TJ/F1 9.9626 Tf 10.516 14.335 Td [(s)]TJ ET q -1 0 0 1 284.199 204.589 cm +1 0 0 1 284.199 203.069 cm []0 d 0 J 0.398 w 0 0 m 34.569 0 l S Q BT -/F1 9.9626 Tf 284.199 199.519 Td [(X)]TJ/F10 6.9738 Tf 5.786 -21.219 Td [(i)]TJ/F11 9.9626 Tf 10.265 11.754 Td [(dat)]TJ/F7 6.9738 Tf 14.049 3.432 Td [(2)]TJ/F10 6.9738 Tf 0 -6.209 Td [(i)]TJ/F11 9.9626 Tf 4.469 2.777 Td [(;)]TJ/F8 9.9626 Tf -193.966 -30.717 Td [(with)-333(care)-334(tak)28(en)-333(to)-334(a)28(v)28(oid)-333(unnecessary)-334(o)28(v)28(er\015o)28(w.)]TJ +/F1 9.9626 Tf 284.199 197.999 Td [(X)]TJ/F10 6.9738 Tf 5.786 -21.219 Td [(i)]TJ/F11 9.9626 Tf 10.265 11.755 Td [(dat)]TJ/F7 6.9738 Tf 14.049 3.431 Td [(2)]TJ/F10 6.9738 Tf 0 -6.208 Td [(i)]TJ/F11 9.9626 Tf 4.469 2.777 Td [(;)]TJ/F8 9.9626 Tf -193.966 -30.908 Td [(with)-333(care)-334(tak)28(en)-333(to)-334(a)28(v)28(oid)-333(unnecessary)-334(o)28(v)28(er\015o)28(w.)]TJ 0 g 0 G - -12.73 -19 Td [(3.)]TJ + -12.73 -19.075 Td [(3.)]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.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 - 139.477 -37.944 Td [(117)]TJ + 139.477 -36.158 Td [(117)]TJ 0 g 0 G ET @@ -20270,7 +20270,7 @@ endobj /Type /ObjStm /N 100 /First 967 -/Length 9161 +/Length 9159 >> stream 405 0 1558 58 1559 116 1554 175 1562 307 1564 425 409 483 1565 540 1566 598 1567 656 @@ -20279,10 +20279,10 @@ stream 1585 2467 1590 2573 1592 2691 433 2749 1589 2806 1594 2938 1596 3056 437 3115 1597 3173 1598 3232 1593 3291 1600 3423 1602 3541 441 3599 1603 3656 1604 3714 1599 3772 1606 3904 1608 4022 445 4081 1609 4139 1610 4198 1605 4257 1612 4389 1614 4507 449 4565 1615 4622 1616 4680 1611 4738 1619 4870 -1621 4988 453 5047 1622 5105 1623 5164 1618 5223 1625 5355 1627 5473 457 5531 1628 5588 1629 5646 -1631 5704 1624 5762 1633 5932 1635 6050 461 6109 1636 6167 1632 6225 1638 6357 1640 6475 465 6533 -1641 6590 1637 6647 1645 6779 1642 6927 1643 7072 1647 7219 469 7278 1644 7336 1651 7429 1653 7547 -1654 7605 1655 7664 1657 7723 1658 7782 1659 7841 1660 7900 1661 7959 1662 8017 1663 8076 1664 8135 +1621 4988 453 5047 1622 5105 1623 5164 1618 5223 1625 5355 1627 5473 457 5531 1628 5588 1629 5645 +1631 5703 1624 5760 1633 5930 1635 6048 461 6107 1636 6165 1632 6223 1638 6355 1640 6473 465 6531 +1641 6588 1637 6645 1645 6777 1642 6925 1643 7070 1647 7217 469 7276 1644 7334 1651 7427 1653 7545 +1654 7603 1655 7662 1657 7721 1658 7780 1659 7839 1660 7898 1661 7957 1662 8015 1663 8074 1664 8133 % 405 0 obj << /D [1555 0 R /XYZ 150.705 720.077 null] @@ -20622,15 +20622,15 @@ stream >> % 1628 0 obj << -/D [1625 0 R /XYZ 99.895 274.156 null] +/D [1625 0 R /XYZ 99.895 272.94 null] >> % 1629 0 obj << -/D [1625 0 R /XYZ 99.895 241.264 null] +/D [1625 0 R /XYZ 99.895 239.973 null] >> % 1631 0 obj << -/D [1625 0 R /XYZ 99.895 153.877 null] +/D [1625 0 R /XYZ 99.895 152.13 null] >> % 1624 0 obj << @@ -28543,11 +28543,11 @@ endstream endobj 2028 0 obj << - /Title (Parallel Sparse BLAS V. 3.5.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$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.17)/Keywords() -/CreationDate (D:20180422153634+01'00') -/ModDate (D:20180422153634+01'00') + /Title (Parallel Sparse BLAS V. 3.5.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$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.18)/Keywords() +/CreationDate (D:20180702164032+01'00') +/ModDate (D:20180702164032+01'00') /Trapped /False -/PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) kpathsea version 6.2.2) +/PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) kpathsea version 6.2.3) >> endobj 2001 0 obj @@ -28710,7 +28710,7 @@ endobj /W [1 3 1] /Root 2027 0 R /Info 2028 0 R -/ID [<8F88B2428FC2AB5F6A7533BB5EB65F64> <8F88B2428FC2AB5F6A7533BB5EB65F64>] +/ID [<7594D57317A5C89F9FDA464D6C941754> <7594D57317A5C89F9FDA464D6C941754>] /Length 10150 >> stream @@ -28723,35 +28723,34 @@ stream v  v !v%v+v1v7v=EcCEbJEaOE` VE_!"E^#$E]%& E\'(&E[)*,EZ+,1EY-.8EX/0?EW12EEV34LEU56RET78XES9:^ER;<EQ=>EP?@EOABENCDEMEF!ELGH'EKIJKO$LMEE&EEE*RP'QTUVWXYZ[\]^_`abckkkkkkkkkk k k k k kkkkkkkkkkkkkkkkk"k S( kksk#k$k%k&k'k(k)k*k+k,k-k.k/k0k1k2k3k4k5k6k7k8k9k:k;k<k=k>k?k@kAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkTkRk!kQkUkVkWkXkYkZk[k\k]k^k_k`kakbkc  -   kS:]!"#$%&'()*, ^3E%E+NE;OMBCL?@23497-E6./01rA:;@8<E'E EE#E>E!?KEFJAGHBCD>=LMOKN][PAQESTUVWXYZ@ @ \P^_`abc@@@@@@@@@E(E,^@ @@ -m@ @@@@@@@@@@@@@ @!@.@/@,@8@"@#@$@%@&@'@(@)@*@+@8@-@0@1@2@3@4@5@:@;@@@9܈@<@F@A@BE-@M@G@H@J@O@P@Q@X@N@R@U@V@WJ@^@Y?@Z@_O@`@b+ # E. zȍ$K #',%y&./2-$0E/M45<369E):?=+>C@.2AEFGHIJPND/ KQRTOL SVWXYZ^UV[]E0`_tabcW  - > ҉7#> !"%&'+$N(*E1-./3,A02<47j56789:;>?@D=FACGEcFIJKOHfnLNXPQRSTUVWE2Z[\`Y?]_bc^a^^f&^^^ -^^E$^ ^ ^ ^^^^^ ^^^^^^^^^^^^^!^^ ^#^)^'^": ^$^&E3^*^+^,^-^.^/^1^(T^0^3^4^6^2s^5^8^;^7^9^=^>^?^N^F^<^@^B^C^D^E^O^R^G^^P^Q^H^I^J^K^L^Mr^U^S!y^TE"E4^W^X^Y^`^V-^Z^\^]^^^_^b^c^aN )w1  -     <E5"*(!Bw#%&'+,.)a/-3/q058467:=9;<E>3?@ABCDE6GJFHLQKMNOPSTXR UWZ[^Y m\`c_ waCCCC UcC -ZE7C -C lCCC C C CC  s7CCCCCCCCC CC&C CCCCC C!C"C#C$C%C(C)C,C' C*C5C- 6C.C/C0C1C2C3C4E8C7C8C;C6 ;C9C=C>CBC< C?CACDCECHCC XCFCJCKCNCI - CLCSCO -&jCPCQCRCUCVCWCZCT -+CXE9C\C]C`C[ -?C^Ca -MCb  - +   kS:]!"#$%&'()*, ^3E%E+NE;OMBCL?@23497-E6./01rA:;@8<E'E EE#E>E!?KEFJAGHBCD>=LMOKN][PAQESTUVWXYZ@ @ \P^_`abc@@@@@@@@@E(E,^@ @@ +m@ @@@@@@@@@ @@@@ @!@.@/@,@@@"@#@$@%@&@'@(@)@*@+@8@-'@0@1@2@3@4@5@:@;@@@9ܐ@<@F@A@BE-@M@G@H@J@O@P@Q@X@N@R@U@V@WJ@^@Y?@Z@_O@`@b3 + E. ȕ$S #',%&./2-,0E/M45<369E):?=+>C@.:AEFGHIJPND/KQRTOLSVWXYZ^UV[]E0`_tabc_  + F ґ?#F !"%&'+$V(*E1-./3,I02<47r56789:;>?@D=FACGEcFIJKOHfvLNXPQRSTUVWE2Z[\`YG]_bc^a^^f/^^^ +^^E$^ ^ ^ ^^^^^ ^^^^^^^^^^^^^!^^ ^#^)^'^":)^$^&E3^*^+^,^-^.^/^1^(T^0^3^4^6^2s^5^8^;^7^9^=^>^?^N^F^<^@^B^C^D^E ^O^R^Gg^P^Q^H^I^J^K^L^M{^U^S!^TE"E4^W^X^Y^`^V-^Z^\^]^^^_^b^c^aO ){5  +   $ <E5"*(!B{#%&'+,.)a3-3/q058467:=9;<E>7?@ABCDE6GJFHLQKMNOPSTXR UWZ[^Y q\`c_ {aCCCC UgC +ZE7C +C lCCC C C CC  s;CCCCCCCCC CC&C CCCCC C!C"C#C$C%C(C)C,C' C*C5C- :C.C/C0C1C2C3C4E8C7C8C;C6 ?C9C=C>CBC< C?CACDCECHCC \CFCJCKCNCI + CLCSCO +&nCPCQCRCUCVCWCZCT ++CXE9C\C]C`C[ +?C^Ca +MCb  +  -n    -_  -E: -! -ؼ #'" -$&).( -^*,-05/ 1347:6  8E;@; -<=>?BCDGA <EKH LIWL cMNOPQRSTUV[X NYa\ F]_`E<b Bc  - 6   w  $ - E= %"  (# $&'.) -@*,-4/ A023:5 V689E>@; j<>?GA BDEEFLH IKQM BNPSTWR gUX ۫YZ[E\]^_`abc  -   E? I B + -# 0!")$ 7Z%'(-* ?+/4. B%023E@6;5 U79:=B< i>@AHC xXDFGJOI KMNUP QSTYV WEA[\`Z ]_bca n k  -   %EB)"4 $%.,#7N&()*+E/013-W2574s6G8Z9:<DFECQHIPRSTUVWXYZ[\]^_`abcEaEE@NEeEEңEE1EX;E wE -YE FE !E `EE;EE5EeE|EñEEDEEEFEGEHEIEJ.RTSw w wwwwwwwwwwwwwwwwwww w!w"w#w$w%w&w'w(w)w*w+w,w-w.w/w0w1w2w3w4w5w6w7w8w9w:w;w<w=w>w?w@wAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw[w\w]w^w_w`wawbwc  -    +r    +c  +E: + ! + #'" +$&).( +b*,-05/ 1347:6 8E;@; -<=>?BCDGA <EKH LIWL cMNOPQRSTUV[X RYa\ J]_`E<b Fc 8 + :   {  ( 1 E= )"  (# $&'.) -D*,-4/ A023:5 V689E>@; j<>?GA BDEEFLH (IKQM ^NPSTWR ƒUX YZ[E\]^_`abc  +   E? c \ +$# 0!")$ 7t%'(-* ?+/4. B?023E@6;5 U479:=B< i>@AHC xrDFGJOI KMNUP QSTYV WEA[\`Z ]_bca    +    %EB)"4 $%.,#7h&()*+E/013-X2574s6G8t9:<DFECQHIPRSTUVWXYZ[\]^_`abcE{E(E@hEEEҽEE1EXUE wE +sE `E ;E `EEUEE5Ee0EEEEDEEEFEGEHEIEJ.lTmw w wwwwwwwwwwwwwwwwwww w!w"w#w$w%w&w'w(w)w*w+w,w-w.w/w0w1w2w3w4w5w6w7w8w9w:w;w<w=w>w?w@wAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw[w\w]w^w_w`wawbwc  +    endstream endobj startxref -1289899 +1289925 %%EOF diff --git a/docs/src/intro.tex b/docs/src/intro.tex index 0c401174..b1dc6e6a 100644 --- a/docs/src/intro.tex +++ b/docs/src/intro.tex @@ -363,7 +363,7 @@ follows: \item Call the iterative method of choice, e.g. \verb|psb_bicgstab| \end{enumerate} This is the structure of the sample program -\verb|test/pargen/ppde.f90|. +\verb|test/pargen/psb_d_pde3d.f90|. For a simulation in which the same discretization mesh is used over multiple time steps, the following structure may be more appropriate: From ce33f6b6ed779fff28eb23a50690153117b5526b Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Wed, 18 Jul 2018 17:05:54 +0100 Subject: [PATCH 08/26] Fixes for FCG. --- krylov/psb_cfcg.F90 | 4 ++-- krylov/psb_dfcg.F90 | 4 ++-- krylov/psb_sfcg.F90 | 4 ++-- krylov/psb_zfcg.F90 | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/krylov/psb_cfcg.F90 b/krylov/psb_cfcg.F90 index c042571b..1f2d895d 100644 --- a/krylov/psb_cfcg.F90 +++ b/krylov/psb_cfcg.F90 @@ -215,7 +215,7 @@ subroutine psb_cfcg_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') + & a_err='Error during residual') goto 9999 end if @@ -229,7 +229,7 @@ subroutine psb_cfcg_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_spmm(cone,a,v,czero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') + & a_err='Error during residual') goto 9999 end if diff --git a/krylov/psb_dfcg.F90 b/krylov/psb_dfcg.F90 index 90e5b116..bdb336d5 100644 --- a/krylov/psb_dfcg.F90 +++ b/krylov/psb_dfcg.F90 @@ -215,7 +215,7 @@ subroutine psb_dfcg_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') + & a_err='Error during residual') goto 9999 end if @@ -229,7 +229,7 @@ subroutine psb_dfcg_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_spmm(done,a,v,dzero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') + & a_err='Error during residual') goto 9999 end if diff --git a/krylov/psb_sfcg.F90 b/krylov/psb_sfcg.F90 index 1f074371..5b4e6957 100644 --- a/krylov/psb_sfcg.F90 +++ b/krylov/psb_sfcg.F90 @@ -215,7 +215,7 @@ subroutine psb_sfcg_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') + & a_err='Error during residual') goto 9999 end if @@ -229,7 +229,7 @@ subroutine psb_sfcg_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_spmm(sone,a,v,szero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') + & a_err='Error during residual') goto 9999 end if diff --git a/krylov/psb_zfcg.F90 b/krylov/psb_zfcg.F90 index 1e180685..cb9289bd 100644 --- a/krylov/psb_zfcg.F90 +++ b/krylov/psb_zfcg.F90 @@ -215,7 +215,7 @@ subroutine psb_zfcg_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') + & a_err='Error during residual') goto 9999 end if @@ -229,7 +229,7 @@ subroutine psb_zfcg_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_spmm(zone,a,v,zzero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& - & a_err='Error during residue') + & a_err='Error during residual') goto 9999 end if From 663fa5b8e5e7b85f994213c75ac378bd4f22f812 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Fri, 27 Jul 2018 14:36:46 +0100 Subject: [PATCH 09/26] Implement TRIL/TRIU with blocking. --- base/serial/impl/psb_c_base_mat_impl.F90 | 22 ++++++++++++---------- base/serial/impl/psb_d_base_mat_impl.F90 | 22 ++++++++++++---------- base/serial/impl/psb_s_base_mat_impl.F90 | 22 ++++++++++++---------- base/serial/impl/psb_z_base_mat_impl.F90 | 22 ++++++++++++---------- 4 files changed, 48 insertions(+), 40 deletions(-) diff --git a/base/serial/impl/psb_c_base_mat_impl.F90 b/base/serial/impl/psb_c_base_mat_impl.F90 index 954e2143..9a81f286 100644 --- a/base/serial/impl/psb_c_base_mat_impl.F90 +++ b/base/serial/impl/psb_c_base_mat_impl.F90 @@ -645,7 +645,7 @@ subroutine psb_c_base_tril(a,l,info,& logical, intent(in), optional :: rscale,cscale class(psb_c_coo_sparse_mat), optional, intent(out) :: u - integer(psb_ipk_) :: err_act, nzin, nzout, i, j, k + integer(psb_ipk_) :: err_act, nzin, nzout, i, j, k, ibk integer(psb_ipk_) :: imin_, imax_, jmin_, jmax_, mb,nb, diag_, nzlin, nzuin, nz integer(psb_ipk_), allocatable :: ia(:), ja(:) complex(psb_spk_), allocatable :: val(:) @@ -653,6 +653,7 @@ subroutine psb_c_base_tril(a,l,info,& character(len=20) :: name='tril' logical :: rscale_, cscale_ logical, parameter :: debug=.false. + integer(psb_ipk_), parameter :: nbk=8 call psb_erractionsave(err_act) info = psb_success_ @@ -715,12 +716,12 @@ subroutine psb_c_base_tril(a,l,info,& call psb_realloc(max(mb,nb),ia,info) call psb_realloc(max(mb,nb),ja,info) call psb_realloc(max(mb,nb),val,info) - do i=imin_,imax_ - call a%csget(i,i,nzout,ia,ja,val,info,& + do i=imin_,imax_, nbk + ibk = min(nbk,imax_-i+1) + call a%csget(i,i+ibk-1,nzout,ia,ja,val,info,& & jmin=jmin_, jmax=jmax_) do k=1, nzout - j = ja(k) - if (j-i<=diag_) then + if ((ja(k)-ia(k))<=diag_) then nzlin = nzlin + 1 l%ia(nzlin) = ia(k) l%ja(nzlin) = ja(k) @@ -796,7 +797,7 @@ subroutine psb_c_base_triu(a,u,info,& logical, intent(in), optional :: rscale,cscale class(psb_c_coo_sparse_mat), optional, intent(out) :: l - integer(psb_ipk_) :: err_act, nzin, nzout, i, j, k + integer(psb_ipk_) :: err_act, nzin, nzout, i, j, k, ibk integer(psb_ipk_) :: imin_, imax_, jmin_, jmax_, mb,nb, diag_, nzlin, nzuin, nz integer(psb_ipk_), allocatable :: ia(:), ja(:) complex(psb_spk_), allocatable :: val(:) @@ -804,6 +805,7 @@ subroutine psb_c_base_triu(a,u,info,& character(len=20) :: name='triu' logical :: rscale_, cscale_ logical, parameter :: debug=.false. + integer(psb_ipk_), parameter :: nbk=8 call psb_erractionsave(err_act) info = psb_success_ @@ -866,12 +868,12 @@ subroutine psb_c_base_triu(a,u,info,& call psb_realloc(max(mb,nb),ia,info) call psb_realloc(max(mb,nb),ja,info) call psb_realloc(max(mb,nb),val,info) - do i=imin_,imax_ - call a%csget(i,i,nzout,ia,ja,val,info,& + do i=imin_,imax_, nbk + ibk = min(nbk,imax_-i+1) + call a%csget(i,i+ibk-1,nzout,ia,ja,val,info,& & jmin=jmin_, jmax=jmax_) do k=1, nzout - j = ja(k) - if (j-i Date: Mon, 30 Jul 2018 10:02:54 +0100 Subject: [PATCH 10/26] Implement TRIL/TRIU for CSR. --- base/modules/serial/psb_c_csr_mat_mod.f90 | 89 ++++++ base/modules/serial/psb_d_csr_mat_mod.f90 | 89 ++++++ base/modules/serial/psb_s_csr_mat_mod.f90 | 89 ++++++ base/modules/serial/psb_z_csr_mat_mod.f90 | 89 ++++++ base/serial/impl/psb_c_csr_impl.f90 | 313 ++++++++++++++++++++++ base/serial/impl/psb_d_csr_impl.f90 | 313 ++++++++++++++++++++++ base/serial/impl/psb_s_csr_impl.f90 | 313 ++++++++++++++++++++++ base/serial/impl/psb_z_csr_impl.f90 | 313 ++++++++++++++++++++++ 8 files changed, 1608 insertions(+) diff --git a/base/modules/serial/psb_c_csr_mat_mod.f90 b/base/modules/serial/psb_c_csr_mat_mod.f90 index 21a96d68..2d28f696 100644 --- a/base/modules/serial/psb_c_csr_mat_mod.f90 +++ b/base/modules/serial/psb_c_csr_mat_mod.f90 @@ -80,6 +80,8 @@ module psb_c_csr_mat_mod procedure, pass(a) :: aclsum => psb_c_csr_aclsum procedure, pass(a) :: reallocate_nz => psb_c_csr_reallocate_nz procedure, pass(a) :: allocate_mnnz => psb_c_csr_allocate_mnnz + procedure, pass(a) :: tril => psb_c_csr_tril + procedure, pass(a) :: triu => psb_c_csr_triu procedure, pass(a) :: cp_to_coo => psb_c_cp_csr_to_coo procedure, pass(a) :: cp_from_coo => psb_c_cp_csr_from_coo procedure, pass(a) :: cp_to_fmt => psb_c_cp_csr_to_fmt @@ -170,6 +172,93 @@ module psb_c_csr_mat_mod integer(psb_ipk_), intent(in), optional :: ivr(:), ivc(:) end subroutine psb_c_csr_print end interface + ! + !> Function tril: + !! \memberof psb_c_base_sparse_mat + !! \brief Copy the lower triangle, i.e. all entries + !! A(I,J) such that J-I <= DIAG + !! default value is DIAG=0, i.e. lower triangle up to + !! the main diagonal. + !! DIAG=-1 means copy the strictly lower triangle + !! DIAG= 1 means copy the lower triangle plus the first diagonal + !! of the upper triangle. + !! Moreover, apply a clipping by copying entries A(I,J) only if + !! IMIN<=I<=IMAX + !! JMIN<=J<=JMAX + !! + !! \param l the output (sub)matrix + !! \param info return code + !! \param diag [0] the last diagonal (J-I) to be considered. + !! \param imin [1] the minimum row index we are interested in + !! \param imax [a\%get_nrows()] the minimum row index we are interested in + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! \param u [none] copy of the complementary triangle + !! + ! + interface + subroutine psb_c_csr_tril(a,l,info,diag,imin,imax,& + & jmin,jmax,rscale,cscale,u) + import :: psb_ipk_, psb_c_csr_sparse_mat, psb_c_coo_sparse_mat, psb_spk_ + class(psb_c_csr_sparse_mat), intent(in) :: a + class(psb_c_coo_sparse_mat), intent(out) :: l + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_c_coo_sparse_mat), optional, intent(out) :: u + end subroutine psb_c_csr_tril + end interface + + ! + !> Function triu: + !! \memberof psb_c_csr_sparse_mat + !! \brief Copy the upper triangle, i.e. all entries + !! A(I,J) such that DIAG <= J-I + !! default value is DIAG=0, i.e. upper triangle from + !! the main diagonal up. + !! DIAG= 1 means copy the strictly upper triangle + !! DIAG=-1 means copy the upper triangle plus the first diagonal + !! of the lower triangle. + !! Moreover, apply a clipping by copying entries A(I,J) only if + !! IMIN<=I<=IMAX + !! JMIN<=J<=JMAX + !! Optionally copies the lower triangle at the same time + !! + !! \param u the output (sub)matrix + !! \param info return code + !! \param diag [0] the last diagonal (J-I) to be considered. + !! \param imin [1] the minimum row index we are interested in + !! \param imax [a\%get_nrows()] the minimum row index we are interested in + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! \param l [none] copy of the complementary triangle + !! + ! + interface + subroutine psb_c_csr_triu(a,u,info,diag,imin,imax,& + & jmin,jmax,rscale,cscale,l) + import :: psb_ipk_, psb_c_csr_sparse_mat, psb_c_coo_sparse_mat, psb_spk_ + class(psb_c_csr_sparse_mat), intent(in) :: a + class(psb_c_coo_sparse_mat), intent(out) :: u + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_c_coo_sparse_mat), optional, intent(out) :: l + end subroutine psb_c_csr_triu + end interface + !> \memberof psb_c_csr_sparse_mat !! \see psb_c_base_mat_mod::psb_c_base_cp_to_coo diff --git a/base/modules/serial/psb_d_csr_mat_mod.f90 b/base/modules/serial/psb_d_csr_mat_mod.f90 index b3bb27cd..95697f2b 100644 --- a/base/modules/serial/psb_d_csr_mat_mod.f90 +++ b/base/modules/serial/psb_d_csr_mat_mod.f90 @@ -80,6 +80,8 @@ module psb_d_csr_mat_mod procedure, pass(a) :: aclsum => psb_d_csr_aclsum procedure, pass(a) :: reallocate_nz => psb_d_csr_reallocate_nz procedure, pass(a) :: allocate_mnnz => psb_d_csr_allocate_mnnz + procedure, pass(a) :: tril => psb_d_csr_tril + procedure, pass(a) :: triu => psb_d_csr_triu procedure, pass(a) :: cp_to_coo => psb_d_cp_csr_to_coo procedure, pass(a) :: cp_from_coo => psb_d_cp_csr_from_coo procedure, pass(a) :: cp_to_fmt => psb_d_cp_csr_to_fmt @@ -170,6 +172,93 @@ module psb_d_csr_mat_mod integer(psb_ipk_), intent(in), optional :: ivr(:), ivc(:) end subroutine psb_d_csr_print end interface + ! + !> Function tril: + !! \memberof psb_d_base_sparse_mat + !! \brief Copy the lower triangle, i.e. all entries + !! A(I,J) such that J-I <= DIAG + !! default value is DIAG=0, i.e. lower triangle up to + !! the main diagonal. + !! DIAG=-1 means copy the strictly lower triangle + !! DIAG= 1 means copy the lower triangle plus the first diagonal + !! of the upper triangle. + !! Moreover, apply a clipping by copying entries A(I,J) only if + !! IMIN<=I<=IMAX + !! JMIN<=J<=JMAX + !! + !! \param l the output (sub)matrix + !! \param info return code + !! \param diag [0] the last diagonal (J-I) to be considered. + !! \param imin [1] the minimum row index we are interested in + !! \param imax [a\%get_nrows()] the minimum row index we are interested in + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! \param u [none] copy of the complementary triangle + !! + ! + interface + subroutine psb_d_csr_tril(a,l,info,diag,imin,imax,& + & jmin,jmax,rscale,cscale,u) + import :: psb_ipk_, psb_d_csr_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ + class(psb_d_csr_sparse_mat), intent(in) :: a + class(psb_d_coo_sparse_mat), intent(out) :: l + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_d_coo_sparse_mat), optional, intent(out) :: u + end subroutine psb_d_csr_tril + end interface + + ! + !> Function triu: + !! \memberof psb_d_csr_sparse_mat + !! \brief Copy the upper triangle, i.e. all entries + !! A(I,J) such that DIAG <= J-I + !! default value is DIAG=0, i.e. upper triangle from + !! the main diagonal up. + !! DIAG= 1 means copy the strictly upper triangle + !! DIAG=-1 means copy the upper triangle plus the first diagonal + !! of the lower triangle. + !! Moreover, apply a clipping by copying entries A(I,J) only if + !! IMIN<=I<=IMAX + !! JMIN<=J<=JMAX + !! Optionally copies the lower triangle at the same time + !! + !! \param u the output (sub)matrix + !! \param info return code + !! \param diag [0] the last diagonal (J-I) to be considered. + !! \param imin [1] the minimum row index we are interested in + !! \param imax [a\%get_nrows()] the minimum row index we are interested in + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! \param l [none] copy of the complementary triangle + !! + ! + interface + subroutine psb_d_csr_triu(a,u,info,diag,imin,imax,& + & jmin,jmax,rscale,cscale,l) + import :: psb_ipk_, psb_d_csr_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ + class(psb_d_csr_sparse_mat), intent(in) :: a + class(psb_d_coo_sparse_mat), intent(out) :: u + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_d_coo_sparse_mat), optional, intent(out) :: l + end subroutine psb_d_csr_triu + end interface + !> \memberof psb_d_csr_sparse_mat !! \see psb_d_base_mat_mod::psb_d_base_cp_to_coo diff --git a/base/modules/serial/psb_s_csr_mat_mod.f90 b/base/modules/serial/psb_s_csr_mat_mod.f90 index 4ef86720..1f2e6049 100644 --- a/base/modules/serial/psb_s_csr_mat_mod.f90 +++ b/base/modules/serial/psb_s_csr_mat_mod.f90 @@ -80,6 +80,8 @@ module psb_s_csr_mat_mod procedure, pass(a) :: aclsum => psb_s_csr_aclsum procedure, pass(a) :: reallocate_nz => psb_s_csr_reallocate_nz procedure, pass(a) :: allocate_mnnz => psb_s_csr_allocate_mnnz + procedure, pass(a) :: tril => psb_s_csr_tril + procedure, pass(a) :: triu => psb_s_csr_triu procedure, pass(a) :: cp_to_coo => psb_s_cp_csr_to_coo procedure, pass(a) :: cp_from_coo => psb_s_cp_csr_from_coo procedure, pass(a) :: cp_to_fmt => psb_s_cp_csr_to_fmt @@ -170,6 +172,93 @@ module psb_s_csr_mat_mod integer(psb_ipk_), intent(in), optional :: ivr(:), ivc(:) end subroutine psb_s_csr_print end interface + ! + !> Function tril: + !! \memberof psb_s_base_sparse_mat + !! \brief Copy the lower triangle, i.e. all entries + !! A(I,J) such that J-I <= DIAG + !! default value is DIAG=0, i.e. lower triangle up to + !! the main diagonal. + !! DIAG=-1 means copy the strictly lower triangle + !! DIAG= 1 means copy the lower triangle plus the first diagonal + !! of the upper triangle. + !! Moreover, apply a clipping by copying entries A(I,J) only if + !! IMIN<=I<=IMAX + !! JMIN<=J<=JMAX + !! + !! \param l the output (sub)matrix + !! \param info return code + !! \param diag [0] the last diagonal (J-I) to be considered. + !! \param imin [1] the minimum row index we are interested in + !! \param imax [a\%get_nrows()] the minimum row index we are interested in + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! \param u [none] copy of the complementary triangle + !! + ! + interface + subroutine psb_s_csr_tril(a,l,info,diag,imin,imax,& + & jmin,jmax,rscale,cscale,u) + import :: psb_ipk_, psb_s_csr_sparse_mat, psb_s_coo_sparse_mat, psb_spk_ + class(psb_s_csr_sparse_mat), intent(in) :: a + class(psb_s_coo_sparse_mat), intent(out) :: l + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_s_coo_sparse_mat), optional, intent(out) :: u + end subroutine psb_s_csr_tril + end interface + + ! + !> Function triu: + !! \memberof psb_s_csr_sparse_mat + !! \brief Copy the upper triangle, i.e. all entries + !! A(I,J) such that DIAG <= J-I + !! default value is DIAG=0, i.e. upper triangle from + !! the main diagonal up. + !! DIAG= 1 means copy the strictly upper triangle + !! DIAG=-1 means copy the upper triangle plus the first diagonal + !! of the lower triangle. + !! Moreover, apply a clipping by copying entries A(I,J) only if + !! IMIN<=I<=IMAX + !! JMIN<=J<=JMAX + !! Optionally copies the lower triangle at the same time + !! + !! \param u the output (sub)matrix + !! \param info return code + !! \param diag [0] the last diagonal (J-I) to be considered. + !! \param imin [1] the minimum row index we are interested in + !! \param imax [a\%get_nrows()] the minimum row index we are interested in + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! \param l [none] copy of the complementary triangle + !! + ! + interface + subroutine psb_s_csr_triu(a,u,info,diag,imin,imax,& + & jmin,jmax,rscale,cscale,l) + import :: psb_ipk_, psb_s_csr_sparse_mat, psb_s_coo_sparse_mat, psb_spk_ + class(psb_s_csr_sparse_mat), intent(in) :: a + class(psb_s_coo_sparse_mat), intent(out) :: u + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_s_coo_sparse_mat), optional, intent(out) :: l + end subroutine psb_s_csr_triu + end interface + !> \memberof psb_s_csr_sparse_mat !! \see psb_s_base_mat_mod::psb_s_base_cp_to_coo diff --git a/base/modules/serial/psb_z_csr_mat_mod.f90 b/base/modules/serial/psb_z_csr_mat_mod.f90 index a6ec9b36..508012c9 100644 --- a/base/modules/serial/psb_z_csr_mat_mod.f90 +++ b/base/modules/serial/psb_z_csr_mat_mod.f90 @@ -80,6 +80,8 @@ module psb_z_csr_mat_mod procedure, pass(a) :: aclsum => psb_z_csr_aclsum procedure, pass(a) :: reallocate_nz => psb_z_csr_reallocate_nz procedure, pass(a) :: allocate_mnnz => psb_z_csr_allocate_mnnz + procedure, pass(a) :: tril => psb_z_csr_tril + procedure, pass(a) :: triu => psb_z_csr_triu procedure, pass(a) :: cp_to_coo => psb_z_cp_csr_to_coo procedure, pass(a) :: cp_from_coo => psb_z_cp_csr_from_coo procedure, pass(a) :: cp_to_fmt => psb_z_cp_csr_to_fmt @@ -170,6 +172,93 @@ module psb_z_csr_mat_mod integer(psb_ipk_), intent(in), optional :: ivr(:), ivc(:) end subroutine psb_z_csr_print end interface + ! + !> Function tril: + !! \memberof psb_z_base_sparse_mat + !! \brief Copy the lower triangle, i.e. all entries + !! A(I,J) such that J-I <= DIAG + !! default value is DIAG=0, i.e. lower triangle up to + !! the main diagonal. + !! DIAG=-1 means copy the strictly lower triangle + !! DIAG= 1 means copy the lower triangle plus the first diagonal + !! of the upper triangle. + !! Moreover, apply a clipping by copying entries A(I,J) only if + !! IMIN<=I<=IMAX + !! JMIN<=J<=JMAX + !! + !! \param l the output (sub)matrix + !! \param info return code + !! \param diag [0] the last diagonal (J-I) to be considered. + !! \param imin [1] the minimum row index we are interested in + !! \param imax [a\%get_nrows()] the minimum row index we are interested in + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! \param u [none] copy of the complementary triangle + !! + ! + interface + subroutine psb_z_csr_tril(a,l,info,diag,imin,imax,& + & jmin,jmax,rscale,cscale,u) + import :: psb_ipk_, psb_z_csr_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_ + class(psb_z_csr_sparse_mat), intent(in) :: a + class(psb_z_coo_sparse_mat), intent(out) :: l + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_z_coo_sparse_mat), optional, intent(out) :: u + end subroutine psb_z_csr_tril + end interface + + ! + !> Function triu: + !! \memberof psb_z_csr_sparse_mat + !! \brief Copy the upper triangle, i.e. all entries + !! A(I,J) such that DIAG <= J-I + !! default value is DIAG=0, i.e. upper triangle from + !! the main diagonal up. + !! DIAG= 1 means copy the strictly upper triangle + !! DIAG=-1 means copy the upper triangle plus the first diagonal + !! of the lower triangle. + !! Moreover, apply a clipping by copying entries A(I,J) only if + !! IMIN<=I<=IMAX + !! JMIN<=J<=JMAX + !! Optionally copies the lower triangle at the same time + !! + !! \param u the output (sub)matrix + !! \param info return code + !! \param diag [0] the last diagonal (J-I) to be considered. + !! \param imin [1] the minimum row index we are interested in + !! \param imax [a\%get_nrows()] the minimum row index we are interested in + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! \param l [none] copy of the complementary triangle + !! + ! + interface + subroutine psb_z_csr_triu(a,u,info,diag,imin,imax,& + & jmin,jmax,rscale,cscale,l) + import :: psb_ipk_, psb_z_csr_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_ + class(psb_z_csr_sparse_mat), intent(in) :: a + class(psb_z_coo_sparse_mat), intent(out) :: u + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_z_coo_sparse_mat), optional, intent(out) :: l + end subroutine psb_z_csr_triu + end interface + !> \memberof psb_z_csr_sparse_mat !! \see psb_z_base_mat_mod::psb_z_base_cp_to_coo diff --git a/base/serial/impl/psb_c_csr_impl.f90 b/base/serial/impl/psb_c_csr_impl.f90 index 6a46b79e..980bad9e 100644 --- a/base/serial/impl/psb_c_csr_impl.f90 +++ b/base/serial/impl/psb_c_csr_impl.f90 @@ -2233,6 +2233,319 @@ subroutine psb_c_csr_csgetblk(imin,imax,a,b,info,& end subroutine psb_c_csr_csgetblk +! +! CSR implementation of tril/triu +! +subroutine psb_c_csr_tril(a,l,info,& + & diag,imin,imax,jmin,jmax,rscale,cscale,u) + ! Output is always in COO format + use psb_error_mod + use psb_const_mod + use psb_c_csr_mat_mod, psb_protect_name => psb_c_csr_tril + implicit none + + class(psb_c_csr_sparse_mat), intent(in) :: a + class(psb_c_coo_sparse_mat), intent(out) :: l + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_c_coo_sparse_mat), optional, intent(out) :: u + + integer(psb_ipk_) :: err_act, nzin, nzout, i, j, k + integer(psb_ipk_) :: imin_, imax_, jmin_, jmax_, mb,nb, diag_, nzlin, nzuin, nz + integer(psb_ipk_), allocatable :: ia(:), ja(:) + complex(psb_spk_), allocatable :: val(:) + integer(psb_ipk_) :: ierr(5) + character(len=20) :: name='tril' + logical :: rscale_, cscale_ + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(diag)) then + diag_ = diag + else + diag_ = 0 + end if + if (present(imin)) then + imin_ = imin + else + imin_ = 1 + end if + if (present(imax)) then + imax_ = imax + else + imax_ = a%get_nrows() + end if + if (present(jmin)) then + jmin_ = jmin + else + jmin_ = 1 + end if + if (present(jmax)) then + jmax_ = jmax + else + jmax_ = a%get_ncols() + end if + if (present(rscale)) then + rscale_ = rscale + else + rscale_ = .true. + end if + if (present(cscale)) then + cscale_ = cscale + else + cscale_ = .true. + end if + + if (rscale_) then + mb = imax_ - imin_ +1 + else + mb = imax_ + endif + if (cscale_) then + nb = jmax_ - jmin_ +1 + else + nb = jmax_ + endif + + + nz = a%get_nzeros() + call l%allocate(mb,nb,nz) + + if (present(u)) then + nzlin = l%get_nzeros() ! At this point it should be 0 + call u%allocate(mb,nb,nz) + nzuin = u%get_nzeros() ! At this point it should be 0 + associate(val =>a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + j = ja(k) + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)<=diag_) then + nzlin = nzlin + 1 + l%ia(nzlin) = i + l%ja(nzlin) = ja(k) + l%val(nzlin) = val(k) + else + nzuin = nzuin + 1 + u%ia(nzuin) = i + u%ja(nzuin) = ja(k) + u%val(nzuin) = val(k) + end if + end if + end do + end do + end associate + + call l%set_nzeros(nzlin) + call u%set_nzeros(nzuin) + call u%fix(info) + nzout = u%get_nzeros() + if (rscale_) & + & u%ia(1:nzout) = u%ia(1:nzout) - imin_ + 1 + if (cscale_) & + & u%ja(1:nzout) = u%ja(1:nzout) - jmin_ + 1 + if ((diag_ >=-1).and.(imin_ == jmin_)) then + call u%set_triangle(.true.) + call u%set_lower(.false.) + end if + else + nzin = l%get_nzeros() ! At this point it should be 0 + associate(val =>a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)<=diag_) then + nzin = nzin + 1 + l%ia(nzin) = i + l%ja(nzin) = ja(k) + l%val(nzin) = val(k) + end if + end if + end do + end do + end associate + call l%set_nzeros(nzin) + end if + call l%fix(info) + nzout = l%get_nzeros() + if (rscale_) & + & l%ia(1:nzout) = l%ia(1:nzout) - imin_ + 1 + if (cscale_) & + & l%ja(1:nzout) = l%ja(1:nzout) - jmin_ + 1 + + if ((diag_ <= 0).and.(imin_ == jmin_)) then + call l%set_triangle(.true.) + call l%set_lower(.true.) + end if + + if (info /= psb_success_) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + + return + +end subroutine psb_c_csr_tril + +subroutine psb_c_csr_triu(a,u,info,& + & diag,imin,imax,jmin,jmax,rscale,cscale,l) + ! Output is always in COO format + use psb_error_mod + use psb_const_mod + use psb_c_csr_mat_mod, psb_protect_name => psb_c_csr_triu + implicit none + + class(psb_c_csr_sparse_mat), intent(in) :: a + class(psb_c_coo_sparse_mat), intent(out) :: u + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_c_coo_sparse_mat), optional, intent(out) :: l + + integer(psb_ipk_) :: err_act, nzin, nzout, i, j, k + integer(psb_ipk_) :: imin_, imax_, jmin_, jmax_, mb,nb, diag_, nzlin, nzuin, nz + integer(psb_ipk_), allocatable :: ia(:), ja(:) + complex(psb_spk_), allocatable :: val(:) + integer(psb_ipk_) :: ierr(5) + character(len=20) :: name='triu' + logical :: rscale_, cscale_ + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(diag)) then + diag_ = diag + else + diag_ = 0 + end if + if (present(imin)) then + imin_ = imin + else + imin_ = 1 + end if + if (present(imax)) then + imax_ = imax + else + imax_ = a%get_nrows() + end if + if (present(jmin)) then + jmin_ = jmin + else + jmin_ = 1 + end if + if (present(jmax)) then + jmax_ = jmax + else + jmax_ = a%get_ncols() + end if + if (present(rscale)) then + rscale_ = rscale + else + rscale_ = .true. + end if + if (present(cscale)) then + cscale_ = cscale + else + cscale_ = .true. + end if + + if (rscale_) then + mb = imax_ - imin_ +1 + else + mb = imax_ + endif + if (cscale_) then + nb = jmax_ - jmin_ +1 + else + nb = jmax_ + endif + + + nz = a%get_nzeros() + call u%allocate(mb,nb,nz) + + if (present(l)) then + nzuin = u%get_nzeros() ! At this point it should be 0 + call l%allocate(mb,nb,nz) + nzlin = l%get_nzeros() ! At this point it should be 0 + associate(val =>a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + j = ja(k) + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)>=diag_) then + nzin = nzin + 1 + u%ia(nzin) = i + u%ja(nzin) = ja(k) + u%val(nzin) = val(k) + end if + end if + end do + end do + end associate + call u%set_nzeros(nzin) + end if + call u%fix(info) + nzout = u%get_nzeros() + if (rscale_) & + & u%ia(1:nzout) = u%ia(1:nzout) - imin_ + 1 + if (cscale_) & + & u%ja(1:nzout) = u%ja(1:nzout) - jmin_ + 1 + + if ((diag_ >= 0).and.(imin_ == jmin_)) then + call u%set_triangle(.true.) + call u%set_upper(.true.) + end if + + if (info /= psb_success_) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + + return + +end subroutine psb_c_csr_triu subroutine psb_c_csr_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) diff --git a/base/serial/impl/psb_d_csr_impl.f90 b/base/serial/impl/psb_d_csr_impl.f90 index 8e04744b..a4155f8e 100644 --- a/base/serial/impl/psb_d_csr_impl.f90 +++ b/base/serial/impl/psb_d_csr_impl.f90 @@ -2233,6 +2233,319 @@ subroutine psb_d_csr_csgetblk(imin,imax,a,b,info,& end subroutine psb_d_csr_csgetblk +! +! CSR implementation of tril/triu +! +subroutine psb_d_csr_tril(a,l,info,& + & diag,imin,imax,jmin,jmax,rscale,cscale,u) + ! Output is always in COO format + use psb_error_mod + use psb_const_mod + use psb_d_csr_mat_mod, psb_protect_name => psb_d_csr_tril + implicit none + + class(psb_d_csr_sparse_mat), intent(in) :: a + class(psb_d_coo_sparse_mat), intent(out) :: l + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_d_coo_sparse_mat), optional, intent(out) :: u + + integer(psb_ipk_) :: err_act, nzin, nzout, i, j, k + integer(psb_ipk_) :: imin_, imax_, jmin_, jmax_, mb,nb, diag_, nzlin, nzuin, nz + integer(psb_ipk_), allocatable :: ia(:), ja(:) + real(psb_dpk_), allocatable :: val(:) + integer(psb_ipk_) :: ierr(5) + character(len=20) :: name='tril' + logical :: rscale_, cscale_ + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(diag)) then + diag_ = diag + else + diag_ = 0 + end if + if (present(imin)) then + imin_ = imin + else + imin_ = 1 + end if + if (present(imax)) then + imax_ = imax + else + imax_ = a%get_nrows() + end if + if (present(jmin)) then + jmin_ = jmin + else + jmin_ = 1 + end if + if (present(jmax)) then + jmax_ = jmax + else + jmax_ = a%get_ncols() + end if + if (present(rscale)) then + rscale_ = rscale + else + rscale_ = .true. + end if + if (present(cscale)) then + cscale_ = cscale + else + cscale_ = .true. + end if + + if (rscale_) then + mb = imax_ - imin_ +1 + else + mb = imax_ + endif + if (cscale_) then + nb = jmax_ - jmin_ +1 + else + nb = jmax_ + endif + + + nz = a%get_nzeros() + call l%allocate(mb,nb,nz) + + if (present(u)) then + nzlin = l%get_nzeros() ! At this point it should be 0 + call u%allocate(mb,nb,nz) + nzuin = u%get_nzeros() ! At this point it should be 0 + associate(val =>a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + j = ja(k) + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)<=diag_) then + nzlin = nzlin + 1 + l%ia(nzlin) = i + l%ja(nzlin) = ja(k) + l%val(nzlin) = val(k) + else + nzuin = nzuin + 1 + u%ia(nzuin) = i + u%ja(nzuin) = ja(k) + u%val(nzuin) = val(k) + end if + end if + end do + end do + end associate + + call l%set_nzeros(nzlin) + call u%set_nzeros(nzuin) + call u%fix(info) + nzout = u%get_nzeros() + if (rscale_) & + & u%ia(1:nzout) = u%ia(1:nzout) - imin_ + 1 + if (cscale_) & + & u%ja(1:nzout) = u%ja(1:nzout) - jmin_ + 1 + if ((diag_ >=-1).and.(imin_ == jmin_)) then + call u%set_triangle(.true.) + call u%set_lower(.false.) + end if + else + nzin = l%get_nzeros() ! At this point it should be 0 + associate(val =>a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)<=diag_) then + nzin = nzin + 1 + l%ia(nzin) = i + l%ja(nzin) = ja(k) + l%val(nzin) = val(k) + end if + end if + end do + end do + end associate + call l%set_nzeros(nzin) + end if + call l%fix(info) + nzout = l%get_nzeros() + if (rscale_) & + & l%ia(1:nzout) = l%ia(1:nzout) - imin_ + 1 + if (cscale_) & + & l%ja(1:nzout) = l%ja(1:nzout) - jmin_ + 1 + + if ((diag_ <= 0).and.(imin_ == jmin_)) then + call l%set_triangle(.true.) + call l%set_lower(.true.) + end if + + if (info /= psb_success_) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + + return + +end subroutine psb_d_csr_tril + +subroutine psb_d_csr_triu(a,u,info,& + & diag,imin,imax,jmin,jmax,rscale,cscale,l) + ! Output is always in COO format + use psb_error_mod + use psb_const_mod + use psb_d_csr_mat_mod, psb_protect_name => psb_d_csr_triu + implicit none + + class(psb_d_csr_sparse_mat), intent(in) :: a + class(psb_d_coo_sparse_mat), intent(out) :: u + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_d_coo_sparse_mat), optional, intent(out) :: l + + integer(psb_ipk_) :: err_act, nzin, nzout, i, j, k + integer(psb_ipk_) :: imin_, imax_, jmin_, jmax_, mb,nb, diag_, nzlin, nzuin, nz + integer(psb_ipk_), allocatable :: ia(:), ja(:) + real(psb_dpk_), allocatable :: val(:) + integer(psb_ipk_) :: ierr(5) + character(len=20) :: name='triu' + logical :: rscale_, cscale_ + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(diag)) then + diag_ = diag + else + diag_ = 0 + end if + if (present(imin)) then + imin_ = imin + else + imin_ = 1 + end if + if (present(imax)) then + imax_ = imax + else + imax_ = a%get_nrows() + end if + if (present(jmin)) then + jmin_ = jmin + else + jmin_ = 1 + end if + if (present(jmax)) then + jmax_ = jmax + else + jmax_ = a%get_ncols() + end if + if (present(rscale)) then + rscale_ = rscale + else + rscale_ = .true. + end if + if (present(cscale)) then + cscale_ = cscale + else + cscale_ = .true. + end if + + if (rscale_) then + mb = imax_ - imin_ +1 + else + mb = imax_ + endif + if (cscale_) then + nb = jmax_ - jmin_ +1 + else + nb = jmax_ + endif + + + nz = a%get_nzeros() + call u%allocate(mb,nb,nz) + + if (present(l)) then + nzuin = u%get_nzeros() ! At this point it should be 0 + call l%allocate(mb,nb,nz) + nzlin = l%get_nzeros() ! At this point it should be 0 + associate(val =>a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + j = ja(k) + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)>=diag_) then + nzin = nzin + 1 + u%ia(nzin) = i + u%ja(nzin) = ja(k) + u%val(nzin) = val(k) + end if + end if + end do + end do + end associate + call u%set_nzeros(nzin) + end if + call u%fix(info) + nzout = u%get_nzeros() + if (rscale_) & + & u%ia(1:nzout) = u%ia(1:nzout) - imin_ + 1 + if (cscale_) & + & u%ja(1:nzout) = u%ja(1:nzout) - jmin_ + 1 + + if ((diag_ >= 0).and.(imin_ == jmin_)) then + call u%set_triangle(.true.) + call u%set_upper(.true.) + end if + + if (info /= psb_success_) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + + return + +end subroutine psb_d_csr_triu subroutine psb_d_csr_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) diff --git a/base/serial/impl/psb_s_csr_impl.f90 b/base/serial/impl/psb_s_csr_impl.f90 index 5de752b5..3d0da15d 100644 --- a/base/serial/impl/psb_s_csr_impl.f90 +++ b/base/serial/impl/psb_s_csr_impl.f90 @@ -2233,6 +2233,319 @@ subroutine psb_s_csr_csgetblk(imin,imax,a,b,info,& end subroutine psb_s_csr_csgetblk +! +! CSR implementation of tril/triu +! +subroutine psb_s_csr_tril(a,l,info,& + & diag,imin,imax,jmin,jmax,rscale,cscale,u) + ! Output is always in COO format + use psb_error_mod + use psb_const_mod + use psb_s_csr_mat_mod, psb_protect_name => psb_s_csr_tril + implicit none + + class(psb_s_csr_sparse_mat), intent(in) :: a + class(psb_s_coo_sparse_mat), intent(out) :: l + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_s_coo_sparse_mat), optional, intent(out) :: u + + integer(psb_ipk_) :: err_act, nzin, nzout, i, j, k + integer(psb_ipk_) :: imin_, imax_, jmin_, jmax_, mb,nb, diag_, nzlin, nzuin, nz + integer(psb_ipk_), allocatable :: ia(:), ja(:) + real(psb_spk_), allocatable :: val(:) + integer(psb_ipk_) :: ierr(5) + character(len=20) :: name='tril' + logical :: rscale_, cscale_ + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(diag)) then + diag_ = diag + else + diag_ = 0 + end if + if (present(imin)) then + imin_ = imin + else + imin_ = 1 + end if + if (present(imax)) then + imax_ = imax + else + imax_ = a%get_nrows() + end if + if (present(jmin)) then + jmin_ = jmin + else + jmin_ = 1 + end if + if (present(jmax)) then + jmax_ = jmax + else + jmax_ = a%get_ncols() + end if + if (present(rscale)) then + rscale_ = rscale + else + rscale_ = .true. + end if + if (present(cscale)) then + cscale_ = cscale + else + cscale_ = .true. + end if + + if (rscale_) then + mb = imax_ - imin_ +1 + else + mb = imax_ + endif + if (cscale_) then + nb = jmax_ - jmin_ +1 + else + nb = jmax_ + endif + + + nz = a%get_nzeros() + call l%allocate(mb,nb,nz) + + if (present(u)) then + nzlin = l%get_nzeros() ! At this point it should be 0 + call u%allocate(mb,nb,nz) + nzuin = u%get_nzeros() ! At this point it should be 0 + associate(val =>a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + j = ja(k) + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)<=diag_) then + nzlin = nzlin + 1 + l%ia(nzlin) = i + l%ja(nzlin) = ja(k) + l%val(nzlin) = val(k) + else + nzuin = nzuin + 1 + u%ia(nzuin) = i + u%ja(nzuin) = ja(k) + u%val(nzuin) = val(k) + end if + end if + end do + end do + end associate + + call l%set_nzeros(nzlin) + call u%set_nzeros(nzuin) + call u%fix(info) + nzout = u%get_nzeros() + if (rscale_) & + & u%ia(1:nzout) = u%ia(1:nzout) - imin_ + 1 + if (cscale_) & + & u%ja(1:nzout) = u%ja(1:nzout) - jmin_ + 1 + if ((diag_ >=-1).and.(imin_ == jmin_)) then + call u%set_triangle(.true.) + call u%set_lower(.false.) + end if + else + nzin = l%get_nzeros() ! At this point it should be 0 + associate(val =>a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)<=diag_) then + nzin = nzin + 1 + l%ia(nzin) = i + l%ja(nzin) = ja(k) + l%val(nzin) = val(k) + end if + end if + end do + end do + end associate + call l%set_nzeros(nzin) + end if + call l%fix(info) + nzout = l%get_nzeros() + if (rscale_) & + & l%ia(1:nzout) = l%ia(1:nzout) - imin_ + 1 + if (cscale_) & + & l%ja(1:nzout) = l%ja(1:nzout) - jmin_ + 1 + + if ((diag_ <= 0).and.(imin_ == jmin_)) then + call l%set_triangle(.true.) + call l%set_lower(.true.) + end if + + if (info /= psb_success_) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + + return + +end subroutine psb_s_csr_tril + +subroutine psb_s_csr_triu(a,u,info,& + & diag,imin,imax,jmin,jmax,rscale,cscale,l) + ! Output is always in COO format + use psb_error_mod + use psb_const_mod + use psb_s_csr_mat_mod, psb_protect_name => psb_s_csr_triu + implicit none + + class(psb_s_csr_sparse_mat), intent(in) :: a + class(psb_s_coo_sparse_mat), intent(out) :: u + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_s_coo_sparse_mat), optional, intent(out) :: l + + integer(psb_ipk_) :: err_act, nzin, nzout, i, j, k + integer(psb_ipk_) :: imin_, imax_, jmin_, jmax_, mb,nb, diag_, nzlin, nzuin, nz + integer(psb_ipk_), allocatable :: ia(:), ja(:) + real(psb_spk_), allocatable :: val(:) + integer(psb_ipk_) :: ierr(5) + character(len=20) :: name='triu' + logical :: rscale_, cscale_ + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(diag)) then + diag_ = diag + else + diag_ = 0 + end if + if (present(imin)) then + imin_ = imin + else + imin_ = 1 + end if + if (present(imax)) then + imax_ = imax + else + imax_ = a%get_nrows() + end if + if (present(jmin)) then + jmin_ = jmin + else + jmin_ = 1 + end if + if (present(jmax)) then + jmax_ = jmax + else + jmax_ = a%get_ncols() + end if + if (present(rscale)) then + rscale_ = rscale + else + rscale_ = .true. + end if + if (present(cscale)) then + cscale_ = cscale + else + cscale_ = .true. + end if + + if (rscale_) then + mb = imax_ - imin_ +1 + else + mb = imax_ + endif + if (cscale_) then + nb = jmax_ - jmin_ +1 + else + nb = jmax_ + endif + + + nz = a%get_nzeros() + call u%allocate(mb,nb,nz) + + if (present(l)) then + nzuin = u%get_nzeros() ! At this point it should be 0 + call l%allocate(mb,nb,nz) + nzlin = l%get_nzeros() ! At this point it should be 0 + associate(val =>a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + j = ja(k) + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)>=diag_) then + nzin = nzin + 1 + u%ia(nzin) = i + u%ja(nzin) = ja(k) + u%val(nzin) = val(k) + end if + end if + end do + end do + end associate + call u%set_nzeros(nzin) + end if + call u%fix(info) + nzout = u%get_nzeros() + if (rscale_) & + & u%ia(1:nzout) = u%ia(1:nzout) - imin_ + 1 + if (cscale_) & + & u%ja(1:nzout) = u%ja(1:nzout) - jmin_ + 1 + + if ((diag_ >= 0).and.(imin_ == jmin_)) then + call u%set_triangle(.true.) + call u%set_upper(.true.) + end if + + if (info /= psb_success_) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + + return + +end subroutine psb_s_csr_triu subroutine psb_s_csr_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) diff --git a/base/serial/impl/psb_z_csr_impl.f90 b/base/serial/impl/psb_z_csr_impl.f90 index 96eae3a4..7f494a69 100644 --- a/base/serial/impl/psb_z_csr_impl.f90 +++ b/base/serial/impl/psb_z_csr_impl.f90 @@ -2233,6 +2233,319 @@ subroutine psb_z_csr_csgetblk(imin,imax,a,b,info,& end subroutine psb_z_csr_csgetblk +! +! CSR implementation of tril/triu +! +subroutine psb_z_csr_tril(a,l,info,& + & diag,imin,imax,jmin,jmax,rscale,cscale,u) + ! Output is always in COO format + use psb_error_mod + use psb_const_mod + use psb_z_csr_mat_mod, psb_protect_name => psb_z_csr_tril + implicit none + + class(psb_z_csr_sparse_mat), intent(in) :: a + class(psb_z_coo_sparse_mat), intent(out) :: l + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_z_coo_sparse_mat), optional, intent(out) :: u + + integer(psb_ipk_) :: err_act, nzin, nzout, i, j, k + integer(psb_ipk_) :: imin_, imax_, jmin_, jmax_, mb,nb, diag_, nzlin, nzuin, nz + integer(psb_ipk_), allocatable :: ia(:), ja(:) + complex(psb_dpk_), allocatable :: val(:) + integer(psb_ipk_) :: ierr(5) + character(len=20) :: name='tril' + logical :: rscale_, cscale_ + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(diag)) then + diag_ = diag + else + diag_ = 0 + end if + if (present(imin)) then + imin_ = imin + else + imin_ = 1 + end if + if (present(imax)) then + imax_ = imax + else + imax_ = a%get_nrows() + end if + if (present(jmin)) then + jmin_ = jmin + else + jmin_ = 1 + end if + if (present(jmax)) then + jmax_ = jmax + else + jmax_ = a%get_ncols() + end if + if (present(rscale)) then + rscale_ = rscale + else + rscale_ = .true. + end if + if (present(cscale)) then + cscale_ = cscale + else + cscale_ = .true. + end if + + if (rscale_) then + mb = imax_ - imin_ +1 + else + mb = imax_ + endif + if (cscale_) then + nb = jmax_ - jmin_ +1 + else + nb = jmax_ + endif + + + nz = a%get_nzeros() + call l%allocate(mb,nb,nz) + + if (present(u)) then + nzlin = l%get_nzeros() ! At this point it should be 0 + call u%allocate(mb,nb,nz) + nzuin = u%get_nzeros() ! At this point it should be 0 + associate(val =>a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + j = ja(k) + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)<=diag_) then + nzlin = nzlin + 1 + l%ia(nzlin) = i + l%ja(nzlin) = ja(k) + l%val(nzlin) = val(k) + else + nzuin = nzuin + 1 + u%ia(nzuin) = i + u%ja(nzuin) = ja(k) + u%val(nzuin) = val(k) + end if + end if + end do + end do + end associate + + call l%set_nzeros(nzlin) + call u%set_nzeros(nzuin) + call u%fix(info) + nzout = u%get_nzeros() + if (rscale_) & + & u%ia(1:nzout) = u%ia(1:nzout) - imin_ + 1 + if (cscale_) & + & u%ja(1:nzout) = u%ja(1:nzout) - jmin_ + 1 + if ((diag_ >=-1).and.(imin_ == jmin_)) then + call u%set_triangle(.true.) + call u%set_lower(.false.) + end if + else + nzin = l%get_nzeros() ! At this point it should be 0 + associate(val =>a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)<=diag_) then + nzin = nzin + 1 + l%ia(nzin) = i + l%ja(nzin) = ja(k) + l%val(nzin) = val(k) + end if + end if + end do + end do + end associate + call l%set_nzeros(nzin) + end if + call l%fix(info) + nzout = l%get_nzeros() + if (rscale_) & + & l%ia(1:nzout) = l%ia(1:nzout) - imin_ + 1 + if (cscale_) & + & l%ja(1:nzout) = l%ja(1:nzout) - jmin_ + 1 + + if ((diag_ <= 0).and.(imin_ == jmin_)) then + call l%set_triangle(.true.) + call l%set_lower(.true.) + end if + + if (info /= psb_success_) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + + return + +end subroutine psb_z_csr_tril + +subroutine psb_z_csr_triu(a,u,info,& + & diag,imin,imax,jmin,jmax,rscale,cscale,l) + ! Output is always in COO format + use psb_error_mod + use psb_const_mod + use psb_z_csr_mat_mod, psb_protect_name => psb_z_csr_triu + implicit none + + class(psb_z_csr_sparse_mat), intent(in) :: a + class(psb_z_coo_sparse_mat), intent(out) :: u + integer(psb_ipk_),intent(out) :: info + integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax + logical, intent(in), optional :: rscale,cscale + class(psb_z_coo_sparse_mat), optional, intent(out) :: l + + integer(psb_ipk_) :: err_act, nzin, nzout, i, j, k + integer(psb_ipk_) :: imin_, imax_, jmin_, jmax_, mb,nb, diag_, nzlin, nzuin, nz + integer(psb_ipk_), allocatable :: ia(:), ja(:) + complex(psb_dpk_), allocatable :: val(:) + integer(psb_ipk_) :: ierr(5) + character(len=20) :: name='triu' + logical :: rscale_, cscale_ + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(diag)) then + diag_ = diag + else + diag_ = 0 + end if + if (present(imin)) then + imin_ = imin + else + imin_ = 1 + end if + if (present(imax)) then + imax_ = imax + else + imax_ = a%get_nrows() + end if + if (present(jmin)) then + jmin_ = jmin + else + jmin_ = 1 + end if + if (present(jmax)) then + jmax_ = jmax + else + jmax_ = a%get_ncols() + end if + if (present(rscale)) then + rscale_ = rscale + else + rscale_ = .true. + end if + if (present(cscale)) then + cscale_ = cscale + else + cscale_ = .true. + end if + + if (rscale_) then + mb = imax_ - imin_ +1 + else + mb = imax_ + endif + if (cscale_) then + nb = jmax_ - jmin_ +1 + else + nb = jmax_ + endif + + + nz = a%get_nzeros() + call u%allocate(mb,nb,nz) + + if (present(l)) then + nzuin = u%get_nzeros() ! At this point it should be 0 + call l%allocate(mb,nb,nz) + nzlin = l%get_nzeros() ! At this point it should be 0 + associate(val =>a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + j = ja(k) + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)a%val, ja => a%ja, irp=>a%irp) + do i=imin_,imax_ + do k=irp(i),irp(i+1)-1 + if ((jmin_<=j).and.(j<=jmax_)) then + if ((ja(k)-i)>=diag_) then + nzin = nzin + 1 + u%ia(nzin) = i + u%ja(nzin) = ja(k) + u%val(nzin) = val(k) + end if + end if + end do + end do + end associate + call u%set_nzeros(nzin) + end if + call u%fix(info) + nzout = u%get_nzeros() + if (rscale_) & + & u%ia(1:nzout) = u%ia(1:nzout) - imin_ + 1 + if (cscale_) & + & u%ja(1:nzout) = u%ja(1:nzout) - jmin_ + 1 + + if ((diag_ >= 0).and.(imin_ == jmin_)) then + call u%set_triangle(.true.) + call u%set_upper(.true.) + end if + + if (info /= psb_success_) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + + return + +end subroutine psb_z_csr_triu subroutine psb_z_csr_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) From 3d355e1f4ad70c57bdd17d353ddac89a20503dca Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Mon, 30 Jul 2018 11:37:32 +0100 Subject: [PATCH 11/26] Fix checks for Intel MPI wrappers. --- configure | 8749 +++++++++++++++++++++++++++++++++----------------- configure.ac | 2 +- 2 files changed, 5780 insertions(+), 2971 deletions(-) diff --git a/configure b/configure index fb5b5bea..dd2094c8 100755 --- a/configure +++ b/configure @@ -1,22 +1,20 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for PSBLAS 3.5. +# Generated by GNU Autoconf 2.63 for PSBLAS 3.5. # # Report bugs to . # -# -# Copyright (C) 1992-1996, 1998-2012 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. -## -------------------- ## -## 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 @@ -24,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 @@ -40,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 @@ -57,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\\(.*\\)"`;; @@ -80,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 @@ -89,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 ;; @@ -110,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='> ' @@ -131,294 +133,7 @@ export LC_ALL LANGUAGE=C export LANGUAGE -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # 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 -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+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -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 -test -x / || 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 : - export CONFIG_SHELL - # 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 -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+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -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: https://github.com/sfilippone/psblas3/issues about your -$0: system, 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_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_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 @@ -432,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\(//\)$' \| \ @@ -457,133 +168,437 @@ $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 - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # 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 -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' + +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 -as_test_x='test -x' -as_executable_p=as_fn_executable_p +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi -# 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'" +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +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; } +") 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 -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + 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 -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= +fi -# Identity of this package. -PACKAGE_NAME='PSBLAS' -PACKAGE_TARNAME='psblas' -PACKAGE_VERSION='3.5' -PACKAGE_STRING='PSBLAS 3.5' -PACKAGE_BUGREPORT='https://github.com/sfilippone/psblas3/issues' -PACKAGE_URL='' + +: +_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` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME='PSBLAS' +PACKAGE_TARNAME='psblas' +PACKAGE_VERSION='3.5' +PACKAGE_STRING='PSBLAS 3.5' +PACKAGE_BUGREPORT='https://github.com/sfilippone/psblas3/issues' ac_unique_file="base/modules/psb_base_mod.f90" # Factoring default headers for most tests. @@ -665,14 +680,9 @@ LAPACK_LIBS EGREP GREP CPP -AM_BACKSLASH -AM_DEFAULT_VERBOSITY -AM_DEFAULT_V -AM_V am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE -am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE @@ -746,7 +756,6 @@ bindir program_transform_name prefix exec_prefix -PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION @@ -767,7 +776,6 @@ with_library_path with_include_path with_module_path enable_dependency_tracking -enable_silent_rules enable_long_integers with_blas with_blasdir @@ -857,9 +865,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. @@ -904,7 +911,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 @@ -930,7 +938,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 @@ -1134,7 +1143,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 @@ -1150,7 +1160,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 @@ -1180,17 +1191,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 ;; @@ -1199,7 +1210,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 @@ -1207,13 +1218,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 @@ -1236,7 +1249,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' @@ -1250,6 +1264,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 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1264,9 +1280,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. @@ -1305,11 +1323,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 @@ -1349,7 +1369,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 @@ -1411,34 +1431,30 @@ Optional Features: --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-serial Specify whether to enable a fake mpi library to run in serial mode. - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors --enable-long-integers Specify usage of 64 bits integers. 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-ccopt additional CCOPT flags to be added: will prepend + to CCOPT + --with-fcopt additional FCOPT flags to be added: will prepend + to FCOPT --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-blasdir= search for BLAS library in --with-lapack= use LAPACK library @@ -1468,7 +1484,7 @@ Some influential environment variables: LIBS libraries to pass to the linker, e.g. -l 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 @@ -1479,705 +1495,83 @@ it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -PSBLAS configure 3.5 -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 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 - -## ------------------------ ## -## 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 - -} # ac_fn_fc_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 || - 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 || - 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_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 test_array [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 test_array [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 test_array [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 test_array [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 test_array [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_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix -} # ac_fn_c_try_cpp +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix -# 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 + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done 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; } +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +PSBLAS configure 3.5 +generated by GNU Autoconf 2.63 -# 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> +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 -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 https://github.com/sfilippone/psblas3/issues ## -## ----------------------------------------------------------- ##" - ) | 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; } + exit 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.5, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ @@ -2213,8 +1607,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 @@ -2251,9 +1645,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 @@ -2269,13 +1663,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 @@ -2287,9 +1681,11 @@ trap 'exit_status=$? { echo - $as_echo "## ---------------- ## + cat <<\_ASBOX +## ---------------- ## ## Cache variables. ## -## ---------------- ##" +## ---------------- ## +_ASBOX echo # The following way of writing the cache mishandles newlines in values, ( @@ -2298,13 +1694,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 @@ -2323,9 +1719,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 @@ -2338,9 +1736,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 @@ -2354,9 +1754,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 @@ -2370,39 +1772,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 @@ -2411,12 +1811,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 @@ -2427,23 +1822,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";; @@ -2451,7 +1842,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 @@ -2466,11 +1857,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=: ;; ,);; @@ -2480,17 +1871,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 @@ -2502,20 +1893,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' @@ -2534,7 +1948,7 @@ psblas_cv_version="3.5" # 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. @@ -2586,7 +2000,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, @@ -2612,10 +2028,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 @@ -2623,11 +2039,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. @@ -2635,7 +2051,7 @@ case $as_dir/ in #(( # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -2664,7 +2080,7 @@ case $as_dir/ in #(( ;; esac - done +done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir @@ -2680,7 +2096,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}. @@ -2692,7 +2108,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";; @@ -2715,7 +2131,7 @@ case $samplesdir in * ) eval "INSTALL_SAMPLESDIR=$INSTALL_DIR/samples";; esac INSTALL_MODULESDIR=$INSTALL_DIR/modules -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL_DIR $INSTALL_INCLUDEDIR $INSTALL_MODULESDIR $INSTALL_LIBDIR $INSTALL_DOCSDIR $INSTALL_SAMPLESDIR" >&5 +{ $as_echo "$as_me:$LINENO: result: $INSTALL_DIR $INSTALL_INCLUDEDIR $INSTALL_MODULESDIR $INSTALL_LIBDIR $INSTALL_DOCSDIR $INSTALL_SAMPLESDIR" >&5 $as_echo "$INSTALL_DIR $INSTALL_INCLUDEDIR $INSTALL_MODULESDIR $INSTALL_LIBDIR $INSTALL_DOCSDIR $INSTALL_SAMPLESDIR" >&6; } save_FCFLAGS="$FCFLAGS"; @@ -2728,9 +2144,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 @@ -2741,24 +2157,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 - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + 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 @@ -2772,9 +2188,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 @@ -2785,24 +2201,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 - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + 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 @@ -2815,7 +2231,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 @@ -2825,32 +2241,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 @@ -2860,8 +2289,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: @@ -2877,17 +2306,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, @@ -2904,7 +2333,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 @@ -2923,41 +2352,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 @@ -2972,93 +2444,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 @@ -3071,14 +2494,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 @@ -3086,12 +2513,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 @@ -3099,44 +2526,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" @@ -3151,11 +2620,6 @@ else fi fi -if test $ac_compiler_gnu = yes; then - GFC=yes -else - GFC= -fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3174,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_CC+:} false; then : +if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then @@ -3187,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 - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + 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 @@ -3218,9 +2682,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 @@ -3231,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 - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + 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 @@ -3261,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 @@ -3270,42 +2734,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 @@ -3319,16 +2803,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 @@ -3337,16 +2842,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 @@ -3357,11 +2866,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 @@ -3372,12 +2905,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 @@ -3388,17 +2945,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 @@ -3415,18 +2997,23 @@ 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 -struct stat; +#include +#include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -3478,9 +3065,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 @@ -3491,111 +3101,53 @@ 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' -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 - -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` - -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 whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int -main () -{ - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -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 - CFLAGS="$save_CFLAGS"; # 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 - case $ac_cv_prog_cc_stdc in #( - no) : - ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #( - *) : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 + case $ac_cv_prog_cc_stdc in + no) ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; + *) { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C99" >&5 $as_echo_n "checking for $CC option to accept ISO C99... " >&6; } -if ${ac_cv_prog_cc_c99+:} false; then : +if test "${ac_cv_prog_cc_c99+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c99=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 @@ -3734,12 +3286,35 @@ main () return 0; } _ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99 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_c99=$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_c99" != "xno" && break done @@ -3750,31 +3325,36 @@ fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c99" 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_c99" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 + { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c99" >&5 $as_echo "$ac_cv_prog_cc_c99" >&6; } ;; esac -if test "x$ac_cv_prog_cc_c99" != xno; then : +if test "x$ac_cv_prog_cc_c99" != xno; then ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 else - { $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 -struct stat; +#include +#include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -3826,9 +3406,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 @@ -3839,45 +3442,47 @@ 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 : +if test "x$ac_cv_prog_cc_c89" != xno; then ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 else ac_cv_prog_cc_stdc=no fi + fi + ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5 + { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO Standard C" >&5 $as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; } - if ${ac_cv_prog_cc_stdc+:} false; then : + if test "${ac_cv_prog_cc_stdc+set}" = set; then $as_echo_n "(cached) " >&6 fi - case $ac_cv_prog_cc_stdc in #( - no) : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; #( - '') : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; #( - *) : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5 + case $ac_cv_prog_cc_stdc in + no) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + '') { $as_echo "$as_me:$LINENO: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + *) { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 $as_echo "$ac_cv_prog_cc_stdc" >&6; } ;; esac + if test "x$ac_cv_prog_cc_stdc" == "xno" ; then - as_fn_error $? "Problem : Need a C99 compiler ! " "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Problem : Need a C99 compiler ! " >&5 +$as_echo "$as_me: error: Problem : Need a C99 compiler ! " >&2;} + { (exit 1); exit 1; }; } else C99OPT="$ac_cv_prog_cc_stdc"; fi @@ -3890,10 +3495,10 @@ fi # Note: Someday we will contemplate a fake MPI - configured version of PSBLAS ############################################################################### # First check whether the user required our serial (fake) mpi. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we want serial mpi stubs" >&5 +{ $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"; @@ -3901,11 +3506,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 @@ -3925,13 +3530,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "X$MPICC" = "X" ; then # This is our MPICC compiler preference: it will override ACX_MPI's first try. - for ac_prog in mpxlc mpcc mpiicc mpicc cc + for ac_prog in mpxlc mpiicc mpcc mpicc cc 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 @@ -3942,24 +3547,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 - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + 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 @@ -3978,9 +3583,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 @@ -3991,24 +3596,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 - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + 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 @@ -4023,22 +3628,110 @@ 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 : + { $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. @@ -4056,31 +3749,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. @@ -4098,27 +3820,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 @@ -4129,14 +3880,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 @@ -4146,27 +3918,33 @@ 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 - case $ac_cv_prog_cc_stdc in #( - no) : - ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #( - *) : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 + case $ac_cv_prog_cc_stdc in + no) ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; + *) { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C99" >&5 $as_echo_n "checking for $CC option to accept ISO C99... " >&6; } -if ${ac_cv_prog_cc_c99+:} false; then : +if test "${ac_cv_prog_cc_c99+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c99=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 @@ -4305,12 +4083,35 @@ main () return 0; } _ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99 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_c99=$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_c99" != "xno" && break done @@ -4321,31 +4122,36 @@ fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c99" 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_c99" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 + { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c99" >&5 $as_echo "$ac_cv_prog_cc_c99" >&6; } ;; esac -if test "x$ac_cv_prog_cc_c99" != xno; then : +if test "x$ac_cv_prog_cc_c99" != xno; then ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 else - { $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 -struct stat; +#include +#include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -4397,9 +4203,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 @@ -4410,44 +4239,44 @@ 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 : +if test "x$ac_cv_prog_cc_c89" != xno; then ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 else ac_cv_prog_cc_stdc=no fi + fi + ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5 + { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO Standard C" >&5 $as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; } - if ${ac_cv_prog_cc_stdc+:} false; then : + if test "${ac_cv_prog_cc_stdc+set}" = set; then $as_echo_n "(cached) " >&6 fi - case $ac_cv_prog_cc_stdc in #( - no) : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; #( - '') : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; #( - *) : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5 + case $ac_cv_prog_cc_stdc in + no) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + '') { $as_echo "$as_me:$LINENO: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + *) { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 $as_echo "$ac_cv_prog_cc_stdc" >&6; } ;; esac + 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' @@ -4460,9 +4289,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 @@ -4473,24 +4302,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 - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + 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 @@ -4510,9 +4339,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 @@ -4523,24 +4352,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 - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + 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 @@ -4555,159 +4384,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 @@ -4717,11 +4692,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 @@ -4744,11 +4723,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 ############################################################################### @@ -4756,54 +4739,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 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 @@ -4811,36 +4794,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 @@ -4848,54 +4831,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 @@ -4910,9 +4893,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 @@ -4923,24 +4906,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 - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + 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 @@ -4950,9 +4933,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 @@ -4963,24 +4946,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 - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + 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 @@ -4989,7 +4972,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 @@ -5000,75 +4983,70 @@ else fi -am__api_version='1.15' +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 +echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. 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 +# Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # 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 - fi - if test "$2" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # 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_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 ) 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; } -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi - -rm -f conftest.file - test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. @@ -5079,6 +5057,9 @@ test "$program_suffix" != NONE && ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) @@ -5088,15 +5069,15 @@ if test x"${MISSING+set}" != xset; then esac fi # Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " +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: WARNING: 'missing' script is too old or missing" >&2;} + { $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 -if test x"${install_sh+set}" != xset; then +if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -5105,17 +5086,17 @@ if test x"${install_sh+set}" != xset; then esac fi -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. +# will honor the `STRIP' environment variable to overrule this program. 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 @@ -5126,24 +5107,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 - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + 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 @@ -5153,9 +5134,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 @@ -5166,24 +5147,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 - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + 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 @@ -5192,7 +5173,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 @@ -5205,10 +5186,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 @@ -5216,9 +5197,9 @@ 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 - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + { 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 #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ @@ -5228,12 +5209,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 @@ -5241,19 +5221,26 @@ 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" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + 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 @@ -5264,24 +5251,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 - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + 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 @@ -5289,11 +5276,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 @@ -5301,7 +5288,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;; @@ -5311,11 +5298,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 @@ -5341,14 +5328,14 @@ 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= _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. +# Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include @@ -5369,19 +5356,18 @@ 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 if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' - am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= @@ -5392,52 +5378,15 @@ else fi -# Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=1;; -esac -am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AM_BACKSLASH='\' - if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." 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 @@ -5481,42 +5430,30 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -mkdir_p='$(MKDIR_P)' - -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar pax cpio none' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' +AMTAR=${AMTAR-"${am_missing_run}tar"} +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 # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -5550,16 +5487,16 @@ else : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with '-c' and '-o' for the sake of the "dashmstdout" + # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -5568,16 +5505,16 @@ else test "$am__universal" = false || continue ;; nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -5616,7 +5553,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 @@ -5632,48 +5569,6 @@ fi -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi -fi - @@ -5683,7 +5578,7 @@ fi psblas_cv_fc="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU Fortran" >&5 +{ $as_echo "$as_me:$LINENO: checking for GNU Fortran" >&5 $as_echo_n "checking for GNU Fortran... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -5693,7 +5588,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='F90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program main #ifdef __GNUC__ @@ -5703,17 +5598,38 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu #endif 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; } psblas_cv_fc="gcc" 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; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -5723,7 +5639,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Cray Fortran" >&5 +{ $as_echo "$as_me:$LINENO: checking for Cray Fortran" >&5 $as_echo_n "checking for Cray Fortran... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -5733,7 +5649,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='F90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program main #ifdef _CRAYFTN @@ -5743,17 +5659,38 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu #endif 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; } psblas_cv_fc="cray" 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; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -5794,12 +5731,12 @@ 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 if test "X$psblas_cv_fc" == "Xgcc" ; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for recent GNU Fortran" >&5 +{ $as_echo "$as_me:$LINENO: checking for recent GNU Fortran" >&5 $as_echo_n "checking for recent GNU Fortran... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -5809,7 +5746,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='F90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program main #if ( __GNUC__ >= 4 && __GNUC_MINOR__ >= 8 ) || ( __GNUC__ > 4 ) @@ -5819,20 +5756,43 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu #endif 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 - { $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; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Sorry, we require GNU Fortran version 4.8.4 or later." >&5 + { $as_echo "$as_me:$LINENO: Sorry, we require GNU Fortran version 4.8.4 or later." >&5 $as_echo "$as_me: Sorry, we require GNU Fortran version 4.8.4 or later." >&6;} echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - as_fn_error $? "Bailing out." "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Bailing out." >&5 +$as_echo "$as_me: error: Bailing out." >&2;} + { (exit 1); exit 1; }; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -5860,14 +5820,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 @@ -5882,7 +5842,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 @@ -5891,34 +5855,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 @@ -5930,7 +5938,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 @@ -5941,7 +5949,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 @@ -5950,40 +5962,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 @@ -5993,9 +6052,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 @@ -6006,10 +6065,10 @@ 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" - as_fn_executable_p "$ac_path_GREP" || continue + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in @@ -6026,7 +6085,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" @@ -6041,24 +6100,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 @@ -6072,10 +6133,10 @@ 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_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue + { 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 @@ -6092,7 +6153,7 @@ case `"$ac_path_EGREP" --version 2>&1` in $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 + 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" @@ -6107,10 +6168,12 @@ esac $ac_path_EGREP_found && break 3 done 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 + { { $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 @@ -6118,164 +6181,612 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +{ $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:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +{ $as_echo "$as_me:$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 : +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 + +#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 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +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 + +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 -/* end confdefs.h. */ -#include -#include -#include -#include + 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. */ +$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 +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 + $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 + 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 *))) < 0)]; +test_array [0] = 0 ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +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. */ -#include +$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 (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_lo=$ac_mid; break 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_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 -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 - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done else - ac_cv_header_stdc=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= fi -rm -f conftest* +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +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 +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))) +$ac_includes_default int main () { - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; +static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)]; +test_array [0] = 0 + + ; return 0; } _ACEOF -if ac_fn_c_try_run "$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_hi=$ac_mid 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 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr '(' $ac_mid ')' + 1` fi +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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +static long int longval () { return (long int) (sizeof (void *)); } +static unsigned long int ulongval () { return (long int) (sizeof (void *)); } +#include +#include +int +main () +{ + 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; -# 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 + ; + 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 + 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 +rm -f conftest.val +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_void_p" >&5 $as_echo "$ac_cv_sizeof_void_p" >&6; } @@ -6294,12 +6805,12 @@ 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 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 @@ -6307,7 +6818,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 @@ -6322,7 +6850,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. @@ -6340,11 +6872,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} @@ -6372,7 +6931,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. @@ -6390,11 +6953,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' @@ -6403,16 +6993,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 @@ -6424,15 +7014,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 @@ -6450,7 +7047,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 @@ -6485,7 +7082,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; } ############################################################################### @@ -6604,9 +7201,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} @@ -6620,7 +7217,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 @@ -6630,7 +7227,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'` @@ -6640,8 +7254,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 @@ -6653,12 +7271,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} @@ -6673,7 +7291,7 @@ done mkdir tmpdir_$i cd tmpdir_$i ac_ext='f90'; -cat > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF module conftest_module contains @@ -6682,10 +7300,33 @@ cat > conftest.$ac_ext <<_ACEOF end subroutine conftest_routine end module conftest_module -_ACEOF -if ac_fn_fc_try_compile "$LINENO"; then : +_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_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" @@ -6693,7 +7334,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 @@ -6701,16 +7342,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_cv_f90_modflag" = "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' @@ -6720,7 +7386,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%% *}" @@ -6742,7 +7408,7 @@ fi if test x"$pac_cv_serial_mpi" == x"yes" ; then FDEFINES="$psblas_cv_define_prepend-DSERIAL_MPI $psblas_cv_define_prepend-DMPI_MOD $FDEFINES"; else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking MPI Fortran 2008 interface" >&5 + { $as_echo "$as_me:$LINENO: checking MPI Fortran 2008 interface" >&5 $as_echo_n "checking MPI Fortran 2008 interface... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -6752,25 +7418,46 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='F90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program test use mpi_f08 end program test _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; } pac_cv_mpi_f08="yes"; : 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; } pac_cv_mpi_f08="no"; echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -6782,7 +7469,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test x"$pac_cv_mpi_f08" == x"yes" ; then FDEFINES="$psblas_cv_define_prepend-DMPI_MOD $FDEFINES"; else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran MPI mod" >&5 + { $as_echo "$as_me:$LINENO: checking for Fortran MPI mod" >&5 $as_echo_n "checking for Fortran MPI mod... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -6792,23 +7479,44 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='F90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program test use mpi end program test _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; } FDEFINES="$psblas_cv_define_prepend-DMPI_MOD $FDEFINES" 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; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 FDEFINES="$psblas_cv_define_prepend-DMPI_H $FDEFINES" fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -6821,10 +7529,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu 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"; @@ -6832,11 +7540,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 @@ -6854,7 +7562,7 @@ fi # # Critical features # -{ $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; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -6864,7 +7572,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='F90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF module conftest type outer @@ -6916,19 +7624,43 @@ program testtr15581 end program testtr15581 _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 - { $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; } 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.8." "$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.8." >&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.8." >&2;} + { (exit 1); exit 1; }; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -6941,7 +7673,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu 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; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -6951,7 +7683,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='F90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program conftest type foo @@ -6963,19 +7695,43 @@ program conftest type(bar) :: barvar end program conftest _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 - { $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; } 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.8." "$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.8." >&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.8." >&2;} + { (exit 1); exit 1; }; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -6985,7 +7741,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $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; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -6995,7 +7751,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='F90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF module conftest_mod type foo @@ -7026,19 +7782,43 @@ program conftest type(foo) :: foovar end program conftest _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 - { $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; } 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.8." "$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.8." >&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.8." >&2;} + { (exit 1); exit 1; }; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7048,7 +7828,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $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; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -7058,7 +7838,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='f90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program xtt type foo @@ -7075,19 +7855,43 @@ program xtt end program xtt _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 - { $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; } 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.8." "$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.8." >&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.8." >&2;} + { (exit 1); exit 1; }; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7097,7 +7901,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran MOVE_ALLOC intrinsic" >&5 +{ $as_echo "$as_me:$LINENO: checking support for Fortran MOVE_ALLOC intrinsic" >&5 $as_echo_n "checking support for Fortran MOVE_ALLOC intrinsic... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -7105,7 +7909,7 @@ ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_ext='f90'; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program test_move_alloc integer, allocatable :: a(:), b(:) allocate(a(3)) @@ -7114,19 +7918,43 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu print *, b end program test_move_alloc _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 - { $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; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - 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.8." "$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.8." >&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.8." >&2;} + { (exit 1); exit 1; }; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7136,7 +7964,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran ISO_C_BINDING module" >&5 +{ $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; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -7146,25 +7974,49 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='f90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program conftest use iso_c_binding end program conftest _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 - { $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; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - as_fn_error $? "Sorry, cannot build PSBLAS without support for ISO_C_BINDING. - Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8." "$LINENO" 5 + { { $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.8." >&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.8." >&2;} + { (exit 1); exit 1; }; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7174,7 +8026,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran SAME_TYPE_AS" >&5 +{ $as_echo "$as_me:$LINENO: checking support for Fortran SAME_TYPE_AS" >&5 $as_echo_n "checking support for Fortran SAME_TYPE_AS... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -7184,7 +8036,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='f90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program stt type foo @@ -7201,19 +8053,43 @@ program stt write(*,*) 'nfv2 == nfv1? ', same_type_as(nfv2,nfv1) end program stt _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 - { $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; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - as_fn_error $? "Sorry, cannot build PSBLAS without support for SAME_TYPE_AS. - Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8." "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Sorry, cannot build PSBLAS without support for SAME_TYPE_AS. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8." >&5 +$as_echo "$as_me: error: Sorry, cannot build PSBLAS without support for SAME_TYPE_AS. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8." >&2;} + { (exit 1); exit 1; }; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7223,7 +8099,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran EXTENDS_TYPE_OF" >&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; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -7233,7 +8109,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='f90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program xtt type foo @@ -7248,19 +8124,43 @@ program xtt write(*,*) 'nfv1 extends foov? ', extends_type_of(nfv1,foov) end program xtt _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 - { $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; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - as_fn_error $? "Sorry, cannot build PSBLAS without support for EXTENDS_TYPE_OF. - Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8." "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Sorry, cannot build PSBLAS without support for EXTENDS_TYPE_OF. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8." >&5 +$as_echo "$as_me: error: Sorry, cannot build PSBLAS without support for EXTENDS_TYPE_OF. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8." >&2;} + { (exit 1); exit 1; }; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7270,7 +8170,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran MOLD= allocation" >&5 +{ $as_echo "$as_me:$LINENO: checking support for Fortran MOLD= allocation" >&5 $as_echo_n "checking support for Fortran MOLD= allocation... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -7280,7 +8180,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='f90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program xtt type foo @@ -7297,19 +8197,43 @@ program xtt end program xtt _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 - { $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; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - as_fn_error $? "Sorry, cannot build PSBLAS without support for MOLD= allocation. - Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8." "$LINENO" 5 + { { $as_echo "$as_me:$LINENO: error: Sorry, cannot build PSBLAS without support for MOLD= allocation. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8." >&5 +$as_echo "$as_me: error: Sorry, cannot build PSBLAS without support for MOLD= allocation. + Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8." >&2;} + { (exit 1); exit 1; }; } fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7323,7 +8247,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # Optional features # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran VOLATILE" >&5 +{ $as_echo "$as_me:$LINENO: checking support for Fortran VOLATILE" >&5 $as_echo_n "checking support for Fortran VOLATILE... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -7333,23 +8257,44 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='F90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program conftest integer, volatile :: i, j end program conftest _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; } FDEFINES="$psblas_cv_define_prepend-DHAVE_VOLATILE $FDEFINES" 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; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7359,7 +8304,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking test GENERIC interfaces" >&5 +{ $as_echo "$as_me:$LINENO: checking test GENERIC interfaces" >&5 $as_echo_n "checking test GENERIC interfaces... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -7369,7 +8314,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='F90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF module conftest @@ -7385,18 +8330,39 @@ module conftest end module conftest _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 - { $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; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 FDEFINES="$psblas_cv_define_prepend-DHAVE_BUGGY_GENERICS $FDEFINES" fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7406,7 +8372,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran FLUSH statement" >&5 +{ $as_echo "$as_me:$LINENO: checking support for Fortran FLUSH statement" >&5 $as_echo_n "checking support for Fortran FLUSH statement... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -7416,7 +8382,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='f90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program conftest integer :: iunit=10 @@ -7426,17 +8392,38 @@ program conftest close(10) end program conftest _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; } FDEFINES="$psblas_cv_define_prepend-DHAVE_FLUSH_STMT $FDEFINES" 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; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7446,7 +8433,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ISO_FORTRAN_ENV" >&5 +{ $as_echo "$as_me:$LINENO: checking support for ISO_FORTRAN_ENV" >&5 $as_echo_n "checking support for ISO_FORTRAN_ENV... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -7456,23 +8443,44 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='f90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF program test use iso_fortran_env end program test _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; } FDEFINES="$psblas_cv_define_prepend-DHAVE_ISO_FORTRAN_ENV $FDEFINES" 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; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7482,7 +8490,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran FINAL" >&5 +{ $as_echo "$as_me:$LINENO: checking support for Fortran FINAL" >&5 $as_echo_n "checking support for Fortran FINAL... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' @@ -7492,7 +8500,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' ac_ext='f90' ac_fc=${MPIFC-$FC}; - cat > conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF module conftest_mod type foo @@ -7513,17 +8521,38 @@ program conftest type(foo) :: foovar end program conftest _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; } FDEFINES="$psblas_cv_define_prepend-DHAVE_FINAL $FDEFINES" 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; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7587,7 +8616,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 @@ -7599,7 +8628,7 @@ case $with_blas in esac # Check whether --with-blasdir was given. -if test "${with_blasdir+set}" = set; then : +if test "${with_blasdir+set}" = set; then withval=$with_blasdir; fi @@ -7625,21 +8654,46 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu if test $pac_blas_ok = no; then if test "x$BLAS_LIBS" != x; then save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $BLAS_LIBDIR $LIBS" - { $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 + +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 @@ -7654,14 +8708,18 @@ 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 ATL_xerbla in -latlas" >&5 + { $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. @@ -7679,61 +8737,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. @@ -7751,18 +8863,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 $BLAS_LIBDIR" fi @@ -7780,14 +8917,18 @@ 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 ATL_xerbla in -lsatlas" >&5 + { $as_echo "$as_me:$LINENO: checking for ATL_xerbla in -lsatlas" >&5 $as_echo_n "checking for ATL_xerbla in -lsatlas... " >&6; } -if ${ac_cv_lib_satlas_ATL_xerbla+:} false; then : +if test "${ac_cv_lib_satlas_ATL_xerbla+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsatlas $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. @@ -7805,61 +8946,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_satlas_ATL_xerbla=yes else - ac_cv_lib_satlas_ATL_xerbla=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_satlas_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_satlas_ATL_xerbla" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_satlas_ATL_xerbla" >&5 $as_echo "$ac_cv_lib_satlas_ATL_xerbla" >&6; } -if test "x$ac_cv_lib_satlas_ATL_xerbla" = xyes; then : +if test "x$ac_cv_lib_satlas_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 -lsatlas" >&5 + { $as_echo "$as_me:$LINENO: checking for sgemm in -lsatlas" >&5 $as_echo_n "checking for sgemm in -lsatlas... " >&6; } -if ${ac_cv_lib_satlas_sgemm+:} false; then : +if test "${ac_cv_lib_satlas_sgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsatlas -lsatlas $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_satlas_sgemm=yes else - ac_cv_lib_satlas_sgemm=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_satlas_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_satlas_sgemm" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_satlas_sgemm" >&5 $as_echo "$ac_cv_lib_satlas_sgemm" >&6; } -if test "x$ac_cv_lib_satlas_sgemm" = xyes; then : +if test "x$ac_cv_lib_satlas_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 -lsatlas" >&5 + { $as_echo "$as_me:$LINENO: checking for cblas_dgemm in -lsatlas" >&5 $as_echo_n "checking for cblas_dgemm in -lsatlas... " >&6; } -if ${ac_cv_lib_satlas_cblas_dgemm+:} false; then : +if test "${ac_cv_lib_satlas_cblas_dgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsatlas -lsatlas $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. @@ -7877,18 +9072,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_satlas_cblas_dgemm=yes else - ac_cv_lib_satlas_cblas_dgemm=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_satlas_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_satlas_cblas_dgemm" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_satlas_cblas_dgemm" >&5 $as_echo "$ac_cv_lib_satlas_cblas_dgemm" >&6; } -if test "x$ac_cv_lib_satlas_cblas_dgemm" = xyes; then : +if test "x$ac_cv_lib_satlas_cblas_dgemm" = x""yes; then pac_blas_ok=yes BLAS_LIBS="-lsatlas $BLAS_LIBDIR" fi @@ -7907,78 +9127,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 $BLAS_LIBDIR" fi @@ -7996,30 +9291,55 @@ 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 -lopenblas" >&5 + { $as_echo "$as_me:$LINENO: checking for sgemm in -lopenblas" >&5 $as_echo_n "checking for sgemm in -lopenblas... " >&6; } -if ${ac_cv_lib_openblas_sgemm+:} false; then : +if test "${ac_cv_lib_openblas_sgemm+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lopenblas $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_openblas_sgemm=yes else - ac_cv_lib_openblas_sgemm=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_openblas_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_openblas_sgemm" >&5 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_openblas_sgemm" >&5 $as_echo "$ac_cv_lib_openblas_sgemm" >&6; } -if test "x$ac_cv_lib_openblas_sgemm" = xyes; then : +if test "x$ac_cv_lib_openblas_sgemm" = x""yes; then pac_blas_ok=yes;BLAS_LIBS="-lopenblas $BLAS_LIBDIR" fi @@ -8032,62 +9352,118 @@ if test $pac_blas_ok = no; then # 64 bit if test $host_cpu = x86_64; then as_ac_Lib=`$as_echo "ac_cv_lib_mkl_gf_lp64_$sgemm" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -lmkl_gf_lp64" >&5 +{ $as_echo "$as_me:$LINENO: checking for $sgemm in -lmkl_gf_lp64" >&5 $as_echo_n "checking for $sgemm in -lmkl_gf_lp64... " >&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="-lmkl_gf_lp64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread $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 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="-lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread $BLAS_LIBDIR" fi # 32 bit elif test $host_cpu = i686; then as_ac_Lib=`$as_echo "ac_cv_lib_mkl_gf_$sgemm" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -lmkl_gf" >&5 +{ $as_echo "$as_me:$LINENO: checking for $sgemm in -lmkl_gf" >&5 $as_echo_n "checking for $sgemm in -lmkl_gf... " >&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="-lmkl_gf -lmkl_gf -lmkl_sequential -lmkl_core -lpthread $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 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="-lmkl_gf -lmkl_sequential -lmkl_core -lpthread $BLAS_LIBDIR" fi @@ -8097,62 +9473,118 @@ fi # 64-bit if test $host_cpu = x86_64; then as_ac_Lib=`$as_echo "ac_cv_lib_mkl_intel_lp64_$sgemm" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -lmkl_intel_lp64" >&5 +{ $as_echo "$as_me:$LINENO: checking for $sgemm in -lmkl_intel_lp64" >&5 $as_echo_n "checking for $sgemm in -lmkl_intel_lp64... " >&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="-lmkl_intel_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread $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 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="-lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread $BLAS_LIBDIR" fi # 32-bit elif test $host_cpu = i686; then as_ac_Lib=`$as_echo "ac_cv_lib_mkl_intel_$sgemm" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -lmkl_intel" >&5 +{ $as_echo "$as_me:$LINENO: checking for $sgemm in -lmkl_intel" >&5 $as_echo_n "checking for $sgemm in -lmkl_intel... " >&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="-lmkl_intel -lmkl_intel -lmkl_sequential -lmkl_core -lpthread $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 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="-lmkl_intel -lmkl_sequential -lmkl_core -lpthread $BLAS_LIBDIR" fi @@ -8162,31 +9594,59 @@ fi # Old versions of MKL if test $pac_blas_ok = no; then as_ac_Lib=`$as_echo "ac_cv_lib_mkl_$sgemm" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -lmkl" >&5 +{ $as_echo "$as_me:$LINENO: checking for $sgemm in -lmkl" >&5 $as_echo_n "checking for $sgemm in -lmkl... " >&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="-lmkl -lguide -lpthread $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 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="-lmkl -lguide -lpthread $BLAS_LIBDIR" fi @@ -8195,48 +9655,100 @@ fi # BLAS in Apple vecLib library? if test $pac_blas_ok = no; then save_LIBS="$LIBS"; LIBS="-framework vecLib $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sgemm in -framework vecLib" >&5 + { $as_echo "$as_me:$LINENO: checking for $sgemm in -framework vecLib" >&5 $as_echo_n "checking for $sgemm in -framework vecLib... " >&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;BLAS_LIBS="-framework vecLib $BLAS_LIBDIR" +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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_blas_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_blas_ok" >&5 $as_echo "$pac_blas_ok" >&6; } LIBS="$save_LIBS" fi # BLAS in Alpha CXML library? if test $pac_blas_ok = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sgemm in -lcxml" >&5 + { $as_echo "$as_me:$LINENO: checking for sgemm in -lcxml" >&5 $as_echo_n "checking for sgemm in -lcxml... " >&6; } -if ${ac_cv_lib_cxml_sgemm+:} false; then : +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 > 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_cxml_sgemm=yes else - ac_cv_lib_cxml_sgemm=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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cxml_sgemm" >&5 +{ $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" = xyes; then : +if test "x$ac_cv_lib_cxml_sgemm" = x""yes; then pac_blas_ok=yes;BLAS_LIBS="-lcxml $BLAS_LIBDIR" fi @@ -8244,30 +9756,55 @@ fi # BLAS in Alpha DXML library? (now called CXML, see above) if test $pac_blas_ok = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sgemm in -ldxml" >&5 + { $as_echo "$as_me:$LINENO: checking for sgemm in -ldxml" >&5 $as_echo_n "checking for sgemm in -ldxml... " >&6; } -if ${ac_cv_lib_dxml_sgemm+:} false; then : +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 > 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_dxml_sgemm=yes else - ac_cv_lib_dxml_sgemm=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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dxml_sgemm" >&5 +{ $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" = xyes; then : +if test "x$ac_cv_lib_dxml_sgemm" = x""yes; then pac_blas_ok=yes;BLAS_LIBS="-ldxml $BLAS_LIBDIR" fi @@ -8277,54 +9814,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 > conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF program main call acosp 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_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_echo "$as_me:${as_lineno-$LINENO}: checking for sgemm in -lsunperf" >&5 +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 ${ac_cv_lib_sunperf_sgemm+:} false; then : +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 > 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_sunperf_sgemm=yes else - ac_cv_lib_sunperf_sgemm=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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sunperf_sgemm" >&5 +{ $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" = xyes; then : +if test "x$ac_cv_lib_sunperf_sgemm" = x""yes; then BLAS_LIBS="-xlic_lib=sunperf -lsunmath $BLAS_LIBDIR" pac_blas_ok=yes fi @@ -8337,30 +9924,55 @@ fi # BLAS in SCSL library? (SGI/Cray Scientific Library) if test $pac_blas_ok = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sgemm in -lscs" >&5 + { $as_echo "$as_me:$LINENO: checking for sgemm in -lscs" >&5 $as_echo_n "checking for sgemm in -lscs... " >&6; } -if ${ac_cv_lib_scs_sgemm+:} false; then : +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 > 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_scs_sgemm=yes else - ac_cv_lib_scs_sgemm=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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_scs_sgemm" >&5 +{ $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" = xyes; then : +if test "x$ac_cv_lib_scs_sgemm" = x""yes; then pac_blas_ok=yes; BLAS_LIBS="-lscs $BLAS_LIBDIR" fi @@ -8369,31 +9981,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 > 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 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 $BLAS_LIBDIR" fi @@ -8402,55 +10042,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 > 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 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_echo "$as_me:${as_lineno-$LINENO}: checking for sgemm in -lessl" >&5 +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 ${ac_cv_lib_essl_sgemm+:} false; then : +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 > 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_essl_sgemm=yes else - ac_cv_lib_essl_sgemm=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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_essl_sgemm" >&5 +{ $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" = xyes; then : +if test "x$ac_cv_lib_essl_sgemm" = x""yes; then pac_blas_ok=yes; BLAS_LIBS="-lessl -lblas $BLAS_LIBDIR" fi @@ -8464,30 +10157,56 @@ 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 : +if test "x$ac_cv_lib_blas_sgemm" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBBLAS 1 _ACEOF @@ -8502,18 +10221,43 @@ fi # BLAS linked to by default? (happens on some supercomputers) if test $pac_blas_ok = no; then - 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 + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi # Generic BLAS library? @@ -8523,30 +10267,55 @@ 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 : +if test "x$ac_cv_lib_blas_sgemm" = x""yes; then pac_blas_ok=yes; BLAS_LIBS="-lblas $BLAS_LIBDIR" fi @@ -8558,12 +10327,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 @@ -8572,7 +10345,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 @@ -8594,7 +10367,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' @@ -8606,16 +10379,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 @@ -8636,7 +10409,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' @@ -8648,16 +10421,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 @@ -8682,31 +10455,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 @@ -8754,16 +10555,16 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu #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 @@ -8783,7 +10584,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 @@ -8808,7 +10609,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='-lmetis' @@ -8816,7 +10617,7 @@ fi # Check whether --with-metisdir was given. -if test "${with_metisdir+set}" = set; then : +if test "${with_metisdir+set}" = set; then withval=$with_metisdir; psblas_cv_metisdir=$withval else psblas_cv_metisdir='' @@ -8824,7 +10625,7 @@ fi # Check whether --with-metisincdir was given. -if test "${with_metisincdir+set}" = set; then : +if test "${with_metisincdir+set}" = set; then withval=$with_metisincdir; psblas_cv_metisincdir=$withval else psblas_cv_metisincdir='' @@ -8832,7 +10633,7 @@ fi # Check whether --with-metislibdir was given. -if test "${with_metislibdir+set}" = set; then : +if test "${with_metislibdir+set}" = set; then withval=$with_metislibdir; psblas_cv_metislibdir=$withval else psblas_cv_metislibdir='' @@ -8862,13 +10663,152 @@ if test "x$psblas_cv_metislibdir" != "x"; then METIS_LIBDIR="-L$psblas_cv_metislibdir" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: metis dir $psblas_cv_metisdir" >&5 +{ $as_echo "$as_me:$LINENO: metis dir $psblas_cv_metisdir" >&5 $as_echo "$as_me: metis dir $psblas_cv_metisdir" >&6;} + + for ac_header in limits.h metis.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $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 +fi +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; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header 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 <$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 + 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 $ac_header presence" >&5 +$as_echo_n "checking $ac_header 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 <$ac_header> +_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: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ----------------------------------------------------------- ## +## Report this to https://github.com/sfilippone/psblas3/issues ## +## ----------------------------------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $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 + eval "$as_ac_Header=\$ac_header_preproc" +fi +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; } + +fi +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 @@ -8884,13 +10824,152 @@ if test "x$pac_metis_header_ok" == "xno" ; then METIS_INCLUDES="-I$psblas_cv_metisdir/include -I$psblas_cv_metisdir/Include " CPPFLAGS="$METIS_INCLUDES $SAVE_CPPFLAGS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for metis_h in $METIS_INCLUDES" >&5 + { $as_echo "$as_me:$LINENO: checking for metis_h in $METIS_INCLUDES" >&5 $as_echo_n "checking for metis_h in $METIS_INCLUDES... " >&6; } - for ac_header in limits.h metis.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + + +for ac_header in limits.h metis.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $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 +fi +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; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header 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 <$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 + 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 $ac_header presence" >&5 +$as_echo_n "checking $ac_header 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 <$ac_header> +_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: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ----------------------------------------------------------- ## +## Report this to https://github.com/sfilippone/psblas3/issues ## +## ----------------------------------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $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 + eval "$as_ac_Header=\$ac_header_preproc" +fi +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; } + +fi +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 @@ -8906,11 +10985,150 @@ if test "x$pac_metis_header_ok" == "xno" ; then unset ac_cv_header_metis_h METIS_INCLUDES="-I$psblas_cv_metisdir/UFconfig -I$psblas_cv_metisdir/METIS/Include -I$psblas_cv_metisdir/METIS/Include" CPPFLAGS="$METIS_INCLUDES $SAVE_CPPFLAGS" - for ac_header in limits.h metis.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + + +for ac_header in limits.h metis.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $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 +fi +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; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header 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 <$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 + 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 $ac_header presence" >&5 +$as_echo_n "checking $ac_header 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 <$ac_header> +_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: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ----------------------------------------------------------- ## +## Report this to https://github.com/sfilippone/psblas3/issues ## +## ----------------------------------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $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 + eval "$as_ac_Header=\$ac_header_preproc" +fi +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; } + +fi +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 @@ -8928,9 +11146,13 @@ if test "x$pac_metis_header_ok" == "xyes" ; then psblas_cv_metis_includes="$METIS_INCLUDES" METIS_LIBS="$psblas_cv_metis $METIS_LIBDIR" LIBS="$METIS_LIBS -lm $LIBS"; - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for METIS_PartGraphKway in $METIS_LIBS" >&5 + { $as_echo "$as_me:$LINENO: checking for METIS_PartGraphKway in $METIS_LIBS" >&5 $as_echo_n "checking for METIS_PartGraphKway in $METIS_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. @@ -8948,23 +11170,52 @@ return METIS_PartGraphKway (); 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_metis=yes;pac_metis_lib_ok=yes; else - psblas_cv_have_metis=no;pac_metis_lib_ok=no; METIS_LIBS="" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + psblas_cv_have_metis=no;pac_metis_lib_ok=no; METIS_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_metis_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_metis_lib_ok" >&5 $as_echo "$pac_metis_lib_ok" >&6; } if test "x$pac_metis_lib_ok" == "xno" ; then METIS_LIBDIR="-L$psblas_cv_metisdir/Lib -L$psblas_cv_metisdir/lib" METIS_LIBS="$psblas_cv_metis $METIS_LIBDIR" LIBS="$METIS_LIBS -lm $SAVE_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for METIS_PartGraphKway in $METIS_LIBS" >&5 + { $as_echo "$as_me:$LINENO: checking for METIS_PartGraphKway in $METIS_LIBS" >&5 $as_echo_n "checking for METIS_PartGraphKway in $METIS_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. @@ -8982,23 +11233,52 @@ return METIS_PartGraphKway (); 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_metis=yes;pac_metis_lib_ok=yes; else - psblas_cv_have_metis=no;pac_metis_lib_ok=no; METIS_LIBS="" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + psblas_cv_have_metis=no;pac_metis_lib_ok=no; METIS_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_metis_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_metis_lib_ok" >&5 $as_echo "$pac_metis_lib_ok" >&6; } fi if test "x$pac_metis_lib_ok" == "xno" ; then METIS_LIBDIR="-L$psblas_cv_metisdir/METIS/Lib -L$psblas_cv_metisdir/METIS/Lib" METIS_LIBS="$psblas_cv_metis $METIS_LIBDIR" LIBS="$METIS_LIBS -lm $SAVE_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for METIS_PartGraphKway in $METIS_LIBS" >&5 + { $as_echo "$as_me:$LINENO: checking for METIS_PartGraphKway in $METIS_LIBS" >&5 $as_echo_n "checking for METIS_PartGraphKway in $METIS_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. @@ -9016,21 +11296,50 @@ return METIS_PartGraphKway (); 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_metis=yes;pac_metis_lib_ok=yes; else - psblas_cv_have_metis=no;pac_metis_lib_ok=no; METIS_LIBS="" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + psblas_cv_have_metis=no;pac_metis_lib_ok=no; METIS_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_metis_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_metis_lib_ok" >&5 $as_echo "$pac_metis_lib_ok" >&6; } fi fi if test "x$pac_metis_lib_ok" == "xyes" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for METIS_SetDefaultOptions in $LIBS" >&5 + { $as_echo "$as_me:$LINENO: checking for METIS_SetDefaultOptions in $LIBS" >&5 $as_echo_n "checking for METIS_SetDefaultOptions in $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. @@ -9048,14 +11357,39 @@ return METIS_SetDefaultOptions (); 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_metis=yes;pac_metis_lib_ok=yes; else - psblas_cv_have_metis=no;pac_metis_lib_ok="no. Unusable METIS version, sorry."; METIS_LIBS="" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + psblas_cv_have_metis=no;pac_metis_lib_ok="no. Unusable METIS version, sorry."; METIS_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_metis_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_metis_lib_ok" >&5 $as_echo "$pac_metis_lib_ok" >&6; } fi @@ -9069,7 +11403,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' @@ -9077,7 +11411,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='' @@ -9085,7 +11419,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='' @@ -9093,7 +11427,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='' @@ -9123,10 +11457,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 https://github.com/sfilippone/psblas3/issues ## +## ----------------------------------------------------------- ## +_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="" @@ -9138,10 +11603,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 https://github.com/sfilippone/psblas3/issues ## +## ----------------------------------------------------------- ## +_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="" @@ -9153,8 +11749,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 https://github.com/sfilippone/psblas3/issues ## +## ----------------------------------------------------------- ## +_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="" @@ -9168,9 +11895,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. @@ -9188,23 +11919,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. @@ -9222,23 +11982,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. @@ -9256,14 +12045,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 @@ -9392,13 +12206,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 @@ -9406,8 +12220,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" @@ -9429,23 +12243,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 @@ -9495,36 +12298,33 @@ 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 LTLIBOBJS=$ac_ltlibobjs -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } 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= @@ -9535,14 +12335,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. @@ -9552,18 +12351,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 @@ -9571,15 +12369,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 @@ -9587,13 +12393,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 @@ -9604,7 +12404,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\\(.*\\)"`;; @@ -9627,6 +12427,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 @@ -9636,16 +12443,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 ;; @@ -9657,16 +12463,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='> ' @@ -9678,89 +12480,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 @@ -9774,12 +12494,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\(//\)$' \| \ @@ -9799,25 +12515,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 @@ -9832,85 +12599,49 @@ if (echo >conf$$.file) 2>/dev/null; then # ... 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 -pR'. + # 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 -pR' + as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi else - as_ln_s='cp -pR' + as_ln_s='cp -p' 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 fi - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p +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'" @@ -9920,19 +12651,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.5, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -9960,15 +12685,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 @@ -9982,17 +12705,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.5 -configured by $0, generated by GNU Autoconf 2.69, - 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) 2012 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." @@ -10010,16 +12732,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 @@ -10033,17 +12750,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 ;; @@ -10052,10 +12766,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 @@ -10072,7 +12787,7 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' @@ -10109,7 +12824,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 @@ -10131,24 +12848,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. @@ -10156,13 +12875,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' @@ -10170,7 +12883,7 @@ else ac_cs_awk_cr=$ac_cr fi -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF @@ -10179,18 +12892,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 @@ -10198,7 +12917,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 @@ -10212,7 +12931,7 @@ s/'"$ac_delim"'$// t delim :nl h -s/\(.\{148\}\)..*/\1/ +s/\(.\{148\}\).*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p @@ -10226,7 +12945,7 @@ s/.\{148\}// t nl :delim h -s/\(.\{148\}\)..*/\1/ +s/\(.\{148\}\).*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p @@ -10246,7 +12965,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 = "" @@ -10278,29 +12997,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 @@ -10318,7 +13031,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 @@ -10337,7 +13052,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 `:'. @@ -10346,10 +13061,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 @@ -10360,7 +13077,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. @@ -10372,8 +13089,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 @@ -10401,7 +13120,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 @@ -10458,6 +13217,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 @@ -10467,11 +13227,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 @@ -10481,7 +13242,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 @@ -10509,28 +13270,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 @@ -10538,7 +13302,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Older Autoconf quotes --file arguments for eval, but not when files + # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in @@ -10551,7 +13315,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but + # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. @@ -10585,19 +13349,21 @@ $as_echo X"$mf" | continue fi # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. + # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue + test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || @@ -10623,7 +13389,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 @@ -10635,12 +13441,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. @@ -10661,17 +13470,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: MPIFC : ${MPIFC} diff --git a/configure.ac b/configure.ac index d4b211e2..4310397a 100755 --- a/configure.ac +++ b/configure.ac @@ -144,7 +144,7 @@ else AC_LANG([C]) if test "X$MPICC" = "X" ; then # This is our MPICC compiler preference: it will override ACX_MPI's first try. - AC_CHECK_PROGS([MPICC],[mpxlc mpcc mpiicc mpicc cc]) + AC_CHECK_PROGS([MPICC],[mpxlc mpiicc mpcc mpicc cc]) fi ACX_MPI([], [AC_MSG_ERROR([[Cannot find any suitable MPI implementation for C]])]) AC_PROG_CC_STDC From cee05fc0218c35cb86c1158f867869f0af4364a6 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Fri, 10 Aug 2018 12:56:08 +0100 Subject: [PATCH 12/26] Allocate work vectors with scratch option. --- krylov/psb_ccg.F90 | 2 +- krylov/psb_dcg.F90 | 2 +- krylov/psb_scg.F90 | 2 +- krylov/psb_zcg.F90 | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/krylov/psb_ccg.F90 b/krylov/psb_ccg.F90 index 5ac253e7..bd16e657 100644 --- a/krylov/psb_ccg.F90 +++ b/krylov/psb_ccg.F90 @@ -172,7 +172,7 @@ subroutine psb_ccg_vect(a,prec,b,x,eps,desc_a,info,& naux=4*n_col allocate(aux(naux), stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) - if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v) + if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) diff --git a/krylov/psb_dcg.F90 b/krylov/psb_dcg.F90 index e8d08f03..74d41d69 100644 --- a/krylov/psb_dcg.F90 +++ b/krylov/psb_dcg.F90 @@ -172,7 +172,7 @@ subroutine psb_dcg_vect(a,prec,b,x,eps,desc_a,info,& naux=4*n_col allocate(aux(naux), stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) - if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v) + if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) diff --git a/krylov/psb_scg.F90 b/krylov/psb_scg.F90 index fad4538c..92241791 100644 --- a/krylov/psb_scg.F90 +++ b/krylov/psb_scg.F90 @@ -172,7 +172,7 @@ subroutine psb_scg_vect(a,prec,b,x,eps,desc_a,info,& naux=4*n_col allocate(aux(naux), stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) - if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v) + if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) diff --git a/krylov/psb_zcg.F90 b/krylov/psb_zcg.F90 index f1d63cc7..691a0f08 100644 --- a/krylov/psb_zcg.F90 +++ b/krylov/psb_zcg.F90 @@ -172,7 +172,7 @@ subroutine psb_zcg_vect(a,prec,b,x,eps,desc_a,info,& naux=4*n_col allocate(aux(naux), stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) - if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v) + if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) From 6c6d2c71ee584f3fe304b05636d20d61d7f28e70 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Fri, 10 Aug 2018 15:48:55 +0100 Subject: [PATCH 13/26] Optional argument in GETROW. --- base/modules/serial/psb_c_base_mat_mod.f90 | 12 +- base/modules/serial/psb_c_csc_mat_mod.f90 | 38 +++--- base/modules/serial/psb_c_csr_mat_mod.f90 | 38 +++--- base/modules/serial/psb_c_mat_mod.f90 | 4 +- base/modules/serial/psb_d_base_mat_mod.f90 | 12 +- base/modules/serial/psb_d_csc_mat_mod.f90 | 38 +++--- base/modules/serial/psb_d_csr_mat_mod.f90 | 38 +++--- base/modules/serial/psb_d_mat_mod.f90 | 4 +- base/modules/serial/psb_s_base_mat_mod.f90 | 12 +- base/modules/serial/psb_s_csc_mat_mod.f90 | 38 +++--- base/modules/serial/psb_s_csr_mat_mod.f90 | 38 +++--- base/modules/serial/psb_s_mat_mod.f90 | 4 +- base/modules/serial/psb_z_base_mat_mod.f90 | 12 +- base/modules/serial/psb_z_csc_mat_mod.f90 | 38 +++--- base/modules/serial/psb_z_csr_mat_mod.f90 | 38 +++--- base/modules/serial/psb_z_mat_mod.f90 | 4 +- base/serial/impl/psb_c_base_mat_impl.F90 | 4 +- base/serial/impl/psb_c_coo_impl.f90 | 62 ++++++---- base/serial/impl/psb_c_csc_impl.f90 | 112 ++++++++--------- base/serial/impl/psb_c_csr_impl.f90 | 137 +++++++++++---------- base/serial/impl/psb_c_mat_impl.F90 | 6 +- base/serial/impl/psb_d_base_mat_impl.F90 | 4 +- base/serial/impl/psb_d_coo_impl.f90 | 62 ++++++---- base/serial/impl/psb_d_csc_impl.f90 | 112 ++++++++--------- base/serial/impl/psb_d_csr_impl.f90 | 137 +++++++++++---------- base/serial/impl/psb_d_mat_impl.F90 | 6 +- base/serial/impl/psb_s_base_mat_impl.F90 | 4 +- base/serial/impl/psb_s_coo_impl.f90 | 62 ++++++---- base/serial/impl/psb_s_csc_impl.f90 | 112 ++++++++--------- base/serial/impl/psb_s_csr_impl.f90 | 137 +++++++++++---------- base/serial/impl/psb_s_mat_impl.F90 | 6 +- base/serial/impl/psb_z_base_mat_impl.F90 | 4 +- base/serial/impl/psb_z_coo_impl.f90 | 62 ++++++---- base/serial/impl/psb_z_csc_impl.f90 | 112 ++++++++--------- base/serial/impl/psb_z_csr_impl.f90 | 137 +++++++++++---------- base/serial/impl/psb_z_mat_impl.F90 | 6 +- 36 files changed, 864 insertions(+), 788 deletions(-) diff --git a/base/modules/serial/psb_c_base_mat_mod.f90 b/base/modules/serial/psb_c_base_mat_mod.f90 index 01215a42..19f1adff 100644 --- a/base/modules/serial/psb_c_base_mat_mod.f90 +++ b/base/modules/serial/psb_c_base_mat_mod.f90 @@ -316,7 +316,7 @@ module psb_c_base_mat_mod ! interface subroutine psb_c_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_ class(psb_c_base_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -327,7 +327,7 @@ module psb_c_base_mat_mod 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, intent(in), optional :: rscale,cscale, chksz end subroutine psb_c_base_csgetrow end interface @@ -355,7 +355,7 @@ module psb_c_base_mat_mod ! interface subroutine psb_c_base_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) + & jmin,jmax,iren,append,rscale,cscale,chksz) import :: psb_ipk_, psb_c_base_sparse_mat, psb_c_coo_sparse_mat, psb_spk_ class(psb_c_base_sparse_mat), intent(in) :: a class(psb_c_coo_sparse_mat), intent(inout) :: b @@ -364,7 +364,7 @@ module psb_c_base_mat_mod 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 + logical, intent(in), optional :: rscale,cscale,chksz end subroutine psb_c_base_csgetblk end interface @@ -1550,7 +1550,7 @@ module psb_c_base_mat_mod !! \see psb_c_base_mat_mod::psb_c_base_csgetrow interface subroutine psb_c_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_ class(psb_c_coo_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -1561,7 +1561,7 @@ module psb_c_base_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_c_coo_csgetrow end interface diff --git a/base/modules/serial/psb_c_csc_mat_mod.f90 b/base/modules/serial/psb_c_csc_mat_mod.f90 index b487d0bf..2bb7982c 100644 --- a/base/modules/serial/psb_c_csc_mat_mod.f90 +++ b/base/modules/serial/psb_c_csc_mat_mod.f90 @@ -313,7 +313,7 @@ module psb_c_csc_mat_mod !! \see psb_c_base_mat_mod::psb_c_base_csgetrow interface subroutine psb_c_csc_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_c_csc_sparse_mat, psb_spk_ class(psb_c_csc_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -324,27 +324,27 @@ module psb_c_csc_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_c_csc_csgetrow end interface - !> \memberof psb_c_csc_sparse_mat - !! \see psb_c_base_mat_mod::psb_c_base_csgetblk - interface - subroutine psb_c_csc_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - import :: psb_ipk_, psb_c_csc_sparse_mat, psb_spk_, psb_c_coo_sparse_mat - class(psb_c_csc_sparse_mat), intent(in) :: a - class(psb_c_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_c_csc_csgetblk - end interface - +!!$ !> \memberof psb_c_csc_sparse_mat +!!$ !! \see psb_c_base_mat_mod::psb_c_base_csgetblk +!!$ interface +!!$ subroutine psb_c_csc_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale,chksz) +!!$ import :: psb_ipk_, psb_c_csc_sparse_mat, psb_spk_, psb_c_coo_sparse_mat +!!$ class(psb_c_csc_sparse_mat), intent(in) :: a +!!$ class(psb_c_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,chksz +!!$ end subroutine psb_c_csc_csgetblk +!!$ end interface +!!$ !> \memberof psb_c_csc_sparse_mat !! \see psb_c_base_mat_mod::psb_c_base_cssv interface diff --git a/base/modules/serial/psb_c_csr_mat_mod.f90 b/base/modules/serial/psb_c_csr_mat_mod.f90 index 2d28f696..af4f3165 100644 --- a/base/modules/serial/psb_c_csr_mat_mod.f90 +++ b/base/modules/serial/psb_c_csr_mat_mod.f90 @@ -405,7 +405,7 @@ module psb_c_csr_mat_mod !! \see psb_c_base_mat_mod::psb_c_base_csgetrow interface subroutine psb_c_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_c_csr_sparse_mat, psb_spk_ class(psb_c_csr_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -416,26 +416,26 @@ module psb_c_csr_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_c_csr_csgetrow end interface - - !> \memberof psb_c_csr_sparse_mat - !! \see psb_c_base_mat_mod::psb_c_base_csgetblk - interface - subroutine psb_c_csr_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - import :: psb_ipk_, psb_c_csr_sparse_mat, psb_spk_, psb_c_coo_sparse_mat - class(psb_c_csr_sparse_mat), intent(in) :: a - class(psb_c_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_c_csr_csgetblk - end interface +!!$ +!!$ !> \memberof psb_c_csr_sparse_mat +!!$ !! \see psb_c_base_mat_mod::psb_c_base_csgetblk +!!$ interface +!!$ subroutine psb_c_csr_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale) +!!$ import :: psb_ipk_, psb_c_csr_sparse_mat, psb_spk_, psb_c_coo_sparse_mat +!!$ class(psb_c_csr_sparse_mat), intent(in) :: a +!!$ class(psb_c_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_c_csr_csgetblk +!!$ end interface !> \memberof psb_c_csr_sparse_mat !! \see psb_c_base_mat_mod::psb_c_base_cssv diff --git a/base/modules/serial/psb_c_mat_mod.f90 b/base/modules/serial/psb_c_mat_mod.f90 index 7b1bbd06..70c9bbb5 100644 --- a/base/modules/serial/psb_c_mat_mod.f90 +++ b/base/modules/serial/psb_c_mat_mod.f90 @@ -450,7 +450,7 @@ module psb_c_mat_mod interface subroutine psb_c_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_cspmat_type, psb_spk_ class(psb_cspmat_type), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -461,7 +461,7 @@ module psb_c_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_c_csgetrow end interface diff --git a/base/modules/serial/psb_d_base_mat_mod.f90 b/base/modules/serial/psb_d_base_mat_mod.f90 index ab307d14..b122f98d 100644 --- a/base/modules/serial/psb_d_base_mat_mod.f90 +++ b/base/modules/serial/psb_d_base_mat_mod.f90 @@ -316,7 +316,7 @@ module psb_d_base_mat_mod ! interface subroutine psb_d_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ class(psb_d_base_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -327,7 +327,7 @@ module psb_d_base_mat_mod 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, intent(in), optional :: rscale,cscale, chksz end subroutine psb_d_base_csgetrow end interface @@ -355,7 +355,7 @@ module psb_d_base_mat_mod ! interface subroutine psb_d_base_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) + & jmin,jmax,iren,append,rscale,cscale,chksz) import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(inout) :: b @@ -364,7 +364,7 @@ module psb_d_base_mat_mod 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 + logical, intent(in), optional :: rscale,cscale,chksz end subroutine psb_d_base_csgetblk end interface @@ -1550,7 +1550,7 @@ module psb_d_base_mat_mod !! \see psb_d_base_mat_mod::psb_d_base_csgetrow interface subroutine psb_d_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ class(psb_d_coo_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -1561,7 +1561,7 @@ module psb_d_base_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_d_coo_csgetrow end interface diff --git a/base/modules/serial/psb_d_csc_mat_mod.f90 b/base/modules/serial/psb_d_csc_mat_mod.f90 index 2b9d552c..7e4d555c 100644 --- a/base/modules/serial/psb_d_csc_mat_mod.f90 +++ b/base/modules/serial/psb_d_csc_mat_mod.f90 @@ -313,7 +313,7 @@ module psb_d_csc_mat_mod !! \see psb_d_base_mat_mod::psb_d_base_csgetrow interface subroutine psb_d_csc_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ class(psb_d_csc_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -324,27 +324,27 @@ module psb_d_csc_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_d_csc_csgetrow end interface - !> \memberof psb_d_csc_sparse_mat - !! \see psb_d_base_mat_mod::psb_d_base_csgetblk - interface - subroutine psb_d_csc_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_, psb_d_coo_sparse_mat - class(psb_d_csc_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_csc_csgetblk - end interface - +!!$ !> \memberof psb_d_csc_sparse_mat +!!$ !! \see psb_d_base_mat_mod::psb_d_base_csgetblk +!!$ interface +!!$ subroutine psb_d_csc_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale,chksz) +!!$ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_, psb_d_coo_sparse_mat +!!$ class(psb_d_csc_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,chksz +!!$ end subroutine psb_d_csc_csgetblk +!!$ end interface +!!$ !> \memberof psb_d_csc_sparse_mat !! \see psb_d_base_mat_mod::psb_d_base_cssv interface diff --git a/base/modules/serial/psb_d_csr_mat_mod.f90 b/base/modules/serial/psb_d_csr_mat_mod.f90 index 95697f2b..8ba73b15 100644 --- a/base/modules/serial/psb_d_csr_mat_mod.f90 +++ b/base/modules/serial/psb_d_csr_mat_mod.f90 @@ -405,7 +405,7 @@ module psb_d_csr_mat_mod !! \see psb_d_base_mat_mod::psb_d_base_csgetrow interface subroutine psb_d_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_d_csr_sparse_mat, psb_dpk_ class(psb_d_csr_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -416,26 +416,26 @@ module psb_d_csr_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_d_csr_csgetrow end interface - - !> \memberof psb_d_csr_sparse_mat - !! \see psb_d_base_mat_mod::psb_d_base_csgetblk - interface - subroutine psb_d_csr_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - import :: psb_ipk_, psb_d_csr_sparse_mat, psb_dpk_, psb_d_coo_sparse_mat - class(psb_d_csr_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_csr_csgetblk - end interface +!!$ +!!$ !> \memberof psb_d_csr_sparse_mat +!!$ !! \see psb_d_base_mat_mod::psb_d_base_csgetblk +!!$ interface +!!$ subroutine psb_d_csr_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale) +!!$ import :: psb_ipk_, psb_d_csr_sparse_mat, psb_dpk_, psb_d_coo_sparse_mat +!!$ class(psb_d_csr_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_csr_csgetblk +!!$ end interface !> \memberof psb_d_csr_sparse_mat !! \see psb_d_base_mat_mod::psb_d_base_cssv diff --git a/base/modules/serial/psb_d_mat_mod.f90 b/base/modules/serial/psb_d_mat_mod.f90 index 00ff0d80..5e3ae7e9 100644 --- a/base/modules/serial/psb_d_mat_mod.f90 +++ b/base/modules/serial/psb_d_mat_mod.f90 @@ -450,7 +450,7 @@ module psb_d_mat_mod interface subroutine psb_d_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_dspmat_type, psb_dpk_ class(psb_dspmat_type), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -461,7 +461,7 @@ module psb_d_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_d_csgetrow end interface diff --git a/base/modules/serial/psb_s_base_mat_mod.f90 b/base/modules/serial/psb_s_base_mat_mod.f90 index e23202d1..0b49f4f9 100644 --- a/base/modules/serial/psb_s_base_mat_mod.f90 +++ b/base/modules/serial/psb_s_base_mat_mod.f90 @@ -316,7 +316,7 @@ module psb_s_base_mat_mod ! interface subroutine psb_s_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_ class(psb_s_base_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -327,7 +327,7 @@ module psb_s_base_mat_mod 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, intent(in), optional :: rscale,cscale, chksz end subroutine psb_s_base_csgetrow end interface @@ -355,7 +355,7 @@ module psb_s_base_mat_mod ! interface subroutine psb_s_base_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) + & jmin,jmax,iren,append,rscale,cscale,chksz) import :: psb_ipk_, psb_s_base_sparse_mat, psb_s_coo_sparse_mat, psb_spk_ class(psb_s_base_sparse_mat), intent(in) :: a class(psb_s_coo_sparse_mat), intent(inout) :: b @@ -364,7 +364,7 @@ module psb_s_base_mat_mod 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 + logical, intent(in), optional :: rscale,cscale,chksz end subroutine psb_s_base_csgetblk end interface @@ -1550,7 +1550,7 @@ module psb_s_base_mat_mod !! \see psb_s_base_mat_mod::psb_s_base_csgetrow interface subroutine psb_s_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_ class(psb_s_coo_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -1561,7 +1561,7 @@ module psb_s_base_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_s_coo_csgetrow end interface diff --git a/base/modules/serial/psb_s_csc_mat_mod.f90 b/base/modules/serial/psb_s_csc_mat_mod.f90 index ff1a915d..9e936153 100644 --- a/base/modules/serial/psb_s_csc_mat_mod.f90 +++ b/base/modules/serial/psb_s_csc_mat_mod.f90 @@ -313,7 +313,7 @@ module psb_s_csc_mat_mod !! \see psb_s_base_mat_mod::psb_s_base_csgetrow interface subroutine psb_s_csc_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_s_csc_sparse_mat, psb_spk_ class(psb_s_csc_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -324,27 +324,27 @@ module psb_s_csc_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_s_csc_csgetrow end interface - !> \memberof psb_s_csc_sparse_mat - !! \see psb_s_base_mat_mod::psb_s_base_csgetblk - interface - subroutine psb_s_csc_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - import :: psb_ipk_, psb_s_csc_sparse_mat, psb_spk_, psb_s_coo_sparse_mat - class(psb_s_csc_sparse_mat), intent(in) :: a - class(psb_s_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_s_csc_csgetblk - end interface - +!!$ !> \memberof psb_s_csc_sparse_mat +!!$ !! \see psb_s_base_mat_mod::psb_s_base_csgetblk +!!$ interface +!!$ subroutine psb_s_csc_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale,chksz) +!!$ import :: psb_ipk_, psb_s_csc_sparse_mat, psb_spk_, psb_s_coo_sparse_mat +!!$ class(psb_s_csc_sparse_mat), intent(in) :: a +!!$ class(psb_s_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,chksz +!!$ end subroutine psb_s_csc_csgetblk +!!$ end interface +!!$ !> \memberof psb_s_csc_sparse_mat !! \see psb_s_base_mat_mod::psb_s_base_cssv interface diff --git a/base/modules/serial/psb_s_csr_mat_mod.f90 b/base/modules/serial/psb_s_csr_mat_mod.f90 index 1f2e6049..2266ff50 100644 --- a/base/modules/serial/psb_s_csr_mat_mod.f90 +++ b/base/modules/serial/psb_s_csr_mat_mod.f90 @@ -405,7 +405,7 @@ module psb_s_csr_mat_mod !! \see psb_s_base_mat_mod::psb_s_base_csgetrow interface subroutine psb_s_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_s_csr_sparse_mat, psb_spk_ class(psb_s_csr_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -416,26 +416,26 @@ module psb_s_csr_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_s_csr_csgetrow end interface - - !> \memberof psb_s_csr_sparse_mat - !! \see psb_s_base_mat_mod::psb_s_base_csgetblk - interface - subroutine psb_s_csr_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - import :: psb_ipk_, psb_s_csr_sparse_mat, psb_spk_, psb_s_coo_sparse_mat - class(psb_s_csr_sparse_mat), intent(in) :: a - class(psb_s_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_s_csr_csgetblk - end interface +!!$ +!!$ !> \memberof psb_s_csr_sparse_mat +!!$ !! \see psb_s_base_mat_mod::psb_s_base_csgetblk +!!$ interface +!!$ subroutine psb_s_csr_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale) +!!$ import :: psb_ipk_, psb_s_csr_sparse_mat, psb_spk_, psb_s_coo_sparse_mat +!!$ class(psb_s_csr_sparse_mat), intent(in) :: a +!!$ class(psb_s_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_s_csr_csgetblk +!!$ end interface !> \memberof psb_s_csr_sparse_mat !! \see psb_s_base_mat_mod::psb_s_base_cssv diff --git a/base/modules/serial/psb_s_mat_mod.f90 b/base/modules/serial/psb_s_mat_mod.f90 index 6a36370a..32b424b8 100644 --- a/base/modules/serial/psb_s_mat_mod.f90 +++ b/base/modules/serial/psb_s_mat_mod.f90 @@ -450,7 +450,7 @@ module psb_s_mat_mod interface subroutine psb_s_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_sspmat_type, psb_spk_ class(psb_sspmat_type), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -461,7 +461,7 @@ module psb_s_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_s_csgetrow end interface diff --git a/base/modules/serial/psb_z_base_mat_mod.f90 b/base/modules/serial/psb_z_base_mat_mod.f90 index eff29ed2..69022422 100644 --- a/base/modules/serial/psb_z_base_mat_mod.f90 +++ b/base/modules/serial/psb_z_base_mat_mod.f90 @@ -316,7 +316,7 @@ module psb_z_base_mat_mod ! interface subroutine psb_z_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_ class(psb_z_base_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -327,7 +327,7 @@ module psb_z_base_mat_mod 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, intent(in), optional :: rscale,cscale, chksz end subroutine psb_z_base_csgetrow end interface @@ -355,7 +355,7 @@ module psb_z_base_mat_mod ! interface subroutine psb_z_base_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) + & jmin,jmax,iren,append,rscale,cscale,chksz) import :: psb_ipk_, psb_z_base_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_ class(psb_z_base_sparse_mat), intent(in) :: a class(psb_z_coo_sparse_mat), intent(inout) :: b @@ -364,7 +364,7 @@ module psb_z_base_mat_mod 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 + logical, intent(in), optional :: rscale,cscale,chksz end subroutine psb_z_base_csgetblk end interface @@ -1550,7 +1550,7 @@ module psb_z_base_mat_mod !! \see psb_z_base_mat_mod::psb_z_base_csgetrow interface subroutine psb_z_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_ class(psb_z_coo_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -1561,7 +1561,7 @@ module psb_z_base_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_z_coo_csgetrow end interface diff --git a/base/modules/serial/psb_z_csc_mat_mod.f90 b/base/modules/serial/psb_z_csc_mat_mod.f90 index 99c5b2dd..4c7e050d 100644 --- a/base/modules/serial/psb_z_csc_mat_mod.f90 +++ b/base/modules/serial/psb_z_csc_mat_mod.f90 @@ -313,7 +313,7 @@ module psb_z_csc_mat_mod !! \see psb_z_base_mat_mod::psb_z_base_csgetrow interface subroutine psb_z_csc_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_z_csc_sparse_mat, psb_dpk_ class(psb_z_csc_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -324,27 +324,27 @@ module psb_z_csc_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_z_csc_csgetrow end interface - !> \memberof psb_z_csc_sparse_mat - !! \see psb_z_base_mat_mod::psb_z_base_csgetblk - interface - subroutine psb_z_csc_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - import :: psb_ipk_, psb_z_csc_sparse_mat, psb_dpk_, psb_z_coo_sparse_mat - class(psb_z_csc_sparse_mat), intent(in) :: a - class(psb_z_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_z_csc_csgetblk - end interface - +!!$ !> \memberof psb_z_csc_sparse_mat +!!$ !! \see psb_z_base_mat_mod::psb_z_base_csgetblk +!!$ interface +!!$ subroutine psb_z_csc_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale,chksz) +!!$ import :: psb_ipk_, psb_z_csc_sparse_mat, psb_dpk_, psb_z_coo_sparse_mat +!!$ class(psb_z_csc_sparse_mat), intent(in) :: a +!!$ class(psb_z_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,chksz +!!$ end subroutine psb_z_csc_csgetblk +!!$ end interface +!!$ !> \memberof psb_z_csc_sparse_mat !! \see psb_z_base_mat_mod::psb_z_base_cssv interface diff --git a/base/modules/serial/psb_z_csr_mat_mod.f90 b/base/modules/serial/psb_z_csr_mat_mod.f90 index 508012c9..7dc58c04 100644 --- a/base/modules/serial/psb_z_csr_mat_mod.f90 +++ b/base/modules/serial/psb_z_csr_mat_mod.f90 @@ -405,7 +405,7 @@ module psb_z_csr_mat_mod !! \see psb_z_base_mat_mod::psb_z_base_csgetrow interface subroutine psb_z_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_z_csr_sparse_mat, psb_dpk_ class(psb_z_csr_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -416,26 +416,26 @@ module psb_z_csr_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_z_csr_csgetrow end interface - - !> \memberof psb_z_csr_sparse_mat - !! \see psb_z_base_mat_mod::psb_z_base_csgetblk - interface - subroutine psb_z_csr_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - import :: psb_ipk_, psb_z_csr_sparse_mat, psb_dpk_, psb_z_coo_sparse_mat - class(psb_z_csr_sparse_mat), intent(in) :: a - class(psb_z_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_z_csr_csgetblk - end interface +!!$ +!!$ !> \memberof psb_z_csr_sparse_mat +!!$ !! \see psb_z_base_mat_mod::psb_z_base_csgetblk +!!$ interface +!!$ subroutine psb_z_csr_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale) +!!$ import :: psb_ipk_, psb_z_csr_sparse_mat, psb_dpk_, psb_z_coo_sparse_mat +!!$ class(psb_z_csr_sparse_mat), intent(in) :: a +!!$ class(psb_z_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_z_csr_csgetblk +!!$ end interface !> \memberof psb_z_csr_sparse_mat !! \see psb_z_base_mat_mod::psb_z_base_cssv diff --git a/base/modules/serial/psb_z_mat_mod.f90 b/base/modules/serial/psb_z_mat_mod.f90 index 9e5d42b2..b86528eb 100644 --- a/base/modules/serial/psb_z_mat_mod.f90 +++ b/base/modules/serial/psb_z_mat_mod.f90 @@ -450,7 +450,7 @@ module psb_z_mat_mod interface subroutine psb_z_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_zspmat_type, psb_dpk_ class(psb_zspmat_type), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -461,7 +461,7 @@ module psb_z_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_z_csgetrow end interface diff --git a/base/serial/impl/psb_c_base_mat_impl.F90 b/base/serial/impl/psb_c_base_mat_impl.F90 index 9a81f286..fe016135 100644 --- a/base/serial/impl/psb_c_base_mat_impl.F90 +++ b/base/serial/impl/psb_c_base_mat_impl.F90 @@ -406,7 +406,7 @@ subroutine psb_c_base_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) end subroutine psb_c_base_csput_v subroutine psb_c_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -422,7 +422,7 @@ subroutine psb_c_base_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz integer(psb_ipk_) :: err_act integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' diff --git a/base/serial/impl/psb_c_coo_impl.f90 b/base/serial/impl/psb_c_coo_impl.f90 index f2c8af8b..695e3583 100644 --- a/base/serial/impl/psb_c_coo_impl.f90 +++ b/base/serial/impl/psb_c_coo_impl.f90 @@ -2259,7 +2259,7 @@ end subroutine psb_c_coo_csgetptn ! The output is guaranteed to be sorted ! subroutine psb_c_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -2276,9 +2276,9 @@ subroutine psb_c_coo_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz - logical :: append_, rscale_, cscale_ + logical :: append_, rscale_, cscale_, chksz_ integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' @@ -2321,13 +2321,18 @@ subroutine psb_c_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& else cscale_ = .false. endif + if (present(chksz)) then + chksz_ = chksz + else + chksz_ = .true. + endif if ((rscale_.or.cscale_).and.(present(iren))) then info = psb_err_many_optional_arg_ call psb_errpush(info,name,a_err='iren (rscale.or.cscale)') goto 9999 end if - call coo_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,info,& + call coo_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,chksz_,info,& & iren) if (rscale_) then @@ -2352,7 +2357,7 @@ subroutine psb_c_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& contains - subroutine coo_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,info,& + subroutine coo_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,chksz,info,& & iren) use psb_const_mod @@ -2368,7 +2373,7 @@ contains integer(psb_ipk_), allocatable, intent(inout) :: ia(:), ja(:) complex(psb_spk_), allocatable, intent(inout) :: val(:) integer(psb_ipk_), intent(in) :: nzin - logical, intent(in) :: append + logical, intent(in) :: append,chksz integer(psb_ipk_) :: info integer(psb_ipk_), optional :: iren(:) integer(psb_ipk_) :: nzin_, nza, idx,ip,jp,i,k, nzt, irw, lrw, nra, nca, nrd @@ -2452,11 +2457,13 @@ contains nzt = jp - ip +1 nz = 0 - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return - + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if + if (present(iren)) then do i=ip,jp if ((jmin <= a%ja(i)).and.(a%ja(i)<=jmax)) then @@ -2488,11 +2495,13 @@ contains nrd = max(a%get_nrows(),1) nzt = ((nza+nrd-1)/nrd)*(lrw-irw+1) - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return - + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if + if (present(iren)) then k = 0 do i=1, a%get_nzeros() @@ -2501,10 +2510,12 @@ contains k = k + 1 if (k > nzt) then nzt = k + nzt - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if end if val(nzin_+k) = a%val(i) ia(nzin_+k) = iren(a%ia(i)) @@ -2519,11 +2530,12 @@ contains k = k + 1 if (k > nzt) then nzt = k + nzt - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return - + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if end if val(nzin_+k) = a%val(i) ia(nzin_+k) = (a%ia(i)) diff --git a/base/serial/impl/psb_c_csc_impl.f90 b/base/serial/impl/psb_c_csc_impl.f90 index 5e0896d1..4e76fe2b 100644 --- a/base/serial/impl/psb_c_csc_impl.f90 +++ b/base/serial/impl/psb_c_csc_impl.f90 @@ -1686,7 +1686,7 @@ end subroutine psb_c_csc_csgetptn subroutine psb_c_csc_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -1704,7 +1704,7 @@ subroutine psb_c_csc_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz logical :: append_, rscale_, cscale_ integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i @@ -2557,60 +2557,60 @@ end subroutine psb_c_csc_reallocate_nz -subroutine psb_c_csc_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - ! Output is always in COO format - use psb_error_mod - use psb_const_mod - use psb_c_csc_mat_mod, psb_protect_name => psb_c_csc_csgetblk - implicit none - - class(psb_c_csc_sparse_mat), intent(in) :: a - class(psb_c_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 - integer(psb_ipk_) :: ierr(5) - 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 call psb_error_handler(err_act) - - return - -end subroutine psb_c_csc_csgetblk +!!$subroutine psb_c_csc_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale) +!!$ ! Output is always in COO format +!!$ use psb_error_mod +!!$ use psb_const_mod +!!$ use psb_c_csc_mat_mod, psb_protect_name => psb_c_csc_csgetblk +!!$ implicit none +!!$ +!!$ class(psb_c_csc_sparse_mat), intent(in) :: a +!!$ class(psb_c_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 +!!$ integer(psb_ipk_) :: ierr(5) +!!$ 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 call psb_error_handler(err_act) +!!$ +!!$ return +!!$ +!!$end subroutine psb_c_csc_csgetblk subroutine psb_c_csc_reinit(a,clear) use psb_error_mod diff --git a/base/serial/impl/psb_c_csr_impl.f90 b/base/serial/impl/psb_c_csr_impl.f90 index 980bad9e..451a3bec 100644 --- a/base/serial/impl/psb_c_csr_impl.f90 +++ b/base/serial/impl/psb_c_csr_impl.f90 @@ -1999,7 +1999,7 @@ end subroutine psb_c_csr_csgetptn subroutine psb_c_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -2017,9 +2017,9 @@ subroutine psb_c_csr_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz - logical :: append_, rscale_, cscale_ + logical :: append_, rscale_, cscale_, chksz_ integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' @@ -2063,13 +2063,18 @@ subroutine psb_c_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& else cscale_ = .false. endif + if (present(chksz)) then + chksz_ = chksz + else + chksz_ = .true. + endif if ((rscale_.or.cscale_).and.(present(iren))) then info = psb_err_many_optional_arg_ call psb_errpush(info,name,a_err='iren (rscale.or.cscale)') goto 9999 end if - call csr_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,info,& + call csr_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,chksz_,info,& & iren) if (rscale_) then @@ -2094,7 +2099,7 @@ subroutine psb_c_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& contains - subroutine csr_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,info,& + subroutine csr_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,chksz,info,& & iren) use psb_const_mod @@ -2109,7 +2114,7 @@ contains integer(psb_ipk_), allocatable, intent(inout) :: ia(:), ja(:) complex(psb_spk_), allocatable, intent(inout) :: val(:) integer(psb_ipk_), intent(in) :: nzin - logical, intent(in) :: append + logical, intent(in) :: append, chksz integer(psb_ipk_) :: info integer(psb_ipk_), optional :: iren(:) integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl,lcl, nrd, ncd @@ -2142,11 +2147,13 @@ contains nzt = (a%irp(lrw+1)-a%irp(irw)) nz = 0 - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - - if (info /= psb_success_) return + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + + if (info /= psb_success_) return + end if if (present(iren)) then do i=irw, lrw @@ -2178,60 +2185,60 @@ contains end subroutine psb_c_csr_csgetrow -subroutine psb_c_csr_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - ! Output is always in COO format - use psb_error_mod - use psb_const_mod - use psb_c_csr_mat_mod, psb_protect_name => psb_c_csr_csgetblk - implicit none - - class(psb_c_csr_sparse_mat), intent(in) :: a - class(psb_c_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 - integer(psb_ipk_) :: ierr(5) - 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 call psb_error_handler(err_act) - - return - -end subroutine psb_c_csr_csgetblk +!!$subroutine psb_c_csr_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale) +!!$ ! Output is always in COO format +!!$ use psb_error_mod +!!$ use psb_const_mod +!!$ use psb_c_csr_mat_mod, psb_protect_name => psb_c_csr_csgetblk +!!$ implicit none +!!$ +!!$ class(psb_c_csr_sparse_mat), intent(in) :: a +!!$ class(psb_c_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 +!!$ integer(psb_ipk_) :: ierr(5) +!!$ 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 call psb_error_handler(err_act) +!!$ +!!$ return +!!$ +!!$end subroutine psb_c_csr_csgetblk ! ! CSR implementation of tril/triu diff --git a/base/serial/impl/psb_c_mat_impl.F90 b/base/serial/impl/psb_c_mat_impl.F90 index 4fb59411..c48e796f 100644 --- a/base/serial/impl/psb_c_mat_impl.F90 +++ b/base/serial/impl/psb_c_mat_impl.F90 @@ -793,7 +793,7 @@ end subroutine psb_c_csgetptn subroutine psb_c_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -810,7 +810,7 @@ subroutine psb_c_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz integer(psb_ipk_) :: err_act character(len=20) :: name='csget' @@ -826,7 +826,7 @@ subroutine psb_c_csgetrow(imin,imax,a,nz,ia,ja,val,info,& call a%a%csget(imin,imax,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) diff --git a/base/serial/impl/psb_d_base_mat_impl.F90 b/base/serial/impl/psb_d_base_mat_impl.F90 index 288e9134..be63683a 100644 --- a/base/serial/impl/psb_d_base_mat_impl.F90 +++ b/base/serial/impl/psb_d_base_mat_impl.F90 @@ -406,7 +406,7 @@ subroutine psb_d_base_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) end subroutine psb_d_base_csput_v subroutine psb_d_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -422,7 +422,7 @@ subroutine psb_d_base_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz integer(psb_ipk_) :: err_act integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' diff --git a/base/serial/impl/psb_d_coo_impl.f90 b/base/serial/impl/psb_d_coo_impl.f90 index 4e4c665c..47c0b107 100644 --- a/base/serial/impl/psb_d_coo_impl.f90 +++ b/base/serial/impl/psb_d_coo_impl.f90 @@ -2259,7 +2259,7 @@ end subroutine psb_d_coo_csgetptn ! The output is guaranteed to be sorted ! subroutine psb_d_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -2276,9 +2276,9 @@ subroutine psb_d_coo_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz - logical :: append_, rscale_, cscale_ + logical :: append_, rscale_, cscale_, chksz_ integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' @@ -2321,13 +2321,18 @@ subroutine psb_d_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& else cscale_ = .false. endif + if (present(chksz)) then + chksz_ = chksz + else + chksz_ = .true. + endif if ((rscale_.or.cscale_).and.(present(iren))) then info = psb_err_many_optional_arg_ call psb_errpush(info,name,a_err='iren (rscale.or.cscale)') goto 9999 end if - call coo_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,info,& + call coo_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,chksz_,info,& & iren) if (rscale_) then @@ -2352,7 +2357,7 @@ subroutine psb_d_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& contains - subroutine coo_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,info,& + subroutine coo_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,chksz,info,& & iren) use psb_const_mod @@ -2368,7 +2373,7 @@ contains integer(psb_ipk_), allocatable, intent(inout) :: ia(:), ja(:) real(psb_dpk_), allocatable, intent(inout) :: val(:) integer(psb_ipk_), intent(in) :: nzin - logical, intent(in) :: append + logical, intent(in) :: append,chksz integer(psb_ipk_) :: info integer(psb_ipk_), optional :: iren(:) integer(psb_ipk_) :: nzin_, nza, idx,ip,jp,i,k, nzt, irw, lrw, nra, nca, nrd @@ -2452,11 +2457,13 @@ contains nzt = jp - ip +1 nz = 0 - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return - + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if + if (present(iren)) then do i=ip,jp if ((jmin <= a%ja(i)).and.(a%ja(i)<=jmax)) then @@ -2488,11 +2495,13 @@ contains nrd = max(a%get_nrows(),1) nzt = ((nza+nrd-1)/nrd)*(lrw-irw+1) - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return - + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if + if (present(iren)) then k = 0 do i=1, a%get_nzeros() @@ -2501,10 +2510,12 @@ contains k = k + 1 if (k > nzt) then nzt = k + nzt - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if end if val(nzin_+k) = a%val(i) ia(nzin_+k) = iren(a%ia(i)) @@ -2519,11 +2530,12 @@ contains k = k + 1 if (k > nzt) then nzt = k + nzt - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return - + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if end if val(nzin_+k) = a%val(i) ia(nzin_+k) = (a%ia(i)) diff --git a/base/serial/impl/psb_d_csc_impl.f90 b/base/serial/impl/psb_d_csc_impl.f90 index b49884e7..4b46bc9a 100644 --- a/base/serial/impl/psb_d_csc_impl.f90 +++ b/base/serial/impl/psb_d_csc_impl.f90 @@ -1686,7 +1686,7 @@ end subroutine psb_d_csc_csgetptn subroutine psb_d_csc_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -1704,7 +1704,7 @@ subroutine psb_d_csc_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz logical :: append_, rscale_, cscale_ integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i @@ -2557,60 +2557,60 @@ end subroutine psb_d_csc_reallocate_nz -subroutine psb_d_csc_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - ! Output is always in COO format - use psb_error_mod - use psb_const_mod - use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_csgetblk - implicit none - - class(psb_d_csc_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 - integer(psb_ipk_) :: ierr(5) - 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 call psb_error_handler(err_act) - - return - -end subroutine psb_d_csc_csgetblk +!!$subroutine psb_d_csc_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale) +!!$ ! Output is always in COO format +!!$ use psb_error_mod +!!$ use psb_const_mod +!!$ use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_csgetblk +!!$ implicit none +!!$ +!!$ class(psb_d_csc_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 +!!$ integer(psb_ipk_) :: ierr(5) +!!$ 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 call psb_error_handler(err_act) +!!$ +!!$ return +!!$ +!!$end subroutine psb_d_csc_csgetblk subroutine psb_d_csc_reinit(a,clear) use psb_error_mod diff --git a/base/serial/impl/psb_d_csr_impl.f90 b/base/serial/impl/psb_d_csr_impl.f90 index a4155f8e..d2931fbd 100644 --- a/base/serial/impl/psb_d_csr_impl.f90 +++ b/base/serial/impl/psb_d_csr_impl.f90 @@ -1999,7 +1999,7 @@ end subroutine psb_d_csr_csgetptn subroutine psb_d_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -2017,9 +2017,9 @@ subroutine psb_d_csr_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz - logical :: append_, rscale_, cscale_ + logical :: append_, rscale_, cscale_, chksz_ integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' @@ -2063,13 +2063,18 @@ subroutine psb_d_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& else cscale_ = .false. endif + if (present(chksz)) then + chksz_ = chksz + else + chksz_ = .true. + endif if ((rscale_.or.cscale_).and.(present(iren))) then info = psb_err_many_optional_arg_ call psb_errpush(info,name,a_err='iren (rscale.or.cscale)') goto 9999 end if - call csr_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,info,& + call csr_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,chksz_,info,& & iren) if (rscale_) then @@ -2094,7 +2099,7 @@ subroutine psb_d_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& contains - subroutine csr_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,info,& + subroutine csr_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,chksz,info,& & iren) use psb_const_mod @@ -2109,7 +2114,7 @@ contains integer(psb_ipk_), allocatable, intent(inout) :: ia(:), ja(:) real(psb_dpk_), allocatable, intent(inout) :: val(:) integer(psb_ipk_), intent(in) :: nzin - logical, intent(in) :: append + logical, intent(in) :: append, chksz integer(psb_ipk_) :: info integer(psb_ipk_), optional :: iren(:) integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl,lcl, nrd, ncd @@ -2142,11 +2147,13 @@ contains nzt = (a%irp(lrw+1)-a%irp(irw)) nz = 0 - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - - if (info /= psb_success_) return + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + + if (info /= psb_success_) return + end if if (present(iren)) then do i=irw, lrw @@ -2178,60 +2185,60 @@ contains end subroutine psb_d_csr_csgetrow -subroutine psb_d_csr_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - ! Output is always in COO format - use psb_error_mod - use psb_const_mod - use psb_d_csr_mat_mod, psb_protect_name => psb_d_csr_csgetblk - implicit none - - class(psb_d_csr_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 - integer(psb_ipk_) :: ierr(5) - 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 call psb_error_handler(err_act) - - return - -end subroutine psb_d_csr_csgetblk +!!$subroutine psb_d_csr_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale) +!!$ ! Output is always in COO format +!!$ use psb_error_mod +!!$ use psb_const_mod +!!$ use psb_d_csr_mat_mod, psb_protect_name => psb_d_csr_csgetblk +!!$ implicit none +!!$ +!!$ class(psb_d_csr_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 +!!$ integer(psb_ipk_) :: ierr(5) +!!$ 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 call psb_error_handler(err_act) +!!$ +!!$ return +!!$ +!!$end subroutine psb_d_csr_csgetblk ! ! CSR implementation of tril/triu diff --git a/base/serial/impl/psb_d_mat_impl.F90 b/base/serial/impl/psb_d_mat_impl.F90 index 3628635e..410fc593 100644 --- a/base/serial/impl/psb_d_mat_impl.F90 +++ b/base/serial/impl/psb_d_mat_impl.F90 @@ -793,7 +793,7 @@ end subroutine psb_d_csgetptn subroutine psb_d_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -810,7 +810,7 @@ subroutine psb_d_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz integer(psb_ipk_) :: err_act character(len=20) :: name='csget' @@ -826,7 +826,7 @@ subroutine psb_d_csgetrow(imin,imax,a,nz,ia,ja,val,info,& call a%a%csget(imin,imax,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) diff --git a/base/serial/impl/psb_s_base_mat_impl.F90 b/base/serial/impl/psb_s_base_mat_impl.F90 index 665e1713..d4cf3058 100644 --- a/base/serial/impl/psb_s_base_mat_impl.F90 +++ b/base/serial/impl/psb_s_base_mat_impl.F90 @@ -406,7 +406,7 @@ subroutine psb_s_base_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) end subroutine psb_s_base_csput_v subroutine psb_s_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -422,7 +422,7 @@ subroutine psb_s_base_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz integer(psb_ipk_) :: err_act integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' diff --git a/base/serial/impl/psb_s_coo_impl.f90 b/base/serial/impl/psb_s_coo_impl.f90 index 1a45e3ea..b80a8a99 100644 --- a/base/serial/impl/psb_s_coo_impl.f90 +++ b/base/serial/impl/psb_s_coo_impl.f90 @@ -2259,7 +2259,7 @@ end subroutine psb_s_coo_csgetptn ! The output is guaranteed to be sorted ! subroutine psb_s_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -2276,9 +2276,9 @@ subroutine psb_s_coo_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz - logical :: append_, rscale_, cscale_ + logical :: append_, rscale_, cscale_, chksz_ integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' @@ -2321,13 +2321,18 @@ subroutine psb_s_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& else cscale_ = .false. endif + if (present(chksz)) then + chksz_ = chksz + else + chksz_ = .true. + endif if ((rscale_.or.cscale_).and.(present(iren))) then info = psb_err_many_optional_arg_ call psb_errpush(info,name,a_err='iren (rscale.or.cscale)') goto 9999 end if - call coo_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,info,& + call coo_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,chksz_,info,& & iren) if (rscale_) then @@ -2352,7 +2357,7 @@ subroutine psb_s_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& contains - subroutine coo_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,info,& + subroutine coo_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,chksz,info,& & iren) use psb_const_mod @@ -2368,7 +2373,7 @@ contains integer(psb_ipk_), allocatable, intent(inout) :: ia(:), ja(:) real(psb_spk_), allocatable, intent(inout) :: val(:) integer(psb_ipk_), intent(in) :: nzin - logical, intent(in) :: append + logical, intent(in) :: append,chksz integer(psb_ipk_) :: info integer(psb_ipk_), optional :: iren(:) integer(psb_ipk_) :: nzin_, nza, idx,ip,jp,i,k, nzt, irw, lrw, nra, nca, nrd @@ -2452,11 +2457,13 @@ contains nzt = jp - ip +1 nz = 0 - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return - + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if + if (present(iren)) then do i=ip,jp if ((jmin <= a%ja(i)).and.(a%ja(i)<=jmax)) then @@ -2488,11 +2495,13 @@ contains nrd = max(a%get_nrows(),1) nzt = ((nza+nrd-1)/nrd)*(lrw-irw+1) - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return - + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if + if (present(iren)) then k = 0 do i=1, a%get_nzeros() @@ -2501,10 +2510,12 @@ contains k = k + 1 if (k > nzt) then nzt = k + nzt - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if end if val(nzin_+k) = a%val(i) ia(nzin_+k) = iren(a%ia(i)) @@ -2519,11 +2530,12 @@ contains k = k + 1 if (k > nzt) then nzt = k + nzt - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return - + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if end if val(nzin_+k) = a%val(i) ia(nzin_+k) = (a%ia(i)) diff --git a/base/serial/impl/psb_s_csc_impl.f90 b/base/serial/impl/psb_s_csc_impl.f90 index 08b73543..bf3fa900 100644 --- a/base/serial/impl/psb_s_csc_impl.f90 +++ b/base/serial/impl/psb_s_csc_impl.f90 @@ -1686,7 +1686,7 @@ end subroutine psb_s_csc_csgetptn subroutine psb_s_csc_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -1704,7 +1704,7 @@ subroutine psb_s_csc_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz logical :: append_, rscale_, cscale_ integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i @@ -2557,60 +2557,60 @@ end subroutine psb_s_csc_reallocate_nz -subroutine psb_s_csc_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - ! Output is always in COO format - use psb_error_mod - use psb_const_mod - use psb_s_csc_mat_mod, psb_protect_name => psb_s_csc_csgetblk - implicit none - - class(psb_s_csc_sparse_mat), intent(in) :: a - class(psb_s_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 - integer(psb_ipk_) :: ierr(5) - 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 call psb_error_handler(err_act) - - return - -end subroutine psb_s_csc_csgetblk +!!$subroutine psb_s_csc_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale) +!!$ ! Output is always in COO format +!!$ use psb_error_mod +!!$ use psb_const_mod +!!$ use psb_s_csc_mat_mod, psb_protect_name => psb_s_csc_csgetblk +!!$ implicit none +!!$ +!!$ class(psb_s_csc_sparse_mat), intent(in) :: a +!!$ class(psb_s_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 +!!$ integer(psb_ipk_) :: ierr(5) +!!$ 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 call psb_error_handler(err_act) +!!$ +!!$ return +!!$ +!!$end subroutine psb_s_csc_csgetblk subroutine psb_s_csc_reinit(a,clear) use psb_error_mod diff --git a/base/serial/impl/psb_s_csr_impl.f90 b/base/serial/impl/psb_s_csr_impl.f90 index 3d0da15d..bcb9f933 100644 --- a/base/serial/impl/psb_s_csr_impl.f90 +++ b/base/serial/impl/psb_s_csr_impl.f90 @@ -1999,7 +1999,7 @@ end subroutine psb_s_csr_csgetptn subroutine psb_s_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -2017,9 +2017,9 @@ subroutine psb_s_csr_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz - logical :: append_, rscale_, cscale_ + logical :: append_, rscale_, cscale_, chksz_ integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' @@ -2063,13 +2063,18 @@ subroutine psb_s_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& else cscale_ = .false. endif + if (present(chksz)) then + chksz_ = chksz + else + chksz_ = .true. + endif if ((rscale_.or.cscale_).and.(present(iren))) then info = psb_err_many_optional_arg_ call psb_errpush(info,name,a_err='iren (rscale.or.cscale)') goto 9999 end if - call csr_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,info,& + call csr_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,chksz_,info,& & iren) if (rscale_) then @@ -2094,7 +2099,7 @@ subroutine psb_s_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& contains - subroutine csr_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,info,& + subroutine csr_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,chksz,info,& & iren) use psb_const_mod @@ -2109,7 +2114,7 @@ contains integer(psb_ipk_), allocatable, intent(inout) :: ia(:), ja(:) real(psb_spk_), allocatable, intent(inout) :: val(:) integer(psb_ipk_), intent(in) :: nzin - logical, intent(in) :: append + logical, intent(in) :: append, chksz integer(psb_ipk_) :: info integer(psb_ipk_), optional :: iren(:) integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl,lcl, nrd, ncd @@ -2142,11 +2147,13 @@ contains nzt = (a%irp(lrw+1)-a%irp(irw)) nz = 0 - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - - if (info /= psb_success_) return + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + + if (info /= psb_success_) return + end if if (present(iren)) then do i=irw, lrw @@ -2178,60 +2185,60 @@ contains end subroutine psb_s_csr_csgetrow -subroutine psb_s_csr_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - ! Output is always in COO format - use psb_error_mod - use psb_const_mod - use psb_s_csr_mat_mod, psb_protect_name => psb_s_csr_csgetblk - implicit none - - class(psb_s_csr_sparse_mat), intent(in) :: a - class(psb_s_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 - integer(psb_ipk_) :: ierr(5) - 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 call psb_error_handler(err_act) - - return - -end subroutine psb_s_csr_csgetblk +!!$subroutine psb_s_csr_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale) +!!$ ! Output is always in COO format +!!$ use psb_error_mod +!!$ use psb_const_mod +!!$ use psb_s_csr_mat_mod, psb_protect_name => psb_s_csr_csgetblk +!!$ implicit none +!!$ +!!$ class(psb_s_csr_sparse_mat), intent(in) :: a +!!$ class(psb_s_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 +!!$ integer(psb_ipk_) :: ierr(5) +!!$ 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 call psb_error_handler(err_act) +!!$ +!!$ return +!!$ +!!$end subroutine psb_s_csr_csgetblk ! ! CSR implementation of tril/triu diff --git a/base/serial/impl/psb_s_mat_impl.F90 b/base/serial/impl/psb_s_mat_impl.F90 index 2f14018c..a011aabf 100644 --- a/base/serial/impl/psb_s_mat_impl.F90 +++ b/base/serial/impl/psb_s_mat_impl.F90 @@ -793,7 +793,7 @@ end subroutine psb_s_csgetptn subroutine psb_s_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -810,7 +810,7 @@ subroutine psb_s_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz integer(psb_ipk_) :: err_act character(len=20) :: name='csget' @@ -826,7 +826,7 @@ subroutine psb_s_csgetrow(imin,imax,a,nz,ia,ja,val,info,& call a%a%csget(imin,imax,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) diff --git a/base/serial/impl/psb_z_base_mat_impl.F90 b/base/serial/impl/psb_z_base_mat_impl.F90 index 00ec7de7..fde15356 100644 --- a/base/serial/impl/psb_z_base_mat_impl.F90 +++ b/base/serial/impl/psb_z_base_mat_impl.F90 @@ -406,7 +406,7 @@ subroutine psb_z_base_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) end subroutine psb_z_base_csput_v subroutine psb_z_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -422,7 +422,7 @@ subroutine psb_z_base_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz integer(psb_ipk_) :: err_act integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' diff --git a/base/serial/impl/psb_z_coo_impl.f90 b/base/serial/impl/psb_z_coo_impl.f90 index 467ea950..e1883e03 100644 --- a/base/serial/impl/psb_z_coo_impl.f90 +++ b/base/serial/impl/psb_z_coo_impl.f90 @@ -2259,7 +2259,7 @@ end subroutine psb_z_coo_csgetptn ! The output is guaranteed to be sorted ! subroutine psb_z_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -2276,9 +2276,9 @@ subroutine psb_z_coo_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz - logical :: append_, rscale_, cscale_ + logical :: append_, rscale_, cscale_, chksz_ integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' @@ -2321,13 +2321,18 @@ subroutine psb_z_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& else cscale_ = .false. endif + if (present(chksz)) then + chksz_ = chksz + else + chksz_ = .true. + endif if ((rscale_.or.cscale_).and.(present(iren))) then info = psb_err_many_optional_arg_ call psb_errpush(info,name,a_err='iren (rscale.or.cscale)') goto 9999 end if - call coo_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,info,& + call coo_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,chksz_,info,& & iren) if (rscale_) then @@ -2352,7 +2357,7 @@ subroutine psb_z_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& contains - subroutine coo_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,info,& + subroutine coo_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,chksz,info,& & iren) use psb_const_mod @@ -2368,7 +2373,7 @@ contains integer(psb_ipk_), allocatable, intent(inout) :: ia(:), ja(:) complex(psb_dpk_), allocatable, intent(inout) :: val(:) integer(psb_ipk_), intent(in) :: nzin - logical, intent(in) :: append + logical, intent(in) :: append,chksz integer(psb_ipk_) :: info integer(psb_ipk_), optional :: iren(:) integer(psb_ipk_) :: nzin_, nza, idx,ip,jp,i,k, nzt, irw, lrw, nra, nca, nrd @@ -2452,11 +2457,13 @@ contains nzt = jp - ip +1 nz = 0 - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return - + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if + if (present(iren)) then do i=ip,jp if ((jmin <= a%ja(i)).and.(a%ja(i)<=jmax)) then @@ -2488,11 +2495,13 @@ contains nrd = max(a%get_nrows(),1) nzt = ((nza+nrd-1)/nrd)*(lrw-irw+1) - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return - + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if + if (present(iren)) then k = 0 do i=1, a%get_nzeros() @@ -2501,10 +2510,12 @@ contains k = k + 1 if (k > nzt) then nzt = k + nzt - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if end if val(nzin_+k) = a%val(i) ia(nzin_+k) = iren(a%ia(i)) @@ -2519,11 +2530,12 @@ contains k = k + 1 if (k > nzt) then nzt = k + nzt - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - if (info /= psb_success_) return - + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if end if val(nzin_+k) = a%val(i) ia(nzin_+k) = (a%ia(i)) diff --git a/base/serial/impl/psb_z_csc_impl.f90 b/base/serial/impl/psb_z_csc_impl.f90 index d03e5ad6..1abf68d3 100644 --- a/base/serial/impl/psb_z_csc_impl.f90 +++ b/base/serial/impl/psb_z_csc_impl.f90 @@ -1686,7 +1686,7 @@ end subroutine psb_z_csc_csgetptn subroutine psb_z_csc_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -1704,7 +1704,7 @@ subroutine psb_z_csc_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz logical :: append_, rscale_, cscale_ integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i @@ -2557,60 +2557,60 @@ end subroutine psb_z_csc_reallocate_nz -subroutine psb_z_csc_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - ! Output is always in COO format - use psb_error_mod - use psb_const_mod - use psb_z_csc_mat_mod, psb_protect_name => psb_z_csc_csgetblk - implicit none - - class(psb_z_csc_sparse_mat), intent(in) :: a - class(psb_z_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 - integer(psb_ipk_) :: ierr(5) - 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 call psb_error_handler(err_act) - - return - -end subroutine psb_z_csc_csgetblk +!!$subroutine psb_z_csc_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale) +!!$ ! Output is always in COO format +!!$ use psb_error_mod +!!$ use psb_const_mod +!!$ use psb_z_csc_mat_mod, psb_protect_name => psb_z_csc_csgetblk +!!$ implicit none +!!$ +!!$ class(psb_z_csc_sparse_mat), intent(in) :: a +!!$ class(psb_z_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 +!!$ integer(psb_ipk_) :: ierr(5) +!!$ 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 call psb_error_handler(err_act) +!!$ +!!$ return +!!$ +!!$end subroutine psb_z_csc_csgetblk subroutine psb_z_csc_reinit(a,clear) use psb_error_mod diff --git a/base/serial/impl/psb_z_csr_impl.f90 b/base/serial/impl/psb_z_csr_impl.f90 index 7f494a69..9e99060f 100644 --- a/base/serial/impl/psb_z_csr_impl.f90 +++ b/base/serial/impl/psb_z_csr_impl.f90 @@ -1999,7 +1999,7 @@ end subroutine psb_z_csr_csgetptn subroutine psb_z_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -2017,9 +2017,9 @@ subroutine psb_z_csr_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz - logical :: append_, rscale_, cscale_ + logical :: append_, rscale_, cscale_, chksz_ integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' @@ -2063,13 +2063,18 @@ subroutine psb_z_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& else cscale_ = .false. endif + if (present(chksz)) then + chksz_ = chksz + else + chksz_ = .true. + endif if ((rscale_.or.cscale_).and.(present(iren))) then info = psb_err_many_optional_arg_ call psb_errpush(info,name,a_err='iren (rscale.or.cscale)') goto 9999 end if - call csr_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,info,& + call csr_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,chksz_,info,& & iren) if (rscale_) then @@ -2094,7 +2099,7 @@ subroutine psb_z_csr_csgetrow(imin,imax,a,nz,ia,ja,val,info,& contains - subroutine csr_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,info,& + subroutine csr_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,chksz,info,& & iren) use psb_const_mod @@ -2109,7 +2114,7 @@ contains integer(psb_ipk_), allocatable, intent(inout) :: ia(:), ja(:) complex(psb_dpk_), allocatable, intent(inout) :: val(:) integer(psb_ipk_), intent(in) :: nzin - logical, intent(in) :: append + logical, intent(in) :: append, chksz integer(psb_ipk_) :: info integer(psb_ipk_), optional :: iren(:) integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl,lcl, nrd, ncd @@ -2142,11 +2147,13 @@ contains nzt = (a%irp(lrw+1)-a%irp(irw)) nz = 0 - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - - if (info /= psb_success_) return + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + + if (info /= psb_success_) return + end if if (present(iren)) then do i=irw, lrw @@ -2178,60 +2185,60 @@ contains end subroutine psb_z_csr_csgetrow -subroutine psb_z_csr_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) - ! Output is always in COO format - use psb_error_mod - use psb_const_mod - use psb_z_csr_mat_mod, psb_protect_name => psb_z_csr_csgetblk - implicit none - - class(psb_z_csr_sparse_mat), intent(in) :: a - class(psb_z_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 - integer(psb_ipk_) :: ierr(5) - 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 call psb_error_handler(err_act) - - return - -end subroutine psb_z_csr_csgetblk +!!$subroutine psb_z_csr_csgetblk(imin,imax,a,b,info,& +!!$ & jmin,jmax,iren,append,rscale,cscale) +!!$ ! Output is always in COO format +!!$ use psb_error_mod +!!$ use psb_const_mod +!!$ use psb_z_csr_mat_mod, psb_protect_name => psb_z_csr_csgetblk +!!$ implicit none +!!$ +!!$ class(psb_z_csr_sparse_mat), intent(in) :: a +!!$ class(psb_z_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 +!!$ integer(psb_ipk_) :: ierr(5) +!!$ 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 call psb_error_handler(err_act) +!!$ +!!$ return +!!$ +!!$end subroutine psb_z_csr_csgetblk ! ! CSR implementation of tril/triu diff --git a/base/serial/impl/psb_z_mat_impl.F90 b/base/serial/impl/psb_z_mat_impl.F90 index 15df2efa..d45ee93f 100644 --- a/base/serial/impl/psb_z_mat_impl.F90 +++ b/base/serial/impl/psb_z_mat_impl.F90 @@ -793,7 +793,7 @@ end subroutine psb_z_csgetptn subroutine psb_z_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -810,7 +810,7 @@ subroutine psb_z_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz integer(psb_ipk_) :: err_act character(len=20) :: name='csget' @@ -826,7 +826,7 @@ subroutine psb_z_csgetrow(imin,imax,a,nz,ia,ja,val,info,& call a%a%csget(imin,imax,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) From ae2e575a2946b419f2d90d23db693226b15179cb Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Mon, 13 Aug 2018 13:14:34 +0100 Subject: [PATCH 14/26] Cleanup error returns. --- base/tools/psb_csphalo.F90 | 26 ++++++++++++-------------- base/tools/psb_dsphalo.F90 | 26 ++++++++++++-------------- base/tools/psb_ssphalo.F90 | 26 ++++++++++++-------------- base/tools/psb_zsphalo.F90 | 26 ++++++++++++-------------- 4 files changed, 48 insertions(+), 56 deletions(-) diff --git a/base/tools/psb_csphalo.F90 b/base/tools/psb_csphalo.F90 index c50c8d79..44f25b67 100644 --- a/base/tools/psb_csphalo.F90 +++ b/base/tools/psb_csphalo.F90 @@ -199,8 +199,7 @@ Subroutine psb_csphalo(a,desc_a,blk,info,rowcnv,colcnv,& & rvsz,1,psb_mpi_def_integer,icomm,minfo) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='mpi_alltoall' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='mpi_alltoall') goto 9999 end if @@ -228,8 +227,7 @@ Subroutine psb_csphalo(a,desc_a,blk,info,rowcnv,colcnv,& & ' Send:',sdsz(:),' Receive:',rvsz(:) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_sp_reall' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_sp_reall') goto 9999 end if mat_recv = iszr @@ -237,6 +235,11 @@ Subroutine psb_csphalo(a,desc_a,blk,info,rowcnv,colcnv,& call psb_ensure_size(max(iszs,1),iasnd,info) if (info == psb_success_) call psb_ensure_size(max(iszs,1),jasnd,info) if (info == psb_success_) call psb_ensure_size(max(iszs,1),valsnd,info) + if (info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='ensure_size') + goto 9999 + end if l1 = 0 ipx = 1 @@ -258,8 +261,7 @@ Subroutine psb_csphalo(a,desc_a,blk,info,rowcnv,colcnv,& & append=.true.,nzin=tot_elem) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_sp_getrow' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_sp_getrow') goto 9999 end if tot_elem=tot_elem+n_elem @@ -273,8 +275,7 @@ Subroutine psb_csphalo(a,desc_a,blk,info,rowcnv,colcnv,& if (colcnv_) call psb_loc_to_glob(jasnd(1:nz),desc_a,info,iact='I') if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_loc_to_glob' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_loc_to_glob') goto 9999 end if @@ -287,8 +288,7 @@ Subroutine psb_csphalo(a,desc_a,blk,info,rowcnv,colcnv,& & acoo%ja,rvsz,brvindx,psb_mpi_ipk_integer,icomm,minfo) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='mpi_alltoallv' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='mpi_alltoallv') goto 9999 end if @@ -300,8 +300,7 @@ Subroutine psb_csphalo(a,desc_a,blk,info,rowcnv,colcnv,& if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psbglob_to_loc' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psbglob_to_loc') goto 9999 end if @@ -353,8 +352,7 @@ Subroutine psb_csphalo(a,desc_a,blk,info,rowcnv,colcnv,& call blk%cscnv(info,type=outfmt_,dupl=psb_dupl_add_) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_spcnv' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_spcnv') goto 9999 end if diff --git a/base/tools/psb_dsphalo.F90 b/base/tools/psb_dsphalo.F90 index 5c311aa6..dbc12c02 100644 --- a/base/tools/psb_dsphalo.F90 +++ b/base/tools/psb_dsphalo.F90 @@ -199,8 +199,7 @@ Subroutine psb_dsphalo(a,desc_a,blk,info,rowcnv,colcnv,& & rvsz,1,psb_mpi_def_integer,icomm,minfo) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='mpi_alltoall' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='mpi_alltoall') goto 9999 end if @@ -228,8 +227,7 @@ Subroutine psb_dsphalo(a,desc_a,blk,info,rowcnv,colcnv,& & ' Send:',sdsz(:),' Receive:',rvsz(:) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_sp_reall' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_sp_reall') goto 9999 end if mat_recv = iszr @@ -237,6 +235,11 @@ Subroutine psb_dsphalo(a,desc_a,blk,info,rowcnv,colcnv,& call psb_ensure_size(max(iszs,1),iasnd,info) if (info == psb_success_) call psb_ensure_size(max(iszs,1),jasnd,info) if (info == psb_success_) call psb_ensure_size(max(iszs,1),valsnd,info) + if (info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='ensure_size') + goto 9999 + end if l1 = 0 ipx = 1 @@ -258,8 +261,7 @@ Subroutine psb_dsphalo(a,desc_a,blk,info,rowcnv,colcnv,& & append=.true.,nzin=tot_elem) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_sp_getrow' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_sp_getrow') goto 9999 end if tot_elem=tot_elem+n_elem @@ -273,8 +275,7 @@ Subroutine psb_dsphalo(a,desc_a,blk,info,rowcnv,colcnv,& if (colcnv_) call psb_loc_to_glob(jasnd(1:nz),desc_a,info,iact='I') if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_loc_to_glob' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_loc_to_glob') goto 9999 end if @@ -287,8 +288,7 @@ Subroutine psb_dsphalo(a,desc_a,blk,info,rowcnv,colcnv,& & acoo%ja,rvsz,brvindx,psb_mpi_ipk_integer,icomm,minfo) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='mpi_alltoallv' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='mpi_alltoallv') goto 9999 end if @@ -300,8 +300,7 @@ Subroutine psb_dsphalo(a,desc_a,blk,info,rowcnv,colcnv,& if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psbglob_to_loc' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psbglob_to_loc') goto 9999 end if @@ -353,8 +352,7 @@ Subroutine psb_dsphalo(a,desc_a,blk,info,rowcnv,colcnv,& call blk%cscnv(info,type=outfmt_,dupl=psb_dupl_add_) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_spcnv' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_spcnv') goto 9999 end if diff --git a/base/tools/psb_ssphalo.F90 b/base/tools/psb_ssphalo.F90 index acbf5212..bb6585d5 100644 --- a/base/tools/psb_ssphalo.F90 +++ b/base/tools/psb_ssphalo.F90 @@ -199,8 +199,7 @@ Subroutine psb_ssphalo(a,desc_a,blk,info,rowcnv,colcnv,& & rvsz,1,psb_mpi_def_integer,icomm,minfo) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='mpi_alltoall' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='mpi_alltoall') goto 9999 end if @@ -228,8 +227,7 @@ Subroutine psb_ssphalo(a,desc_a,blk,info,rowcnv,colcnv,& & ' Send:',sdsz(:),' Receive:',rvsz(:) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_sp_reall' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_sp_reall') goto 9999 end if mat_recv = iszr @@ -237,6 +235,11 @@ Subroutine psb_ssphalo(a,desc_a,blk,info,rowcnv,colcnv,& call psb_ensure_size(max(iszs,1),iasnd,info) if (info == psb_success_) call psb_ensure_size(max(iszs,1),jasnd,info) if (info == psb_success_) call psb_ensure_size(max(iszs,1),valsnd,info) + if (info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='ensure_size') + goto 9999 + end if l1 = 0 ipx = 1 @@ -258,8 +261,7 @@ Subroutine psb_ssphalo(a,desc_a,blk,info,rowcnv,colcnv,& & append=.true.,nzin=tot_elem) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_sp_getrow' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_sp_getrow') goto 9999 end if tot_elem=tot_elem+n_elem @@ -273,8 +275,7 @@ Subroutine psb_ssphalo(a,desc_a,blk,info,rowcnv,colcnv,& if (colcnv_) call psb_loc_to_glob(jasnd(1:nz),desc_a,info,iact='I') if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_loc_to_glob' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_loc_to_glob') goto 9999 end if @@ -287,8 +288,7 @@ Subroutine psb_ssphalo(a,desc_a,blk,info,rowcnv,colcnv,& & acoo%ja,rvsz,brvindx,psb_mpi_ipk_integer,icomm,minfo) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='mpi_alltoallv' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='mpi_alltoallv') goto 9999 end if @@ -300,8 +300,7 @@ Subroutine psb_ssphalo(a,desc_a,blk,info,rowcnv,colcnv,& if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psbglob_to_loc' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psbglob_to_loc') goto 9999 end if @@ -353,8 +352,7 @@ Subroutine psb_ssphalo(a,desc_a,blk,info,rowcnv,colcnv,& call blk%cscnv(info,type=outfmt_,dupl=psb_dupl_add_) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_spcnv' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_spcnv') goto 9999 end if diff --git a/base/tools/psb_zsphalo.F90 b/base/tools/psb_zsphalo.F90 index 3ce2d6da..4c479ac5 100644 --- a/base/tools/psb_zsphalo.F90 +++ b/base/tools/psb_zsphalo.F90 @@ -199,8 +199,7 @@ Subroutine psb_zsphalo(a,desc_a,blk,info,rowcnv,colcnv,& & rvsz,1,psb_mpi_def_integer,icomm,minfo) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='mpi_alltoall' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='mpi_alltoall') goto 9999 end if @@ -228,8 +227,7 @@ Subroutine psb_zsphalo(a,desc_a,blk,info,rowcnv,colcnv,& & ' Send:',sdsz(:),' Receive:',rvsz(:) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_sp_reall' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_sp_reall') goto 9999 end if mat_recv = iszr @@ -237,6 +235,11 @@ Subroutine psb_zsphalo(a,desc_a,blk,info,rowcnv,colcnv,& call psb_ensure_size(max(iszs,1),iasnd,info) if (info == psb_success_) call psb_ensure_size(max(iszs,1),jasnd,info) if (info == psb_success_) call psb_ensure_size(max(iszs,1),valsnd,info) + if (info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='ensure_size') + goto 9999 + end if l1 = 0 ipx = 1 @@ -258,8 +261,7 @@ Subroutine psb_zsphalo(a,desc_a,blk,info,rowcnv,colcnv,& & append=.true.,nzin=tot_elem) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_sp_getrow' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_sp_getrow') goto 9999 end if tot_elem=tot_elem+n_elem @@ -273,8 +275,7 @@ Subroutine psb_zsphalo(a,desc_a,blk,info,rowcnv,colcnv,& if (colcnv_) call psb_loc_to_glob(jasnd(1:nz),desc_a,info,iact='I') if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_loc_to_glob' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_loc_to_glob') goto 9999 end if @@ -287,8 +288,7 @@ Subroutine psb_zsphalo(a,desc_a,blk,info,rowcnv,colcnv,& & acoo%ja,rvsz,brvindx,psb_mpi_ipk_integer,icomm,minfo) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='mpi_alltoallv' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='mpi_alltoallv') goto 9999 end if @@ -300,8 +300,7 @@ Subroutine psb_zsphalo(a,desc_a,blk,info,rowcnv,colcnv,& if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psbglob_to_loc' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psbglob_to_loc') goto 9999 end if @@ -353,8 +352,7 @@ Subroutine psb_zsphalo(a,desc_a,blk,info,rowcnv,colcnv,& call blk%cscnv(info,type=outfmt_,dupl=psb_dupl_add_) if (info /= psb_success_) then info=psb_err_from_subroutine_ - ch_err='psb_spcnv' - call psb_errpush(info,name,a_err=ch_err) + call psb_errpush(info,name,a_err='psb_spcnv') goto 9999 end if From e5ed49a0180cab8e831302f2a4a8f6c573d1aa30 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Tue, 4 Sep 2018 17:40:51 +0100 Subject: [PATCH 15/26] Add N to get_vect. --- base/modules/serial/psb_c_base_vect_mod.f90 | 11 +- base/modules/serial/psb_c_vect_mod.F90 | 5 +- base/modules/serial/psb_d_base_vect_mod.f90 | 11 +- base/modules/serial/psb_d_vect_mod.F90 | 5 +- base/modules/serial/psb_i_base_vect_mod.f90 | 11 +- base/modules/serial/psb_i_vect_mod.F90 | 5 +- base/modules/serial/psb_s_base_vect_mod.f90 | 11 +- base/modules/serial/psb_s_vect_mod.F90 | 5 +- base/modules/serial/psb_z_base_vect_mod.f90 | 11 +- base/modules/serial/psb_z_vect_mod.F90 | 5 +- docs/psblas-3.5.pdf | 118 ++++++++++---------- docs/src/datastruct.tex | 11 +- 12 files changed, 125 insertions(+), 84 deletions(-) diff --git a/base/modules/serial/psb_c_base_vect_mod.f90 b/base/modules/serial/psb_c_base_vect_mod.f90 index 518b154a..6fa0bc70 100644 --- a/base/modules/serial/psb_c_base_vect_mod.f90 +++ b/base/modules/serial/psb_c_base_vect_mod.f90 @@ -688,19 +688,24 @@ contains !! \brief Extract a copy of the contents !! ! - function c_base_get_vect(x) result(res) + function c_base_get_vect(x,n) result(res) class(psb_c_base_vect_type), intent(inout) :: x complex(psb_spk_), allocatable :: res(:) integer(psb_ipk_) :: info + integer(psb_ipk_), optional :: n + ! Local variables + integer(psb_ipk_) :: isz if (.not.allocated(x%v)) return if (.not.x%is_host()) call x%sync() - allocate(res(x%get_nrows()),stat=info) + isz = x%get_nrows() + if (present(n)) isz = max(0,min(isz,n)) + allocate(res(isz),stat=info) if (info /= 0) then call psb_errpush(psb_err_alloc_dealloc_,'base_get_vect') return end if - res(:) = x%v(:) + res(1:isz) = x%v(1:isz) end function c_base_get_vect ! diff --git a/base/modules/serial/psb_c_vect_mod.F90 b/base/modules/serial/psb_c_vect_mod.F90 index 73d07ace..208561b6 100644 --- a/base/modules/serial/psb_c_vect_mod.F90 +++ b/base/modules/serial/psb_c_vect_mod.F90 @@ -227,13 +227,14 @@ contains end subroutine c_vect_bld_n - function c_vect_get_vect(x) result(res) + function c_vect_get_vect(x,n) result(res) class(psb_c_vect_type), intent(inout) :: x complex(psb_spk_), allocatable :: res(:) integer(psb_ipk_) :: info + integer(psb_ipk_), optional :: n if (allocated(x%v)) then - res = x%v%get_vect() + res = x%v%get_vect(n) end if end function c_vect_get_vect diff --git a/base/modules/serial/psb_d_base_vect_mod.f90 b/base/modules/serial/psb_d_base_vect_mod.f90 index 96344633..36e95142 100644 --- a/base/modules/serial/psb_d_base_vect_mod.f90 +++ b/base/modules/serial/psb_d_base_vect_mod.f90 @@ -688,19 +688,24 @@ contains !! \brief Extract a copy of the contents !! ! - function d_base_get_vect(x) result(res) + function d_base_get_vect(x,n) result(res) class(psb_d_base_vect_type), intent(inout) :: x real(psb_dpk_), allocatable :: res(:) integer(psb_ipk_) :: info + integer(psb_ipk_), optional :: n + ! Local variables + integer(psb_ipk_) :: isz if (.not.allocated(x%v)) return if (.not.x%is_host()) call x%sync() - allocate(res(x%get_nrows()),stat=info) + isz = x%get_nrows() + if (present(n)) isz = max(0,min(isz,n)) + allocate(res(isz),stat=info) if (info /= 0) then call psb_errpush(psb_err_alloc_dealloc_,'base_get_vect') return end if - res(:) = x%v(:) + res(1:isz) = x%v(1:isz) end function d_base_get_vect ! diff --git a/base/modules/serial/psb_d_vect_mod.F90 b/base/modules/serial/psb_d_vect_mod.F90 index 47870bbb..68b10b2e 100644 --- a/base/modules/serial/psb_d_vect_mod.F90 +++ b/base/modules/serial/psb_d_vect_mod.F90 @@ -227,13 +227,14 @@ contains end subroutine d_vect_bld_n - function d_vect_get_vect(x) result(res) + function d_vect_get_vect(x,n) result(res) class(psb_d_vect_type), intent(inout) :: x real(psb_dpk_), allocatable :: res(:) integer(psb_ipk_) :: info + integer(psb_ipk_), optional :: n if (allocated(x%v)) then - res = x%v%get_vect() + res = x%v%get_vect(n) end if end function d_vect_get_vect diff --git a/base/modules/serial/psb_i_base_vect_mod.f90 b/base/modules/serial/psb_i_base_vect_mod.f90 index 9eaa8fc6..4cc592ac 100644 --- a/base/modules/serial/psb_i_base_vect_mod.f90 +++ b/base/modules/serial/psb_i_base_vect_mod.f90 @@ -657,19 +657,24 @@ contains !! \brief Extract a copy of the contents !! ! - function i_base_get_vect(x) result(res) + function i_base_get_vect(x,n) result(res) class(psb_i_base_vect_type), intent(inout) :: x integer(psb_ipk_), allocatable :: res(:) integer(psb_ipk_) :: info + integer(psb_ipk_), optional :: n + ! Local variables + integer(psb_ipk_) :: isz if (.not.allocated(x%v)) return if (.not.x%is_host()) call x%sync() - allocate(res(x%get_nrows()),stat=info) + isz = x%get_nrows() + if (present(n)) isz = max(0,min(isz,n)) + allocate(res(isz),stat=info) if (info /= 0) then call psb_errpush(psb_err_alloc_dealloc_,'base_get_vect') return end if - res(:) = x%v(:) + res(1:isz) = x%v(1:isz) end function i_base_get_vect ! diff --git a/base/modules/serial/psb_i_vect_mod.F90 b/base/modules/serial/psb_i_vect_mod.F90 index 0671bc33..149e5cab 100644 --- a/base/modules/serial/psb_i_vect_mod.F90 +++ b/base/modules/serial/psb_i_vect_mod.F90 @@ -200,13 +200,14 @@ contains end subroutine i_vect_bld_n - function i_vect_get_vect(x) result(res) + function i_vect_get_vect(x,n) result(res) class(psb_i_vect_type), intent(inout) :: x integer(psb_ipk_), allocatable :: res(:) integer(psb_ipk_) :: info + integer(psb_ipk_), optional :: n if (allocated(x%v)) then - res = x%v%get_vect() + res = x%v%get_vect(n) end if end function i_vect_get_vect diff --git a/base/modules/serial/psb_s_base_vect_mod.f90 b/base/modules/serial/psb_s_base_vect_mod.f90 index 62ba7c1e..9ee77ea6 100644 --- a/base/modules/serial/psb_s_base_vect_mod.f90 +++ b/base/modules/serial/psb_s_base_vect_mod.f90 @@ -688,19 +688,24 @@ contains !! \brief Extract a copy of the contents !! ! - function s_base_get_vect(x) result(res) + function s_base_get_vect(x,n) result(res) class(psb_s_base_vect_type), intent(inout) :: x real(psb_spk_), allocatable :: res(:) integer(psb_ipk_) :: info + integer(psb_ipk_), optional :: n + ! Local variables + integer(psb_ipk_) :: isz if (.not.allocated(x%v)) return if (.not.x%is_host()) call x%sync() - allocate(res(x%get_nrows()),stat=info) + isz = x%get_nrows() + if (present(n)) isz = max(0,min(isz,n)) + allocate(res(isz),stat=info) if (info /= 0) then call psb_errpush(psb_err_alloc_dealloc_,'base_get_vect') return end if - res(:) = x%v(:) + res(1:isz) = x%v(1:isz) end function s_base_get_vect ! diff --git a/base/modules/serial/psb_s_vect_mod.F90 b/base/modules/serial/psb_s_vect_mod.F90 index 30c51082..00be9839 100644 --- a/base/modules/serial/psb_s_vect_mod.F90 +++ b/base/modules/serial/psb_s_vect_mod.F90 @@ -227,13 +227,14 @@ contains end subroutine s_vect_bld_n - function s_vect_get_vect(x) result(res) + function s_vect_get_vect(x,n) result(res) class(psb_s_vect_type), intent(inout) :: x real(psb_spk_), allocatable :: res(:) integer(psb_ipk_) :: info + integer(psb_ipk_), optional :: n if (allocated(x%v)) then - res = x%v%get_vect() + res = x%v%get_vect(n) end if end function s_vect_get_vect diff --git a/base/modules/serial/psb_z_base_vect_mod.f90 b/base/modules/serial/psb_z_base_vect_mod.f90 index ffccc9ab..0960624a 100644 --- a/base/modules/serial/psb_z_base_vect_mod.f90 +++ b/base/modules/serial/psb_z_base_vect_mod.f90 @@ -688,19 +688,24 @@ contains !! \brief Extract a copy of the contents !! ! - function z_base_get_vect(x) result(res) + function z_base_get_vect(x,n) result(res) class(psb_z_base_vect_type), intent(inout) :: x complex(psb_dpk_), allocatable :: res(:) integer(psb_ipk_) :: info + integer(psb_ipk_), optional :: n + ! Local variables + integer(psb_ipk_) :: isz if (.not.allocated(x%v)) return if (.not.x%is_host()) call x%sync() - allocate(res(x%get_nrows()),stat=info) + isz = x%get_nrows() + if (present(n)) isz = max(0,min(isz,n)) + allocate(res(isz),stat=info) if (info /= 0) then call psb_errpush(psb_err_alloc_dealloc_,'base_get_vect') return end if - res(:) = x%v(:) + res(1:isz) = x%v(1:isz) end function z_base_get_vect ! diff --git a/base/modules/serial/psb_z_vect_mod.F90 b/base/modules/serial/psb_z_vect_mod.F90 index e5b24540..e1573e07 100644 --- a/base/modules/serial/psb_z_vect_mod.F90 +++ b/base/modules/serial/psb_z_vect_mod.F90 @@ -227,13 +227,14 @@ contains end subroutine z_vect_bld_n - function z_vect_get_vect(x) result(res) + function z_vect_get_vect(x,n) result(res) class(psb_z_vect_type), intent(inout) :: x complex(psb_dpk_), allocatable :: res(:) integer(psb_ipk_) :: info + integer(psb_ipk_), optional :: n if (allocated(x%v)) then - res = x%v%get_vect() + res = x%v%get_vect(n) end if end function z_vect_get_vect diff --git a/docs/psblas-3.5.pdf b/docs/psblas-3.5.pdf index 4f87af12..7c9050aa 100644 --- a/docs/psblas-3.5.pdf +++ b/docs/psblas-3.5.pdf @@ -7528,7 +7528,7 @@ endstream endobj 951 0 obj << -/Length 3935 +/Length 5078 >> stream 0 g 0 G @@ -7539,60 +7539,64 @@ BT 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 -37.031 Td [(alpha)]TJ + -57.286 -30.343 Td [(alpha)]TJ 0 g 0 G -/F8 9.9626 Tf 32.033 0 Td [(A)-333(scalar)-334(v)56(alue.)]TJ -7.126 -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(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 [(A)-333(scalar)-334(v)56(alue.)]TJ -7.126 -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(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(1)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -25.076 Td [(\014rst,last)]TJ +/F27 9.9626 Tf -24.907 -18.387 Td [(\014rst,last)]TJ 0 g 0 G -/F8 9.9626 Tf 45.949 0 Td [(Boundaries)-333(for)-334(setting)-333(in)-333(the)-333(v)27(ector.)]TJ -21.042 -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)-333(as:)-445(in)28(tegers.)]TJ +/F8 9.9626 Tf 45.949 0 Td [(Boundaries)-333(for)-334(setting)-333(in)-333(the)-333(v)27(ector.)]TJ -21.042 -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)-333(as:)-445(in)28(tegers.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -25.076 Td [(v)32(ect)]TJ +/F27 9.9626 Tf -24.907 -18.387 Td [(v)32(ect)]TJ 0 g 0 G /F8 9.9626 Tf 25.509 0 Td [(An)-333(arra)28(y)]TJ -0.602 -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(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(1)]TJ 0 g 0 G - [(.)]TJ -24.907 -27.068 Td [(Note)-392(t)1(hat)-392(a)-391(call)-392(to)]TJ/F30 9.9626 Tf 87.3 0 Td [(v%zero\050\051)]TJ/F8 9.9626 Tf 45.742 0 Td [(is)-391(pro)27(vided)-391(as)-391(a)-392(shorthand,)-406(but)-391(is)-391(equiv)55(alen)28(t)-391(to)]TJ -133.042 -11.955 Td [(a)-320(call)-319(to)]TJ/F30 9.9626 Tf 38.336 0 Td [(v%set\050zero\051)]TJ/F8 9.9626 Tf 60.718 0 Td [(with)-320(the)]TJ/F30 9.9626 Tf 39.579 0 Td [(zero)]TJ/F8 9.9626 Tf 24.106 0 Td [(constan)28(t)-320(ha)28(ving)-320(the)-319(appropriate)-320(t)28(yp)-28(e)-320(and)]TJ -162.739 -11.956 Td [(kind.)]TJ + [(.)]TJ -24.907 -18.073 Td [(Note)-392(t)1(hat)-392(a)-391(call)-392(to)]TJ/F30 9.9626 Tf 87.3 0 Td [(v%zero\050\051)]TJ/F8 9.9626 Tf 45.742 0 Td [(is)-391(pro)27(vided)-391(as)-391(a)-392(shorthand,)-406(but)-391(is)-391(equiv)55(alen)28(t)-391(to)]TJ -133.042 -11.955 Td [(a)-320(call)-319(to)]TJ/F30 9.9626 Tf 38.336 0 Td [(v%set\050zero\051)]TJ/F8 9.9626 Tf 60.718 0 Td [(with)-320(the)]TJ/F30 9.9626 Tf 39.579 0 Td [(zero)]TJ/F8 9.9626 Tf 24.106 0 Td [(constan)28(t)-320(ha)28(ving)-320(the)-319(appropriate)-320(t)28(yp)-28(e)-320(and)]TJ -162.739 -11.955 Td [(kind.)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -27.068 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf 0 -18.073 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G - 0 -25.076 Td [(v)]TJ + 0 -18.387 Td [(v)]TJ 0 g 0 G -/F8 9.9626 Tf 11.028 0 Td [(the)-333(dense)-334(v)28(ector,)-333(with)-334(up)-27(dated)-334(en)28(tries)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ -57.286 -44.683 Td [(get)]TJ +/F8 9.9626 Tf 11.028 0 Td [(the)-333(dense)-334(v)28(ector,)-333(with)-334(up)-27(dated)-334(en)28(tries)]TJ 13.879 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 32.379 0 Td [(lo)-32(cal)]TJ -57.286 -37.189 Td [(get)]TJ ET q -1 0 0 1 116.018 303.966 cm +1 0 0 1 116.018 356.206 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 119.455 303.767 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 356.007 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 -20.786 Td [(extv)-525(=)-525(v%get_vect\050\051)]TJ +/F30 9.9626 Tf -19.56 -18.39 Td [(extv)-525(=)-525(v%get_vect\050[n]\051)]TJ 0 g 0 G -/F27 9.9626 Tf 0 -25.781 Td [(T)32(yp)-32(e:)]TJ +/F27 9.9626 Tf 0 -18.073 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 -25.076 Td [(On)-383(En)32(try)]TJ +/F27 9.9626 Tf -33.797 -18.387 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G - 0 -25.076 Td [(v)]TJ + 0 -18.387 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 -37.736 Td [(On)-383(Return)]TJ + -57.286 -30.343 Td [(n)]TJ 0 g 0 G +/F8 9.9626 Tf 11.347 0 Td [(Size)-333(to)-334(b)-27(e)-334(returned)]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 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 [(;)-333(default:)-445(en)28(tire)-333(v)28(ector.)]TJ 0 g 0 G - 0 -25.076 Td [(F)96(unction)-384(v)64(alue)]TJ +/F27 9.9626 Tf -95.095 -30.028 Td [(On)-383(Return)]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 +0 g 0 G + 0 -18.388 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.)-440(If)-319(the)-320(argumen)28(t)]TJ/F11 9.9626 Tf 99.799 0 Td [(n)]TJ/F8 9.9626 Tf 9.161 0 Td [(is)-319(sp)-28(eci\014ed,)-322(the)-320(size)-319(of)-319(the)-320(returned)-319(arra)28(y)-319(e)-1(qu)1(als)]TJ -108.96 -11.955 Td [(the)-401(minim)28(um)-401(b)-28(et)28(w)28(een)]TJ/F11 9.9626 Tf 102.199 0 Td [(n)]TJ/F8 9.9626 Tf 9.974 0 Td [(and)-401(the)-401(in)28(ternal)-401(size)-401(of)-400(the)-401(v)27(ector,)-417(or)-401(0)-401(if)]TJ/F11 9.9626 Tf 189.961 0 Td [(n)]TJ/F8 9.9626 Tf 9.973 0 Td [(is)]TJ -312.107 -11.955 Td [(negativ)28(e;)-389(otherwise,)-380(the)-371(size)-370(of)-371(the)-370(arra)28(y)-371(is)-370(the)-371(same)-371(as)-370(the)-371(in)28(ternal)-370(size)]TJ 0 -11.955 Td [(of)-333(the)-334(v)28(ector.)]TJ 0 g 0 G 141.968 -29.888 Td [(25)]TJ 0 g 0 G @@ -8313,7 +8317,7 @@ endobj /Type /ObjStm /N 100 /First 888 -/Length 10167 +/Length 10180 >> stream 115 0 908 56 915 148 917 262 119 319 123 376 127 432 914 489 919 581 921 695 @@ -8321,11 +8325,11 @@ stream 147 1500 151 1556 927 1612 932 1704 934 1818 155 1875 159 1932 163 1989 931 2046 938 2138 935 2280 936 2427 940 2573 167 2629 171 2685 941 2741 937 2798 944 2903 946 3017 942 3074 175 3131 179 3188 183 3245 187 3302 943 3359 950 3451 947 3593 948 3738 952 3883 191 3939 -949 3995 958 4087 955 4229 956 4375 960 4522 195 4579 199 4636 961 4692 963 4749 204 4806 -957 4863 965 4981 967 5095 964 5151 969 5230 971 5344 208 5401 968 5458 980 5537 972 5711 -973 5856 974 5999 975 6144 976 6289 977 6432 982 6577 212 6633 954 6689 979 6745 986 6876 -978 7026 983 7172 984 7314 988 7459 985 7516 995 7621 989 7787 990 7929 991 8074 992 8216 -993 8360 997 8505 216 8561 998 8617 994 8674 1002 8818 1000 8956 1004 9102 1005 9161 1006 9220 +949 3995 958 4100 955 4242 956 4388 960 4535 195 4592 199 4649 961 4705 963 4762 204 4819 +957 4876 965 4994 967 5108 964 5164 969 5243 971 5357 208 5414 968 5471 980 5550 972 5724 +973 5869 974 6012 975 6157 976 6302 977 6445 982 6590 212 6646 954 6702 979 6758 986 6889 +978 7039 983 7185 984 7327 988 7472 985 7529 995 7634 989 7800 990 7942 991 8087 992 8229 +993 8373 997 8518 216 8574 998 8630 994 8687 1002 8831 1000 8969 1004 9115 1005 9174 1006 9233 % 115 0 obj << /D [909 0 R /XYZ 99.895 279.894 null] @@ -8565,7 +8569,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [382.088 606.388 389.062 617.237] +/Rect [382.088 613.077 389.062 623.925] /A << /S /GoTo /D (table.1) >> >> % 948 0 obj @@ -8573,7 +8577,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [382.088 460.595 389.062 471.443] +/Rect [382.088 480.661 389.062 491.509] /A << /S /GoTo /D (table.1) >> >> % 952 0 obj @@ -8582,11 +8586,11 @@ stream >> % 191 0 obj << -/D [950 0 R /XYZ 99.895 315.722 null] +/D [950 0 R /XYZ 99.895 367.962 null] >> % 949 0 obj << -/Font << /F27 560 0 R /F8 561 0 R /F30 769 0 R >> +/Font << /F27 560 0 R /F8 561 0 R /F30 769 0 R /F11 755 0 R >> /ProcSet [ /PDF /Text ] >> % 958 0 obj @@ -28544,8 +28548,8 @@ endobj 2028 0 obj << /Title (Parallel Sparse BLAS V. 3.5.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$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.18)/Keywords() -/CreationDate (D:20180702164032+01'00') -/ModDate (D:20180702164032+01'00') +/CreationDate (D:20180904173147+01'00') +/ModDate (D:20180904173147+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) kpathsea version 6.2.3) >> @@ -28710,7 +28714,7 @@ endobj /W [1 3 1] /Root 2027 0 R /Info 2028 0 R -/ID [<7594D57317A5C89F9FDA464D6C941754> <7594D57317A5C89F9FDA464D6C941754>] +/ID [<92A2920F2726132CA3CAC852168500EC> <92A2920F2726132CA3CAC852168500EC>] /Length 10150 >> stream @@ -28724,33 +28728,33 @@ stream k k k kkkkkkkkkkkkkkkkk"k S( kksk#k$k%k&k'k(k)k*k+k,k-k.k/k0k1k2k3k4k5k6k7k8k9k:k;k<k=k>k?k@kAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkTkRk!kQkUkVkWkXkYkZk[k\k]k^k_k`kakbkc     kS:]!"#$%&'()*, ^3E%E+NE;OMBCL?@23497-E6./01rA:;@8<E'E EE#E>E!?KEFJAGHBCD>=LMOKN][PAQESTUVWXYZ@ @ \P^_`abc@@@@@@@@@E(E,^@ @@ -m@ @@@@@@@@@ @@@@ @!@.@/@,@@@"@#@$@%@&@'@(@)@*@+@8@-'@0@1@2@3@4@5@:@;@@@9ܐ@<@F@A@BE-@M@G@H@J@O@P@Q@X@N@R@U@V@WJ@^@Y?@Z@_O@`@b3 + E. ȕ$S #',%&./2-,0E/M45<369E):?=+>C@.:AEFGHIJPND/KQRTOLSVWXYZ^UV[]E0`_tabc_  - F ґ?#F !"%&'+$V(*E1-./3,I02<47r56789:;>?@D=FACGEcFIJKOHfvLNXPQRSTUVWE2Z[\`YG]_bc^a^^f/^^^ -^^E$^ ^ ^ ^^^^^ ^^^^^^^^^^^^^!^^ ^#^)^'^":)^$^&E3^*^+^,^-^.^/^1^(T^0^3^4^6^2s^5^8^;^7^9^=^>^?^N^F^<^@^B^C^D^E ^O^R^Gg^P^Q^H^I^J^K^L^M{^U^S!^TE"E4^W^X^Y^`^V-^Z^\^]^^^_^b^c^aO ){5  -   $ <E5"*(!B{#%&'+,.)a3-3/q058467:=9;<E>7?@ABCDE6GJFHLQKMNOPSTXR UWZ[^Y q\`c_ {aCCCC UgC -ZE7C -C lCCC C C CC  s;CCCCCCCCC CC&C CCCCC C!C"C#C$C%C(C)C,C' C*C5C- :C.C/C0C1C2C3C4E8C7C8C;C6 ?C9C=C>CBC< C?CACDCECHCC \CFCJCKCNCI - CLCSCO -&nCPCQCRCUCVCWCZCT -+CXE9C\C]C`C[ -?C^Ca -MCb  - +m@ @@@@@@@@@ @@@@ @!@.@/@,@@@"@#@$@%@&@'@(@)@*@+@8@-'@0@1@2@3@4@5@:@;@@@9ܐ@<@F@A@BE-@M@G@H@J@O@P@Q@X@N@R@U@V@WJ@^@Y?@Z@_O@`@b + E. ȕ$S #',%&./2-,0E/M45<3>69E):?=/>C@2AEFGHIJPND3KQRTOPSVWXYZ^U[#[]E0`_ysabc  +  # !"%&'+$(*E1-./3,02<4;56789:;>?@D=KYACGEhMFIJKOHjLNXPuQRSTUVWE2Z[\`Y]_bc^a^^j^^^ +^^E$^ ^ ^ ^^^^^ S^^^^^^^^^^^^^!^#0^ ^#^)^'^">^$^&E3^*^+^,^-^.^/^1^(Ym^0^3^4^6^2x^5^8^;^7^9^=^>^?^N^F^<S^@^B^C^D^E^O^R^G^P^Q^H^I^J^K^L^Mn^U^S&^TE"E4^W^X^Y^`^V2-^Z^\^]^^^_^b^c^aS -  +   9@ AE5"*(!F#%&'+,.)e-3/vI058467:=9=;<E>ѻ?@ABCDE6GJF\HLQKMNOPSTXR -UWZ[^Y \`c_ $aCCCC YC +_@E7C +C qOCCC C C CC  wCCCCCCCCC CC&C CCCCC C!C"C#C$C%C(C)C,C' C*C5C- ־C.C/C0C1C2C3C4E8C7C8C;C6 C9C=C>CBC< C?CACDCECHCC CFCJCKCNCI +CLCSCO +*CPCQCRCUCVCWCZCT +/CXE9C\C]C`C[ +D&C^Ca +QCb & +&  -r    -c  -E: - ! - #'" -$&).( -b*,-05/ 1347:6 8E;@; -<=>?BCDGA <EKH LIWL cMNOPQRSTUV[X RYa\ J]_`E<b Fc 8 - :   {  ( 1 E= )"  (# $&'.) -D*,-4/ A023:5 V689E>@; j<>?GA BDEEFLH (IKQM ^NPSTWR ƒUX YZ[E\]^_`abc  -   E? c \ +$# 0!")$ 7t%'(-* ?+/4. B?023E@6;5 U479:=B< i>@AHC xrDFGJOI KMNUP QSTYV WEA[\`Z ]_bca    -    %EB)"4 $%.,#7h&()*+E/013-X2574s6G8t9:<DFECQHIPRSTUVWXYZ[\]^_`abcE{E(E@hEEEҽEE1EXUE wE -sE `E ;E `EEUEE5Ee0EEEEDEEEFEGEHEIEJ.lTmw w wwwwwwwwwwwwwwwwwww w!w"w#w$w%w&w'w(w)w*w+w,w-w.w/w0w1w2w3w4w5w6w7w8w9w:w;w<w=w>w?w@wAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw[w\w]w^w_w`wawbwc  -    +    +  +E: +ɐ! +D #'" +)$&).( +*,-05/ 1347:6 8E;@; 2g<=>?BCDGA A#EKH Q{IWL hFMNOPQRSTUV[X Ya\ ]_`E<b c  + Ծ       E= " 7 (# <$&'.) 1*,-4/ F$023:5 Z689E>@; oT<>?GA *BDEEFLH IKQM NPSTWR UX KYZ[E\]^_`abc  +   E?   /# 5[!")$ ;%'(-* Dl+/4. F023E@6;5 Y79:=B< nl>@AHC |DFGJOI KMNUP 0QSTYV WEA[\`Z ]_bca c    +   *XEB.r"9Y $%.,#;&()*+E/013-\2574x}6G89:<DFECQHIPRSTUVWXYZ[\]^_`abcEEEDEEEAEhE6fE\E |>E +E E #E ehE.EEzE:=EiEEOEEDEEEFEGEHEIEJ2Xw w wwwwwwwwwwwwwwwwwww w!w"w#w$w%w&w'w(w)w*w+w,w-w.w/w0w1w2w3w4w5w6w7w8w9w:w;w<w=w>w?w@wAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw[w\w]w^w_w`wawbwc  +   _I endstream endobj startxref -1289925 +1291081 %%EOF diff --git a/docs/src/datastruct.tex b/docs/src/datastruct.tex index 361b07ac..5edb7816 100644 --- a/docs/src/datastruct.tex +++ b/docs/src/datastruct.tex @@ -1127,7 +1127,7 @@ Scope: {\bf local}\\ \addcontentsline{toc}{paragraph}{get\_vect } \begin{verbatim} -extv = v%get_vect() +extv = v%get_vect([n]) \end{verbatim} \begin{description} @@ -1138,12 +1138,19 @@ Scope: {\bf local}\\ % Type: {\bf required}\\ % Intent: {\bf in}.\\ % Specified as: a object of type \spdata. +\item[n] Size to be returned\\ +Scope: {\bf local}.\\ +Type: {\bf optional}; default: entire vector.\\ + \end{description} \begin{description} \item[\bf On Return] \item[Function value] An allocatable array holding a copy of the dense - vector contents. + vector contents. If the argument $n$ is specified, the size of the + returned array equals the minimum between $n$ and the internal size + of the vector, or 0 if $n$ is negative; otherwise, the size of the + array is the same as the internal size of the vector. \end{description} \subsubsection*{clone --- Clone current object} From a87bf0ad7f47f6cebad5770798d6b0019592fc5e Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Wed, 5 Sep 2018 14:57:51 +0100 Subject: [PATCH 16/26] Fixed html docs for new get_vect. --- docs/html/footnode.html | 4 ++-- docs/html/node10.html | 2 +- docs/html/node117.html | 4 ++-- docs/html/node126.html | 2 +- docs/html/node133.html | 2 +- docs/html/node23.html | 2 +- docs/html/node43.html | 2 +- docs/html/node48.html | 25 +++++++++++++++++++++++-- docs/html/node50.html | 2 +- docs/html/node53.html | 2 +- docs/html/node54.html | 2 +- docs/html/node55.html | 2 +- docs/html/node56.html | 2 +- docs/html/node57.html | 2 +- docs/html/node58.html | 2 +- docs/html/node59.html | 2 +- docs/html/node60.html | 2 +- docs/html/node61.html | 2 +- docs/html/node62.html | 2 +- docs/html/node63.html | 2 +- docs/html/node64.html | 2 +- docs/html/node65.html | 2 +- docs/html/node67.html | 4 ++-- docs/html/node68.html | 4 ++-- docs/html/node69.html | 2 +- docs/html/node70.html | 2 +- 26 files changed, 52 insertions(+), 31 deletions(-) diff --git a/docs/html/footnode.html b/docs/html/footnode.html index fda291c2..1528fdfe 100644 --- a/docs/html/footnode.html +++ b/docs/html/footnode.html @@ -137,7 +137,7 @@ sample scatter/gather routines. .
    -
    ... follows... follows4
    The string is case-insensitive @@ -173,7 +173,7 @@ sample scatter/gather routines. .
    -
    ... method... method5
    Note: the implementation is for psb_desc_type structures is as follows: -
    +
    Figure 3: The PSBLAS defined data type that diff --git a/docs/html/node117.html b/docs/html/node117.html index ddce17bf..a596e0c1 100644 --- a/docs/html/node117.html +++ b/docs/html/node117.html @@ -91,7 +91,7 @@ explicitly.

    -

    +
    Figure 9: The layout of a generic psb_foo @@ -121,7 +121,7 @@ called by psb_spasb ... by process 0 (i.e. the root process).

    -

    +
    Figure 10: A sample PSBLAS-2.0 error diff --git a/docs/html/node126.html b/docs/html/node126.html index 53d0a4ba..0f62c0f2 100644 --- a/docs/html/node126.html +++ b/docs/html/node126.html @@ -103,7 +103,7 @@ Legal inputs to this subroutine are interpreted depending on the WIDTH="41" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" SRC="img160.png" ALT="$ptype$"> string as follows4: + HREF="footnode.html#foot7823">4:
    NONE
    No preconditioning, i.e. the preconditioner is just a copy diff --git a/docs/html/node133.html b/docs/html/node133.html index 5c7a4eb3..510c1924 100644 --- a/docs/html/node133.html +++ b/docs/html/node133.html @@ -169,7 +169,7 @@ call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&
    FCG:
    the Flexible Conjugate Gradient method5; + HREF="footnode.html#foot8272">5;

    diff --git a/docs/html/node23.html b/docs/html/node23.html index 6abadf89..ecc0e565 100644 --- a/docs/html/node23.html +++ b/docs/html/node23.html @@ -82,7 +82,7 @@ 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 diff --git a/docs/html/node43.html b/docs/html/node43.html index e34c4467..74f930ba 100644 --- a/docs/html/node43.html +++ b/docs/html/node43.html @@ -90,7 +90,7 @@ 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 diff --git a/docs/html/node48.html b/docs/html/node48.html index fecd3360..90b28728 100644 --- a/docs/html/node48.html +++ b/docs/html/node48.html @@ -54,7 +54,7 @@ get_vect -- Get a copy of the vector contents

    -extv = v%get_vect()
    +extv = v%get_vect([n])
     

    @@ -70,6 +70,15 @@ extv = v%get_vect()
    Scope: local
    +

    n
    +
    Size to be returned +
    +Scope: local. +
    +Type: optional; default: entire vector. +
    +

    +

    @@ -79,7 +88,19 @@ Scope: local

    Function value
    An allocatable array holding a copy of the dense - vector contents. + vector contents. If the argument $n$ is specified, the size of the + returned array equals the minimum between $n$ and the internal size + of the vector, or 0 if $n$ is negative; otherwise, the size of the + array is the same as the internal size of the vector.
    diff --git a/docs/html/node50.html b/docs/html/node50.html index 030e0a19..3b2fcc2e 100644 --- a/docs/html/node50.html +++ b/docs/html/node50.html @@ -64,7 +64,7 @@ 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. -
    +
    diff --git a/docs/html/node53.html b/docs/html/node53.html index 92801a8d..8c268684 100644 --- a/docs/html/node53.html +++ b/docs/html/node53.html @@ -78,7 +78,7 @@ call psb_geaxpby(alpha, x, beta, y, desc_a, info)


    -
    +
    Figure 6: The PSBLAS defined data type that contains a preconditioner.
    diff --git a/docs/html/node54.html b/docs/html/node54.html index eca135e2..aae28bd0 100644 --- a/docs/html/node54.html +++ b/docs/html/node54.html @@ -113,7 +113,7 @@ dot \leftarrow x^H y psb_gedot(x, y, desc_a, info [,global])

    -
    +
    Table 1: Data types
    diff --git a/docs/html/node55.html b/docs/html/node55.html index 2af4998b..265a6aad 100644 --- a/docs/html/node55.html +++ b/docs/html/node55.html @@ -98,7 +98,7 @@ is a rank one array. call psb_gedots(res, x, y, desc_a, info)

    -
    +
    Table 2: Data types
    diff --git a/docs/html/node56.html b/docs/html/node56.html index 43376ad4..b8f358fa 100644 --- a/docs/html/node56.html +++ b/docs/html/node56.html @@ -107,7 +107,7 @@ psb_normi(x, desc_a, info [,global])


    -
    +
    Table 3: Data types
    diff --git a/docs/html/node57.html b/docs/html/node57.html index 628bb8ee..d4842941 100644 --- a/docs/html/node57.html +++ b/docs/html/node57.html @@ -81,7 +81,7 @@ call psb_geamaxs(res, x, desc_a, info)


    -
    +
    Table 4: Data types
    diff --git a/docs/html/node58.html b/docs/html/node58.html index ee1dc80b..612d29bc 100644 --- a/docs/html/node58.html +++ b/docs/html/node58.html @@ -106,7 +106,7 @@ psb_norm1(x, desc_a, info [,global])


    -
    +
    Table 5: Data types
    diff --git a/docs/html/node59.html b/docs/html/node59.html index 0e1f87ec..c5c35da2 100644 --- a/docs/html/node59.html +++ b/docs/html/node59.html @@ -125,7 +125,7 @@ call psb_geasums(res, x, desc_a, info)


    -
    +
    Table 6: Data types
    diff --git a/docs/html/node60.html b/docs/html/node60.html index 86fad99c..df95b3e8 100644 --- a/docs/html/node60.html +++ b/docs/html/node60.html @@ -100,7 +100,7 @@ nrm2 \leftarrow \sqrt{x^H x}


    -
    +
    Table 7: Data types
    diff --git a/docs/html/node61.html b/docs/html/node61.html index 50dafdf6..484183ad 100644 --- a/docs/html/node61.html +++ b/docs/html/node61.html @@ -81,7 +81,7 @@ call psb_genrm2s(res, x, desc_a, info)


    -
    +
    Table 8: Data types
    diff --git a/docs/html/node62.html b/docs/html/node62.html index 25a1234b..c5a4d925 100644 --- a/docs/html/node62.html +++ b/docs/html/node62.html @@ -89,7 +89,7 @@ where:


    -
    +
    Table 9: Data types
    diff --git a/docs/html/node63.html b/docs/html/node63.html index a8237f2b..7540dc85 100644 --- a/docs/html/node63.html +++ b/docs/html/node63.html @@ -89,7 +89,7 @@ where:


    -
    +
    Table 10: Data types
    diff --git a/docs/html/node64.html b/docs/html/node64.html index 2320b0a3..bd70a04e 100644 --- a/docs/html/node64.html +++ b/docs/html/node64.html @@ -152,7 +152,7 @@ where:


    -
    +
    Table 11: Data types
    diff --git a/docs/html/node65.html b/docs/html/node65.html index 73ceb1a0..987dee24 100644 --- a/docs/html/node65.html +++ b/docs/html/node65.html @@ -129,7 +129,7 @@ call psb_spsm(alpha, t, x, beta, y, desc_a, info,&


    -
    +
    Table 12: Data types
    diff --git a/docs/html/node67.html b/docs/html/node67.html index e58bfd3d..c7999425 100644 --- a/docs/html/node67.html +++ b/docs/html/node67.html @@ -84,7 +84,7 @@ where:


    -
    +
    Table 13: Data types
    @@ -230,7 +230,7 @@ An integer value that contains an error code. -
    +
    Table 14: Data types
    diff --git a/docs/html/node68.html b/docs/html/node68.html index b4c45eb4..2924a570 100644 --- a/docs/html/node68.html +++ b/docs/html/node68.html @@ -99,7 +99,7 @@ operators

    -
    +
    Figure 7: Sample discretization mesh.
    @@ -290,7 +290,7 @@ their instances.

    -

    +
    Table 15: Data types
    diff --git a/docs/html/node69.html b/docs/html/node69.html index c1ebfca0..68b008fb 100644 --- a/docs/html/node69.html +++ b/docs/html/node69.html @@ -107,7 +107,7 @@ process

    -
    +
    Figure 8: Sample discretization mesh.
    diff --git a/docs/html/node70.html b/docs/html/node70.html index 16fdace2..0565fbb8 100644 --- a/docs/html/node70.html +++ b/docs/html/node70.html @@ -105,7 +105,7 @@ process

    -
    +
    Table 16: Data types
    From 1a5ee8c46a4a332fce997522560d7b9f6dbde547 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Thu, 13 Sep 2018 14:21:52 +0100 Subject: [PATCH 17/26] Fix bounds computation in set_vect. Bug report by Alexandre Silva Lopes --- base/modules/serial/psb_c_base_vect_mod.f90 | 5 +++-- base/modules/serial/psb_d_base_vect_mod.f90 | 5 +++-- base/modules/serial/psb_i_base_vect_mod.f90 | 5 +++-- base/modules/serial/psb_s_base_vect_mod.f90 | 5 +++-- base/modules/serial/psb_z_base_vect_mod.f90 | 5 +++-- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/base/modules/serial/psb_c_base_vect_mod.f90 b/base/modules/serial/psb_c_base_vect_mod.f90 index 6fa0bc70..54635a6d 100644 --- a/base/modules/serial/psb_c_base_vect_mod.f90 +++ b/base/modules/serial/psb_c_base_vect_mod.f90 @@ -749,9 +749,10 @@ contains integer(psb_ipk_) :: info, first_, last_, nr - first_=1 - last_=min(psb_size(x%v),size(val)) + + first_ = 1 if (present(first)) first_ = max(1,first) + last_ = min(psb_size(x%v),first_+size(val)-1) if (present(last)) last_ = min(last,last_) if (allocated(x%v)) then diff --git a/base/modules/serial/psb_d_base_vect_mod.f90 b/base/modules/serial/psb_d_base_vect_mod.f90 index 36e95142..3ec2356a 100644 --- a/base/modules/serial/psb_d_base_vect_mod.f90 +++ b/base/modules/serial/psb_d_base_vect_mod.f90 @@ -749,9 +749,10 @@ contains integer(psb_ipk_) :: info, first_, last_, nr - first_=1 - last_=min(psb_size(x%v),size(val)) + + first_ = 1 if (present(first)) first_ = max(1,first) + last_ = min(psb_size(x%v),first_+size(val)-1) if (present(last)) last_ = min(last,last_) if (allocated(x%v)) then diff --git a/base/modules/serial/psb_i_base_vect_mod.f90 b/base/modules/serial/psb_i_base_vect_mod.f90 index 4cc592ac..cdbe91e5 100644 --- a/base/modules/serial/psb_i_base_vect_mod.f90 +++ b/base/modules/serial/psb_i_base_vect_mod.f90 @@ -718,9 +718,10 @@ contains integer(psb_ipk_) :: info, first_, last_, nr - first_=1 - last_=min(psb_size(x%v),size(val)) + + first_ = 1 if (present(first)) first_ = max(1,first) + last_ = min(psb_size(x%v),first_+size(val)-1) if (present(last)) last_ = min(last,last_) if (allocated(x%v)) then diff --git a/base/modules/serial/psb_s_base_vect_mod.f90 b/base/modules/serial/psb_s_base_vect_mod.f90 index 9ee77ea6..97c7c11e 100644 --- a/base/modules/serial/psb_s_base_vect_mod.f90 +++ b/base/modules/serial/psb_s_base_vect_mod.f90 @@ -749,9 +749,10 @@ contains integer(psb_ipk_) :: info, first_, last_, nr - first_=1 - last_=min(psb_size(x%v),size(val)) + + first_ = 1 if (present(first)) first_ = max(1,first) + last_ = min(psb_size(x%v),first_+size(val)-1) if (present(last)) last_ = min(last,last_) if (allocated(x%v)) then diff --git a/base/modules/serial/psb_z_base_vect_mod.f90 b/base/modules/serial/psb_z_base_vect_mod.f90 index 0960624a..8c1b6baf 100644 --- a/base/modules/serial/psb_z_base_vect_mod.f90 +++ b/base/modules/serial/psb_z_base_vect_mod.f90 @@ -749,9 +749,10 @@ contains integer(psb_ipk_) :: info, first_, last_, nr - first_=1 - last_=min(psb_size(x%v),size(val)) + + first_ = 1 if (present(first)) first_ = max(1,first) + last_ = min(psb_size(x%v),first_+size(val)-1) if (present(last)) last_ = min(last,last_) if (allocated(x%v)) then From 19da8357b075081e620a8059fbfe14a3173dc8f2 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Sun, 23 Sep 2018 09:04:19 +0100 Subject: [PATCH 18/26] Introduced col_major vs row_major ordering. --- util/psb_partidx_mod.F90 | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/util/psb_partidx_mod.F90 b/util/psb_partidx_mod.F90 index 884581bb..9b88738a 100644 --- a/util/psb_partidx_mod.F90 +++ b/util/psb_partidx_mod.F90 @@ -48,7 +48,7 @@ module psb_partidx_mod module procedure ijk2idx3d, ijk2idxv, ijk2idx2d end interface ijk2idx - + logical, private, save : col_major=.true. contains ! ! Given a global index IDX and the domain size (NX,NY,NZ) @@ -135,10 +135,17 @@ contains ! j = mod(idx_/nz,ny) + base_ ! i = mod(idx_/(nx*ny),nx) + base_ ! - do i=size(dims),1,-1 - coords(i) = mod(idx_,dims(i)) + base_ - idx_ = idx_ / dims(i) - end do + if (col_major) then + do i=1,size(dims) + coords(i) = mod(idx_,dims(i)) + base_ + idx_ = idx_ / dims(i) + end do + else + do i=size(dims),1,-1 + coords(i) = mod(idx_,dims(i)) + base_ + idx_ = idx_ / dims(i) + end do + end if end subroutine idx2ijkv @@ -174,12 +181,19 @@ contains return end if - idx = coords(1) - base_ - do i=2, sz - idx = (idx * dims(i)) + coords(i) - base_ - end do - idx = idx + base_ - + if (col_major) then + idx = coords(sz) - base_ + do i=sz-1,1,-1 + idx = (idx * dims(i)) + coords(i) - base_ + end do + idx = idx + base_ + else + idx = coords(1) - base_ + do i=2,sz + idx = (idx * dims(i)) + coords(i) - base_ + end do + idx = idx + base_ + end if end subroutine ijk2idxv ! ! Given a triple (I,J,K) and the domain size (NX,NY,NZ) From 59857aee02d18dd8307fa8fb29d0131733d56dd5 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Sun, 23 Sep 2018 09:10:15 +0100 Subject: [PATCH 19/26] Fix typo. --- util/psb_partidx_mod.F90 | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/util/psb_partidx_mod.F90 b/util/psb_partidx_mod.F90 index 9b88738a..c93522bf 100644 --- a/util/psb_partidx_mod.F90 +++ b/util/psb_partidx_mod.F90 @@ -48,8 +48,30 @@ module psb_partidx_mod module procedure ijk2idx3d, ijk2idxv, ijk2idx2d end interface ijk2idx - logical, private, save : col_major=.true. + logical, private, save :: col_major=.true. + contains + + subroutine psb_pidx_set_col_major(val) + implicit none + logical, intent(in), optional :: val + logical :: val_ + val_ =.true. + if (present(val)) val_ = val + col_major = val_ + end subroutine psb_pidx_set_col_major + + subroutine psb_pidx_set_row_major() + implicit none + call psb_pidx_set_col_major(.false.) + end subroutine psb_pidx_set_row_major + + function psb_pidx_get_col_major() result(val) + implicit none + logical :: val + val = col_major + end function psb_pidx_get_col_major + ! ! Given a global index IDX and the domain size (NX,NY,NZ) ! compute the point coordinates (I,J,K) From 78120dc1c09db9bad6026a7688aa3c086b06e400 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Wed, 10 Oct 2018 13:54:54 +0100 Subject: [PATCH 20/26] New ICTXT arg in INIT. --- prec/impl/psb_cprecinit.f90 | 7 +++++-- prec/impl/psb_dprecinit.f90 | 7 +++++-- prec/impl/psb_sprecinit.f90 | 7 +++++-- prec/impl/psb_zprecinit.f90 | 7 +++++-- prec/psb_c_prec_type.f90 | 4 +++- prec/psb_d_prec_type.f90 | 4 +++- prec/psb_s_prec_type.f90 | 4 +++- prec/psb_z_prec_type.f90 | 4 +++- test/fileread/psb_cf_sample.f90 | 2 +- test/fileread/psb_df_sample.f90 | 2 +- test/fileread/psb_sf_sample.f90 | 2 +- test/fileread/psb_zf_sample.f90 | 2 +- test/pargen/psb_d_pde2d.f90 | 2 +- test/pargen/psb_d_pde3d.f90 | 2 +- test/pargen/psb_s_pde2d.f90 | 2 +- test/pargen/psb_s_pde3d.f90 | 2 +- 16 files changed, 40 insertions(+), 20 deletions(-) diff --git a/prec/impl/psb_cprecinit.f90 b/prec/impl/psb_cprecinit.f90 index 6a757e39..7f6da35f 100644 --- a/prec/impl/psb_cprecinit.f90 +++ b/prec/impl/psb_cprecinit.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine psb_cprecinit(p,ptype,info) +subroutine psb_cprecinit(ictxt,p,ptype,info) use psb_base_mod use psb_c_prec_type, psb_protect_name => psb_cprecinit @@ -37,7 +37,8 @@ subroutine psb_cprecinit(p,ptype,info) use psb_c_diagprec, only : psb_c_diag_prec_type use psb_c_bjacprec, only : psb_c_bjac_prec_type implicit none - class(psb_cprec_type), intent(inout) :: p + integer(psb_ipk_), intent(in) :: ictxt + class(psb_cprec_type), intent(inout) :: p character(len=*), intent(in) :: ptype integer(psb_ipk_), intent(out) :: info @@ -49,6 +50,8 @@ subroutine psb_cprecinit(p,ptype,info) if (info /= psb_success_) return end if + p%ictxt = ictxt + select case(psb_toupper(ptype(1:len_trim(ptype)))) case ('NONE','NOPREC') diff --git a/prec/impl/psb_dprecinit.f90 b/prec/impl/psb_dprecinit.f90 index b5bee7ab..70f7c05a 100644 --- a/prec/impl/psb_dprecinit.f90 +++ b/prec/impl/psb_dprecinit.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine psb_dprecinit(p,ptype,info) +subroutine psb_dprecinit(ictxt,p,ptype,info) use psb_base_mod use psb_d_prec_type, psb_protect_name => psb_dprecinit @@ -37,7 +37,8 @@ subroutine psb_dprecinit(p,ptype,info) use psb_d_diagprec, only : psb_d_diag_prec_type use psb_d_bjacprec, only : psb_d_bjac_prec_type implicit none - class(psb_dprec_type), intent(inout) :: p + integer(psb_ipk_), intent(in) :: ictxt + class(psb_dprec_type), intent(inout) :: p character(len=*), intent(in) :: ptype integer(psb_ipk_), intent(out) :: info @@ -49,6 +50,8 @@ subroutine psb_dprecinit(p,ptype,info) if (info /= psb_success_) return end if + p%ictxt = ictxt + select case(psb_toupper(ptype(1:len_trim(ptype)))) case ('NONE','NOPREC') diff --git a/prec/impl/psb_sprecinit.f90 b/prec/impl/psb_sprecinit.f90 index 54897772..46ab547a 100644 --- a/prec/impl/psb_sprecinit.f90 +++ b/prec/impl/psb_sprecinit.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine psb_sprecinit(p,ptype,info) +subroutine psb_sprecinit(ictxt,p,ptype,info) use psb_base_mod use psb_s_prec_type, psb_protect_name => psb_sprecinit @@ -37,7 +37,8 @@ subroutine psb_sprecinit(p,ptype,info) use psb_s_diagprec, only : psb_s_diag_prec_type use psb_s_bjacprec, only : psb_s_bjac_prec_type implicit none - class(psb_sprec_type), intent(inout) :: p + integer(psb_ipk_), intent(in) :: ictxt + class(psb_sprec_type), intent(inout) :: p character(len=*), intent(in) :: ptype integer(psb_ipk_), intent(out) :: info @@ -49,6 +50,8 @@ subroutine psb_sprecinit(p,ptype,info) if (info /= psb_success_) return end if + p%ictxt = ictxt + select case(psb_toupper(ptype(1:len_trim(ptype)))) case ('NONE','NOPREC') diff --git a/prec/impl/psb_zprecinit.f90 b/prec/impl/psb_zprecinit.f90 index 40ecb78e..200e36dd 100644 --- a/prec/impl/psb_zprecinit.f90 +++ b/prec/impl/psb_zprecinit.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine psb_zprecinit(p,ptype,info) +subroutine psb_zprecinit(ictxt,p,ptype,info) use psb_base_mod use psb_z_prec_type, psb_protect_name => psb_zprecinit @@ -37,7 +37,8 @@ subroutine psb_zprecinit(p,ptype,info) use psb_z_diagprec, only : psb_z_diag_prec_type use psb_z_bjacprec, only : psb_z_bjac_prec_type implicit none - class(psb_zprec_type), intent(inout) :: p + integer(psb_ipk_), intent(in) :: ictxt + class(psb_zprec_type), intent(inout) :: p character(len=*), intent(in) :: ptype integer(psb_ipk_), intent(out) :: info @@ -49,6 +50,8 @@ subroutine psb_zprecinit(p,ptype,info) if (info /= psb_success_) return end if + p%ictxt = ictxt + select case(psb_toupper(ptype(1:len_trim(ptype)))) case ('NONE','NOPREC') diff --git a/prec/psb_c_prec_type.f90 b/prec/psb_c_prec_type.f90 index a7bc4031..06445102 100644 --- a/prec/psb_c_prec_type.f90 +++ b/prec/psb_c_prec_type.f90 @@ -39,6 +39,7 @@ module psb_c_prec_type use psb_c_base_prec_mod type psb_cprec_type + integer(psb_ipk_) :: ictxt class(psb_c_base_prec_type), allocatable :: prec contains procedure, pass(prec) :: psb_c_apply1_vect @@ -60,9 +61,10 @@ module psb_c_prec_type end interface interface psb_precinit - subroutine psb_cprecinit(prec,ptype,info) + subroutine psb_cprecinit(ictxt,prec,ptype,info) import :: psb_ipk_, psb_cprec_type implicit none + integer(psb_ipk_), intent(in) :: ictxt class(psb_cprec_type), intent(inout) :: prec character(len=*), intent(in) :: ptype integer(psb_ipk_), intent(out) :: info diff --git a/prec/psb_d_prec_type.f90 b/prec/psb_d_prec_type.f90 index 814baa74..aeb314ae 100644 --- a/prec/psb_d_prec_type.f90 +++ b/prec/psb_d_prec_type.f90 @@ -39,6 +39,7 @@ module psb_d_prec_type use psb_d_base_prec_mod type psb_dprec_type + integer(psb_ipk_) :: ictxt class(psb_d_base_prec_type), allocatable :: prec contains procedure, pass(prec) :: psb_d_apply1_vect @@ -60,9 +61,10 @@ module psb_d_prec_type end interface interface psb_precinit - subroutine psb_dprecinit(prec,ptype,info) + subroutine psb_dprecinit(ictxt,prec,ptype,info) import :: psb_ipk_, psb_dprec_type implicit none + integer(psb_ipk_), intent(in) :: ictxt class(psb_dprec_type), intent(inout) :: prec character(len=*), intent(in) :: ptype integer(psb_ipk_), intent(out) :: info diff --git a/prec/psb_s_prec_type.f90 b/prec/psb_s_prec_type.f90 index 5cbc1018..e5984404 100644 --- a/prec/psb_s_prec_type.f90 +++ b/prec/psb_s_prec_type.f90 @@ -39,6 +39,7 @@ module psb_s_prec_type use psb_s_base_prec_mod type psb_sprec_type + integer(psb_ipk_) :: ictxt class(psb_s_base_prec_type), allocatable :: prec contains procedure, pass(prec) :: psb_s_apply1_vect @@ -60,9 +61,10 @@ module psb_s_prec_type end interface interface psb_precinit - subroutine psb_sprecinit(prec,ptype,info) + subroutine psb_sprecinit(ictxt,prec,ptype,info) import :: psb_ipk_, psb_sprec_type implicit none + integer(psb_ipk_), intent(in) :: ictxt class(psb_sprec_type), intent(inout) :: prec character(len=*), intent(in) :: ptype integer(psb_ipk_), intent(out) :: info diff --git a/prec/psb_z_prec_type.f90 b/prec/psb_z_prec_type.f90 index 526628b9..90fc8f9b 100644 --- a/prec/psb_z_prec_type.f90 +++ b/prec/psb_z_prec_type.f90 @@ -39,6 +39,7 @@ module psb_z_prec_type use psb_z_base_prec_mod type psb_zprec_type + integer(psb_ipk_) :: ictxt class(psb_z_base_prec_type), allocatable :: prec contains procedure, pass(prec) :: psb_z_apply1_vect @@ -60,9 +61,10 @@ module psb_z_prec_type end interface interface psb_precinit - subroutine psb_zprecinit(prec,ptype,info) + subroutine psb_zprecinit(ictxt,prec,ptype,info) import :: psb_ipk_, psb_zprec_type implicit none + integer(psb_ipk_), intent(in) :: ictxt class(psb_zprec_type), intent(inout) :: prec character(len=*), intent(in) :: ptype integer(psb_ipk_), intent(out) :: info diff --git a/test/fileread/psb_cf_sample.f90 b/test/fileread/psb_cf_sample.f90 index 79077feb..cb9074eb 100644 --- a/test/fileread/psb_cf_sample.f90 +++ b/test/fileread/psb_cf_sample.f90 @@ -213,7 +213,7 @@ program psb_cf_sample ! - call prec%init(ptype,info) + call prec%init(ictxt,ptype,info) ! building the preconditioner t1 = psb_wtime() diff --git a/test/fileread/psb_df_sample.f90 b/test/fileread/psb_df_sample.f90 index 59356726..18e96b0b 100644 --- a/test/fileread/psb_df_sample.f90 +++ b/test/fileread/psb_df_sample.f90 @@ -213,7 +213,7 @@ program psb_df_sample ! - call prec%init(ptype,info) + call prec%init(ictxt,ptype,info) ! building the preconditioner t1 = psb_wtime() diff --git a/test/fileread/psb_sf_sample.f90 b/test/fileread/psb_sf_sample.f90 index fb8d5982..7d943953 100644 --- a/test/fileread/psb_sf_sample.f90 +++ b/test/fileread/psb_sf_sample.f90 @@ -213,7 +213,7 @@ program psb_sf_sample ! - call prec%init(ptype,info) + call prec%init(ictxt,ptype,info) ! building the preconditioner t1 = psb_wtime() diff --git a/test/fileread/psb_zf_sample.f90 b/test/fileread/psb_zf_sample.f90 index fef3be2f..b8ed73d2 100644 --- a/test/fileread/psb_zf_sample.f90 +++ b/test/fileread/psb_zf_sample.f90 @@ -213,7 +213,7 @@ program psb_zf_sample ! - call prec%init(ptype,info) + call prec%init(ictxt,ptype,info) ! building the preconditioner t1 = psb_wtime() diff --git a/test/pargen/psb_d_pde2d.f90 b/test/pargen/psb_d_pde2d.f90 index 955de6ef..8440281b 100644 --- a/test/pargen/psb_d_pde2d.f90 +++ b/test/pargen/psb_d_pde2d.f90 @@ -609,7 +609,7 @@ program psb_d_pde2d ! prepare the preconditioner. ! if(iam == psb_root_) write(psb_out_unit,'("Setting preconditioner to : ",a)')ptype - call prec%init(ptype,info) + call prec%init(ictxt,ptype,info) call psb_barrier(ictxt) t1 = psb_wtime() diff --git a/test/pargen/psb_d_pde3d.f90 b/test/pargen/psb_d_pde3d.f90 index f3c165d1..a34f462e 100644 --- a/test/pargen/psb_d_pde3d.f90 +++ b/test/pargen/psb_d_pde3d.f90 @@ -650,7 +650,7 @@ program psb_d_pde3d ! prepare the preconditioner. ! if(iam == psb_root_) write(psb_out_unit,'("Setting preconditioner to : ",a)')ptype - call prec%init(ptype,info) + call prec%init(ictxt,ptype,info) call psb_barrier(ictxt) t1 = psb_wtime() diff --git a/test/pargen/psb_s_pde2d.f90 b/test/pargen/psb_s_pde2d.f90 index f4a80d0c..ab33a8ba 100644 --- a/test/pargen/psb_s_pde2d.f90 +++ b/test/pargen/psb_s_pde2d.f90 @@ -609,7 +609,7 @@ program psb_s_pde2d ! prepare the preconditioner. ! if(iam == psb_root_) write(psb_out_unit,'("Setting preconditioner to : ",a)')ptype - call prec%init(ptype,info) + call prec%init(ictxt,ptype,info) call psb_barrier(ictxt) t1 = psb_wtime() diff --git a/test/pargen/psb_s_pde3d.f90 b/test/pargen/psb_s_pde3d.f90 index 0ca70230..32c47593 100644 --- a/test/pargen/psb_s_pde3d.f90 +++ b/test/pargen/psb_s_pde3d.f90 @@ -650,7 +650,7 @@ program psb_s_pde3d ! prepare the preconditioner. ! if(iam == psb_root_) write(psb_out_unit,'("Setting preconditioner to : ",a)')ptype - call prec%init(ptype,info) + call prec%init(ictxt,ptype,info) call psb_barrier(ictxt) t1 = psb_wtime() From 6414deeb3bd56de4bdbd825222306b52f9e7154a Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Wed, 10 Oct 2018 16:15:28 +0100 Subject: [PATCH 21/26] ICTXT in PREC%INIT, cbind. --- cbind/base/psb_c_base.h | 1 + cbind/krylov/psb_ckrylov_cbind_mod.f90 | 8 ++++---- cbind/krylov/psb_dkrylov_cbind_mod.f90 | 10 ++++------ cbind/krylov/psb_skrylov_cbind_mod.f90 | 8 ++++---- cbind/krylov/psb_zkrylov_cbind_mod.f90 | 8 ++++---- cbind/prec/psb_c_cprec.h | 18 +++++++++--------- cbind/prec/psb_c_dprec.h | 18 +++++++++--------- cbind/prec/psb_c_sprec.h | 18 +++++++++--------- cbind/prec/psb_c_zprec.h | 18 +++++++++--------- cbind/prec/psb_cprec_cbind_mod.f90 | 11 ++++++----- cbind/prec/psb_dprec_cbind_mod.f90 | 11 ++++++----- cbind/prec/psb_sprec_cbind_mod.f90 | 11 ++++++----- cbind/prec/psb_zprec_cbind_mod.f90 | 11 ++++++----- cbind/test/pargen/ppdec.c | 2 +- 14 files changed, 78 insertions(+), 75 deletions(-) diff --git a/cbind/base/psb_c_base.h b/cbind/base/psb_c_base.h index fe07902e..b78562d5 100644 --- a/cbind/base/psb_c_base.h +++ b/cbind/base/psb_c_base.h @@ -1,3 +1,4 @@ + #ifndef PSB_C_BASE__ #define PSB_C_BASE__ #ifdef __cplusplus diff --git a/cbind/krylov/psb_ckrylov_cbind_mod.f90 b/cbind/krylov/psb_ckrylov_cbind_mod.f90 index cba8ccc9..1e63c428 100644 --- a/cbind/krylov/psb_ckrylov_cbind_mod.f90 +++ b/cbind/krylov/psb_ckrylov_cbind_mod.f90 @@ -13,7 +13,7 @@ contains use psb_prec_cbind_mod use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_cspmat) :: ah type(psb_c_descriptor) :: cdh type(psb_c_cprec) :: ph @@ -38,14 +38,14 @@ contains use psb_prec_cbind_mod use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_cspmat) :: ah type(psb_c_descriptor) :: cdh type(psb_c_cprec) :: ph type(psb_c_cvector) :: bh,xh - integer(c_int), value :: itmax,itrace,irst,istop + integer(psb_c_int), value :: itmax,itrace,irst,istop real(c_double), value :: eps - integer(c_int) :: iter + integer(psb_c_int) :: iter real(c_double) :: err character(c_char) :: methd(*) type(solveroptions) :: options diff --git a/cbind/krylov/psb_dkrylov_cbind_mod.f90 b/cbind/krylov/psb_dkrylov_cbind_mod.f90 index 55fc0366..ce97f4e6 100644 --- a/cbind/krylov/psb_dkrylov_cbind_mod.f90 +++ b/cbind/krylov/psb_dkrylov_cbind_mod.f90 @@ -13,7 +13,7 @@ contains use psb_prec_cbind_mod use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_dspmat) :: ah type(psb_c_descriptor) :: cdh type(psb_c_dprec) :: ph @@ -21,7 +21,6 @@ contains character(c_char) :: methd(*) type(solveroptions) :: options - write(0,*) 'psb_c_dkrylov options ', options%eps res= psb_c_dkrylov_opt(methd, ah, ph, bh, xh, options%eps,cdh, & & itmax=options%itmax, iter=options%iter,& & itrace=options%itrace, istop=options%istop,& @@ -39,14 +38,14 @@ contains use psb_prec_cbind_mod use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_dspmat) :: ah type(psb_c_descriptor) :: cdh type(psb_c_dprec) :: ph type(psb_c_dvector) :: bh,xh - integer(c_int), value :: itmax,itrace,irst,istop + integer(psb_c_int), value :: itmax,itrace,irst,istop real(c_double), value :: eps - integer(c_int) :: iter + integer(psb_c_int) :: iter real(c_double) :: err character(c_char) :: methd(*) type(solveroptions) :: options @@ -59,7 +58,6 @@ contains character(len=20) :: fmethd real(psb_dpk_) :: feps,ferr - write(0,*) 'psb_c_dkrylov_opt options ', eps res = -1 if (c_associated(cdh%item)) then call c_f_pointer(cdh%item,descp) diff --git a/cbind/krylov/psb_skrylov_cbind_mod.f90 b/cbind/krylov/psb_skrylov_cbind_mod.f90 index c2856567..da0c734c 100644 --- a/cbind/krylov/psb_skrylov_cbind_mod.f90 +++ b/cbind/krylov/psb_skrylov_cbind_mod.f90 @@ -13,7 +13,7 @@ contains use psb_prec_cbind_mod use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_sspmat) :: ah type(psb_c_descriptor) :: cdh type(psb_c_sprec) :: ph @@ -38,14 +38,14 @@ contains use psb_prec_cbind_mod use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_sspmat) :: ah type(psb_c_descriptor) :: cdh type(psb_c_sprec) :: ph type(psb_c_svector) :: bh,xh - integer(c_int), value :: itmax,itrace,irst,istop + integer(psb_c_int), value :: itmax,itrace,irst,istop real(c_double), value :: eps - integer(c_int) :: iter + integer(psb_c_int) :: iter real(c_double) :: err character(c_char) :: methd(*) type(solveroptions) :: options diff --git a/cbind/krylov/psb_zkrylov_cbind_mod.f90 b/cbind/krylov/psb_zkrylov_cbind_mod.f90 index ae1931ec..d2c9e60d 100644 --- a/cbind/krylov/psb_zkrylov_cbind_mod.f90 +++ b/cbind/krylov/psb_zkrylov_cbind_mod.f90 @@ -13,7 +13,7 @@ contains use psb_prec_cbind_mod use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_zspmat) :: ah type(psb_c_descriptor) :: cdh type(psb_c_zprec) :: ph @@ -38,14 +38,14 @@ contains use psb_prec_cbind_mod use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_zspmat) :: ah type(psb_c_descriptor) :: cdh type(psb_c_zprec) :: ph type(psb_c_zvector) :: bh,xh - integer(c_int), value :: itmax,itrace,irst,istop + integer(psb_c_int), value :: itmax,itrace,irst,istop real(c_double), value :: eps - integer(c_int) :: iter + integer(psb_c_int) :: iter real(c_double) :: err character(c_char) :: methd(*) type(solveroptions) :: options diff --git a/cbind/prec/psb_c_cprec.h b/cbind/prec/psb_c_cprec.h index b840c6f0..452f1c03 100644 --- a/cbind/prec/psb_c_cprec.h +++ b/cbind/prec/psb_c_cprec.h @@ -8,15 +8,15 @@ extern "C" { #endif -typedef struct PSB_C_CPREC { - void *cprec; -} psb_c_cprec; - -psb_c_cprec* psb_c_new_cprec(); - -psb_i_t psb_c_cprecinit(psb_c_cprec *ph, const char *ptype); -psb_i_t psb_c_cprecbld(psb_c_cspmat *ah, psb_c_descriptor *cdh, psb_c_cprec *ph); -psb_i_t psb_c_cprecfree(psb_c_cprec *ph); + typedef struct PSB_C_CPREC { + void *cprec; + } psb_c_cprec; + + psb_c_cprec* psb_c_new_cprec(); + + psb_i_t psb_c_cprecinit(psb_i_t ictxt,psb_c_cprec *ph, const char *ptype); + psb_i_t psb_c_cprecbld(psb_c_cspmat *ah, psb_c_descriptor *cdh, psb_c_cprec *ph); + psb_i_t psb_c_cprecfree(psb_c_cprec *ph); #ifdef __cplusplus } #endif diff --git a/cbind/prec/psb_c_dprec.h b/cbind/prec/psb_c_dprec.h index fa16247e..90ab72e6 100644 --- a/cbind/prec/psb_c_dprec.h +++ b/cbind/prec/psb_c_dprec.h @@ -8,15 +8,15 @@ extern "C" { #endif -typedef struct PSB_C_DPREC { - void *dprec; -} psb_c_dprec; - -psb_c_dprec* psb_c_new_dprec(); - -psb_i_t psb_c_dprecinit(psb_c_dprec *ph, const char *ptype); -psb_i_t psb_c_dprecbld(psb_c_dspmat *ah, psb_c_descriptor *cdh, psb_c_dprec *ph); -psb_i_t psb_c_dprecfree(psb_c_dprec *ph); + typedef struct PSB_C_DPREC { + void *dprec; + } psb_c_dprec; + + psb_c_dprec* psb_c_new_dprec(); + + psb_i_t psb_c_dprecinit(psb_i_t ictxt, psb_c_dprec *ph, const char *ptype); + psb_i_t psb_c_dprecbld(psb_c_dspmat *ah, psb_c_descriptor *cdh, psb_c_dprec *ph); + psb_i_t psb_c_dprecfree(psb_c_dprec *ph); #ifdef __cplusplus } #endif diff --git a/cbind/prec/psb_c_sprec.h b/cbind/prec/psb_c_sprec.h index cfad99bb..57d66c01 100644 --- a/cbind/prec/psb_c_sprec.h +++ b/cbind/prec/psb_c_sprec.h @@ -8,15 +8,15 @@ extern "C" { #endif -typedef struct PSB_C_SPREC { - void *sprec; -} psb_c_sprec; - -psb_c_sprec* psb_c_new_sprec(); - -psb_i_t psb_c_sprecinit(psb_c_sprec *ph, const char *ptype); -psb_i_t psb_c_sprecbld(psb_c_sspmat *ah, psb_c_descriptor *cdh, psb_c_sprec *ph); -psb_i_t psb_c_sprecfree(psb_c_sprec *ph); + typedef struct PSB_C_SPREC { + void *sprec; + } psb_c_sprec; + + psb_c_sprec* psb_c_new_sprec(); + + psb_i_t psb_c_sprecinit(psb_i_t ictxt, psb_c_sprec *ph, const char *ptype); + psb_i_t psb_c_sprecbld(psb_c_sspmat *ah, psb_c_descriptor *cdh, psb_c_sprec *ph); + psb_i_t psb_c_sprecfree(psb_c_sprec *ph); #ifdef __cplusplus } #endif diff --git a/cbind/prec/psb_c_zprec.h b/cbind/prec/psb_c_zprec.h index eebe8e08..f86e3844 100644 --- a/cbind/prec/psb_c_zprec.h +++ b/cbind/prec/psb_c_zprec.h @@ -8,15 +8,15 @@ extern "C" { #endif -typedef struct PSB_C_ZPREC { - void *zprec; -} psb_c_zprec; - -psb_c_zprec* psb_c_new_zprec(); - -psb_i_t psb_c_zprecinit(psb_c_zprec *ph, const char *ptype); -psb_i_t psb_c_zprecbld(psb_c_zspmat *ah, psb_c_descriptor *cdh, psb_c_zprec *ph); -psb_i_t psb_c_zprecfree(psb_c_zprec *ph); + typedef struct PSB_C_ZPREC { + void *zprec; + } psb_c_zprec; + + psb_c_zprec* psb_c_new_zprec(); + + psb_i_t psb_c_zprecinit(psb_i_t ictxt, psb_c_zprec *ph, const char *ptype); + psb_i_t psb_c_zprecbld(psb_c_zspmat *ah, psb_c_descriptor *cdh, psb_c_zprec *ph); + psb_i_t psb_c_zprecfree(psb_c_zprec *ph); #ifdef __cplusplus } #endif diff --git a/cbind/prec/psb_cprec_cbind_mod.f90 b/cbind/prec/psb_cprec_cbind_mod.f90 index 7f827b55..67b26a9e 100644 --- a/cbind/prec/psb_cprec_cbind_mod.f90 +++ b/cbind/prec/psb_cprec_cbind_mod.f90 @@ -13,12 +13,13 @@ module psb_cprec_cbind_mod contains - function psb_c_cprecinit(ph,ptype) bind(c) result(res) + function psb_c_cprecinit(ictxt,ph,ptype) bind(c) result(res) use psb_base_mod use psb_prec_mod use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int), value :: ictxt + integer(psb_c_int) :: res type(psb_c_cprec) :: ph character(c_char) :: ptype(*) type(psb_cprec_type), pointer :: precp @@ -36,7 +37,7 @@ contains call stringc2f(ptype,fptype) - call psb_precinit(precp,fptype,info) + call psb_precinit(ictxt,precp,fptype,info) res = min(0,info) return @@ -51,7 +52,7 @@ contains use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_cspmat) :: ah type(psb_c_cprec) :: ph type(psb_c_descriptor) :: cdh @@ -94,7 +95,7 @@ contains use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_cprec) :: ph type(psb_cprec_type), pointer :: precp diff --git a/cbind/prec/psb_dprec_cbind_mod.f90 b/cbind/prec/psb_dprec_cbind_mod.f90 index 1e756d11..50f0a0b7 100644 --- a/cbind/prec/psb_dprec_cbind_mod.f90 +++ b/cbind/prec/psb_dprec_cbind_mod.f90 @@ -13,12 +13,13 @@ module psb_dprec_cbind_mod contains - function psb_c_dprecinit(ph,ptype) bind(c) result(res) + function psb_c_dprecinit(ictxt,ph,ptype) bind(c) result(res) use psb_base_mod use psb_prec_mod use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int), value :: ictxt + integer(psb_c_int) :: res type(psb_c_dprec) :: ph character(c_char) :: ptype(*) type(psb_dprec_type), pointer :: precp @@ -36,7 +37,7 @@ contains call stringc2f(ptype,fptype) - call psb_precinit(precp,fptype,info) + call psb_precinit(ictxt,precp,fptype,info) res = min(0,info) return @@ -51,7 +52,7 @@ contains use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_dspmat) :: ah type(psb_c_dprec) :: ph type(psb_c_descriptor) :: cdh @@ -94,7 +95,7 @@ contains use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_dprec) :: ph type(psb_dprec_type), pointer :: precp diff --git a/cbind/prec/psb_sprec_cbind_mod.f90 b/cbind/prec/psb_sprec_cbind_mod.f90 index 1578eeba..9474949f 100644 --- a/cbind/prec/psb_sprec_cbind_mod.f90 +++ b/cbind/prec/psb_sprec_cbind_mod.f90 @@ -13,12 +13,13 @@ module psb_sprec_cbind_mod contains - function psb_c_sprecinit(ph,ptype) bind(c) result(res) + function psb_c_sprecinit(ictxt,ph,ptype) bind(c) result(res) use psb_base_mod use psb_prec_mod use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int), value :: ictxt + integer(psb_c_int) :: res type(psb_c_sprec) :: ph character(c_char) :: ptype(*) type(psb_sprec_type), pointer :: precp @@ -36,7 +37,7 @@ contains call stringc2f(ptype,fptype) - call psb_precinit(precp,fptype,info) + call psb_precinit(ictxt,precp,fptype,info) res = min(0,info) return @@ -51,7 +52,7 @@ contains use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_sspmat) :: ah type(psb_c_sprec) :: ph type(psb_c_descriptor) :: cdh @@ -94,7 +95,7 @@ contains use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_sprec) :: ph type(psb_sprec_type), pointer :: precp diff --git a/cbind/prec/psb_zprec_cbind_mod.f90 b/cbind/prec/psb_zprec_cbind_mod.f90 index c662e21c..d428fced 100644 --- a/cbind/prec/psb_zprec_cbind_mod.f90 +++ b/cbind/prec/psb_zprec_cbind_mod.f90 @@ -13,12 +13,13 @@ module psb_zprec_cbind_mod contains - function psb_c_zprecinit(ph,ptype) bind(c) result(res) + function psb_c_zprecinit(ictxt,ph,ptype) bind(c) result(res) use psb_base_mod use psb_prec_mod use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int), value :: ictxt + integer(psb_c_int) :: res type(psb_c_zprec) :: ph character(c_char) :: ptype(*) type(psb_zprec_type), pointer :: precp @@ -36,7 +37,7 @@ contains call stringc2f(ptype,fptype) - call psb_precinit(precp,fptype,info) + call psb_precinit(ictxt,precp,fptype,info) res = min(0,info) return @@ -51,7 +52,7 @@ contains use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_zspmat) :: ah type(psb_c_zprec) :: ph type(psb_c_descriptor) :: cdh @@ -94,7 +95,7 @@ contains use psb_base_string_cbind_mod implicit none - integer(c_int) :: res + integer(psb_c_int) :: res type(psb_c_zprec) :: ph type(psb_zprec_type), pointer :: precp diff --git a/cbind/test/pargen/ppdec.c b/cbind/test/pargen/ppdec.c index 1e9d786a..32c5b600 100644 --- a/cbind/test/pargen/ppdec.c +++ b/cbind/test/pargen/ppdec.c @@ -320,7 +320,7 @@ int main(int argc, char *argv[]) psb_c_barrier(ictxt); /* Set up the preconditioner */ ph = psb_c_new_dprec(); - psb_c_dprecinit(ph,ptype); + psb_c_dprecinit(ictxt,ph,ptype); ret=psb_c_dprecbld(ah,cdh,ph); fprintf(stderr,"From psb_c_dprecbld: %d\n",ret); From d52fdf9be2849ca0c8f66058b85cda42d027ec4d Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Thu, 11 Oct 2018 09:05:49 +0100 Subject: [PATCH 22/26] Updated version number and docs for prec%init. --- base/modules/psb_const_mod.F90 | 6 +- docs/html/footnode.html | 4 +- docs/html/img1.png | Bin 194 -> 200 bytes docs/html/img10.png | Bin 361 -> 404 bytes docs/html/img100.png | Bin 175 -> 178 bytes docs/html/img101.png | Bin 336 -> 363 bytes docs/html/img102.png | Bin 486 -> 533 bytes docs/html/img103.png | Bin 310 -> 359 bytes docs/html/img104.png | Bin 340 -> 368 bytes docs/html/img105.png | Bin 217 -> 228 bytes docs/html/img106.png | Bin 316 -> 340 bytes docs/html/img107.png | Bin 258 -> 259 bytes docs/html/img108.png | Bin 184 -> 194 bytes docs/html/img109.png | Bin 620 -> 737 bytes docs/html/img11.png | Bin 469 -> 526 bytes docs/html/img110.png | Bin 332 -> 373 bytes docs/html/img111.png | Bin 134 -> 134 bytes docs/html/img112.png | Bin 254 -> 257 bytes docs/html/img113.png | Bin 357 -> 390 bytes docs/html/img114.png | Bin 241 -> 263 bytes docs/html/img115.png | Bin 233 -> 244 bytes docs/html/img116.png | Bin 222 -> 276 bytes docs/html/img117.png | Bin 360 -> 374 bytes docs/html/img118.png | Bin 203 -> 222 bytes docs/html/img119.png | Bin 243 -> 259 bytes docs/html/img12.png | Bin 123 -> 129 bytes docs/html/img120.png | Bin 786 -> 808 bytes docs/html/img121.png | Bin 370 -> 412 bytes docs/html/img122.png | Bin 388 -> 431 bytes docs/html/img123.png | Bin 330 -> 354 bytes docs/html/img124.png | Bin 298 -> 310 bytes docs/html/img125.png | Bin 804 -> 839 bytes docs/html/img126.png | Bin 302 -> 335 bytes docs/html/img127.png | Bin 491 -> 500 bytes docs/html/img128.png | Bin 383 -> 402 bytes docs/html/img129.png | Bin 238 -> 267 bytes docs/html/img13.png | Bin 2934 -> 3167 bytes docs/html/img130.png | Bin 491 -> 533 bytes docs/html/img131.png | Bin 530 -> 545 bytes docs/html/img132.png | Bin 318 -> 335 bytes docs/html/img133.png | Bin 223 -> 232 bytes docs/html/img134.png | Bin 484 -> 520 bytes docs/html/img135.png | Bin 517 -> 613 bytes docs/html/img136.png | Bin 496 -> 581 bytes docs/html/img138.png | Bin 244 -> 277 bytes docs/html/img139.png | Bin 776 -> 870 bytes docs/html/img14.png | Bin 583 -> 643 bytes docs/html/img140.png | Bin 207 -> 215 bytes docs/html/img141.png | Bin 526 -> 583 bytes docs/html/img142.png | Bin 671 -> 732 bytes docs/html/img143.png | Bin 500 -> 523 bytes docs/html/img144.png | Bin 259 -> 268 bytes docs/html/img145.png | Bin 487 -> 572 bytes docs/html/img146.png | Bin 234 -> 240 bytes docs/html/img148.png | Bin 8199 -> 8603 bytes docs/html/img15.png | Bin 218 -> 230 bytes docs/html/img150.png | Bin 980 -> 1099 bytes docs/html/img151.png | Bin 707 -> 758 bytes docs/html/img152.png | Bin 807 -> 875 bytes docs/html/img153.png | Bin 848 -> 867 bytes docs/html/img154.png | Bin 1036 -> 1172 bytes docs/html/img155.png | Bin 1196 -> 1348 bytes docs/html/img156.png | Bin 931 -> 1029 bytes docs/html/img157.png | Bin 1001 -> 1121 bytes docs/html/img158.png | Bin 1038 -> 1209 bytes docs/html/img159.png | Bin 1009 -> 1156 bytes docs/html/img16.png | Bin 187 -> 196 bytes docs/html/img160.png | Bin 328 -> 373 bytes docs/html/img161.png | Bin 403 -> 431 bytes docs/html/img162.png | Bin 262 -> 304 bytes docs/html/img163.png | Bin 793 -> 915 bytes docs/html/img164.png | Bin 604 -> 678 bytes docs/html/img165.png | Bin 591 -> 659 bytes docs/html/img166.png | Bin 210 -> 219 bytes docs/html/img167.png | Bin 385 -> 429 bytes docs/html/img168.png | Bin 2021 -> 2452 bytes docs/html/img17.png | Bin 349 -> 371 bytes docs/html/img18.png | Bin 487 -> 540 bytes docs/html/img19.png | Bin 464 -> 486 bytes docs/html/img2.png | Bin 2703 -> 3108 bytes docs/html/img20.png | Bin 178 -> 184 bytes docs/html/img21.png | Bin 201 -> 231 bytes docs/html/img22.png | Bin 185 -> 201 bytes docs/html/img23.png | Bin 200 -> 225 bytes docs/html/img24.png | Bin 420 -> 469 bytes docs/html/img25.png | Bin 437 -> 482 bytes docs/html/img26.png | Bin 259 -> 267 bytes docs/html/img27.png | Bin 2504 -> 4180 bytes docs/html/img28.png | Bin 645 -> 791 bytes docs/html/img29.png | Bin 240 -> 245 bytes docs/html/img3.png | Bin 2671 -> 3149 bytes docs/html/img30.png | Bin 498 -> 591 bytes docs/html/img31.png | Bin 908 -> 1090 bytes docs/html/img32.png | Bin 290 -> 311 bytes docs/html/img33.png | Bin 2257 -> 3994 bytes docs/html/img34.png | Bin 717 -> 799 bytes docs/html/img35.png | Bin 432 -> 454 bytes docs/html/img36.png | Bin 740 -> 875 bytes docs/html/img37.png | Bin 307 -> 311 bytes docs/html/img38.png | Bin 2211 -> 3960 bytes docs/html/img39.png | Bin 468 -> 508 bytes docs/html/img4.png | Bin 178 -> 178 bytes docs/html/img40.png | Bin 793 -> 909 bytes docs/html/img41.png | Bin 526 -> 564 bytes docs/html/img42.png | Bin 540 -> 572 bytes docs/html/img43.png | Bin 316 -> 320 bytes docs/html/img44.png | Bin 2264 -> 4024 bytes docs/html/img45.png | Bin 574 -> 655 bytes docs/html/img46.png | Bin 405 -> 476 bytes docs/html/img47.png | Bin 440 -> 498 bytes docs/html/img48.png | Bin 485 -> 536 bytes docs/html/img49.png | Bin 551 -> 572 bytes docs/html/img5.png | Bin 187 -> 200 bytes docs/html/img50.png | Bin 531 -> 597 bytes docs/html/img51.png | Bin 221 -> 243 bytes docs/html/img52.png | Bin 241 -> 256 bytes docs/html/img53.png | Bin 393 -> 415 bytes docs/html/img54.png | Bin 1732 -> 2923 bytes docs/html/img55.png | Bin 200 -> 192 bytes docs/html/img56.png | Bin 212 -> 229 bytes docs/html/img57.png | Bin 414 -> 421 bytes docs/html/img58.png | Bin 707 -> 824 bytes docs/html/img59.png | Bin 222 -> 283 bytes docs/html/img6.png | Bin 328 -> 376 bytes docs/html/img60.png | Bin 1294 -> 1916 bytes docs/html/img61.png | Bin 2637 -> 3748 bytes docs/html/img62.png | Bin 2518 -> 3122 bytes docs/html/img63.png | Bin 311 -> 367 bytes docs/html/img64.png | Bin 230 -> 253 bytes docs/html/img65.png | Bin 225 -> 247 bytes docs/html/img66.png | Bin 243 -> 261 bytes docs/html/img67.png | Bin 1640 -> 2398 bytes docs/html/img68.png | Bin 243 -> 261 bytes docs/html/img69.png | Bin 279 -> 335 bytes docs/html/img7.png | Bin 194 -> 202 bytes docs/html/img70.png | Bin 686 -> 773 bytes docs/html/img71.png | Bin 4853 -> 5090 bytes docs/html/img72.png | Bin 4873 -> 5450 bytes docs/html/img73.png | Bin 706 -> 805 bytes docs/html/img74.png | Bin 351 -> 368 bytes docs/html/img75.png | Bin 476 -> 502 bytes docs/html/img76.png | Bin 310 -> 326 bytes docs/html/img77.png | Bin 333 -> 366 bytes docs/html/img78.png | Bin 284 -> 301 bytes docs/html/img79.png | Bin 1264 -> 2461 bytes docs/html/img8.png | Bin 222 -> 231 bytes docs/html/img80.png | Bin 278 -> 373 bytes docs/html/img81.png | Bin 430 -> 539 bytes docs/html/img82.png | Bin 160 -> 167 bytes docs/html/img83.png | Bin 740 -> 800 bytes docs/html/img84.png | Bin 344 -> 369 bytes docs/html/img85.png | Bin 1316 -> 1401 bytes docs/html/img86.png | Bin 434 -> 502 bytes docs/html/img87.png | Bin 334 -> 366 bytes docs/html/img88.png | Bin 238 -> 256 bytes docs/html/img89.png | Bin 235 -> 243 bytes docs/html/img9.png | Bin 229 -> 242 bytes docs/html/img90.png | Bin 186 -> 186 bytes docs/html/img91.png | Bin 396 -> 418 bytes docs/html/img92.png | Bin 481 -> 507 bytes docs/html/img93.png | Bin 213 -> 219 bytes docs/html/img94.png | Bin 543 -> 582 bytes docs/html/img95.png | Bin 282 -> 319 bytes docs/html/img96.png | Bin 416 -> 457 bytes docs/html/img97.png | Bin 347 -> 394 bytes docs/html/img98.png | Bin 264 -> 285 bytes docs/html/img99.png | Bin 381 -> 415 bytes docs/html/index.html | 4 +- docs/html/node104.html | 4 +- docs/html/node114.html | 6 +- docs/html/node115.html | 10 +- docs/html/node116.html | 8 +- docs/html/node117.html | 4 +- docs/html/node119.html | 2 +- docs/html/node120.html | 2 +- docs/html/node121.html | 2 +- docs/html/node122.html | 2 +- docs/html/node123.html | 2 +- docs/html/node124.html | 2 +- docs/html/node126.html | 15 +- docs/html/node133.html | 8 +- docs/html/node4.html | 4 +- docs/html/node48.html | 6 +- docs/html/node53.html | 12 +- docs/html/node54.html | 22 +-- docs/html/node55.html | 20 +- docs/html/node56.html | 18 +- docs/html/node57.html | 12 +- docs/html/node58.html | 16 +- docs/html/node59.html | 20 +- docs/html/node6.html | 10 +- docs/html/node60.html | 16 +- docs/html/node61.html | 12 +- docs/html/node62.html | 2 +- docs/html/node63.html | 2 +- docs/html/node64.html | 20 +- docs/html/node65.html | 20 +- docs/html/node67.html | 20 +- docs/html/node68.html | 28 +-- docs/html/node69.html | 4 +- docs/html/node70.html | 6 +- docs/html/node72.html | 4 +- docs/html/node73.html | 12 +- docs/html/node78.html | 2 +- docs/html/node79.html | 8 +- docs/html/node83.html | 4 +- docs/html/node84.html | 4 +- docs/html/node85.html | 2 +- docs/html/node88.html | 4 +- docs/html/node89.html | 4 +- docs/html/node90.html | 2 +- docs/html/node91.html | 2 +- docs/html/node92.html | 2 +- docs/html/node93.html | 2 +- docs/html/node96.html | 4 +- docs/html/node98.html | 6 +- docs/html/userhtml.html | 4 +- docs/{psblas-3.5.pdf => psblas-3.6.pdf} | 246 ++++++++++++------------ docs/src/Makefile | 2 +- docs/src/precs.tex | 7 +- docs/src/userguide.tex | 8 +- docs/src/userhtml.tex | 6 +- 222 files changed, 353 insertions(+), 333 deletions(-) rename docs/{psblas-3.5.pdf => psblas-3.6.pdf} (99%) diff --git a/base/modules/psb_const_mod.F90 b/base/modules/psb_const_mod.F90 index d6ffe3af..5083efc0 100644 --- a/base/modules/psb_const_mod.F90 +++ b/base/modules/psb_const_mod.F90 @@ -91,10 +91,10 @@ module psb_const_mod ! ! Version ! - character(len=*), parameter :: psb_version_string_ = "3.5.1" + character(len=*), parameter :: psb_version_string_ = "3.6.0" integer(psb_ipk_), parameter :: psb_version_major_ = 3 - integer(psb_ipk_), parameter :: psb_version_minor_ = 5 - integer(psb_ipk_), parameter :: psb_patchlevel_ = 1 + integer(psb_ipk_), parameter :: psb_version_minor_ = 6 + integer(psb_ipk_), parameter :: psb_patchlevel_ = 0 ! ! Handy & miscellaneous constants diff --git a/docs/html/footnode.html b/docs/html/footnode.html index 1528fdfe..57ffc743 100644 --- a/docs/html/footnode.html +++ b/docs/html/footnode.html @@ -137,7 +137,7 @@ sample scatter/gather routines. . -
    ... follows... follows4
    The string is case-insensitive @@ -173,7 +173,7 @@ sample scatter/gather routines. .
    -
    ... method... method5
    Note: the implementation is for 3=HZ4J|V9E|Noykb7pyY`MY=TjE#*21qD~FTGi3f0hD)f zak+cNiXQ3Ne-h`2{mLJiCzw$63`QZ{05`+qj0R_q9N^mM+}K#mbmG%W eCLS$EZibINtiLaBoBR-HHiM_DpUXO@geCybl|i!r delta 174 zcmX@Xc!+U=Og+OD#>Slt3=CQUJ|V6L4jkCLd9#|DT0=vFkB`r?Wy^|-i)YT9$-~2w zmX-!oWo&HR+uIu%8Tqz!pC6FVSQ6wH%;50s21wG))5S4_V`g%~0ltVto=yghRu|3O(FB>U($OO z@Ms1W0EQBMt(p4&z~a7%9W0CXEc3}oOwfIcdgAd3JDD|t8TF|h<9Dg}C5JT8iioCH z)uh}?{otLT27XF>^BLMSW#t4TRdm`10lha9mo+AP`-(F!vs>s%8iH5rp=TZfFdpLN zeI-~MgV~!j%9m+yJ$eg?rALHyceCNOV-QDg{$2V47s2378nk(PH%Co3c+W;m32shm j<-HDiEzNW92Y(R{jF$-P8i}bW00000NkvXXu0mjfkXEf6 delta 346 zcmV-g0j2(w1L*>g7=Hu<00018trPG7001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL- zb8~Y)KR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCRI)q&;Kze@wnq4~> z82BAvq8}K71XK7w3!$sIV!#k93={o%=gb*(h8bx7V%0eDezhDN3XE#8SmYyz-AsjQ46C4=IBu@4UBr_+ushHjg zsACjRXZXmbV(I2xYLLsQ7Mb3t`Ham#bSHz0+^1_v;t324b2(UNT#0!29%u@Kr>mdK II;Vst01i1fJOBUy delta 155 zcmdnQxSnx>Og+QP$q()`FfeEZ_=LC~IB-BsP0h#0XW6o4l9H0e#l`ma_A_VBjC3e!dj;e(mIV0)GdMiE0haW1aSY*@nVfKdFCzaw%VlGQJ0=`g zIn{28H*5N_8ysE6u*`z#K*&_a8MBzw&UeM6B``3EsMWDA>2*#N02;>N>FVdQ&MBb@ E05e)MU;qFB diff --git a/docs/html/img101.png b/docs/html/img101.png index 183814e16f592d47f8893e7a87d4c60d1868f772..f539ffeb3309da75bba063bf2f46ca8d6c155676 100644 GIT binary patch delta 344 zcmV-e0jK`Z0_y^h9Df1zu~6y&001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCO&ifeiv6GJt`Bm4QhKuSy06CUz);GX%t&0Ae;U>3?%ufEW)5XvPLqI1%gv zKx26r7!tsoOKc!=5rYB`)Mn;y3&=2^0N}Zx184Jt>@Pr)1O?jy0VqfC69B_y7ytk@4w(F6>Y5_rbId;ucO@Qs^+f&T-N?g#BacR@uqFvPrO zVBkeDe<{#iObHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC zElU6C5{b2!VnA16e{zCv(_{3}wcXA#_(I&%r7ppw=G<)NJ^O)TY2TdTD%_ zmsC@;81BET_Hg(9 zz#%&0w;v3ie#>xYFsozbBXSFS4P0o3ck{t+0UOOFTzmoZF=UUfVHe93pEDqXXRd|M z5V75-Pr7kB9yeC!II+pe;G}=M#9NS^3%Chg+bjg!d*-h+u&5a-5Ogw8=BRamV_+pj zrae}!Fs=3U3f+id>a)!A_FG%~JTDVst??AX9~7M_`v9@gTS#Lw`ttw)002ovPDHLk FV1nkN=|unl delta 468 zcmV;_0W1EM1m**f9De{xkApb?001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCNJB46 zLm|Ghjeycn_7u~q*FJiomXHh6qFBHH<$Y`cD@-w?)rc%Vpd%P9huW3@Zc_Jyk~l(V zP91^YV|%0K(1nmg#p6!|M<~{h>*7K_`ou(m5X{zr9Zlh|2n>lW1LyEiq&>-U?aGw~ z6M#2;#dJ4ixy)D%k;T}%3{&`!4t7GX$R3RzkB90_KdyiM4SfNi=UgFShs?SU;qOJ zAP!)_1S~+zbAaK%0xWVszzQN7Kx&E>900KoU{{9#Y(V^g4S!^;8!s0d!!w2i28O%? zA>0f(3>zRSCNMA&G6W}RV0Zu|V;F!&urou1I2afh85r0Dj`%R}fql4O0not9De|azsJ1*001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCDl#W9ya%xuxIyOg@qb_|;C5j64`MO!fvw~Um?OYZ02BhUph8BR<EO z8SFtUh(?BX;kgXY*g?j(3qy=&_`QL}xX2jfh~FC+cmqH}oD2*T83GtsCV*J7$WCQ- p0FfvjV%P`uC>*jUkpgG90|1>0DJj(4AI<;(002ovPDHLkV1iH9a2Nmp diff --git a/docs/html/img104.png b/docs/html/img104.png index 86b732f9a792856c95330b86ea376a99401551c3..2f140eb127528282aaf93d86629788b5b94c6537 100644 GIT binary patch delta 349 zcmV-j0iyoY0`LNm9De~2dYlyi001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCvO3KO+Of1tQGC33wUUfFwH*A7E#JiZy_}#?8vg!0?@+0O({UAnPv3*%$ad z5)x_|4lpo)Tm@8=z`zA^`pTOiYFzMLDz@pgMz;KL# z|1$%_ACM65g;rJuJqGp*K%abA1&^!u3_BQRu>r-n7F+-a1kj2D3`vbb4GbC#Tpt-2 vgg`=Keo(7;Km^MHR5$ek@i!{_lN0~|bxkaJt_Mwn00000NkvXXu0mjf;`4)j delta 321 zcmV-H0lxn50@MPK9De|3eXN53001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCf~QX#EK$C4W%F6u=}e*r4g3892Y2 zFmPUAV6SIj;5Pt?ZLnpSBw)tC_krQvT%d&@OIQQ`Go&+YVc`G3@ZdiKND2h>I1e(k zgTxq?!o(O4@Fg%ToxuEofmvY!L@xvL1w{23a~OTcsepLOkiM;1qpo(gSt5cOoIHzn%M~piU%Mr*oru~=e{C^)kp#W$Mi2s T6>SxY00000NkvXXu0mjfRtI_t diff --git a/docs/html/img105.png b/docs/html/img105.png index 757d96014b84a88cdf1d89f82ee535045cad5def..66bf5520f7ed1017df5f7e6ae2e9438ed1a5befc 100644 GIT binary patch delta 213 zcmcb~_=ItScs(x*GXn#oM$hJB3=9kg0X`wF|NsA=Idf)td3k7P=(~6CjE#-YoH-*X zD7b3Xs*aA1w6rv!LKhd8yLay@DJkvVy<1*ZaVk)Vu_VYZn8D%M4Ul}2r;B3<$IRpe z1}1hkmIu)v7|uQ8_ee;XklXM%)!s0NF-TZ#gTiYEHb0#%;T~@E`tp^jNTDOSE@J7Nw}EGz;J1Xkb-8Jpa#%7 N22WQ%mvv4FO#tM)OOpTq delta 202 zcmaFDc$0C0cs(BrGXn#|P5F=ifRsUiPl)S*0|z#5-mIpk*3i)4QQ- zdwcttGiUPf@T8@s0o58C8~671Mn*<9n&rykTH-V`Q8l#2}L>Tt0h)*cqT544$rjF6*2UngEXT BOX>gs diff --git a/docs/html/img106.png b/docs/html/img106.png index 504bcd98e912be488752a684facf533fc6ab4281..bd84d15a13c55f0d1ca4f209b9dbf12f7d15f537 100644 GIT binary patch delta 321 zcmV-H0lxmc0@MPK9De~hC~5%!001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCAc&0WP>5LmmJCYLX;4 T`AXk}00000NkvXXu0mjfdHZl_ delta 297 zcmV+^0oMN10=xo{9De{#FItxX001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCo7sV70$k!h5Ho%;0JGTw_!Qt0dVgTDwg5!VVPH52q`3Wx zzcVl%fXLSt0*N;a4CjE9=_i3_49pjxI==z24MgHWJJ4qS512X_mI7^NdVpjHRDv^s zVQGL2E0U{X7+ArUJMbxNc*~9C58esP4M2*cfc5f&*g7PSb6$)H0EGqvgCGNA0CJGX vJwOdG`~N_|fFcFNy?giWB{qpsfFA$=+b%Tg$-{Y000000NkvXXu0mjf&_HuD diff --git a/docs/html/img107.png b/docs/html/img107.png index 76aba14992ae4a4e84029eae81afa1aa9bcd2016..6c716f7e4178c36efee52549aad19407b2ea3fb7 100644 GIT binary patch delta 244 zcmV=|0{{R4O<_T~0000mP)t-s|NsA)nVENYcU4tY?(Xh0Gc(N0 z%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001bW%=J06^y0W&i*Hfk{L` zR0x@4U_b|a3m93Dxcm_b0t^hoYd0W?$$nz|$dC#Yo-l!xnQcMf1BMw$fJJe_r%wze z9~k%_2qd#JFad=O!q^x=hB734_`uJpg- delta 243 zcmZo>YGRroUeCwE%)r2~=M!@ykTMAH32{Ae;K1h1o7L3R8X6jWe0-KITP7(fSzKIf zZ*MiP)2&k*2fwNd;d7h rdpd!^L!qHDuwiPW;{->BCCm)DuJSq4Rt6jgI)=g1)z4*}Q$iB}$(&oM diff --git a/docs/html/img108.png b/docs/html/img108.png index dca7425991c402a644865b087bab004598ca20d9..660cca8c7ec796eebb489d2e672e35a6881cb687 100644 GIT binary patch delta 179 zcmdnNc!+U=cs(x*GXn#o1jC}|3=9mq0X`wF|NsA=Idf)td3k7P=(~6C&YU?TC@8pU z)vAt;jML9-f#SMjf7>etClg_BG)*gd47`WIw~C f(DhJKnVDgR8JFe}SGDCp^B6o`{an^LB{Ts5I*mS} delta 169 zcmX@axPx(mcs(BrGXn#|%gGP!11W<5pAgpr2M%oByje|6t)Zd8$H!;cvSpHzlEuZv z_V)HOXU^o|;YmwN1FAJPHty~1jf{-!Y%ewe@)=8l{DK)Ap4|XRnt8f7hH%VGPEcSx zqhH1_X-?M}PKU0w4bn$uD<24CSTfJBz?Es`PM-5hHyTB{3nvHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC4e-6#jPioV~l@09ohsE1*;#IiPSLA|^Wo))k@!Y6jvXJOR#pH&M z4Q6~~w0Gntq;dU~NcFk?2c#&BCcqBZ0tv|_mAIyZUuVj2i)DA7 zN`u$=koo%@ECowy#UT4p%eolkg0j3$4K250T-D07mdy-TR;RE9?6(kZYVKGDHoXqN zfb|vlu79`M#U0ExyO@`Fi|Q_LP0?XJ^E0+X6-SyWLKe312J4{GD|%2JEx!lb-oXq` zDx>Y&hDMKlFoGtv52N%U{uzD(?JHUt$iLU}5Lj{7xYyS<@ zQ=^L^D_C(o{1qIy&xqliKJk+giB|$wU`K+*Ydg_=&uZhE6~Ez<>1({lH)06s8Zsks zoHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC08uDXp**plnyje)Ue~{EmDvnAuYSH9)3N8)8&BI*BHyZ!uFT$Vj)Q1oCox+ z+v%kx`G`uX+J7OV(56J{9teJ4{~?qxMraR(cc!Ti>x?P_YBX;V&3~#dj2f~`vjUiw ze{KeqXp2! zI>S|EO=PcPs#t324f25p-f5s>b5#>hP|cW%FJKYk2^)9AajxfNjjOtUyelB4Vh^}o yF%H5xdl0((J`YxbawqBqe;UKpq5rQj{uJK=v{Gu5wXf&^0000 delta 451 zcmV;!0X+VW1l0qO9De{cUXjQE001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC3`dv4pm1aCA^a+$)y4)Wyu&sGX#fql=lH@&g1rI)7A9`UfmTaFaS0Y|+7` z5O=)>)C`qUud$b;cX4vlzC-fyv zt+WogEl`v-9Aj^ex#!L1ovBz{Yxm^zQxhm|0Iy`8g*-dc%&c>*9fibDTmu{1(9JP- tjsGWqrhuM}y3t{5j;Hv&JIN$}CSMcKd!|C?I_LlZ002ovPDHLkV1jnk&pH4A diff --git a/docs/html/img110.png b/docs/html/img110.png index 53d08568446c39a998ba09ff800022dd5b52a726..583cb4843f65a218ae88e1f976bfed31f8c9dd85 100644 GIT binary patch delta 354 zcmV-o0iFKL0`&rr9De~o9z9I}001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC+*BSV4jU0|QF}7Ksfo1{;{e#K^!PaRIv-n1F+UfqxOs`M{(Ebp{(m7-Uw% zY8QwgKM)gbE)ie@4grKXJ12t+7L6aM=m>H^0hnYWRyltGgOZXyvdC3#Mji$RUW~xx zWoB3a^fgSJi9vxufQf;bL4lVC**1P07V+Yj9&&&q0hwn&nr4jDg$DRP6I9Nq(LafS zVYP??ko{p5L0jb?3>ngaS#%kQ&9wj+iA+jL(1^#Tob3UF;RTi@;MC0Z5m`oPlRm?7 z1_oB3y+II4{R0DY1B3mAxp^2`cCIEB?;F@JjI=kbnJdE|B2=4+Q^kDL4Hj z@Qi`spR1r2@L!T7#MyrfGHr4qk#4D z19_H10w5JAX)*u=_$Hw7SQ!`u83ZsDLI67+9u_bU4{sEV0uliLZmK_TZ66B@00000 LNkvXXu0mjfrZ{>b diff --git a/docs/html/img111.png b/docs/html/img111.png index 7b1b50e65fca2474f8b4d28be94ea996c91618a2..ea78705b71ed2e7cb82e4cbbfc9efb37caa1bfdb 100644 GIT binary patch delta 113 zcmZo;Y-5}tlf@{(u;@7h1A|b2Pl)UP|Nm#soLOF89vT`76x+Rf_te<=yg(LXNswPK zgTu2MX+VyWr;B3<$IRpe2L?A*fs;(mJZA*tBpx$)F>-91z}#}om65^j1moX;7{hR& OY6eeNKbLh*2~7Y$OCx^( delta 113 zcmZo;Y-5}tlf{tFKBD z`_2@ojIkuhFPOpM*^M+HN7B>9F@$4ga)JZ9W5OmC-b2~S{i_7>k{B2s|6gTe~DWM4f2~Q*} diff --git a/docs/html/img112.png b/docs/html/img112.png index 8ca3ed43ac00e7fca1a99aecb08c0c28aa40317c..74f211e1e3c6cc60031f040e98a014fb4b6367f3 100644 GIT binary patch delta 242 zcmV@}0{{R4UlW?;0000mP)t-s|NsA)nVENYcU4tY?(Xh0Gc(N0 z%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001bW%=J06^y0W&i*He@R3^ zR0x@4U|?Wi+5jXN?kO;U0s93P1}NZU_yD4=F*2Y42OvH$w`)OR0RuJwHRb^W{{~%` z3qS(|yg6Bb0{q=0D-Ruka;{Hh5Vlx0vVDTbs3sKLLVkG{O4J~_J9GRa4&s4}k;_Px1!?;_sH8eE%`1mYawoFn|vbea| z-rj!Z%$YnqJZWiZK()rk#=X70k&%&|?ZqZQK4VFcUoeBivl}4E8c!F;5RRG22@1?d z3ujaXjq6+XElu z*VJh`ACzJ2V`8%vXg6+5JZ#Li&f^#}ql4Ui)_n~-dCuSXsh7jx8E2N3V5n!5w)Y>y lnvjOZL?vg2W({U$hFR-mDg-7aUj{ma!PC{xWt~$(69AE7SULaz diff --git a/docs/html/img113.png b/docs/html/img113.png index 596d70023febc2645174c9d03868d0cf7e66b2de..5e9904d554315bcde7095fc99b236d5d236ecc5b 100644 GIT binary patch delta 371 zcmV-(0gV3T0)_*S9De}^SPa|%001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCYaaR57oN`Qrd0c24wn8VLd-~gAI0CEunM}qi--y9AF`~@IKZs1^GT)?n_ z_W~#&az6kC6b`Uo;DPJ8z`%fTC>H~R0`(k90hofs_HqDviRl7{8r}n7Y8jZ6U%)s~ z(17C?gCfTRo@@^c{GS;Z{(!{!xfWc}Vqo|%nd1S20x$?Ztb!$pRcs7ffYcWD3;YSd zfZ|$k0UD_m37iT*N^oVr8UyD92Ck0`3__SL)CUnP2QVdAKndv^Ii98q005L}F*Kg> R`H}zt002ovPDHLkV1nJOlxqM0 delta 338 zcmV-Y0j>Uq1LXpc9De|CUpz_x001peOjJd{z`!OZCV+r|OiWCsrluJg8FO=UKR-X2 znVAd>3}$9#v$L}^Gc%2ijagY)?G6?|00001bW%=J06^y0W&i*H=1D|BR49>SU>E?P z0>lfTYz-uFwhIhQ4SrCL5RwE?j8TE_0;WkXKm>OIri1{PJbw))(;jfyE-PTmV^HG? z;5fhlWH3AeiSyn#pz?<6z}+5(GVTey4;X+9hIL>Gz6Te|7#J?RW0=D5fbRi_!Eg_3 z6sH4Fh=E}WM*u?tPy)n(NGNgug%~&jxC}TNm>w`N2{b^AVkq0hWdJns0N(>P2B78a z*$NQL8D1@5PfGw&ht$qyfSk*>ihSb~Fr1w^qp@B&E-28IR(?gN+}bOsUFf`sb= kB)~Ai69z=Ej{@QV0RI^_%hf&%C;$Ke07*qoM6N<$f(WmAivR!s diff --git a/docs/html/img114.png b/docs/html/img114.png index 449a3c08420535816021c3fdf56263aa83d07887..fdfd3db7a7accefb6aa96c9dfe408ed99ccfa6f5 100644 GIT binary patch delta 243 zcmV{bBdO$PEf;AVU{&%nSH z05d&6pMm?&Pq^t>q}00000NkvXXu0mjf{_a_I diff --git a/docs/html/img115.png b/docs/html/img115.png index 0f22ca533de1e6c7795d9848dfee6d7fe02d637b..76e4d307e06aa764076857b96d5d17dd68ec3874 100644 GIT binary patch delta 224 zcmaFK_=RzTOg&?$o&^g71A}^iPl)UP|Nm#soLOF89vT|@?%g{ zT<+eztE8l~d-v{rb?K9ULX0Ire!&b5&u)O^t36#DLnNjqCpa*(2UG|r^zbP(Y`n?W zpd!_v;}&vNpp@4m#!n&c0Iw<683Tvwjw%5G2?+u$k(YQCv{@ILBs0xO6Ja;-#4$vJ8p00i_>zopr0EReDTL1t6 delta 213 zcmeyu_>ysgOg)2=CdVWO1_s>#pAgpr2M%oByje|6t)Zd8$H!;cvSpHzlEuZv_V)HO zXUPO&(tyPb?b+8V}l$P<0mx-ujI0|?G=#x=J#0PlGM3&4uvO@6~6-XQ;fcInR}E`#qqw N44$rjF6*2UngDz}P`UsB diff --git a/docs/html/img116.png b/docs/html/img116.png index bec89570d1194a436136910b899f52068a217fff..4c5591100d17b9afb1b86907d6640487850c0b0e 100644 GIT binary patch delta 261 zcmV+g0s8*l0h9ue7k>>10{{R45ovV|0000sP)t-s|NsA^qobLbnRj=0RaI5)?(Q=) zGtA7)5fKrps;Y>Hh-PMH0000)L`2`;-`(BaA|fKYySuvE-v|Hz00DGTPE!Ct=GbNc z004|hL_t&-m7P%A4#gk{>qOjidYu3NvnyVbJ?v$t#y}8k3w|(=WyAuH2O5tEUa&); zBUM4GZ#|G$;988HSuX@K8Hujhk4TRHIP!7+vVw!fEx~G-_asT~x$h#BB1-#<@GD{! zk3^ei;$n_ptn^F&8dgW{&M#YP%N2zVOxuz-w_WIS4{Sa7O`gv;kHQ0my1+nq00000 LNkvXXu0mjfqz7_a delta 207 zcmV;=05JcQ0^R|T7k>^200000@=uuC00002bW%=J0NIJ0r$_(*0GCNbK~xx()lWeY z1ThG!fEqXhYoG#l?!N{w!24z}fB^*500wFx(iYn7J@0>fLK+}x!S5=6pz~!cXEaX2 z0ucgKz^|pNQv)}k9|Jf()}ucKqb}W&WVM9$2E~4LfVO{xs9Df0ba@U&x001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC=) zkjc;Yff1ORy<8G_dl)_#GNdC^@iPms6@X+woXHGR*%-VW_!&-IVSB(}cmZKn9s{#1 zSOy55F{~Hhy!Nhv!Ttj?kU&yp!NB|%EHesV001#4I6|$)*kb?y002ovPDHLkV1gPs Bjz<6h delta 341 zcmV-b0jmD?0_Xye9De}+b>|HL001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCD6yLGeGjRJAe@9XUmVe<}B=-R5=6FTE1cs0E z3*OCTF#RO(4511l!!HTa$j4E@e1U;sGQ)%a3=i5FY=J`W-femJE&wLO3HB6M0RIOt zb14Y@N2r3x0QG~wGzP9vAaeq zR2`VYAZp8=yrI*1ZBp=qyBukMR_#0>vG)7{28Is-yr12wnk#@7F?hQAxvXTbC5wxT?d|Pn z&Ya1^!;_Yl22^WoY~0)18yOkd*vE@qb($tZM``mBG{1&t;ucLK6V58bMzG diff --git a/docs/html/img119.png b/docs/html/img119.png index 1dc3fc9735bf5bdd973417a5a285c0d849c10629..e205726f752de2f3b9c3206e5602974187753a72 100644 GIT binary patch delta 239 zcmVHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCuhfr|@S725@diwQuQn}K1H0|O>tW@unhP=Ltq0P%sE)j)JE z0~?A(7GjxOyh#86002ovPDHLkV1ht1UMBzm delta 223 zcmZo>`ph^%rk+9PVU-^P1A{?;Pl)S*0|z#5-mIpk*3i)4QQ-dwctt zGiUPf@T8@s0o58C8~671Mn*<)9=a2$g3N&Z?5nSQt2$mCOjdeSl4- zwJ_S@$dj)I?}`+j-TAM@Jv?DGP_3=fOc8Cqo|EJP02?DPN0SQEFFC-u3!fdKHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCp?l%fQoO3|Ve*Mf&qgr#`!*0hMWJ+w{|Thi?hD^(EbcbI(h-kWdUOlIBy zNf6kXN!ll2fogJ0+0w0gx8&J*Ndgb9tuY^g?ip=NFG}`h!{R7(se%-(4YV z_BR`U2uveQPzky2*xeIifbIzlSNWN4D8!L!ixor> zxbHcN3R2)_y3$B_Y6_()Z!7SK4lTSFwmmLH_rr#LrH=GO+L=LRHpBd9v!sVdclcc_ zV+l<;-+v1l_df|V57I~&#@r~n<}~i&zlP9M!uu`!a(SJpxM5(5@#a9%k~aBS-$FW@ ztFYpPe-5tYaQ!{~~ zu-s&Ap@gzt;SZW8MrjV&GdL{tsyy)+B=J_$CGv=6wl=evs`@dKbIc b3Kl;AQYW65LrU?)00000NkvXXu0mjfwN`dN delta 774 zcmV+h1Nr=@29gGl7=H)=0001>A!}v;0007XQchC<*@>K|NB{r=%Sl8*R9J=8R_%== zAq;f^(?A-a0SXx1|7m~*_#pC0Y2w_AB6R|2KpNNUNB3NPkZ%(Dm@niKU&5ak$Sm zx9>PKq#yBR8+4OU7xx#TF9?N?Cc#X3_Q$gX&a3$x`aKeSvY4*Oj?a=73y;kauetsk z9g<|1okvd>1P)}QEJh?YXgrOnR#{07JxZy9$DQ15ce$H16(Z-caiQu5Vex$ws-RKX zQpvnOknOV#YJbxL){%}T7n04E0~<}#4b)zQ7a=$!7$4ci={5Pvzj>a;dZh~HdDxsCKViz>5{ zgmpn1{5aB0^{WO9f!)amm$bO<|3oF8&y13`O(Y{7rGFq2W*3K-2VNpbdC35mBZ(j5 zRo7(IQQ4^3o<@48M1$(C-V*ree^BXzdnVmF$C}i5ZYkF3aQ)=&wxgw2BWygCxnwRv zuyPi)D_tfgVaxr_Vt>8AT~#$+-PMwI3o>jxsIX57a3&qwC~;_CWSH0*%T65o<>V@4 zM%hu^*ngwtO51xSyR0&@IPNSiOm9V3NvAd_)16Q*4;MncDEPi$pHMMmKGZu&?<^a9R*RvsM5JvXv;pJr;Uz((;w6~u zZb~KXv;?_wjJdbs^)c$$Qfeki8yfFd!;s~+_J715f8FHgZQ}0nk%&Xh3OUvfyM^=~ z&6|P}e(@Y!XY&&PPQ#FYqv4mpUvUom<*@$*pxnFpgb=OMR0yBWs1ZDuM z3CsXi6PN+4CNKk7O<)GFn!pTTHGvtxY63HW)dXhn2R$_2+UEqX-2eap07*qoM6N<$ Ef;Hx9KL7v# diff --git a/docs/html/img121.png b/docs/html/img121.png index 05296cb17f80c7dd5b12bbd5fb384f7eeadd3ee9..dabbe84db6244f8d8a480941f1620a6054bf3836 100644 GIT binary patch delta 394 zcmV;50d@ZJ0-OVo9Df1NH0BBb001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCAc~h^15D%s0sUxz9e;=yFd^x6XHjSXv4LU- zHh^U78xAmh01Gg)JMchNI>7WVAk8|`KmwEo`#BfnKy6fOnHadC0>CikNDw&A4iXSx zm<18s!0>?^qJopfVXAJ8F7#JrYyJjth o$8MqU*c8yDITJ8+3^@P*fUqp(BCuT600000NkvXXt^-0~g7#CJE&u=k delta 351 zcmV-l0igbz1M&ip9De|~GuE5{001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC)OKbh#TTQhFISlc9{EZ1o@Be(|TY4@-F~sVu-b4;01>`Cj+YhCj$e^1Z1xR-6X&u xixS!n4CnwQd>QtkOT*#^3ixrw?4y1Fr*+9De~LL4zCs001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCRCnSX$bMHa>!|T3vIHH_%2w6tu9jaDNM{t5RyWrA5F6JDuJKM7i$1?9A@Ye8cR_1n?NJw&+IB@5>=QR$Dthazyo(&zK)D|H4P!evziwY+y+;J2Ci}U!#Ql7pIJxz zAAPS_z9T*BU*HMoYe+-3!^U~J;nZXd6&Px;%yix7lVeX1yA+UVi>5Y3lM8wmn z=BLDX!{h3$!aA_25U?|vGCo@G$@q;gT~*WbmQ)vG;TG`)fI~Qw_h~(k00000NkvXX Hu0mjf5%0wJ delta 369 zcmV-%0gnE!1B3&R9De{*Mze|l001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC$bqWHP*G;Cp$2fg2>m*Z@@k5@BF? z@SkA<+XDuM{|tQm9~k&RD$4BMfdB(o1PGQgFvu`~R4{M_ps4_f0E0te0z)lB0E0aP zgApgh7S0PWcWMAdfbK3dZt!RL0CH)&FuF^DBEWFi&D~t`S^(tR-y0ZsLB=w$z*GQ5 zfM5bcAP_UKOke;SDGLc-mHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC~Lc7JD4Xkh3Di`F+BVEDko z@BymGfq{iM({O+Uu>M>izQD>45dt}N0s}{az;Sk<@dXSF8yG%t1D&w}sIHKchhYc9 z0hmu1E4UO$|IB814gw|A2(}xfZZ7 zEMj2bW?;B+07y&$!74Te-VMBf-wL9 delta 311 zcmV-70m%O10?GoA9De|3eXN53001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC|?eFj@YAaeJR_ zz+46f_Id_}&mbYbmlwDh?z2sJ&%p2wD83&o#{YqnA&-IKKLf)9Abt|pr4VTZZjMvzLGc^IJ`fR)BE-Ot99AO<003K0Ei~`R5i|e*002ov JPDHLkV1oC(c546t diff --git a/docs/html/img124.png b/docs/html/img124.png index a802fa08b32be76cfd26f0852f4fcc8c68a37e0d..03e5d0350d226cb15e264056ef036bcc9af17008 100644 GIT binary patch delta 291 zcmV+;0o?wo0=5E>9Df0CtB&LV001peOjJex|NohpnRj=0RaI5)?(WRY%n=b0s;a7p zh=^upW&i*HL_|d0-Q6N0BD=f0rj!nx00001bW%=J06^y0W&i*Hw@E}nR49?Pki8AU zFc5`548bUlGDAkl2oy-P>1Y|j4Fye<2_hO=!%k zqO;*qBSlR?3NCh3<2%4miqU8n2DBn!ZKRY#^KW#FIs3Rp*&7H_S8DGzy>Oh!UY;7C z+FspF+5%?cPmDY4Xool#ZY9Kv_WZP_qAp2%Oe9h}Nu002ovPDHLkV1mm7eL(;K delta 279 zcmV+y0qFj=0;&R#9De{9tiEyp001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC1&cEQ9&jMjT6T3vU%|)M3BuP=ni8yC4W2U4)w5s$S%UOR@76= z4#Nq;5D^B-!WhB~LI;AoS$a@d!Id$@n{RW2;gI=~tZPfV(aS(&-y!dN|NGyUKmYsx z7oZjzu?*EX7we(O`|}uDKnIL9JQhz5Jq1SgcXL=ccGo=3&?K4d7P1=Id1F9g5EXW< z(8`-zMtdcOJ%3AFy{y@3=aKPd71m{UDrwcb5Pw3Fs&@#V_m87ft$&*)+$xv%IzfV3AzJ%NP z$DkgxKHOjlZ`6kkcKN=)SXW9UU%l9yVxhqjx(_yYe_l6>n2=mVS=5wQr4R5Mg@bo- z@~%|wGBZUtwUMsJ_$j7dTJ3m-Wfgk^L~9e+c4qs-&%8A)&nnQiy=SJbcapO1wV z+(L=Qr|MoSmdU60Iwiik&n#>g+5>kE{j7yp*9KBa2YNx|>L?Ys1Ydkv6&VNAKKzt^ z+%Dm(U8A1DroDnC9p8K_XBw3UFvs143;zV>G8#p$*G{n02)g~=pAu4+qAy&sm-~T+ zgf;HseDl0E!}opcWV#yeVw%;g6lYr&|FzP3AV)aD0r(5e!nJQW?%w?X0000K|NB{r=-AP12R9J=8R?(H? zAPiIiZom!D00r>w-wn_J4X6Pcpa2@60UB^=Cjo+Z6YnPM2Y2&c0s(n6NJ0*r|0`g% zfN8*L0n>mnjmtz#0c4VmvuDz9Z~8rOH=mf>&AnshYdDjE^nY~=WO6ub$x?sf{({5) zY_pH43h$6AU&pvVZNZhvzTy5()z4Cb>eCGOW-s85rzN;f-iyR5q&K8I#O1@}8hl!6 z{_xnWmq{x zl9)(Ir>kp)>D+uVJ+Ec1Y^jL|A%usqvvwat&X;Q~^WubdQq{VpSc}EB%o#0c$1Z(p z!xQtFDHK8TC2jeUH8u%bmX=0*l4?4HHS{Yq|1t`zobQZ74)L;+FUsRqo~L>|xwgoh zo;IEYJbz#63NBn?iW?u1Vy;I_Wv$52*jpM!N0PFaN^mubd5n#}X4&8sQ#-6vP zytaj;k*n2vRNnKO3-PARiPd;K%B>2ejZilsQYh$aE^x<^mZpQt&4L0I4kT`L!Si+- zg|!&b^KQs-yfqj^xvjy-MQ6-CDKFk#4O>dpCV#aGh@)}zwOq!2`0>w(mr@=kGIrL7 z2Sg6rKm4~U%1u-+Ld!9@eW%_Z={NX<73hHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCOp8ova@sxcCF^Li7vz8-jzAi-Vn=T-_Yq41f3|6<0y?5`{Wg5yXQW zkIUt~djTrZXaZ5K+LH#vTUVQUwHKUB5P;Hp$B>dX8S@yadN^`~A9}pU0@`v08eqI+ z!`b{QyA6Sa0n!MPBY>HeR7hg)v%#gWLdx(LaP0@uI58;SoE-Ow)CGLjo#P0MfGbJG z20GY3|2!fRxivwnkhHr6bJ7`y_FALo9(Ky@1$~apU&2i7S^j9T?{Ei|svvJ}!I6~! O0000IGz{vN~XRh+!YX h+i*`J0%zC*02G*SD@FISfDQlv002ovPDHLkV1lDhZ)5-f diff --git a/docs/html/img127.png b/docs/html/img127.png index 395516d978c1c0e9453b3a376d1b0050970d8f5e..8c725ced5f339779b92535fa7c293ced7f241be0 100644 GIT binary patch delta 482 zcmV<80UiG91M~xs9De~Ymc!@(001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC zy-EW?5dLzP-05wOJ**X$>lDN*EG!STG8R6erPmD!#5qK%V9Sg+Gd?0c!vm?kV6b*S5`^dp~23`rOmg9iET!H1jomHB}v8cra91 zRQtQ(w0G}-t>%w{?2yrVC3@t2zKonYN7aBY0op!k2U~366GXMYp delta 473 zcmV;~0Ve+R1M35j9De{uk@J24001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCLiNbP=CZFQwPCO#K{N+Cv|WW z(TX^VsbK5Y)*^Kgy=ziv3f)CKc;CC+`;qT*dBAUuS6X4C$D!kGv1Vl#*z$|zVi#q4 z+nU6_6g9u7c2kAeC_ zsOT2ZVCs%mynj{&#@}U`sUay+{cfH<+Z0rSaT0iJ&10!V60sqG!B#;S z)IcZ)7zjy(I>szAfq|3DM&J+maS@<~*XQegYIfGO;LRB=wKE6*@kinZ4549T@7TDF P00000NkvXXu0mjfHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC3iqhQ&2PplX-M;F3bM5D8Nsv4_06Vk)CV~Ki?{yunblmY!OVY z(FcuiMOJ$+*&TCvDL3pSNq%O2z;ou9h+OS}_!fJ3gv&cEo4^Vre19UYXd d^c(&Sz5!m-EwMDFcR2t6002ovPDHLkV1nMGvNZqz delta 364 zcmV-y0h9ic1OEb$9De{gVoiJi001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCfp#~5b)EwfcNv(V$_>~V7%qZXEDB)pxeN?jp4%5hojJ|G z@EIh|12T9$!+QqictyShu%`VW;*9~&jpu;Q;NvJ@z5o_~4;Ba7&U*nU&cGGG{{bP+ z162QN0)ssR!(}uEu26(I{0$78nG9fi86I(i#liM6{1^QX3<97#+Zkf*z#>;6UVkS5 za_$6%00u?@aF|{|3P@H5I1?HUP_Pfqibob^;D<-Z28K~UE&u>3WjVpZT%N-K0000< KMNUMnLSTXc?vXwK diff --git a/docs/html/img129.png b/docs/html/img129.png index 97bf076756306630769c6ecf031a8ddd90399030..8fbf5a93f28c83e320f6f831c0f8d0dd99f4e1a4 100644 GIT binary patch delta 247 zcmVhyffE7`nKC z^nw6R5Y_O4&kZcz0FkaC&XiRkfZ;OifJNxw3k9~v?;3$@KHdk60era(UJrnrW`&d~yH)002ovPDHLkV1f>2U(o;n delta 218 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 literal 2934 zcmcIkdo1gy(Ss4=8G}+uOcRph)l?HxdF2_# zqcX;0@;2rS#-s^@m`Rhzk2ub{XWezyS$D1b&%JxC@7kZeziaQcKi|*#?qp}Aoy_*V z+d&|ZjDx+k3kW0z-#q)aiEn0}jjiTvI=VB$)#mNnw;<34p_f1;_Ec8V=Jn^L0qIIw zWd|DFi9mqC3k)-}_QH1kdHoOi`Uwex91N!m3`UQm7r+bM%E}1DM31y|VPSj1V8Vy& z4~6Z8eIU>{dR$p~5wrnXR9?j4*x&_l53vU^fiN?h=_T}LXMdPLOyJl!KpM#YkS#3@ zU@)A)ghAy+Wj2oeuCmf>#_WAz;d=^Y#%!jANNmZ@*4Llk0Bz6+o7RirU|JIr=+~~% zaX4Bftqp@gqsJed_akgF5({%do&lLp{*D2GwtG8RTewE$&E-pZezI4*bEMR~!QAPh ztG#hm(eIW;`)B(t&^Im@CevWdPG+y&(IB;2RJ5{aEIWrTlK#=nTHw zP1))NQDzPHQVz0{$g3my+1ScW`zfs}5GJlpy=-Y_mcsTWNmM}|9BhLsG)5RV5SrQ& zJw%xA)Mt#bUB38$xO|!J$V+=N=y* zWYMYpLvMK86Qy^d&+qOC=(7x&ll90fG@L?)$p;yT4;5Wy@m*n>u1#{qBIa$?v%J}a zYqbjM68p|lm)I$A#eKf>J@?9DtUP4Kq{dUb2e~tTuaZ`?)cS9c zK;Cr%zEp5MWv&&7xYQmITfRl8xt!S~M%re^R2m-X$Ky`%i%i`FS4Smv!~!C#jeuLj z-<*ApE*uy#dI7t+fPHG+J&$kpE+hHeMH3&fX0_%+oR{)*T-AT#7=dTMMx~g z;muW)C^cukwDJtw&&jp2i z$XvUkzhfQ-(Fej8&@R(=$@IGazrx%XJrzf}757s7Y}zijZa;akl<^SKMf3MB+4PMb z>HgXBS+~p9h5GiE^jd9H-(f7-woDr^44c=-{LJaid?Un@itorUwQ9&V^zvuCFuzU) z3*1z70%u_EqaBiS!bV(_DNj*8^S=(yNp3Mau8BPCe8l1|A}`o7&wGml-XaW!7Eif9 z;Iy-SMe1NMg%9caje;UIo6Eabbg>?w?7WQSne~!%&aF%ATGS!qW4iFZw+FxDm6w!l z+9qi3dn@SWx}V?${My)MS8<+y2fbtTR9{G)uuj4>sG^#Gmm$VKvjupV0M~qilKdNl z${e$Mrc<7NlNV}XOHxUz)+xWgi7jooc5@Cv$>F zJpBNFRWCgKX_?wpeoGSy8ouC}H2PG8(sj1}i_}u%%dd||oJ*}T>9g@?ew$pvggGdG#106$_p5f^9t4^k7 z72j#a=#wRFAb=|Ra1!}Gn4EFizyb6}t7^XYNhCcm?Birvna1bWX)!yYdGsWRU$Jf}xQPaysmu)- zQNagZF&n9y&F#Ck8@NSa0iRNBr*XUjApuT3;kzt zt3gDtjwZKu+-OIwrlYTlY`IRhfSza3!h~TsHg`ajJ6swgM0jqAF_;*_9Mid(@o2WD z(3j^+WWOqR5TK=&J~wa0>N9gKxko8GcQ{_qbTbRRLMn59K*6I1Wm z9S7cX{Zog@^O_5!?wH+%g8t+SMtjt@Hs0IwJ+o#Kb~t^1Zj<8#Bx-+5s^`ghu=*!Q)U@KBE!=<$Y}A9+?~LU%X_&@wXT~%7?9}JT z<|fu{9Y8~8UdgNmPP!a$YYAB-bP;Pd?D;fYYlfYcQ%?>NN?eV<9!!bG0!vYJnKHzx=0@O9lg#O zm-9)KrCP*$K;fTMl!C`*x7vM+FnVDU)n@nnxbXhXb&Vje2H~kzSbx+nn7-WR*lw;t z^~m^3L#{@tkx9dxq@IwYc>ln(Tb#SgdX-cIg(ZkD($W8GYa|F-n7@Q{?%9YMCGOuG7{<)&o5r%_}H~#<`SkH?9 diff --git a/docs/html/img130.png b/docs/html/img130.png index 2990ab4979e95e80665acbf17ef60d6bd91dc74b..ae2386e3facd4cfc362d95639b6267d781020766 100644 GIT binary patch delta 515 zcmV+e0{s2!1C<1j9De~H53&RR001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC zDd0CF^mTxocjh0Z2Gep{vZ2q+dl~; zAOp#cEJ7E5D)7(jS0m1t8wVH;0n_TY2Mm@B=}5-#^L%|^47fXsp&P$3K!r*mPx18n zZ(*oSU>0C|z+edR5*k1qu delta 473 zcmV;~0Ve*H1nUEk9De|42!fIT001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCemQI)kjClSJ zkR$|&sc8&cp+JL|;}08cQzt5zz*4{|z{(K7zzAX@0icKgS169O z1qb&3fdGp*Ge{hk8Kx01gn=Or82T@V1*2dTPzL}2#IuB5PvnHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCNkl1TSOorP;v5Gfirw{{d<`V&GI#i2O37Fs8Da({Lz2pxn%aMCTa1Pl%i zqR^iZagd^=UM@|0t+o{kI_R_9z0dpH`*nAK4?=qs2~357fP<26B}JD+L8I=b$W02V z0UD5(4MsecFekKrdcc7mRoKps*&YE@+KknxuNXj`H|t~=4$u_rJ<*xy3tDWOl3|#q zp1{_eE-cHOGJoZ{2ld0Ku{J{*A_IaBeWU>>XhUuY2gIRq5xX+?(q6-1MQa;aXZyoq zpftEhKf;p~X6ZCO)kq8_L$WMSp?Wn`$yQm$J+C32P?z-Sm6KVmrJPxczXz#4@~5Ku zw@-$=mwkW}zAEPvru$Hs6oJ18V&KhPZfwqx7lg9MwSQRiXr-5SiT9Q#P9JrslG)A9 z3gBE|4G~+vMGiYc01{N?eK}FwcE$ssij3F7qU(z{>?@qf#AK~)$lP(qTc{wofK}u_ zRWLTh_%q7&bSO$58R?&w2?w|;{(?`YX(~* Sy59f*00{s|MNUMnLSTZeeDF>H delta 512 zcmV+b0{{J?1d;@h9De|i=y_!T001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC-7#oQ`+dPzTx|F@9w?(`h8d6H$W(8_9b8Xv69niN??8Hv}whu*u=qf z&s8tin>6pC#q_J1>p7&?JSqrN1F3;&#qt|?=-<5bLj#!@7$jXNlnk5zw|Ol8G|w!3Rx2E!-o)cj`0{8rY_nvnlYA zQX9c7DTg_j5|y$klo8BWL3e%vo{(f~!6ZREj8)JMgn3l%5eHXnBWt~b8d@RLaXc{v zRA$fYdJrJ4oX$p$UKj$Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCg)o`V348AT}eL>VF0zwUY`qJV@Z?;e@bt z&K#hTEyREVRIWCr3T_4l{(^vj%Y57nOiD^0phCPC6apAHm?28eoH+m#V!!aEO(B6d z0ZHRf2OJ4_rJ0E`1QHJXpBY#bI~zEcb!hw-!l~-RDh54ZKqj0Art5T^s<;+h*ugN1 zjsE~c34XKz6qB~n1)|(PG5`PtTPNrD4%&nO O00006pd2N^PF;&MIzZU$#_Wdn`^J_Uw*8!!~T x*ZK~oCopgdup~0DGB5}*aAFOyQ7{TH0RR!>KH?@e%%1=N002ovPDHLkV1kFya~J>s diff --git a/docs/html/img133.png b/docs/html/img133.png index 9cf86be44703a0d124abfcefd505d220db7737a8..28bf892de4cf98b516cc966a4577fdf9982cedd6 100644 GIT binary patch delta 217 zcmV;~04D$60q6mc7k>@}0{{R4r}JSF0000mP)t-s|NsA)nVENYcU4tY?(Xh0Gc(N0 z%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001bW%=J06^y0W&i*HW=TXr zR0x@4V1NP#AiluBehtiF2cp*u{45M`zzM{6Z!j^Sf?SYFAX4CBVBko&;tOPL*f0Sk zzF{Mp$|*psEdb-?fe85p3`va#fee1G1w0Gb0zhJ`*nT@O_k!GFk-#{ktDgY?Dh?Fi T=bfIz00000NkvXXu0mjf>_k-| delta 208 zcmaFCc%N~Ccs)N0GXn#I^ok}$AY~BX6XJT{z=6%1H>;_sH8eE%`1mYawoFn|vbea| z-rj!Z%$YnqJZWiZK()rk#=X70k&%&|?ZqZQK4VFcUoeBivl}4ESWg$n5RRG22?{Ja zk`fWsOb$A!3iH^+?=z)uZSMHQ&-1x^I+J9LzP@LHmXUfx#2@(^TsvePHpMU&vsiFB z=qR5{=ZTq^kb9_Da^A+~i2ddpB*Z0~Bj)h%2um_aFuX|@dNy;lP885422WQ%mvv4F FO#m4YLjV8( diff --git a/docs/html/img134.png b/docs/html/img134.png index 5d5f10711f6e1e8f2ce311ec4b413e6664b279c5..69fa8cc71517b3ae30beee0dc4c9c72c2e81369f 100644 GIT binary patch delta 502 zcmVHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC9)5ppAbU|%YT4B5G`%Y4+OUg7Au6b zHhzG`Afyt+dF&>ekcVij^sqDc-1iJS7l>iv5}Ar%A##|6U|a48w1iP|d!SoobYOwZ zor!g(!Qjhhk>Y`&fxWr~C+)`Vt^#h&21*V2Dg@u^G#%axknIS@8{dyO9W;^U^2AO9 zPyEj0pPK{sR(}+wRXs^)KU0^aOTTc^dEiY60}CS#uG@MXz+Z-y{Hvz;7?wC?S`SVG zNUhT{C7mlgr$UBw>QvTGW2bGYvh5~|%C1pA6IIoreX%N~2KL}fmRB)hsAMh_F97tj z>;EliZi*DMZpFSUYz=A9H^--R^HMwmEg_8?ukSh*bZ_y_pVUpw#XIo8#hJ3{wI)i~ z;4B}F`oV{1!Y!%tLzyEzHL{6MpX@2e6OXutQ*?MxAq>@XFvs1~JhEAu+`&DaB3iW^ s9VU;SnBrOJeLZv-saG~T=pS>#C+Hhalmg{FlK=n!07*qoM6N<$f}xe<{r~^~ delta 466 zcmV;@0WJQB1mpvd9De}m^6YE?001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchClI^QrboC8uXK0*Y`KQM59w*ulc97 z?^pbtf#1E@5ksd9SSPTNj0Qb;xxCx$qrvLx|07*qo IM6N<$f*qT?H2?qr diff --git a/docs/html/img135.png b/docs/html/img135.png index 3a1efe1241f70fcdc268f6c210eeae44c4c37822..0d2507d5da08f416fab71f7803c8dc48cc221bd8 100644 GIT binary patch delta 596 zcmV-a0;~On1my&f9Df12z>$9d001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC(g4E0z{t$Rz;oshl41c=y(|h4nvr;C4H3}r0hNy>;-ncEco`lr zFz_IWxd5>~s(&(WP@>@%6Vw?S0vP!i&YU>_jzs~WAS7+EFcds!2-wB|Q#avf!WWon5MY4a8)(8f05AUR zFvI|s+(c0ZBN8w*3J_LA7%)Sq5{53QfG~D-5m4Gm0e_!qko3X7f#ElpA&TTg{+|CU z7%nvlFbIBX(Aor+aI!~8vj|=MslY$8Uk#UOtt!YCvHb&P5Cw+)dJGKvnLw$I$sSpn zpYH=>z};C4-591Z)IxkH3Nr4Kk`gHMFfg280NTNHU_S%b0lp6jFsCtrq(RwkGQ(6h zpvE9f(@o&9AcOEK+W}z7rJ>8<^h1S#s|_NC?A2!s>jgMZHaQ?f7`2tq$_3H@`vppL ikAk5Bh%0J{0~-MU>dQ6-^xC-q0000Jo@CjBoD+FrCWq2r43tU7Z5V_J0ldjN=EJ#(98&M*z%^ z|A}4M2MEpje*$6C_<*K805L*b5mMZK+Z!0-s|$d*_**~NGFBI);N9}vzJTAo*b&1t zW~gcNzk-DR1HnHA2GhUX7dRCeG(i~Ra?bw&2x;bcMZScme;G<}x$VVAWM@BUXJFth zV7L#$;85j*IDZfd_&5rfF96m21={is2p*uDX0j0_6qYhD%n@K%48s4xKJZ31je#ow z7@A8NJTOdSJ-`qHQVDh($6X+}2UL^5!0?QLZy^X@=7c*ACe1L7fh!cKW;upW8E!II zfa&*Nkz&CCq=UBrgb#8!1xX(5)YSS1rd@E%n29#0GAJ7U=-jArAm&3f@xGVi-E7L pfSSgQf>AIEaDy{c1P7>V8UVxx{1JfeOWFVc002ovPDHLkV1h?4&XNEC diff --git a/docs/html/img136.png b/docs/html/img136.png index 4d735b64647acb03b20febd4d06f0ec71090ac78..f659c90c4a84c34f67d4316091e38ae9a7bea1cd 100644 GIT binary patch delta 568 zcmV-80>}OE1H}Z87=Hu<0005V5A(?Y001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7) z5fKrps;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC=8ckktU-+PY>?*Ia@*06%AbDXCSaXp;*GDbtI{@iEp&nF!>GsDJDPEN`k{8cEK0Kfpq)rWmjs zO}xa7gKY6!hoaTQ*Vf_c?ThVN<^%4;YdU388|)ylemjt^YLF+pGlMd1QOo{J1|b_c)JFO+O?qGX)qIK__dW<) zEx0>%d@%*TQ$%3P6mPCLmA7*AZH$LWX#C@EVB`rlGPG~qbkeAU@H~S60000p@m?aJ{7=PcxWYECKqwtpFr~iXZb4`xlIa90e&B+~q(uw<{KEqnp2#0J& zv4U5e&%W!f@-ZrSp{9G}?96!c&*5T{7Pf~rr(SsPbN7DzNxjn!Zx434m%R7sDc^M3 zD4=@7nnhFe{T7I3DsOJTn8qg-FT|{UJ3?j^-&Dh})<+u4mO9S~JIH!!{#t+LQmNO! zwm7|CHX)6t^-XfsDZj^>Qw?}OyDZkzl|3t?let@$UE|cpKb?vka}F)jS-*MhjOfRU zss-0A4c)cNuP64N`tny{;=0YhkO*LFHK8Z{>a0*{g&BQ>s?8nH_CVX zPnue6H8s`6H)Fa0>)ZRE`ESPE*s?JwD%kQ-_nC{EI*tcDzr&Fy{pe-cn)K-QnA7*B zZ?9%HP?0}cSQqdxvzyyvpTz&X2ZjCqut2;J)xf$%EP)XkrfA#`=a2tjW18@zw8hl& QKPWamUHx3vIVCg!04C?xl>h($ diff --git a/docs/html/img138.png b/docs/html/img138.png index 15edd122ef1d55fdb95fca06f2d444025c8f3776..3df4bd77545b396fa90496a94c5ac61a0b34bf41 100644 GIT binary patch delta 262 zcmV+h0r~#)0hI!f7k>@}0{{R4v?L+s0000mP)t-s|NsA)nVENYcU4tY?(Xh0Gc(N0 z%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001bW%=J06^y0W&i*HlSxED zR0x@4U|?Y2+W;gO-hE(TxBy}>cr!o&5171vjfDXL7BDbyFn=)cevoZYSipb*85DptyEL}|2NrF-+82zhDN3XE#8SMV>B>AsjQ46BJlC zd}C24UhcSpg<~tL&nHcXinj@q{xf&XiQgmAAv+^(|5t7Ug90rh^#%iG{t1TM9L6!vSUx>7vPou7Y-_&bAlF?u(U8OV&TWn$tBHyX cJ&jz9b6I4RzO}}?1FdK9boFyt=akR{08a)_yZ`_I diff --git a/docs/html/img139.png b/docs/html/img139.png index dc9b21fc1be204aba7255c2ba2ede852937c94d6..6eaa0e93400ceb54539453986189597bc1c1b045 100644 GIT binary patch delta 855 zcmV-d1E~Cn2IdBk9Df0`Ncckl001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCHV{5I?`zPTbhFB^I_m!pG7f5r2Wj097iXh=GMApdtpAz<&rrGGd^DRuoo*FiW>e z8A|yGLSW~1UTDp;W zmbYZEP{+n#et-K^@=5w7E{FoIi`U!R019)u<3XWN^mi<=FP~|fupd!G z1}WtGXh4<-kJ-EKXvLz=i@)*$K1d6txu$t0Hi3>!0+{54Ut z1i2h)GWq{Oz7dZxRSMu#nvNvGo@=AAQ)FSPo0n`>*`*#SrDYQ5)VK z#xnaZd=9SM;w>xpnl+9YUj$ksuuXG$R{*2MSASQJY8A62Q{BFT%ZPsMqS%~$-ka{) zi!Ei1PD*A_?X5{?w?e zo7NXNDdk1Ax)W3IR(rC~k*{s3lVrnQn;{>T6T002ovPDHLkV1f^{i(~)* delta 760 zcmVrz zFt8-BgBYAkr+;r?@ThcPYMX|k8LX{P9M1PB`wYYjGF~^?3rd0nl6yE006oyatxydz z69fWaiW@)#mpm*=SuU|X0AU6pn1TSHOZW;r4ES1&Fl+{=PNs(!pj^HJ&IKUMdI7HD zGXsNTXaED-MU3!c0o%;r2$OJB;4T1R4xqRyM8yLJhJQdHUBvVhNbUipWSFzrAq+bQ zC_j#Y-voqt5*!#p!6KZ%P*G%Hn(~EV6S~bD3Sei$6QU1896JazDinaY5x^t}WUx<7 zXK0N~K-UZ@!FUQ_e6F+JUV#vFVlV(>2ZkhI zK4C@Gfqw*efHD>^Z(#x!U_@}@(#sGCbZi=kQL6wEU_+7SN@rj&#i_Zbfq|ig0VxAS zplVLTsS_9iRtF$yM9%>tpdpM$H9FvU08ZLWH$uUn`{Mx;G_wjYFf{-J99}0D5Y&PI zOri{|z%qn26b2MX(9H0ifir-xDjeVhC6#jzLUA(_$xfJ$sGM0z)*PrnLFKF%0I!^9 z5Ug6z0sjP8<;U^4s$K?;18~jDNJ(8_!2Y=bt~r5J&8(6nYe51s4isp9 qNP%94Gn8m1SbO6GnUrXzH2?sUh=oeiQ=L!%0000T9De~7)GG}D001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCyI719fu<4q03RrHG4!Ab*w$LKpY9xM$MALQq7%;pM&WUtV(W?tuAlR_~~bAnKh^+Y795 z`k2A6*!y$D*y_3x{u9iAK%%@_h})uyK~)UhR>x(Hmj zhSa2nSxzru1Al)61oy0LzZ|m}FVrkY1fdO2&^qmj(PD+uT%M;EO7UO&NBmAyrWf9< zrluD(KR-(cuYICRK%wA&EkEBr)P${C&;WdU9X}bzeQX{|ZoMwiQ^ZY;dkq>N`ue1C zQySj{A+4FoJ71+5?UZo3CPL`twkx%qBTC(qx#PabpMRP8*m&Ff8QXvSV_0wx7+jyj zO^#7H*GykA z>)YK$sB2J^h!v!-VZLk}5jPx6UO`r;M1& M07*qoM6N<$g1RRskpKVy delta 566 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 FV1jhxG%)}G diff --git a/docs/html/img143.png b/docs/html/img143.png index 32ad73cdc65a6fc955ab1e9f8ea870b4a07ef164..151cb99deed48473e446259a5e0633c0a22077e2 100644 GIT binary patch delta 505 zcmVHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCaq1*uyV8R?LNyEbi?g3y@o8UA>$Qo z#8y5bx77ew4ki)439W-ewSyP6;N8d8Y-H{4Qd~O+iyP4DeGmig&Y0)+#*avgl5OCz vY5^x{@0$9y8g!;)rdg#hMXaPb{~bO6)h0xRdD5`Y00000NkvXXu0mjfr`PMO delta 482 zcmV<80UiE}1oQ)t9De|uDp_0r001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCen+SppZsHIqSa4~;e;{r;HJeV7>LLj0=6`zX+LEb*TR}IWQo+Hk z9UO(=P|!-7QlyjBOH%to0?wij-s5}kKHm54-T}YaB1TBDJa*28@R0k)-8gR+$c?fo z?F)%655)9w%#Y1SKygB(6t90m_wiFudIyB#5bBf{B+JJiLn`V%61tc1Bj81C!9HL` zF5g=QY`KZ=yR7prjt#o+;i=v z9`F$Chs!Wf?wA9j41|inDGaaj9E>Z}LRKK^6R9=Wp%X$yWjrARN-l)R8~pGI|LqUk YClAzR2Qxovf&c&j07*qoM6N<$f`PN#a{vGU diff --git a/docs/html/img144.png b/docs/html/img144.png index 838a32b2933506dc96b5d4db8b2835de0e1aa613..18cdc9576d9ad2f63c7000b0d840983cc72eba54 100644 GIT binary patch delta 253 zcmV@}0{{R4UlW?;0000mP)t-s|NsA)nVENYcU4tY?(Xh0Gc(N0 z%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001bW%=J06^y0W&i*Hib+I4 zR0x@4U|?Y2D*zGcBFfbedQUVMN z4Ge4^3~u}k4BX5Nr@4R>yBsgK1EvmM?F-0UDKM!7CX;@?Ww`kNgU}|BMLY_e3mA&! zFK~j)XZY>FevPAne*^1>1R#%b{^$Q3{~H~+8W|V>hB_aG<2U|u00000NkvXXu0mjf DQO#gM delta 244 zcmeBSYG#@sUeC|M%)r3#*rW0qkTMAH32{Ae;K1h1o7L3R8X6jWe0-KITP7(fSzKIf zZ*M({9vRHE7#`CidXdh7Cz<46rP|xUD r{q~uS-?uV&ymV<}X!B6u4dGzeeO4y1-ez+W&@~L6u6{1-oD!MHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC*M3&>jyA|0SXY64I?flfZ6ocupBmil+cktlE-R_ zXr)1TsdOd@<1vH@i;SWr3X@pasZdI6qW1^*y0JQ3gWF)G@VrDc`MLe^q;ZRi>5q`s zSk`5)c^HQW*nd5rI%3R z@_rvGm34B;wj?$qv3>!l?J=y>XLND3En zV>zMKwk+`|pqUyIpSYw;Q)0;C4b4NrjhUnomKvmeX=quiUYD}m&(Y_HPfQ}_py;01 t>prFS)+91!Mq&1;|M;g9De}X|#37UkgD0gXy}k>fQyCsXMWpel#wW+X@E1&S9)Doq5dgE|f8th)PY!Mr zAJC`=AV!EQlAOG?0k_}w2G;Mz4Cr#)e#PGzzLc8?U>L;=HERA>Ai@712>t;XjqDAk zf4MJA5&$a#%Ymf+167)S5_rZJe}UZrm#bcUL~(KcQ-KHV3=G#9LK)EIfa11%90mLr z7#QZg0|E@AOn)|_7-e)wfMF>E=Rq(BO>QZ}e+I4qmIe%?SPwA72*9l7xC;dL7#P?E z#2#=aFz_WnG=t@OL2^J#f#OR8rZI38V0e(>CW8f-e*YCAHERN|0Jj53mo$bPw*#NT zhP@26$PR@XHCMD1!a#~9{&$-hIDppveq4Yd$5Fs~`A$KHxg(NE@3p>zX~uUjk$8k; zB+%y|xe1tZKyg8arJ)Q|0zjWr3%p3Dno*-*6pV0ihFahN6^#M_QNHrXf{D+r00000 LNkvXXu0mjf9?HM% diff --git a/docs/html/img146.png b/docs/html/img146.png index c1ed1d0f0e6078f6043a07c05e77ab3ce536e3d5..1c151bf2ddd7c683b101e708990fa418bcd0e7e5 100644 GIT binary patch delta 225 zcmaFG_U2H&YTex z6kN4xRYylhT3Q-Vp^J;l-Me>{l$3Vw-YqYyI29R6&OEY{A^jb@ej+T?4Ob|EF>f> zc2-K*HSpv=OicLI;IFJ^aVXOuQM&rDEqkVbe+fVHWG3eKbsMgH<(@9NLslZfOF~AH ZLEwXEZ0q8gYk^iXc)I$ztaD0e0sw%IQ>g#| delta 219 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 literal 8199 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 Rhu#1H002ovPDHLkV1memP~ZRn delta 203 zcmV;+05t#R0onnO7k>@}0{{R3qB}D(0000jP)t-sz`(#JCMJM@fJ{tGrlzJD85whP zb3Z>nnVFdk3=C#wX0x-iGcz-djg47ZS?vxMKmY&$0d!JMQvg8b*k%9#09#2!K~xx( zV_+a1Y{M>m>kJO{ZzvOAd`&L_i#U^?G;aVFabETWrUTf_;Y4)cdw@;6m4VX*E`ASa zzykHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC6Jt#ZL|;22HBAr3@1VbZ19HsHdX8<*R-IDc0vQn=I^0)`a1gkTa< zL^imxi#>6j2o@L{j9o0}(iqN-acAWUhu~oOy*In7-IY#~?c}>#?aZ6^y`PykGYiZ> zK>x~3^{G7sTsN)c=2<>$KoL3U;w`@{CJlorsvn48ima5hI-h8L43!sD=P@W_msxIu z8`SD^@7`F!Qh)uCG)9rWJEXatW~w{SSK)*p^H`dv5JfTr9y)vFO6)4o%Qn0gu-8!q zRY0hfg-;^iibjbFH+GimOFbyNN~1L0!fedm;T)yJfxVqe$zg(yknMnio~E z%+tl987XkYrVwaY7Txp)Jw@SYEn*4DHe-$$WLGrE#(!4QDOUc>&4*5!g;`T02y=Za zub}gS6EH#iV2t-xvP-5^hz6EFJ)qWtuJl5#W}=EgySN&=3R|sEacH__Yg;Q`;Ux#{ zHVso{{fw79wr8kyfNJk7A6Is19Hyq?B~63&QL1#QUacRJtb+4x#Ru0PL&Kz3;ROOZ z&oCMpt$*}+Mzyyk@6p)RyxECU(!CA4qjZQjE;SruJ7*rLwERQHBvrz@Oi~9(R7_I2 z%Qg<3Db9C%Nk>U}S+zJ~FK*|*1WnLWRDasAZqYZ{=cCIF9QHyqw_?ivuEx@@e|d0f z$3*G(sZblRdRiW+^)*uZZ1;Y6s#b&5JlmvNu=zvKt~X%!s&HA-C!T$-!3Ix7*CNx& zoKUPwZ?^rl{lnfN5$biH*zL%_)vO9z#Am41*(T#+9H9iAs5HL>j(dFYSsEu{+BX;S zti=NVU*Y delta 966 zcmV;%13CQ52-F9V9De{nd9Bg_001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC(m2SG%SMQQ^rcz+P2BB-7{~DN}=EnN?C)Z(U^2qgjQ_gH{a|gJDY7RNe+H6-R_t7-n^ID-Pr)NvVulS zE`;8Jy?vv(2X^BRS zw6Y@ZljcJOT7TiG>FUuzxi_W*OP%+GI{hYXfl|tukhzf-tsBcB(q7tmhQxO2!C= z*UKOT%&r&&l3j)zid}_q2oHu#$m(Gs)@yW{@bz+%Mt@dsvp6~m&tVDUCED@Q+e4JH z3~^w~c_0|CC_I+T*nOf5z%sB2n1Zs9ca?pGP+QV-igRUS1Ov1?0wEoOiGb+|wFQq1 zcFojLTwSNuDrgo>B}QnSgLWXBQqUpvpd-Fo;eI@jjO{A81`i}NcAqF`FfzM>Du+V8 z7DjEiUVo)HS2iZxGYi%D0*+^DLv@>Q_GN;jH>vfbSTtOruuGwWA13&z6H1E~KT9Sw z?`>Le4oG=eiVBrOAzurlwr?oTm5o(Gjqqb{qUU2xs7po%XtRh`oRz8u66;5oUkvu0 zP-8$V1>Ti9GL-TZc62+`sy}QMJbF$MS2iZx3PVl01ZJI$lnI-=UxKxsTm!*H#YDgGYo9*7Y)dyUf|cXz5CWIj~-yl z`hOj_AL$E2Nt7`JYy)|VqvYd{y@~NY$`M6*pWjdBRG((G|6KH}J%+}+TT!`@kZ$)>*EL_Du4)*dSGjHE`+`?XG??Gcth$;) z{!0zS^FCPtRJk&w&u1P{KD)3~zFV?-u0IZ=qrRY1v8Dl~BR|Pa)g`jKzOQ+yI+Ue< onW4gsu}MHnUqE?j|Hn^{zjHr@IXRN{+yDRo07*qoM6N<$f{%*7Y5)KL diff --git a/docs/html/img151.png b/docs/html/img151.png index 7e4038a875d48da6c953bb0fedcd1faeb1698154..4ebd6836c94a54340a902713ee4d0c4741413c43 100644 GIT binary patch literal 758 zcmV{WTwx<@BOHRbXlY>#7J?RIIOHIRse}WI#RCfuC0NLn%US4&5Z~-(Hp%YZT|PF+ z%s1crG4H)BFo7Qb2>F;o$i-!(Q2-1v)hX~fQHhQi5_cIaIHDxCBB7>+?K01V}Tb>SEo(ZFj&?=WnQj7d{;DK{1 zF*6XG#X&t;W=R=U_$|(%`RohUf#F>E54l&WXP9dK-RBWx7+)>&+7rW&y`I2I1v}hI zpIJ*)Nsi30Qwx-p+tvW5MRXNU@DrBBOOe|1sj#M0eT&0|U||v~WbdNocpOn-sLD$% zh*iay7|%d7m#d1@c0dO5cf>Hk$iAC3KddOCPr`Be;{_f~e~~qfZJnAck9n` z%(0DS;(vSQr@L+F=S~C9n)itRNS|M1{LuD*CPn_YeNacKVFx&WzqW>3{fne9huFg% z&?D0K5-5!D=6MheMl|+Iaze0)Sakzt8{A1QE>QDIK6Zika-)1bIF(dJP%OeWM35J& zj;AxRHkD(k+Jiot$dg#~v+HQnSQc<|4eE8-L7}$-oIKd~@wp$M(NwXvHfVY2F{Sll zOg4kT0L)$i>(^m6s3v-kYJAp~(pA~BK5)i%q1m=W8`clWvx5uW??323HldKb0Wvst oBBn4FQhi_Ar15V*mgE07*qoM6N<$g13`hJpcdz literal 707 zcmV;!0zCbRP) zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*JK}keGR5*>TmBDKhK@`TnO-# z3W6BwRYHRlyh)`8#e$4C5AC4`@o4Z5$a>LJkrffIV-6u0o2-pJC}?~$li74P!R#Rq zW|{r+_WRAgH#-4l5OZFNr25ety9%^|aii)~n};+?(~>H&yM5w~vxNNr$cA)zGOpM3 z#1t2Y&w}N!$$A(ih>Ni?3sz>bJn~WwA7MORabY*EBv}`~_#uqHZI0#xUrE-cFZ8k; zsFZ$CFV|`DJHq$^l$DU}YH0x6UkhPg<5xrT>_9x;M~3HX$kg**f@QCwjKZSD(Q*r_ z8mGMD9QMnO9L6fH1K;k@_UaASF07Q?VmYR~PO?M&UOtv#xtL=ao@52s_UwDyB{};} zN^jtVGD8eAKyFdF42CRWrQ{ZhTzOfqm}d3xM^>lYoWPprxb&V0`Gb@Wx?L|~IRT1c zoF%NZtXVj~h_x)M!-`+WS+_kC&IZYbey?H2#V7=z;!Bs6=)Fd=WOb>BKdJuvHkUQb zaifOs$aj;hGqg^J(@t%QdZ~UCr^dW1SJ_q=#mS}8gF{S3xJ9p+t}JH&}4 z;rN-pdU2TDLNe^&IW0abK2zE}DzdS2?}nZnV@H3FWLVKmBp4Gu-BG{NM)q==toRuf pi}qS-78+@iD$`Tagp=++2I~fp9Df0t(?_TP001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCcFY8RfT$_R}Sj914KKg`ZU8Jyhhk==^ou00W2m&`ZOG~ zUbtSF=zm{sMjx;G)P8aeBs^NFLDirP=A@@aT^VDwU@c5hA3nUekAwUE1vQ${p<$#p z9qKYOzW}>74yzP3;ncLkV&Oj4RwiKF2zKP23M<>=fHm_QxV2q`dj)t|%;V=WK2uAM zdBFLr<~@qkL>qTNe`0?g1e{gm=D%s(s#aw`?tcP5cpaIovy)KWL+8BRewAq9Ch!JJ za}Hv+3%Z^8)2SF?zS=x3@l%z+!NQ*&4hHOUXfF_^a$R-dGzaHFzF$Qg+DNZb~B8#(+d91)#m;_FBZcpONatozPF^4lJ=^6?JI(}h`mW_s=s%op={TUfno@bPv mn~~z{e+qOAv0CA5d-w}ERIgR9}g delta 792 zcmV+z1Lyqf2B!v)9De}q)OS7r001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCiMFM?~(SgF}A_M!(H=gsV9e`2Jhhz}+e2#5hR{G3oLMt{ zZ+u7%e}HzPA%6rVdR|tCbhoTSwNA%0BxmQlz(HpTXw9t&Oxj+zu~Kr8I@}eAa+@s` z-%az8TC_WE0I5gj*|FsAQQ+EDmV1Vx@Bm&sv;q=#x{5?CZN%!()<;}C#Y6Hk zqK27*VoR%73hIzE_SjHYH~2u2-cbO}fT`K1%XvZ5@qgHP6gGPvBcFnzBWWh=n1&9N zI@*>*o?I8DykhH_Ji38~C(zs=Z`3{)g)SPn0bKHF{3s@fNJKnT7r%H-r(69R@CM2E zmpzZ$iPxrf%=sK>`0hBN`e~I~6dJRM{zH$3M`bFmr-8?lhACcCGyAbm13P^cKgg3r z9a7L1SbrU8QMJ7~Ak;_lt6CH~VBiJt$fseD!@8y zQSZ5s4$;9s5k0?~6pt*+lqvfH;?`lU3Z3KRkx4RrSk9B{e_>=JoFhe{Wq+#s^a}la zrJoVgkDut970000@S7f?rKqQcOtyfDRg4viMIB z-I^&whmMM&5W2)!N|urzYnIncp{C#|P{<&fF%*(5TZOlFsC)P1XW5dPDA2R@^zQC^ z-`#t6l7JkM{I5zx23_>)v1M8wsL=qbK;)_wcD(LRaUhZ?w}@YW3zi~Gr8T~bDcm}P z9EU>62pGXBb8wnUmpxH*uT-2oP>$$yyp&yK7WC|fW|9`lD4S~D3*xm0ws8FU2H_ZB zT5wfh@!avzCDSL==Ho&Iv@?+~K{FB2D~=|3AwiTbOUhXT26{~$wJP3{VJ6AX1viOa z#$p#;nv!f4LOn@(WuPZ!3TsX*r7ZQtltYv*XQCS^PlY>fu-OPTk>8=?lvL+Zl`F$p zSdhLe?2vG*2PUpI>26a2MZ*VlNqM_wG|4EcTvIbrh->Ues#{0OWApRJx}@%vu{}<) zyrefXIB-2p6n1JQl@Z+rV%}5d6nhBAI%Pye74_^OelFtHsAP|=fK;=lnaUWVAW=?u zcWQn?n>fyaoEM}|$(%?<&$e-n?9XU2|5Z@SnsPewPXEST$sF)NEo2?7055<0sf_F| zTZeS~qZVy;uN&K}=6iDNEyHTJ#;}#HhvViuT%0}uwuZ#Qe9Hfb=(a~a)L-oEGW3jx zUBWZgJ>TezIiJ$_p%viu$tuk%1Ki*Z=r22)qg7&v;@4opVEZ&{1YA-%j(fwmZ;)YLMi%}|Wu!EP*Pp6O4@lyjF-zi? z6bb9$Oh$p8=|DB#scW-2j(bGMw(x7%!}pUA?KPdz={8O0noWALnnPmf_odP-#v4Z- z`u#r8YWZkC2Cb!6$ipGA7}~!;Z|-hOpx$0xA_VxN^7sntwy8wSVC<|t0~X1Q#bw^L tz`vx(SN&d6@(Q8;ci7vcSpZWH@E03t#6CexT*CkW002ovPDHLkV1mtao74aR literal 848 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 literal 931 zcmV;U16=%xP) zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*KAxT6*R7i=fR!eIWQ4~Itm^PD=nczaDP$&p)#8LQ)P)qmHEyzcay&aKvw+~ti2%Ie<$c)j`^EQ&(P{TTz4K-#7gy#7oFb=ky zI2%WTImv8<(lQ&Vz2pTYgtX)G@&%CYOcg+Bp7+~OD#hLVXLS37JzMKjKd!zZ^b>r8kR~HbT(@s{kqOB=>WfOeiM@&s>5=g=#{E}IyS2{1Th=( z+=>mO0=62WWwSg9DI-^dR3oSPXJbnrvQ$f)u;yi`!Y)Vh(NXFhsSb;99O{fkVm7|8 zUIO^X^V6jU0sBVPr27+8O~=cy*)Zuhs$~rh<65~IP75OzltC^)T2C1P8<02DmN+5f zEVSVdN1CF>$T;IV#e|e;QQ=?{pic+^2iR!yYSA{H0uCy|xK^%)(}H5LYZmhKM!<&2 z^_#AZ79|qWv7t_MKft}-1hUvR2+${lfP-zAu{OSTyBdcHt*D06qKz`bNA>*sWHtzC zDuy!~AU%e5;WXKp5>#QcfuxGpp=VLKHo606!xrUewPyo^Evg|ys=;T-b(7g3q+^4v z&BMwwcw!vVBzub!fOd&j2m*x-#o5MaV;mC$HiFr-H<(O<39YDx)8ZDF*ICk7b7cW` zmVpk+pSON4-l*CqSY2J+SymryzqAN>u*7>bSSmK8x1H||`CRF_Mh{#9z;E#eVT8*3 zH$Wg@9u|E8P7#3h?bimCL8x@Jfj6A&&1H?&mJlne6U=Eq(Mmc zH8;Zuu$9r+{{dY9l)e|?jGOn-+n>?A4>lRXvu&BK0w3*IV)cn4b5>l1ey)h9Mcs_e z4vAhoZ zY(9u1GcT0te6_tef+WbH&Jka~t!cx1X@Np=vKe^&_yC&Su5u7^Ayx8SSmai^dKr}k zQo=A3p`Tf{Ug1Sjv5aRPKCHJ4(BNpm)$kiQp6v~eR_a8e%2sMExUw?g>L}*1mDdy~ z#;WCWa|p5@4Jb~~O1XPv48XakfrJn#P&1_%VM_)zSc7|kz(@ia-VKH;dOJnUQMvIh zuxEhCE(GJAg!ep(EtOtjrdDjp7KQWG_424GX`afvAh8+D?%k}6%pg5V<`9_9aLoy0 zeQ!E6+s~8W1jT7<+Fo*^ZHxx3*x)1ys;mZ3r#!|V^(JJ8F)s|Pm{p{Mzoiq3ei-Bq z1XuAqn~{V8?PVAvJQ^@rc>LIVnx;mmgFxAQj2}?{*W@!(Sa-0L1Ri>scp3rc# z=lIh&TsEZOO|0tm67dSv(}(ZXP1*odxNc;PQ}c6oQ=n+Y5{E6k=ZrXonOE+NEd8u3 zxP*z%)@ z_tB)L84ib5M9`nL`_>1ftaOgQCpGmjzMYVs4Rk`M>tS6s5qT1*>bEmn+BlAYbCdNw z!lxmN67o<4Z)gXLK-V5AKN&CC#fk)rCf!ZRx=m`>Q_FNJ`NUalYh~qm n4WZdv000mK0{{R3J6&%c0000mP)t-sz`($> zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*KXGugsR7i=nS4(IUQ53zCI8CQ9Z-N`8SS$!`#83znq?L9fx{+qn zg&XO{g^Q4&g>L*o7fO{fLcwk=FJQ*0RJb#sSXoLS{tCKO;;Ompfo7cmc_N7*7pEt79akMRq-y@+ zY9NdAUR#X?89L&)>Y$-efOt@2o<`a<6pMp&XCw}+a1NY?SUOpMct$f1l&X}oF!*MS zHY|vo*Q<0NF)=@62$o|nu5&|=czR=M$*#3g;;+@DLCDC7y0hI=`1*FQk}N^5W}H)0 z&SVk9TU4f(Oc?2Hu8sV<_6~@a&-?&{^qwq)@;xcn3~g#%hH6*`jFYekY_UQc6%3kB z4o^snFe{P?ILZxuLxyjFl4>m#~Y+-0!$od<4 z4tSptMoq8@UbbV>0yFqI4`pn_ZKx`oR2zoob{mGMAUbMTVrruHiIN=KFa)dKmI&F} zP&Lrd_gXC_VAKSa?U=M^Xc*zWTI^$xA?Ycs$1OutAgv78W=JH%kIB#oF-Xm42*;S- z#8AR+sMd0Z%> zm)xnB<24SW6a8&1QZ8A>q&v zrqovrHGs9Pw>s$|R63r=fxYT-F2%{I?apLFz$gS-i>w$XVtovlz#bz4 zws8KyUtvPJuwci+nL5!8+;^JlPnGbJP9$DGI-$iV01;rG z{Bj-Yde_d|bxd1sZ4{coMZm*M_)O|qc80bIL?a@x&*5SSEF}gZ7}NVI;(8C@<{jdw z@gu$ljB&>ReSyn6~S`>))6NJ4WSAR-yel)NduONO2H7uu- zU7GhBvJ6M+wGr_S^$I%k%rV1jTonz2ej-RZdY{an-QDxNFzK}vElH(TLli<^%Ty9zfe zPLiF88Mjnf2IZx+#(rPuMmNMFBEB$&%Z0h}ScKb!#=#}*jl0{BPx$cu_{KdC-s#-F z^;#Z3?yvVhcs};v<9`CU5tBLiANl;7ffK(9e-kyolfZ+$9>5dS+#UxRlIE4?(v{p+ z1vLDQByzsp%*FDz0Kx+M?j{a4ayoi*hh(w(c(Nf2aWBsANjpwfMT%=(zw|(-r87~% z!RK%aw*Y@xAz=pUrWfYIR|m5|Q(=zv#_m=A4B(M;MP(~7y07yGzjoE1O_BuvUKC%4 zkXTKjtsxJQVyI!sLKy59%7W>%bS5e|oSl;KL;3_+F5zG33qq&@?sy-1CJj6aTOlpd zHTJXo%qS;pYZ6Wir-g`h$jwJ`T)2WO61JW^o_w|i$MFdK zu6FmkvO-`j-mZ}9Kre~42MHl!5^@&w$Rl&@Zif%0Pr1pUl^ki zysxpE{`R{YV?;+cJI0&vpoeJKOk1QiRxpkw7T6tJUsomlsn(Ibwg1x;G&^{{iNkl4tNQ Xa|$OU_OVe100000NkvXXu0mjfJ-;_% literal 1038 zcmV+p1o8WcP) zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*Kj7da6R7i=%SI=t`K@@(QA8ofWyTOZ6EEEJU(o)E&RH+y7Xi$3a zBE5L!60>H3j%{XNa1D*=p9ziX-<3yMb4W&t``Q;Uvr5f7cA!P!VJR6};G$ip$Z0qpxb zZ8(lIC1ZNyPnV$R(7H0c-5NyYt#nU@bCNlZV|lSu%d}d8%36&_YDnlfUjSuhqyXCT zrI6#TwUHmU-^zw7ju#Ieo;P84(|}uLT;PfMiM^eR>G3=6hJ~?5!z})ojc}5$7?H{; zT0eB2Il#)0?E@3xS{O%;U!tEsW4cyR3wxpl51VC!hncQAy+SmyB`wf&`XHq2ZUa)4 z?o!aPb`#2QARAl*v%}S0I13Asm7B^K?BVzMdW8kpOId(2edrDn4(a08A5Yy#cI0tG0(q_sIIUa*`_#+!E8}hbp!4R8P zu(B^RR!$bfUb#NLIDCCL$?up_gN}(Et(oHSj@L=6x#J~ZtBW+UMHa+#noD-n%Nt?G z7CE*&$2BVZ!M^7hX0F~C@;TNAoR8#~lLF<&I3{+qW{Nj-Tx;q0o8y#-CT(#GVmgiQ zF+-1;|B%eF@(k7sn&n_<()d-WJ9gMIGK{dp04K#ccBm@Nrag|Wnc|!ibv)pA>@;w^ zB&YOji9P0EpXv@{18X^UGB)3GO)y2g@vmsjq?&LZH2*jdz{ZohU#bF5m`=G>q2 zlV#=I?)Qpvx&qZ|6*6XuJsIZqcp8sADpv5<2}uCI#V@l+MGCuzyUyYwT#Mq2 z!|Qtmo&>0z2u+CmFrx;#4qXZbPs8YD%QPodJi!u~w) z*eJU)rXYb9K8uJn5b;rnWl@}>p8`{t{3mv`LAG#&2-rf|-YEUh$X<|l;ge!KnzF*j z+4izyu-}@}K9=RplSK4pEY&_tb_|*v`VRs9|NOU@2<-Uq7mZ)z)_1&@w*UYD07*qo IM6N<$f(!TU-~a#s diff --git a/docs/html/img159.png b/docs/html/img159.png index ea23ca589448c92de1ce5bdf9515bb10f90627a2..73fe83b67b58ea611fa9a759900c012d770a0b81 100644 GIT binary patch literal 1156 zcmV-~1bh35P)!pL*Va_^+_U#_oYZ9<_3wmhoI%tMm$g=lREQ6qyXEx**81}q|cP?8|tAH!d@jcdRlDXGTR)~Y1a zWa$4oqRiz9T2k7f;1?s~bBe*R){MmNkqh6~3*j`K+7wP780`#A_H1&F)>;5nn8O|& zJ5q`^LM%^Iar*X%+Tm9S@;)4(LM00kb(T^gbmDQxQ6k?H(_GiGZIe5xR1bEAfl`)a z)V{9Lo8uy=TZfXI;O{!r0BGcITir?Wr7R@V$JPp8qx?{5Di=dm(edyWjg8bNZ!K|l z?0?xL_7eVGw(&=&4MnG_T_$mE3Y1s1jfvZwMxm(tDoyrz7A;wo?opF#89Go7-AqQE zT&rkQghL$}YdBOYamPY;?2$|DT{bI_m)Jc_KUS6CenC&KpHZb}>GA4Mq@_@cMevM# ziA5rmNDPwD6R%WhLo){)V=`*>)1gGrMashwJzjZ>LsVdzm~d62(3go=Zlzy5;RI{R!=~BM>YKpJ(pPdk8#%NXc{n+{rZQ`wh)QV_b#+c`U zn=+~2J*_Rwoh;&|4{;uNqF`FyOK|EmH+&&2XV;>`;hrc2uB5cFN<3E4+7#8pP2jmd z9VCl-w6k~RfemAK^Ra^)foL&zaOd;$`0K0pQ9XA7t;@1;PiOb(%&WbDo4wcRq)Xin z4eHxZ(nU_~AwHhRd#J8pUA{(Vuz9VofpMZPxvvP(y3G;qD{Onc1YqV#>sF8_*;`NV z6RfoV0rl7y^KTYyx@F&`uxL$i7gs=El`4uyHV}wN_zv?SuIBK7j>5b8&C<^nz4ZFQ z4MAt5!Ug}Xr}mn~Kk_Qw6(WopMpW4&Q4uJ#C#F1%%;TlFz>(SL`dcLJYbUKa(5 zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*KZ%IT!R7i=nS50UWK^T3TAJa5u6TFC}f*^R2mO?=&t+p2xyfj!8 zyx3km^bi}gU_Dd{9x7GB9t3;QTR|@xisz&rJP1Wnii!wz4O**lJDT?b4a~-uJ!tGP{#4@E;?XYI4Ipjev6YiJS&ji`%5_wok4gnD$6}*4BeYHuYc^ z>GX=>nwiFoZP(N_Ms1G6I`wpU>0npOl&hyR5~_XH3{$+RHBh_-=)SES z2(9MN-$I&l)HK7C#ToDx;LqhmG-e7*kf!^Skn_h;Yf4UcZ{0eqV0F3w`^A@HiGhOY zah+c%zs+DgE5D}9M0R3*?I>TDI}karh3M4+TfWV%(xrl3We0HR#UL=-tK-60?MAR9 zdt7d)oKq*L10f&VK&ePNc|E~Mh$&Xk;wu7bYX*T_Ys#@xtI7^N!FrEk3|q89ppR#B zbREPTf+NQL5t|BSVxV=6+O(xwRNymjlZ@Ggaf-Pzq&Z~WJ4Lktm2-~Py>E;q&8R0B z7h;MPv?!nt(IkQj>*X+oxSA+J9>EGWX@x+V=#3t90_USDWx|g_#Td*S`<(})pwB`> z__147Y#&S3Hx*X}r>7}VPcRZr(?jQa z?54g{Dk;+xp1NfvIxFuyOcni1ne{7%5JRk>Wv2Q#x=o3{@ij#tL%4JgD@n8u8Q{sx z&s^1%tj^PFKh353JH-c;I;H|OrYcT=wNnrPQDT=4dE{i=AyG_ZmZcCQX?l$GD*35ba6G9BJf|eZ=(PdV% zH($68c}BhJTMqI7z%vLbffPhe$F5#> z4D~`B>E--*68NQ9U0FwVi_CWCAnm6Yn#7YTCE`aWv&5x%Q_gS0GiV^}pfD$r4K_&Zry7dUG{n>F7_tGaIK@+9_@QP!Y@Z2)yIRy&g;*0# zD{bq$b|d1Q4-c3lPoVQ{$rU~{&ZvD&`q$XF>;uS~gF7CesILaE>N+v(5Ag`Pv%DhF f?0-EPiX8p`PdTShBxln}00000NkvXXu0mjfb868H diff --git a/docs/html/img16.png b/docs/html/img16.png index 0ee8a9504ae7c8d9ce66abcccfff5035d06b6459..915462337627a0f6e911492d7870f2769757d644 100644 GIT binary patch delta 181 zcmdnZc!Y6+cs(x*GXn$T_d_RdGB7ac2Ka=y{{R1f=FFMp<>jHFq3_$Ilsw`;(n#kbk>gTe~DWM4f{lGu` delta 172 zcmX@YxSMf;cs(BrGXnzyTVVG?Af+4N6XJT{zyUQiwT6ZUA0MA(%a%z>N){Iv+uPgE zoH>(+hbJv9ZS&^M#>U3Iy}glbP0l+XkKq#!tP diff --git a/docs/html/img160.png b/docs/html/img160.png index 8388c21d2bc754730388fcf9809f0ce6e7747de6..4258bbd4efd81473c8d1651e4babfc089b4197c2 100644 GIT binary patch delta 354 zcmV-o0iFKH0`&rr9De~cHX23%001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCWk$+=rCxZdQ2L%*Khz15U zfKc;5L4k*rnThEG*dPXm21azXq=N!Xi`Wi4VQ}XV=W_$HFFayUn83(a?*Mc%H$y=| z!j}UK416F}1_mJV9}sKuqWY0Eup17@(A0K4N-kMWH2-2eap07*qoM6N<$f^zqb AaR2}S delta 309 zcmV-50m}aM0>}c89De{qF)Gji001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCtQ@Bt|L zpq=3_p8~^!{|uKwOtymg0U#rmGI;Ocr1^y2prVIn)2B0WMbBO@&YXQc4Wd4>1Fr*+9Df1ADwa(E001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC0gi~yVv$e_-Xn%T}!@^DszJL)+o8z7! zy^XUQ&_mLQ9{#YiJNxg<{xbs>@h%<6GBNeh_iJS$qOSL!@R`dJJVF$p?fzqwEGejC zt*z&=1xv*&N?AZifXNJ%4ynFkLhQ3mK+@JuhNzh-%6{sJ8;J~z#?(pQeV+&)L*x2$ zB2jPlP$$-oDSt$*p;4*7mU#?%&7DBHnG*g0qq8}KyM5H{kewC15`Ag7Y01Dye@ZzV zxQbrkoGWzW$ZJ_s>7f4rFYrvd;2pnmv`$ERA1E&^;7UgOUU@xM0wd zYVV17w8{@By*#)73~_?`S(o^*cAM8-+Oak9{5ReC4;Fj?UDh<52+khc00000NkvXX Hu0mjf_mjg9 delta 384 zcmV-`0e}9l1Cs-g9De|{EvDN5001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCEq}owFjWWy)F3cq2*eZx zgJT5}3?busZ-O7QBnU43uIc;I%iTTr8&QgioY;?@+eCQ6dw-*L0Na?2h`N=PLknBr zWtf~Ai-eiVa?`>Rgz~gl;~uA}aw4%1s~p2mnXGcHvMmj?TVSqW89D?aGhS4l2&aOV z!Y1@7sXSM?D|ze-ZWnSG4FBw_JQ9v!eLVju{R`nzrj~<1`k%+7tW<5;%Bqg(Hp&gA zDH@{39NJLu97pCg9?as;JV;d;h0fF-+mwcE e=PUb<--!Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCpT*0|Nus1_u;1yTM=sir4~%7H)`$d;*x_#bP)_BY!TdA)sIa7dL~>nFBEX z1pLa$2inLSZlHq$Ht_SpI1CpICj4bM19S$E!^Ci*-~n6)Lgr8ib|V2&^}6De zfw-Abqkj@ZzWq-D44Dsx4CxHt9OE0@lk9IGRfY5EAdTzJn-M1_nU}uFwD+ sUYmx?&wOnKxTHn_c5nsP)X0w^>W?L2u zezG%@KlA?k^XJb@7ND=-s9vE~)G9}H9g)s37a;LAs9-Clc=rjQ)P5thxXGj#kM3rv ztuUso0wK(8PE$?|a-mGf)nGUeazY{Rst=6v&9HY!4VFEVH+q5!jy86vnPHPwS%tc_ z2SnF0O%3L0Fyr&C@6?q#Ni+P~3n`ph2fgB$5W*o+_*oh=7B_qo!9ejSI{-RXO5t~)E#|Oz1?MsCxFrH!LZa)b6v1on2=+TZJR)JoEHo~;Tv+2 zzF`SszX+wG{5LTle$|TeP^upM%YE_m>q%}OH= z!=^$Vuoy-qFxBQ^(W25*M1e%yUUo1{rN}VgNn`Cv5dWpWkj`Z(U$1>dGc!3o0-A{h zA4Wg}nllob`v8@Tqe+2U-pR0cG|+E0=zUsq!o%uX^+82*Zvej(nC#XYwCIR>+rbqr z)B+uj!L=PnENi!M?d_1luxiAjyxIhK41WT2hQdcs15WW~w{u8N=QJ-%OK==+mVS&^ zCw%G93-L-AzPRp4;(qH|7~Zko6v|5bn;At{U`0+KMDb&qDJr9hODg^zapip4%#j!Q zG{lW)F#E!eX;5QpHk0Pmlfy!JDc@+XXi@r>JY}U#Rd80000mP)t-sz`($> zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*Jmq|oHR9J=WmQQHYP#nj9aZS@0)&viNC{7QaM4W#{2UDmFQ4iJ} z=0TWrM^9RCw_PHF-lQUkh|p8<+95JeTk$L|g5La-g9Sm&BBO^1-F$zOE=^mKHbKU| zw7lf^+V3aHd+(bEu&bS;yvmPK;Kax=UC!t(=l|p=g(V{i&O}Qwli*knQF}On@u{NL zj-MmXk)!zMK^{P9#?Q%=08Sl?pCh71Hj-JVsa!&wGkrM+2jUoR?qqs%iW?oJ%0d}u z3Cok=XyzifRxjPX0Ao|*ARh$>X9>*{bqi^8P)wys8f@KY!93iP3`mzMI?fW3C&ST? zKeT1mEx6Or;Dv3`EU9k$?YoGoqyL^=q#n%rGMs*^!7qG+bHMT>^9AYakZy=szm&B7 z790YhMzSP7sC%2%$N&**Q!<~IM>UX^b0kafcbg{o?nbBk9B;4V+w8CoT&(dLnQ+AV z{=BBzuh7{6AXy^%Fp|YqrBJ2o(|c$87AfkGZqZ`VEs`T-z4to0%o{y!y~v%F_gy(U z=fE{uR4u>F(;f(-4etD;D<|u?oZGZ07(SQm1OIUNb%Z-RtNl4*ofSXyyL`W7lQ~QJ zNtYumJvy%kairsuw74FYgFOgm3_iLX1-_-rg4M}M8ET0XSHf~s&RMrlxEvXeLzZ!} z_RoUdpq#Xoa!7G4Do0+nuX^Jn)JbOtXBPIHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCz zu}>Q@6vp2j>ESd^F8l?tZi-YVMYd#6%?|QY54fMcl~H z;kv*;2O}|LV2GgV)T$X68Lq0-c7i@T+;L|(2NE*yN%7hK-tYPBvtxjSIE^YFMHz-n zJmy7l5XXQju2f7x?RuhGyb_E$RFfPsKk6XoA1<@K8x5m+9n$GAo?Vyw4)mf~j_U@o z0X#6rWQ!)lD1T2;L}`~!(`_~WX5tdcCONn2dOs-oT3<|0`r}cb@$wZIYT#4+wMQG? z>lT<{Ee=MKc2)(;O4xM&x#|2+rm0m^$1joZ)M{n>B7a_!VDRFDvh#tbr5V(8woCM5 zn|k|UOWN^=HoY~!suBjCgr%jeS_RrHv{aXfbMoznAAd|jfP>){aU7QLM*#5jw5m3& zg&d-zOp|^!zfOLol2R+#8dhIhyPME16|^=%yI#+<;VYKqY#WtpXzhD19&a1kZEp{P zwpY)$d#A0le#VAoKeUC^X1kwNdoX)vYi{hTQT7S2#?J7{(f9_4gNh2(m^Awvrl6LX9De|_mkK@r001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCxLSF(c@4|El7#h+AB~hUn3J+7YXf zcITMyNXnSS%YUNVCUd0i%8HUEb=D~#*JNsA0=@nrDE)Y&j?B6;!(^3)l?;aw)=2Ub zo7j;JGzX)L)REkk6{Q|%cCeznTOoX6J*nX&WpPJ(^!%l*_l2TU&Ka9l9#X(5rZIA- z;e}2_vJKdOq$;!X?9bIW{lYTNWUbvoH@ybxNao6FQh#~kjySqn5_00$^lFfAeaw-( zhRgl@K6X-Yd{ZI%EXKvRqr=00Kw(60#S zyg-qOXeomP7l#k5J7VC24S4I=`>A7?z;xC7BGHc8k%! Zpf3+gu*zw-NpAoE002ovPDHLkV1gV76>0zg diff --git a/docs/html/img165.png b/docs/html/img165.png index cc511c986e317e2f1de0b6e475399eee89edc128..deb372811b0819305456b9f0460964d9bd7603d2 100644 GIT binary patch literal 659 zcmV;E0&M+>P)#Z+B%(Gn*?X#WFawW5=qTwF3M zqB!YRMI6MTD!7Q)!BxoMro-VRh*$@9R(z6I{u;y|Xv-qAg>?>~vJa`RTGEgXk4oK6e8xZsL`AlQofZP--+f1|P zg%RjIRhji{vA{rOTNLI@+@{0zePwh^ zV4$ZjmVi>I#_T}WV+!oEJ-86}CYI>0J_T{uKgmS{rDS7m{AH#D^{uUGxo}ZCy;wnl zRFP|vJ_4&BI%q6*?IACMX0q_8Rlc6|1aCEAp0LCeoU{LL*LF3 t0%J`9*lsi5Ubwx4n+x(Y0iW9m`vlU(itmRtOxged002ovPDHLkV1j)~CPx4O literal 591 zcmV-V0 zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*I%}GQ-R7iF4ifCE2_#lrA`EE6ukP2e5rCUE<0Z=lQs)4$vo zC^O+fJCK&6C>)jo>35Wvz?lGMQ4*343=G^~DKUYgfPukKl@b$JffQ#0r74QVoMID< zQB7dnK(q-B@Knu#WCH8|3Fr#vS5E*X-Yu^yh%uJcB><|4-@Vw8LEhScfm4y;12FMk zj=!)MDDxi#9^f{B^FP=Ckfx`98A=!$*&7(x3g!m@6E7bq;s^r1egQBI)%2Gk|EU1O zoOchviI*z?St-vMOaK&S_J)`M)#SlobVz{V4aiXm3=Gr2QoVP90FN)Aj(}=f&MqMK zfI$WrJ)p$9g$Pf8i~t7&Sknde3$rHh3NWzmGY2Q$b~L4kk{X!_jSR4+<`Mz^cbkDi zk__O)8-Qj4qKrdkf{ge8(Zm%B)Dnruxj0RLfoXU&6J-Kl8=>eY=mvrSQBqT20;r^B zHw7~ptIbt6jvh$+peM~(@=bjx{x?*oYWh~Wo0CIHhd`v<-YkmBw?IVJ!T zJ3rI}P<|%E1YlxkcYvBOpJW4|B{k~><_%yE8L*RM0tkE#5dblx&YULK1l9*+rzk{8 djm#XR000h3vj3WIl`;ST002ovPDHLkV1kR#<0$|D diff --git a/docs/html/img166.png b/docs/html/img166.png index 3905cce768cd1ebaf5af6465cf30773e919aa283..cbcd172629a6c66045b415b0ecdd4109eef8c923 100644 GIT binary patch delta 199 zcmV;&0672B0owtP9Df0%C1Z&I001peOjJex|NohpnRj=0?(Xh0Gc(N0%n=b0s;a7p zh=^upW&i*HL_|d0-Q6N0BD=f02^p9X00001bW%=J06^y0W&i*HTuDShR2Y?GU?2ci zty%zOaThQYp-7-AnER%_EC91u z8SXJKFgAdgj2n2EJ3)-fx_QW+(tALh&G=jd1^_LU8KJumW|9B^002ovPDHLkV1mKD BO~L>G delta 190 zcmcc3c!_a>Og+P8rC@mm1_s>#pAgpr2M%oByje|6t)Zd8$H!;cvSpHzlEuZv_V)HO zXU(?~G(~~z)}8O2+9VY`!x;V8 p*q$@Zh)QSH+S$jmL7GiKhe5kdO4om;;Z&gc44$rjF6*2UngB;8L;?T+ diff --git a/docs/html/img167.png b/docs/html/img167.png index 007f4bd15bea6ed1e0c0366901fa29a284ea1e58..881b68af772a0f2aaeeb0d9e4260ed08bfe17371 100644 GIT binary patch delta 411 zcmV;M0c8Gx1FZv)9Df1EicjMJ001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCghXIgqU{Yc@ zz`&rubqiTB2T4Zb1x!$y5lZtiK)lYx4HZ!EW#9r*4;U1{Tuumekg0a&2TtlagKTgc zO0%Mgb3y6f5Q=wU1BBr@0YZB-2!ce|HZVX06#T&y6FVg#{U~vZ? zU`T;9I6%Wb!+!xpG8VAv2qh?hb$-Bb+gkFxG^{{68ebc~@`I>c#^1=H%E_Zp0cLzs zQUb*d1IH7Fy-4!B4cr1O0_>duQ2tjm!}%IGfXa2w00D^Gq@)KlLk2E=f`OqS09iT1 zJqHAj$$^3C0PBSJybW_7z{I#R@cRY~SUrePGzy3V02D)2E-dJN+I;{3002ovPDHLk FV1f##pEm#i delta 366 zcmV-!0g?W#1AzmO9De|@jem6j001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCn;Ve1rA!|f zq$?g@h47f;FYINI1DWz42>t;X9t_`+R5O0ybzs=Q`ymsoh=GrzfPvv1vT=C~{tOKB z-T?vFEq0GCFiZgX2cn1zEu2^nFlZwwpZ)I11qKEgxb!pz2JWvwn&U1I+yh#7f%Pbo z?hg$73m6z`8D|2(ihy2aU@%lgHvIxWQc!RQFfborZt!RL09Diu3|f?+_`Dy%=JWZ$ zP<#G$bIEG~s3M@#SHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC@Z}|qbnbR?>rX_N&4!eA*XL{ zdfZMh2O0QGli`5*K2)Q-F+;vTE@FgD;!O=?hnRSc%s)>~b5fa$1-2EEX)30iZ$Y`7 znt^f9oZ)c-0jZ4b&npyzr&b;cKA?mht-;3WYy&LOFMpa@iSuYf%fn^cdl+((=*aW( zbdR;FkuYba;wk_qwl+c((LFyyxNO6-Hy*O{U4VwMfPNY1Syjl(tmFbOsA+kyVRHed zk#B|zgVH`Nvm7N_1sZ6o`~-!^b?k3|fD;`Vi!(#O&TapH@`T#c;e+NiUxHxKn@NuLoA!Cwdn`Oyzv8?>_Z6SQ0R!1(2 zm){7|S+!V>jIbQaW!bfu}4lWWmJ<7Z@5LZnRvYX^;{naza8W zYg$NN;KC%!2HJ9;uT~B;?*bN41Y~SArIdJXQM*_NJqJbh0*{isx+KIala~j z94SY$)~$0YivZUfR2eg$O?(bbsdkk?$HoRa7>012_EWY)YD%T8wir|0l#QqTZm3X6 zWsGV!-$nc`awg=^4)3bVgq_4uJ<2oE(b-^BL6qg72D%tSM@=$^Y86wWPE<*I41Z*` zi7}fX1FXYV9>s*{Y+%jAm^Wb6QxQqgq3*%Jm{F0Bb<}qCfk&2+!^}fXjLX?DSYxT< z8xudCzpLt7*nl7L3_a;oajR{h(<)t!SO2S^PT8UII@%b*n4VC~ zlE4fEdv$BFskuOoES5BsSO-@V6Mx%Rda&!=Op#fVQBnD^3Z!ARtQH|V(1P1)wt$LT zQa)7epTIg)LM35@DDyJBo*IV7qn*HUpEsr9XkS%7rpWY5YK(3L zuw1X3#PstRTL_7xrVEhM40D{9$5z(_?40ha7+J1w6>3@|n`HS(v$69@>w|@^0PJm&hlNrZ2I$%7mDuu(HJ~eY{C?#@i6T!pOc$z-w z!eE0rT{35_gC4jYyQ2^!#;nGLo0z3rx;X@JQk4zW-ctb#>FKE&;8+5_%uU%iU-Vb&S zta>J%b1H6}UL{GbPJiKBWj|5-m1LbL^_&VkUX>3zV&vDDagPoi%AwL^ZJB4o=%llr zAx5%ep8W@uor3N+9!jl36^nk)kq_aLCSHFY?f|rg@NIf*9}}@}cT*8}zTxVnZT~q? ztQWxO0=((-5WO;qB6ev|M0hS0vH2*qjDr!=3|>gA_9HI5Hh)TS*;jOHD+8ry>!@i` zc8FGv>+#t{`#{8~KnK9X(tRGvoW^Is*X%xc0DjpDU?q7A`|Jrs@3|Pl!ozsso13zC zexVhx7U^F`t1GLx8gb?829Y7T*J7=UD|l8{yv%8bwRTrTu2ON~#O@NVj(im|AGmxB zO};l$Z;>@tIe(yi0EWG^xs1DjSlP#|KMBoxvf=^Xw+PvB#!h4}k0_+GCX_ zY;JDC;@^8sElsgxR&GESSMZ2Cd5f>e)~%J_{xIG@qcG(VEq>V_B|bfwUqddbA;tvt z;VA3f(LGhDW;XAA>3PU|hk|&O75*QtH5AnmjtMS1g`^P!94f}VH zbU5ve8a=feroG(R#ortTP8FUsX1Gw7rG8zb1^bqWK&FyMI5shUCqTimK1O+ zJP-*2oJmFe0+^^&zmqwm1vTj?uqM1njcz42^eM2N$H*M{hwF;|EG=~Q5b<2#&rhGk zn!u!*HkKaeaDrCTn`Lc}U{82~HRg|~NvwUC^s1schDP1+1Vai|r8TA=!mFPzwc8T7P&UVmqkdg_&zYE*3I^ zkQcVtg>2pAWI;i-yAfLiOAQ!_6nfm&b=P&qlO}28Zr}TS-}#+ik46Q)FuUJ*zUTcr z-#Ono=OMaV_SjvEbXQHwdBzv~b7KYh3s^@XIDqL}{j``F@beI&ZwDuSM(=|^2zWWx0X5m_c|Ww<-gkgbc*!;rve>!oF1@9n;JJsU$VK!CX?fg zmZMbH)B#-0lJsYaER3>ljtCU8d$e#8;^3`!dZg1v+jO zwHv0^&7<8aN;0o@)3qrKnp07+>~CSOHWrw8atvgXyS7LYw4$tYv|{N_ex7(WSSyV_Btuk7nXu3u^q7U@Yn% zc#FnQ5Pq_~rIUNfxOPQc)t_H{lI9E#4~};we<1w;Zz!XJaKI9~Wm;TkkHVpqoqvt@ zFaBi3_bn%Fab6JqJP5|&_Agcw{gor_=gAv+GQQ)E`#(z|){*wStO59B|Be)>v6tz= z>ypY0rlT4OAtL7i_U=lHhKGk`ba-xzg2V{d(N2y`+ zJUx5V|3>og3;a}L^#m+|4!TK-Pf zkTZ9jtokBZ%d~IF_|Zh7hksbYVF~4(6*YdX+%{8X@@ z&#+j-MB7FRQU_`&9i-U()8uhvh@BzeK#;QQ+@DS{C?y^#FBw(#gE}2Q>|8}fTSBqK zS3l$-N07l%@GO)W{rIE}vmgU~h<|=6SkPx!tO3z(tspg}kEz$U#(!eS5KlwEfgq)f z^&)_fc%;0P2(@*!TuMcpZ+BZl5nr^Bha5r1X#>iP=dxo#21WY|cfP<`pMh8dqNii# zkM(OoM}~MB0uBTzHOG1pK(0^8OM0k|S2uOr`hC&)ycQip9&!X3rwu4Go{k~N)aaP? z8HhC?20D)XvN`C;5PwfYz|mb533?GgRbS|i^+B!A_A5FPj)(|($Pr{z8zrgC_|{l; z8|+vrEzoBm)|~VvRUK#Ph8XCk$B`j+hJfQpjU@FVfLx!FmqK0D@gX|ere(`JhCBp8 zMxIL529z1qG2<-Acslk{vChzESgZk&yh;r}PZ!u7+l~yeGk*je2vTa2^&)^=pOTlt z?Obbr{bR`_Ze;y{WlK1_yC4rqK?d>*OFv>(Dl_9JaON3jL54LQsS)|8%#!*Hi#1GS zbCepvpI&*BXzp^aBSY*A0SAJVo#@mRfKuX-@=`L?3vzsd^z-hKJK>RsCcLwqemv^W z>Z6ja&$xPzPgto*AxF;Z2uKM%Qjqc{a+5&}T2!~YuvYD@uL2%csj2Ab>=#v{hI`9w xz^chF74XnXO+`mrkg5_jP{tdevc7-iCE!_YB002ovPDHLkV1gob&gTFC diff --git a/docs/html/img17.png b/docs/html/img17.png index a7cebb0402f63d6fbe92fa20ca5470c1f8b0a5b4..a16d6eb6570f17421aabab80f959968db682410a 100644 GIT binary patch delta 352 zcmV-m0iXWe0`mfp9Df1qI=)N*001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC6THC4 zouHsFApt|$z#yZI2-~R!6i8Ffxd4mch5&vIhAvi42#*OECkhM`egZwS;TpP94u*yY z0oV*?BF!D-g58*a6zv8?s>78g@T+4Hy7*Ip2zC5?9~c8J?@(oE{MevvtF1770S}86}11ib@0000 c2Z&V%00c96f4cCdb^rhX07*qoM6N<$f@c|negFUf diff --git a/docs/html/img18.png b/docs/html/img18.png index be6620224760026101701a9d2752bd3679a6cb96..a1c96ad53cd775d7af34885d2c3db5aedaac7611 100644 GIT binary patch delta 523 zcmV+m0`&do1Dphq9Df02j_Y6m001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC{5d)ICO{009YwlVzT!DwU`MarREbB~!ZWbJf+N66 zNCn_2Mp6_Iq%OjM++ictsBd}vR?8x*7W!w@?tXDo)kuBkXxM34$Fee?LQdD!NZ23o zaI6|Ww!$1oSEWkB5l2hlrK_XFgX|t{Ym{1C;a2FxnR)ME--C!oo`RtkD%M1NX|M3j zt&Ju6k%|3tDlU_23~rZqNK?CQoM5!wlLw#t!^>DX%YSuXYLBv)k|t<7l@1Pp$4hZq zCAkhv?O%8)fnd*}e~KBzXTC1g9De{3iQD!7001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC0tu5U-5V1O~9tw^pn6d;(txRrusoUgDr#Eb$`~+ z_TnAS`{P<5A^7gK-@B)nCV*8#!84fDQilHwd`n-839u^cU~p&Hz<|#Luxgkqp;DX) z3`+xmoLUBk0=EO7!UiDcF9XAUj#9JW2@I?lCcKAm-$PZSnZQxN zdiep6vzLKkIe+_g{@n}=>;ecA_&%)%CdywxlNNv}uxg3oj|}m~A7Lf{Z4?9hi4AU=)X zXI#h-CU*hmVUodIyAKRAjDNmZPte0SK`0ax^zbMcYTyi|fN~Q6sDj?00h?9800000 LNkvXXu0mjfmHxvb diff --git a/docs/html/img19.png b/docs/html/img19.png index fd923e2a8831cd6288fcb29f8c785fda50f833f8..d0e22d1f1d026b0c96b841519a8b50c623c0da30 100644 GIT binary patch delta 468 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 diff --git a/docs/html/img20.png b/docs/html/img20.png index 22157c8d9804105ed323b05ddb1c06207e78974d..ba7446cb90cc4d9d0a2951fb1fca303718cea6ba 100644 GIT binary patch delta 169 zcmdnQxPx(mcs(x*GXn$T_d_RdGB7Y`1^9%x{{R1f=FFMp<>l|*y*qQ}jG&<4s#U8x zIy%zQ(tt`_TwLzny{n|8w0rk%*1p!wKq1DGAirP+hi5lH@;06>jv*W~lM@^mwy|h5 zw>K&>t3?#@dK4HgV0xy_%cHZ$q3r-0Tim0 V+U**QJAnoU3Iy}glnh#L5-v2XKqDAD MUHx3vIVCg!0BfN&ivR!s diff --git a/docs/html/img21.png b/docs/html/img21.png index 0ec900c75773b17bde4650d67b2edfe47ef10350..5211fce19c36cb65268e45f834a5bff5ed5f4fc1 100644 GIT binary patch delta 211 zcmV;^04)E>0p|gb9Df0FfVu1d001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCpAOVF5Aku(=5Mcc9fJ}kmKmY>+3(zzU1_rio z*wyWZTZ;|IFW?jaQv7@Zw;e$I_Y6j0alxi7Ac~`aCxM_#u-XX(8vp`77C~L+hLivR N002ovPDHLkV1j}FP<8+S delta 181 zcmaFPc#?5~Og#f@duJ5`1A|t8Pl)S*0|z#5-mIpk*3i(fY}qnNNy*~k;+ZpN^6>Da zrKJH?859ri^R gG>0Z^U~pq*C>0l8W4$S;_|;n@w4ysxK=V+hC0}(nZ2@iZ5jLu3qXst6yU@%Q)W7BK9$-^^;$5>cG;>Npq$3mFc&v;8{-Dvo7 mj+@7vwPDLjMrT!KW`?(RTzNY$N=E=qX7F_Nb6Mw<&;$UKr$T-J delta 170 zcmX@fxRY^$cs(BrGXn#|+cbkmKuRmXC&cx@fdiX2Z&p)NYiMX#wrrWCq-1e%vAwtaH00000NkvXX Hu0mjfr%p=P delta 180 zcmV;l089Vj0muQ69De}rurhf7001XYOjJd{z`%fjfJ{tGrlzJD85whPb3Z>nnVFep zW@fXqvokX@jg5_2Sy@Pc+XVms00DGTPE!Ct=GbNc002)(L_t&tnPXtU1K159RJ073 zp25I10YrB)uz>ju3^8Eot;ZBVGzSC2VkmtAN^5}VY6b>p5G~!xz;OUXcSxUrXrBx* ieFMZY4ty@58UO$(iVNn+PXS#30000Q}x001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCxwWI52E5*uba2zCfqUc#{n?oz5&BB1|9{@1w0EFesh4tI3i$* z*cfD>teXZL0Svz#*suL&V0gs(Apt1liLmWG1H@6>7d-eH7#Qb&{?Dc_$-vbCc9H>9 t4Ns%wHwcSSVks`qApvFHBSfeI0RYqZMGy#47pZ|{{EFfdGH2w;!|@*qBfMHZ_7Cyd1@ wCBQ%s#7y{4SP_GK^amnTF+Lm_n1t z@z($Vmg!$^ohL$_5(Cc%7@I#1r)m5D&q44GLUn?G1F|wE1qKV44#l4V440Y&gf=Mv zd29+WB@+5g4G`9S1BPV`dJN1BJPHi^IS&9uI3i%G*ccYUm^TeL0vL8M{Ner0z;uB1 zLjq996K)~z23U&azQEVOkn}@n3ZsTD16Lzh%m6Ca^U>l9l*uTu6qg^7fimwAVw8aZ Y0I_XGENs)f8~^|S07*qoM6N<$f&@pt?*IS* literal 437 zcmV;m0ZRUfP)000{V0{{R3#_n$}0000mP)t-sz`($> zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*IGf6~2R5*=eU>F6&1I`~Gp12dC?mq)Z0TIeBGjIhEq3rOxGB}&H z2bT^$y>~7M-ZU`DhN+DI14BE4w*^c-!c@j@}0{{R4UlW?;0000mP)t-s|NsA)nVENYcU4tY?(Xh0Gc(N0 z%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001bW%=J06^y0W&i*HiAh93 zR0x@4U|?Y2YXA}qPd6|yTmUgx7BHZI`womqJfNfk0|V~|*>w*J3Je(F0Ruw;kP-kX zV)I~0IKsfd&CJd42uQJub8=&9VBpohfXtNwldWJf>E~Mp&wjN}Rk}b9j{@fco&^lQ zISzoNemk&V`^~`ci1kAPkjFUx^M5vdNd~SC2L=G8385;u2jslT&Y>@u;YejOnL10 znA(2Va4FoAVeD(NWa8=mY2Q$BUSfyRe8UgAPfTYpJUN?Mam=o_aeIS%0`r99NiivB r_P;k~exJ=a;Zi3LBhMrUsTBeYZ&t}%&Y9j0avFoDtDnm{r-UW|Q2kvp diff --git a/docs/html/img27.png b/docs/html/img27.png index 632b6b74a9752af1ca1a965b592b170bad11874f..e3b06a48c325a65e036275e6611472e0b371f081 100644 GIT binary patch literal 4180 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 GU;%=Pb8!{` delta 628 zcmV-)0*n2Z289KX9De|D1Y2(a001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC{6LF`kRS)ZIoM(0_`Ge%JLKV5=3uemX*4@>Df1 z4B^sCW~W|wjjx(6+wM30S+d^Z88Gf8d!&<4SVP%XbLAGw?_h1t3lTh}=-v$bC^Yo`){^q-rBHcaP#svra z3>+o{)@_gFP}3c$Kcb$eKJDl5fG2UPqqaB;8hIX9LWILgckg(QizYpVGb5wv4b92m z##FtPSG;4?6%LR*%4_gt;>Vb(CpbJWjJg85@tgCf%hb2U`f1kh9{vMidaqV($ExB0 O0000*&MYr4fA{X4 zv9a-)GiL+^1y`+F)zQ(BmX-!o<>KOU_wHRKC8gcFcXLY45CjS_mIV0)GdMiE0g^BC zba4#fn3wX=Ms0(;HP(mM16*ls7awHa=uD)@JrQV7xIw zu33qh`8AWDTbrc=BdZ=8pPoYQfzN&GCAQnWX=sjCoO_cwW4W>Ljh+4y5;wlc85?x0 pVe`&UPk5l0utG4=;^YAa2FY?k1+H@OI-m;}JYD@<);T3K0RZ2qQGoye literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5ed!VDx2D+?9?DT4r?5Z40-4s71MSxrr?p`pRY z$7k8HWs;JT#l^+;_VzPp&g9|YNlQxusx>w??(OZ3jEwATFE#=48B2ovf*Bm1-2h4E zdAc};aLi0jSit(=+wFS?4E9$sJ$`=HVcyI5cieNjc;qcuv>NuXzvbb{Vg1Z};~#6& z6us1h8K2)VGH>ovns9jLfde1dJj9KjHTo1LBuq$5xU+N8L!}AF1A&g)cYe;p``OG2 j{h~|4g*^Nd5*Qe=?@4O1B&~l5w3)%v)z4*}Q$iB}W;9o^ diff --git a/docs/html/img3.png b/docs/html/img3.png index 46f3bfda6938a39ba93d2fd684a5d51f771b197b..869e09eb2d53a8c79295a6821ce0df639fcc5bfa 100644 GIT binary patch literal 3149 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 npZPS$jZ14AU&HoNB(VPjnn2c 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 aA$|d1-P#~Z5 zt`>y42XZzM5yTIjJWFRTN>|9( zKJ!37QG4h!QfMrhG@~0=BCIJBskoKhJqB^8f2FFuRQS}h_=?|y?}T6bXdMREuG_eA z-T)dEZ`{{i4ZxZstozryrfex1Y}IcRJu**<94e)A)X}jhjErTaq)Cyi9QlpNqz@B; z^5AJO0-#Jm6vL2-vN;L8r?^}MT$?d%|3u5GA1!UH+@$u(@*jx)a9%!m@ZfET>j&I@ z-&1&r8XtN2HmTzhc#g4pX1-A1{y={#Hc>R3wC*VMQ~=IfdV?KD?QFaYlAUO_xhUj~ zBt8Sr7#9gb*J%)K1bdJ-F&n5kv@=6p;z1Z^6|0KMX&`H)G2G6Fj3OHw@_GsR!Q1JW zT<1Ipf;J_wkjbB=(Wy{!!Gm}heKvy~Y@N2voCj2*h9Viw7Jf3~_{ zWaMAF62CFcW{Ek(Y#9J)#)%-z9Jl1&1PRy6-LOb98+)1vwHZ;{L7aL;x_WljCx>W1D zls8MzB*ZXZLvB6FcA{!&s<9TA-za3s_zDryBDxvsf!!?|NA{8K+K$+@HuAXfs&S2GjT+ehsY5I9A2MHWj<}3j^;}X^PlILKswxntN-ggfK5_maHFn<3;Y!7@ zFN$Cd0`E5T7$r^gjRe2Em^r^3|2^PmU#!0l>97|cJop~`2JAl@?CarSo&W#<07*qo IM6N<$g49C&9RL6T literal 908 zcmV;719SX|P)>v;v0WlB*F~ILvF%Sb7zyJm?fB+1{00u_d4WEI8WcTiJ zWUF3R-7U+6o^C!SEa3kFcv?U=z|#V{0iG7n4e+#pZh)r+bOSsspc~+60o?#k3+M)T zT0l2Imn>>U6lZ}NqWU=CtiM53Fu6atmUs`Orhoh_P-6|xwVuxX%Dh8WFu5kYqx6>u zDI40?mLIP7PnV13`zQ4lRl!6}ct`3l!A;KC3hZF#-P5`pdAimOs)C7{@LFh%`MU#X z2{31D1@>STzwfk3RWLCNh=xnG(5YRtR9qUNyqVZ*g`Blwc>`&=W78v3igP0sbJMDY zUL?weXz(i@Uf4B5DwS63D%H&cU5v%{0qkODoqp?L^_Ekk6~ zg;SS?R*$e|r+(Z{ZkwuL(i{xX{CWkn6n=yu>02+l4SwmAl}^pV_2geF`Q&7$A%!Ck zgJYn|@Y-o&DdnC})lU7A466wvT>Yj|Cijv%R@C`;<|?|ahJTdHMmbRIbJ zVb+pSS+Y!M!RLP?5lur}r2LkN#}uW|O2)vJ!Nh9kYv+YiF5Km=mfNN(nAl3wYph>! zugY8Ur6l#*_&wopQQcuZzQUJubI4<@*#bGkqC#C@cZx&fXR&<$Ta!)-e?T diff --git a/docs/html/img32.png b/docs/html/img32.png index dc5293d02a7fd57ebb160e1277a04151b1650f02..ed749deb990c719fc90a94603bc7719606b71773 100644 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^+8{OyGXn$T*2Z0aK#oCxPl)UP|Nm#soLOF89vT|@ z?%g|MW8*Vt&Ik$$u3ELKqoX4&Ee)v9#l_|B-MdOkO1pROmX}qW3KU{23GxeOaCmkD zB)`?u#W6%;YH|VtlO7vKK=KZTRKtS0*aIg{HZU%;FHcB#kp3WiR=?WB{SR*6_t%+} z)62&5hfkbGNWyZ5kXXzC69(xEPwevz8&@_5HZ?Z3PyXNN*u?a{m6wO-&Kpi9{v30k zgn)#Egg<|J9S@i}KUyGF=qALL<8Q%bv6FR%lZ2VU5o4B392?5n7+Uk|6T}i`96eCi zc)7v9kyk^BIjnZ}Lu=*3aSK?!^X}uX%Uvma@3WZ!1B1kJtrmMX0t((UGkRX4yGUW1!@g5d3x9#4%Kk-c&qy)Cm22WZ@_;f zC1L*ouAtgR{e=nK%{>ga&&*U<#(J8)ZbDIdacXl}n>){*^#{+$KC6>H*v7rVh{eFb j$iRoeIFi*uQi36?TJx{KmF;;zw=#IT`njxgN@xNA>jP%Z diff --git a/docs/html/img33.png b/docs/html/img33.png index 903173fbe3a4658cd06238697d72160c75aa26ac..050f3cddc1a11d624086b2346f79f8d29bae52bf 100644 GIT binary patch literal 3994 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 AA^-pY literal 2257 zcmV;?2rl=DP) zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*PPf0{URCt{2n_X-aRTRh1uxyuQyE7XeYDJJ56HPFZCY2_JkCq2T zOq5jv216)ljA;z8Q4kCgt3F^v>yi*81PwkA^hGL~5CgR30Ta!JtRaR61P0WKsogFg z4IdHeJ?GpzGrP01{a{+guqSQy^xk{UJ^#7$b$=`XrEE5T#7cIK&}QFG@V!1qc`1sR z09pzlocGS!m>u5in2QV(N(+B%x(7NeRIh?>x+^#@Cl0N4H5EnakGg`r6t#%aM=;AR z@2d1+DsEBZk2nIV&9X6*+N878(q3ZXKCfD=s6KF+hobA^*T5{b-c=1(@pa`G!&hus ziIRt*xX_av{S;i4F|p$llHBE=X*&8V0KiSncg zMWK}-Qt#~rZ7;OLckqP>$t%S%d7%%YnUro74ALm!aGEvIl`u6q$&7bQPC`$*DsSY0 z{F?ND%tfB9_zX-lt=T4+lUeC0*y~s`y%k!i*zO>B6o>Cm@7H73J+gyn98a@uQoQhY91A`@R26#oaSDV$;8OcIbz32=dz;;d9G`p>HNiK%(iDKfH zjB=gTpPUwE%3_u$ag=bTQJO=W65=3=QzsoirxcT~UCGN_xzDS6 zLGdIMnf^%cdo)Tv^w$E&WHN9#vtQf{=fL#NuC4k<`5Wz<*ODK38DE)a#xg(Wu~P(#GJ8AMC1@sU zl6FIsD59uYRKtR>Jdt7#NJZAoe~Ivyp|eP}OfMEJ4(B#CY8y3()3!DRVUcK=W0>tP zDhP+aX`-lOwy->^;WST>E}BvHV_=hbmRY3&-}070NmI>SYS>yiw<0q2W?15#%=M}z zPLoJS=`@A8*ixlO*%t9=$H2<~n}&)X!aUwGV{>6(!#g{kFz0m-F3~RTj<;n@Ra`|HSpS#TjzU+T1Rca`81(EtpPvA?LkJN_~N(&N_`?JFU6yzJ`uIVL8U$$!1R~;P(oVcU{asx zv$?#l)Q1xWnEJew$z*+{KAf;ZeV{^pD%7VSutI%CZWZcNvAf9bO6v3b4?a^LOeig& z)ThR8>QfVJ>QmJg&-zMzIH9y4QlC&d-s~&&;e^tHNPPfyB>nxa4<#fEDD`O(TRmT? z4<#fED)ouyeWpHfnJlQ(2aIF>QXfi4pTVR)yX#}eeWgB}kk&Yu)MrP!G_M{t_2Gm8 zras2{p0uyjhZ6>w`mDgMsGrn_5>}{>+bYz@8Can{Bex3msaVB|Y*akQ6@)kXJ9K#= zByoWf2U{t&i0R-n!!-;NZ(D2xg7EQG4lj+R^+AbEbSVtMhNW73#(K_rJx?7$y{Fk{ z5M-E87B7vZjZpD*=O5N08Rh4oAh};+5Tvz1S-dosHbTX94&Qzi^B!*pNyQQb{Q_n2 zlK)ow=0%BIoQf^FLu>`W33Y6qL);V-ys&{I46e16)uX{k`L$fbWKnbafcI$$v zfD$U+hz@}u@$Oh+lQxDn3-(Fm;#6$W9bzjWIf{fjHqXJe#RRn7Y&DVvYut#ZI07Z4 zF0uNksStxw%peGlXlxvBU7>E=1QBv6P^{<Ly8sn!9Fk>+#FjeaC(GIo7_|!7mWROxU zLC|=g)v!jq5HNBnP^{<KHUVhX749>1X35n#K(|* z=jvBvY5eb8pU=+&As2)s_{)kF-66J;$#grQj?Ht3w@`uyJK(Ll3Hy^U1px~~8h8vC zC?Rz*F83qdz@Yw_R|(HB2!das6kZxjLxK`6W-T_|kvQ3nS1g``38GdrXCk_zskU$u zG@hd1t3L#SG+cHM7&D$WjDJXLDc9*mcicgD@-5S8F1q8kLY`A-o^;0@bSHNbBehZS f99PhI?-u_9e$D?ZGTANs00000NkvXXu0mjfKGG%P diff --git a/docs/html/img34.png b/docs/html/img34.png index 3f29355a015544ee631785caa9ae5c6a051dd11a..75e66a30e60b99898f2d4900a6ec10e6240938d6 100644 GIT binary patch literal 799 zcmV+)1K|9LP)X30000mP)t-s|NsA) znVENYcU4tY?(Xh0Gc(N0%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001 zbW%=J06^y0W&i*Jok>JNR7i>KRn3djKotM=D@~fD4XZBbibiy6VJYod5a+7mVQ(HI zA`2qegV%-F#RXAl{R_4zsCWwEp*Q12Jro*5P!J{h7sL;C7ZK{4Nk7~)Ym2Oc;_oo? z=FNM*dGqGY3=oSofE5nl5tq~PCNVg{o2<;J^@O4@*~eTN$yFSt_R6tf76u;|vDZyw zb?Wth2`-pu+YA!lt3$CraT6qp8Hw9Cs^>jJ>WoS{0uzpT?$s2&LnMB0tm9C|a;y!* z(1pxFQ5rnGTdho3T(mVL@faBwDvk1;PDcn8q{ylOCr^G!47psOH8|f97iS8HQbP<< zQ*Fg#Q_^1BRZOqYQE_&VFR`BP?dZ(o7Z2^ zO*d_5OTZ1f1Tdvp%&B-w^8QZ81ynULCu+#2dN6rSkd>2W`*aPRJuuLLog`G7TCr6X(1Hlq$P-1o;&l-c{{xnwe_Ecp5@z>%MgKQMTeuiqGc1PF4B!@4wV(I-|T+1rP3;-ilGH4dz4VTXj7j#IWLgBO5 zc8jR2oXOR=V+n(oH-(Q2%|?OLk|8-+ilOBp%jZuDB)cT z^+?)z^60VJs@pE@DJHu9FIkOJrTLMpBMyF)3I~6feT^v9_E5^7rnH=h% zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*JOG!jQR7i>Kl}%_9K@`XTW3rp9!JP#`5Ik6VQz@cI?4g>QUaVX3 z;>nM@aRt9XD!COrlm!c3lzJ&r1X=MAz0_X4Z4Vwq&;>;)(Ppp}{J_LFJG*IiYuO07 znRl45Gynf@-n_T70R}OM|1)wn4PJ)G>(X}3m6EDkz$ngUphT?YkD{5-!xJKnRKwsw zFDR)UiDp7i62)CPvRW@F(z3x!mAyilf<2$7CQvD-wx`M- zq0B`*4mcZ@sKa@|rMAk2XNuUvQFMU9LK&^be%at(bOl~XLO$-`ZSiw@@)CQ~_+Gz& zJydt`tUUfiY9E-#Z2mI#aA;D$lips+HSdCQW#QSh)Z3)Fo%c$!j8JQ10$4`mNnM)&G#{}6uwNIbvO7(<+c00000NkvXXu0mjfNB>M5 diff --git a/docs/html/img35.png b/docs/html/img35.png index 7833852c001281f63a57ff49f1f38773c2e4ba97..9fb422bb5087e1932459469b430d2078cf93ce40 100644 GIT binary patch delta 436 zcmV;l0Zaa{1I7c89Df06p7oIc001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCG*Dl?SJebo)*JF7JeWtnLw6d zgunru;tyCjsu-F089o>=$ecL?R`&syde#rP%o#l3zyT168G~5FnUTc<6j%~2xXfX4 zU|?{8h&yqB#1%I1Y%o~B%F4;W@CFn<2M+Lo)qhZYaACtn4j%3X21c;@6FdyFP|fEh z(LJL8JK#YIrhfxCLyQH7au&rO3Je$jf4FbJu#8vg#;5#F1&~YWx6ft4rykeb5rztMqFUZ#WL34-9De{FnZ*YH001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC8;1%Gz!0%A7g+WGuZRP|t zuQE6IGkh>q1uJJUE;8nSx0!+QUUj!XJHsOe-q#>iEJ(_^n@e5`a5g{!aw0hYcvC3jhi!{T5q`ZN!au^)KMgRZ+07*qo IM6N<$f($088~^|S diff --git a/docs/html/img36.png b/docs/html/img36.png index f0d956927086351ddf7054f2011819d493f08245..8300ccd3740b771ccbddbedf12790dac56ee015f 100644 GIT binary patch delta 860 zcmV-i1Ec)p1?vWo9De~v_ZCI~001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC}I#SZ7qVAzGY@IFYkNbn>TMJ3v4B>4dGW6 zcnK>}X+W?ghD7kOVA%-rRyi_`dT9qxCMtDi3=<);`L~Z6F+;6h3Z6M+68M-ot*bln zw|lXoSYX8SAAc{NM&XsATl|%z8pzXw9AX|ix5~$;={FR!pLXaWiCAi+^#4deod6cI z+N7fRS=QTc6;~Rp71d-O+j+dvWZ4mXLChmGF|fEu7CAg;X{f|ITl#D;JEN;BA3F?` zPD~DKl~yJi?Dn8N*_{NuXVoh=_C2l&tJATKbSAw{VSo6st&*=6Os0V;f@-Llho2#j zbha&d;piQa5sz|=v}&6MoOyQW>X@7_s!A5cN$?BCu)6}YQphqdU#R5RPu|a2d@2;7 zR4OtaqpD{VDtVtUt5apuf1ni7(EJtW1iOmX%+DY7H%9izLjrCMOmD<46 zUx%IZ=6^Juu{hVvQDJ9SIT zyFYWNHp~7;K31^6l-VYiBm0j5*9 zTk%Q@&(bwGk5IxHGFZ}lZb>|S%fMsYmh;wmC}H;oM!=X3&?>$3dK3#fp{RXFh-|bT zr8RG_9np|{jGSTyC>ZS0$wup8!10M*SFhcKFgP$R+qj3!2Ej6Eo>?~b)~XnSI?=zz zo>e>Wymh)Q(Zew}?_r^T*a2?UdA5^u9b~L%OM@tHhmDk7a{&%VgKltq@5At~creKO mwM}j}DdM~z+_tX&wfq5QF3{&rMkLz+0000J@ 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 diff --git a/docs/html/img39.png b/docs/html/img39.png index 5f39963123d52d5f44ca6897174f791416a61b10..753930a8d2cc25a9b746fada62cd0a55ef2ca94a 100644 GIT binary patch delta 490 zcmVHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCzMAs7=~bDner7#JaJ4j<0>MA3z3CDdY%|k9P8pbJ??LEjZy45^(O9ILd|4 z#?@wLFEC5Gai@%bh?4GgLou7&{fXmwSO80^SwB8dm?J7^vNhhTiVBQ=zpn|AU2`=x zV&gZ<`UBYNn}1*uALmIkwnUsutW#;Ei9uTiyn!p#GR1`8ktR$$V^gOLsOelOqDLcq zgu@}EB_w%MMC2R(bdCm<#1$MlB?2lrtNKR>3e>D3g-)Y g3esjP=W_*o1J%`KmeW}72LJ#707*qoM6N<$f=wmnTL1t6 delta 450 zcmV;z0X_cw1JnbM9De{BY!x~H001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC!yR z;tj@&4~_mOxPN)y(fK|W6CbnyrO|ejsE%(KCWk@(cq^pHyr%>}nAU#{T!sO}l}hX} z<&=5M_v>eSz-zoc6b`Trtg*Bn<`?=sgQI<<{o3@kaDRgb>bEsr(y!?5g0C(oUTpxA z-5R1^mG1Mi1KlAe<-B%r)U%kIc$spu@!Q64C3#@LLOa6bd_8q|kZQy8VADEc9;Edl sk1o<7D)ZU>6v8Z-XEo>D0ss5)16tN=|AES~KL7v#07*qoM6N<$f|+vF*#H0l diff --git a/docs/html/img4.png b/docs/html/img4.png index 16215cdca9b00db3ac00f1c40f9a846f34efd6c8..587ad0cb6e67b123226232a45c9fd561282194eb 100644 GIT binary patch delta 158 zcmdnQxQTIsOg&?l?P_NR1_rqRpAgso|NqaNIWsgg^vszvf`WppR;@})O9M*Yy?b}} z?%m5ao(ctW7)yfuf*Bm1-2llrdAc};aLi0jU}!2*@JrBOFtn6Bkig_JMe@{{gob8@ z4O*-d*v#12%osQPE81b=%`nIEGK))5NJFbGOTwY24&ng}49`Ds=KuN?@djudgQu&X J%Q~loCIGO?I?Mn7 delta 158 zcmdnQxQTIsOg+P2tJzl>7#Oqyd_r6g95}Ff^JXKc_^L9!=_vPuSz(L^nZ!9b8FCDH4IZ7lV*oUQ!PC{x JWt~$(697E(IgKR=;o4KotJ$I(8Daimgi z#yg!3Yj|p6id0#YI`wRoS`%Tk!6v2uwJHI>!tK$r$Xl4jFG{d&uu+p!) zUSWnRQEeI-qc4~JdK5XI8d51i4JTxUp6qmDQD<`=FG?IvRI4>I`Y@(>Zp7D;C6R-> zHhhh&9f_nOwsoTwS{bA}M%nPCm)--KQ}g*ULbDQK4Kl`PKku|-^5aY;d2dHOBD_t7}cHs+_6o-8fH z@=;uvTx4IVrvD0fsZGFq)}@EWUWEARD9$2-qgyV@8y7;F(eaUFrm+6HF@%%6u-EID z#Swl2eI*vYSo2I1Dh2+U?#fV)7@++QXwv*l76+fnbs{5BVtODA8D%ttQ*Lz)zt|`> z5`JpO6Ptadn&Xs+w>v+yodpl4f$0P#aT(XMIMZ}_)poi#gZoRX0Wh%(&L)o2mQka+ zXdhbfp;U63DUEr|w{o&vCel>fEg{`nOEP-7I>0&ET$1+HwY<+s`c!Xs96S{K@u+Ie j<0v8o#~)eO|B!wH`Y6Ogq}q=%00000NkvXXu0mjfq)wwV literal 793 zcmV+!1LpjRP) zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*Jmq|oHR7i>KmA`A-KorNniu_9vmNcd$1$*z{C8SG<*DkIC-Cf8~ zvZM}Va0zV$9kLbCAyBBvl%bnT3~4D%`xg{t$l8jA(m_QL7*jgb>ATYppJmzIi@%_g z@9}-_b3Q$tfVt+HYp&T^rAtl4atOu^KsOcTs_WuRHWAgDbOJ>evYk)G%Yu;%OwI9V zD2G6@9nYTfk=2@X@&XGr45x#d;Z1kPqGkf3Y$ODxVK(SDAD5W>wq77hF+mmV+%;D|WgEz(Zw#!f-YbDNOD4%`m%v)8eL$eGJ7EQdO2{TBa5|EY# zQT8IOMtQ(MSV00}PKs(QcSqWm1IQIS+`5jqbvOim(odN!!O0`qIt~)IjuizB%4?j{vo7t_GMj;|PwJB4b}pcm_p?Ei-NTAecxiVaTldHkH3M_f z_G9m|g`roY?$zH@W&Q%zMG!s5;@KK&@3(7>H^4X?? zuUDR~yYvWwn>^1HL2PmZ%#b$}@;lie$~GafTh7KtR7-Fsy3fZMM^I>pkD%R0rm&{5 z7d9VlNOT0n&RD98(J_?;;)WTA>PTlHZ_1&H0VY2aCDAzGV>cD$vc^Dq@|l=){wMki X)-eQHJN66u00000NkvXXu0mjfYj0?3 diff --git a/docs/html/img41.png b/docs/html/img41.png index 7af0b5475f3b3c23e124ef8155f55a5b88c2a82b..ef7452395bbbdbcbcdb1ab162eb358781f9b8529 100644 GIT binary patch delta 547 zcmV+;0^I$M1hfQ@9Df0q;zjrX001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC zze~eV5dNCPrcE0fP(j5Z6o)F*wjknWb}4ieT%t=C!MZqyf`1}dXz(v6>Lx-4w=UUS zgvP-^99nmW3Jy{Sy_Zzm)L5}N`9bdP-Oumd3ornq3`mKH&&ScXX4z0m>R>vhaP%M5DoFS9SN^>7gj)sTH;RX_Y^o!kHI17 zg~TXvGOZR}$$#wiwGCW)m1vE?=I>D-zTbDCMJ3l1aE1Sr{2(Eg-8hcFP(|pYVOn}(M2UEcOje((@fkC?B@l^&cpqCl9_t^$8n0^v?#$fuF`*OS@ zUoyizpt^LBVt)y^?NS8{7Z?~e@P5eT{__)P3&VZ32@DU~8EioWA4dVR0z)P+ZZ?2? zlKc(?K>p#szz(!`0vptCoD6v&YAM5i5COEF{{twH${A2~v7X}viO9gi>i{G)mj-}T zPh(&*;Qugzy?_rSHy05=9$<578KCjVet{JfntTcyKy^X7g+WGuZRUh2@7|+?1_Q$! zU~n=w_(PM0109Df0t{58J-001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC`iB zo_K{%>&_)e(L$bs>q>IJ! tzW(MWQ6$m)X-6*XR$A+NY;i7M;uV?CYN53yWp@Ao002ovPDHLkV1g)T25|rY delta 523 zcmV+m0`&d71e^qr9De}q`voZg001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCP zZT~ozV+uAvC?31#3D|WpUS#-%A;|s!LO*)~Bd$?re__D3*uswizgCP$@Ed@Fm6s}wW{2w?Iz%D}3#(ItyBqDAD@G(SkR(GOT#8kIlYv|S0Ka~G3owpR5&!@I N07*qoL)zbg~ diff --git a/docs/html/img43.png b/docs/html/img43.png index ec712e54635b5108310a36ffd7dd95f8b51bf40d..a6a14a3f5159e944d67e0af26dce5b71344fd744 100644 GIT binary patch literal 320 zcmV-G0l)rw??(OZ3jEwATFE#=48B2ovf*Bm1-2h4M z@^o95wiko1B0Bz34#f;EfY`e{;rVN z$8_y9zXg|s#4SlV!w>t?VvC>Yc+8mE=qTV~z+zxv#4wkgjX~#y;igA+HzI+)VDNPH Kb6Mw<&;$SlmU99C diff --git a/docs/html/img44.png b/docs/html/img44.png index 3c259f79b0a92554dfec149f9bdcb31d6d098430..f806e0d8d5fddedb2a36c8dadbf2ee5b9808e0cc 100644 GIT binary patch literal 4024 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 literal 574 zcmV-E0>S->P) zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*Iyh%hsR5*?8Q%y?(Q4~Gn_cZ7TZ3+vLwh==R(Wd+bHE!F~woNER z2~r6y+|CcET(xK?w1^1o2h_qA?uS}L7&_o4`mpYur}(sST?-F#N6)$Edf%PR3TXqI+O^7P{^2XVrzzK-<%=TO5^ww_m6N z6P|vbcsy{3{PO#x%xJtzYim~pl=7C+y2L54PffO%f0q4;+*6I!9RCg+0vqShF@dkAZcqKBc>|hmGP(}Z0wQqh0 zFj;lspRqdq2dSo(;_Axv1&y5!Rvh=3pTDpUht($c7Regj`O)Aa8JcKi3GKSUZ|H-z zx5lo3v2}!@o7Q7q4#IH{t|5!r%ck5wj*GH+E?7xgL40A2$c>_fj-kNtr}s- z2&Om=-CtHa2C=^z_jmoN6%Ir1536UQl=uCC?sb0)x~#g;Wcp9>10WTUfM(=_-v9sr M07*qoM6N<$g1e^zIRF3v diff --git a/docs/html/img46.png b/docs/html/img46.png index 6a1cb856a7a9029bfe698ad41a1583c1d064af2c..dfafa7c95afe8b26bacc5b3694058e50946bb020 100644 GIT binary patch literal 476 zcmV<20VDp2P)2T;GDq?Ry%-|y4L~(Mn zmrw);p+j-jdkA$D@i+<{oJ6+{jvbPS(9!dg9}^R_LO0*x<2&ccbMkRQfKoi0mua%F z%am*bkE&&5CPJk|IrBp}>WHB7$=U>>2=(@rFVYDd`k)6cZ-%huI_`I2SxI8$L}!vT z2z(b|hm+QL%mir%U{%wo(-tx3V#2bLgyvwS{Gmw#1`<5u%(&8gv3HOFO#(W!U>FUt zHx<{#(A<)scc)?5w)(tXQbtz~OYd+hr>Y(IKlSMpm$te%%}cxQkv|~xlF_1>5$#44 zmumxO{UtuVps8_OG!8YE87CdHXWAZ2%h#ycON{e=!EnPyAiLQFFuKI+esI*r5y zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*I6G=otR5*=eU>F6X03A5+gQ);G3j;6~pz<$()iExGu`mGN-V4}t zaG%4egMlBbj>&{|G@$DEa2~FM+pqXLkl5Y;V$8OH>EJ6s(ZL>|57%M(N#GfS>0j;( zAcg_&1E>xOR9DF}T!FBd85kb4GuVO%5H@09n*h8>bey0m&vHt~fmNNVY z5fH{S2COZ-XYt^%T8a2?zZdh9Lt`mn_4HD?qj?19b+U|7h&{FlN014yX>k{-t60t~7}7l15a8hpgS@Bx2N oAp0D|YEoiZr9nswnjZ220MaE-Rasl8^#A|>07*qoM6N<$f?^ZNq5uE@ literal 440 zcmV;p0Z0CcP) zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*IHc3Q5R5*=eU>F6XfC%8g52ga(ENp;z0t)v6SS9097z-<4GQgsT z`y5_9XaJ&eG7)+>(DZybkF1B=ulPHV*xmqQ%(h@)uLp@fN7cg~ppUG_^pn6d2GhUX z7eEXH-UsjI0tFcxQ1!?&TtU|Jpq;@MM1Zgn1KWfL|AB&KcJDv{uIKYRT@?Q;W%v&w zAdG1cCYm13eeZmc^>8LIEDZn>Aciu-e@Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCS5dPAnm^8oOrGkeL4^~CY3kZt{>di+8zJPgzP$+^3)_(`^sONy<)ga=jVDKU$ zQtiouhu}e~;LmQ7wrLy0;!Quu&P-;%o!Qyh1qNUQr9Hrh6I;=so5FeO`i&enMS%@9 zKwx}dc9|*UPyGgADnIB)Jd6R{Dj-tJl`sLQc9_kNBO^x`2||!6D(ZApir^ZJ24q?b z%cqH4Sr&9ehJOioIdq34W%(n}I!fV?d88-tdYDfgPnHvBp>uV;6W;ATaCD zSPh%HQJQ5-TCI76MV|6pH|efr369WKk_By1mXkmsvY@VafUZB2pR8p5e#8G2h2cBC z`Rer9Lsxs!?5av4IH>oD@`gPoH@f7?HX*=TAploxSAQ}b!)l>v;}FqYU6o-H5{}7uS*DC1d>H|pe0Yu}hNEQdT4q9|5EhxA~L4O>?>LXlma1pdmU_@Lc z8pWXyFF15?sJZtxO{&u9-ZR{s9KJ7{b8>-EjAB@1f2kcMI3@E(>DXh#ohvuWrLIui z4OP^+$kFBJH3QZFQ~2hPv8a#GL0%^LI?nj>Ed;WiOBldbieX~gdx$yB`kuu7Q*?Q+ zjnFwXQU?_%tbaHUT4WnBhoWc--0k8%c(0ay9ziw(@?n6KpB>maK9laZ7yVb^5GwI? zwBnB10_gxJ{)+=lV$jJ@fvc82&DZ3F^I9N5&OpwAn%uJNO?8no1+F`U#dn}uC@^Ry z(l_bG5?JJD6@3HPoalpg|Dp8lxxI{zQuk1sW6dkIx2Gh_e&002ov JPDHLkV1m(X(~bZD diff --git a/docs/html/img49.png b/docs/html/img49.png index 8117051133fa01e259dbbee38856fe85a3a2509d..92a7642371b280b1051e245b882747077e2eb305 100644 GIT binary patch literal 572 zcmV-C0>k}@P)@Q@u*VP!#?W(>C@dG3X*FcpE2CG~f#a6r@{6$Lb5% z7ZAERI2b!RxmX03AZ{)h#3{pFozy4r>QpMI_vS~_S__rB_(9G+=R5cOTyhTZg|ZYj zgI~fd>M^C{+@HoNz*E15ftbn^4Ys&UQ1*d>IrwrvdUJAD%3a`1@NH4GCGBhILLP}a zjUSI2NLOc*&UXf$~b=6@C0+*uE zNCqw>u;o}ZX`Hs8u^`C(uP?~7b->5ckG;2sJoz7C+HoqsiPOCj(?<_8#0s1Y;NM@o z9^32lYlmWd_VbC7LxFOdC|w+jqe!z0>Oxy)c{fs~+TAAVebGAR@ zY9P;IFTIH{A?g;-RWvzDxO4RyEIuJqSF=FEL8x42HAtEHWZ{jpQ_O%cG26=Qa{Rn( zE{kiO=gQOt#mr?~Nk8v)aus*hrkRL20}gPD5#UR)Xx@wx(~A!mk63^w4#^_`0000< KMNUMnLSTYHy8spd literal 551 zcmV+?0@(eDP) zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*IrAb6VR5*?8lFds3K^VrL&D1tOX1j%b-n#k+MDzzlZRbJ+>CnwX zWgSeR!0Q@hhv@6jeW9RBWF0$cMAxt^BBX5~!b1m}*;N}$G`$5qFvGsjzQ1{A-WlLu ze?^g})kr&>M7zSI9nhw9tG3oLI~%EbKQ^0yJ{35w<8S3@WAHQwBt%0sXGzCZLrxxL z;Gtl6twJsZ!J5SQH;}j~(i!b12&eVojA4)4;YxzNcmf4j>?j|lZ#jP>fV;7EM5s(* z?4ZQr-s;L5N=Gux?$9%C#kz;i3!n~9;5kbuawS}|x*>y$9Sb8MZwkoRebxds2Y02e(sD{N`B;55`hVdXeMW7 zt}PT40X%xuG4K>(-Isl)uU0@wLk|Q^Llf@NC9y;`c>v66CHzk2(z|TfFZt<)W}3X& pTIqaG?`b~YwZd5%R9a`M`UJ~Ng?zEV5IFz<002ovPDHLkV1fpF>$?B| diff --git a/docs/html/img5.png b/docs/html/img5.png index b217500d8a057c12cde3de5103a4f85ca9b3234c..8960898839f77c9c621f4c715850fef1cedf1c2e 100644 GIT binary patch delta 180 zcmdnZc!F_)Og*FYwFNZ{3=FyfJ|V9E|Noykb7pyY`MY=TjE#-YoH-*XD7b3Xs*aA1 zw6rv!Di;@*yLay@DJkvVy_-{Vh9FRgu_VYZn8D%M4UoL2r;B3<$IRq}hGu3SCWTi_ z%xVeA2^t5K&KzJlGUtX$LxZf>{-#yQY)K1Pb0T=1*mZ4qJ!GzV8Hj#hIdqp#kY)F0 gmha3-JFVdQ&MBb@0Js}M-~a#s delta 167 zcmX@XxSMf;Og%%+#R;z%7#Oqyd_r6g95}Ff^JXQ5R z1&*HF!|1Z}LmWf5kt{=SkbvnmfmeDhmly^2=rJmsQrNne(Pg8|flT9>3=9v8Ijnxz S_qPMhV(@hJb6Mw<&;$SsZ##eh diff --git a/docs/html/img50.png b/docs/html/img50.png index a2b5d2b9ef74fb1f5c60f81268bcbb2b65db10f3..5dcfb65a81d012529e730f8859552efb6bf94e97 100644 GIT binary patch delta 580 zcmV-K0=xZ_1l0tP9De~N5B5p`001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCOVmkxhBx=#-E;Tek<^aJDVoT@_G-e0?CTum_+#DC)1d323p#bz2!F)*s5@p~*ffwiWelO9tAhoG7 z&%Z+D=`zwOpnr!zP9y6$4z(1`+;obZ3x#kt zr$tx-O$L+0$ayA7sQRV> z)o?eP9R_sBMJ(49dE`k<6 zKr7-Z(N-J^@xY;iLQU=(o3_&0Zh{Yz9PjSOy}K9SKmJ%q@3b;E7_B3m98BI}NbO&V z_H$#UewaDvA!91!DQmWK;;>A+%S#i4BIn8Q!UY4jU7<8>A{xh8Gb8h@A_}yYmEkr? zhN<{TPl}xqA%8vyWpLtrU)%*^?E(t0>2psrx>dgS$b4p(BkS1inq7U?mHUcsFA0H0 zXBr73O4mKoKvZSOtlM1!QVGimdo&61rhp`#N)4$8O~+Z)1?!nfVsNyEf>%lfkQ#7g zRa}WNw90_Nkfg~I&Q-eWWDUd~Q;<_vrg=YjwUUXT%6gDoBGh|Bl7=uvM1}vFC;Zt( z(58$eamA7FkcvB*fV;y-c{{f{PmwN~ybC)URmCIEUk#2#DaP`mD+L`R@Wv8!c%)#L z&d`cp$1j7OHt)O`8ei`5|F(tUyciN5`+__MLf`QPmJy02bQvF&00000NkvXXu0mjf D+aBY= diff --git a/docs/html/img51.png b/docs/html/img51.png index a5da47f0af7d8c5dbae05d5770e129208795be08..f6335409c72526e4b20d54dac87e20171a8e8aaa 100644 GIT binary patch delta 223 zcmV<503iR}0rLTn9De~^#h88o001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCc5F@;D4ELiLlz%&n-WaYn*0I@V7 z0b=(BqD&J@6DNH`)61Taosf>ir$RWu!EPk5 Z0RVC_Ak}g0o?(R9De{S!l>u~001gbOjJd{z`(P!vw(nrOiWCsrluJg8FO=UKR-X2 znVDv0W&i*HGcz-djg47ZSz0%vod5s;0d!JMQvg8b*k%9#0AWc)K~xx(V_={IkW4?c z1;LxZeIWwDYhXQqtW*j`V>W{WuL1+ZB@mmbz?R_xlK=yQB0`AAS(JQI0HM&4p@D%z zfJLAYF2X*6-JlZLtOR5Z2a2VP#Cn8=U=Hh-PMH0002p-Q6N0BD=f0VlW;m00001bW%=J06^y0W&i*Hfk{L`R2Y?GU|?Y2 z1mXk+2spsN@PGjZxD_Du?%liLVlY_`1_VHshXR8OV2TA@oMkw`w*g|afCHFfWMg0h zQtWJOK#EI%frmI#c7wnMqAlfk%y0T`I#tIGZzpPl4Znf#EZV!&Y~J{{yoC1A`%m!+5XE z0IrOcQ%ZnSAdq1qh!Zp6KLf{x7KUyRM?U%k$ZCi(#)lws9@}0{{R4>ltk70000mP)t-s|NsA)nVENYcU4tY?(Xh0Gc(N0 z%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001bW%=J06^y0W&i*I9Z5t% zR49>SV1NR4B^c`)+W`dzIN)Po;AXhSaA^UM9l(GDcwh{mVt@A67Z@0n7-lmtuxwzd zX21tHP`PZ5Ab|x;3^$mVI2qa(fCc#(6Y!dW4$xFHDKMZr7HH-Mpc5GiW^-KemF8w} zV_;HJ`oO@DKLO+cCWZ|YIGGtvLrvpu0J)QeVZ%lT-haFh!3j(xxrh+Z*~`FGBYVhk@-MFnSiSJz#5Q zNM~RumcM|akl_?3gcZ-maDsv1w*#}RLl}c08%G2G1_n^LC@JZKYz9Va2t?ru0k#7` w7tHAD=Qm(jFTnA?(E(u||8fNeUXUjMsG&HjtP`0o01E&B07*qoM6N<$f&y`%3IG5A delta 379 zcmV->0fhda1BnBW7k>`~0{{R3S3-~30000mP)t-sz`($>v$G~9CV+r|OiWCsrluJg z8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001bW%=J06^y0W&i*I2T4Rh zR49>SU>L-p{vHFn#|AJn0k1-CUj~M+U>2VOeuZxW7$64ne}BNQkj(+2kojA`z?Rn) z4D*W}7`8mOFJO?jHb7Q5k9{F4M1V(tIsU?4PDSPf=6FTE1cpZT2B0008d<0{{R4@aXa}0000mP)t-s|NsA) znVENYcU4tY?(Xh0Gc(N0%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001 zbW%=J06^y0W&i*R=}AOERCt{2Tx*QnRuw+>cxOEikEhEDEszq&O-b`;b{Yw(LaH#S zLdpdd0t1qn#iQMIc0Q^krP6tohfr4_9< zX{IZFAQcIB(}tugy4;5!*B-xSydkUXe(88T*XN#l&pr3M=lI%NfB+PFtlGyCK*PQu zI1&|405qt%0%00L1;mCYP=JeG6OvEN0(zwZxnLh{4KV_^Rac+{xmv$~$Y}sr-!Gtf z0)hcI_Y0&1H42gT8mu56B2dQ?hBr`JzlKnO3NK)SH(zU0W$*qeJs7|lE zmbSVJzPf_S@awpmHaEsqtwp{obOw`&uRf_=BF*CuswPz5pxgB1s!!ocB`tMzQl$<4 z>SYa|h$y-90JmUifMDkZqYRT`QtSBBZ1}5_*3}KPdNI2BYlvP**<{B({fN2u&&0M7 z+|@}^Xp?g{vE-llQzzqY1(c*SM-3JT>g*{k*m?yw%?5E4xvjfvMJ=Rth-W%OFQg3H zZU$N>w%4WutrOeZnOYCSWP=>1f~`M@Kk8fHANe{td%3^$d`NdfP;3Vaa`Kqw{CJn? zpDa3)T2ScpC-}^4n@j`zOSFPYhDHP1UUHT{r*-0XMGCb320n~cv$Wm~YyB0Q*#6c@ zVU>(0-@4E!!&KkQO^;wzJo5I+RSAy#KK#kQ8yI=I){PI>HtH*B0PJ-aRiEu5ZT+)8 z+eedD+8Ya{$SZD2CQAqb%sC@cPz?L5Ob4+tGc!ZJFRE2r8IGA_`UXPgsx6A>v42`J z;CMMYMAtK-6I$veq7^8i!+1SX&p0JWBga0g1=#2)>w&22mI8H}10Y%!Wi^J{so5#0yLeZL9vx8 z&_#gE#Ll!pEN8GKJ!WQ1AijQE*PNnot7QYIuZyrV-fG9!ZK$tot3@v%Qd{VNIK zOtz!4jxF)fDZw7Q3&AMdq`N!L?MKrg|A@*ace_z?dKr^|n0&b294!Y_ZV!r;xUT5m zWE>V1XqskM=k~@>JycM@Lr#)mQ6s;~BxF+O_4&Gr@587JRR6>xjU-sT5MTG8>DXa` zxLwEYwaj{muX|-@Y8@!BrgI=6NJ=)bV8ft874K`>Rkq@;I9v-}=h*fSL4>buUYFQ@ zYmBdLw-n(@g0F2}Ka8VsystHORx22*&exaIZoP#(bP0m_+Iz$xMXngs*B`n+Td&(E zQNC8+XLH8V7TJ;;1Ol-41!Pj^Z|7E!ME#YZ5;oF2c_R;M8 z?XXp&Kjcdm6+Ed4PtwN<$;iE)EVFWvg4czanFi(ct=kNzEY#QP2ryn>U^`Q0q^})b zV^_xe+VNipn(@9y_Gw#8@b#m1Cr-6jov%yDnHlpnw~cTlLXi1daxqKV>@=$A1LR(UT-!w_sF=m$;6Q z4!)F9GU-;?S;M6zSJ2tX@q?}5WXlIRMO6|OBiC>Y;Wj2KYFH|64R;eh6HCRd;r4d7 z08K0vvxdX5&(p8M0+C9^>y%ReUzFZT^~90nQ;8ys*M&t8=l|f8h5A~hjJB{w7!@YvI_wT=Fw{V<|AISQxH&U7w9F|eBAxap#d2@NMHWd^6vC ze4@rF{P^jw!?Bve)wAAFrk!*7e!sr528#~^+{YCu#vI>6y!u{J3$+~bBq~#M+52iyos2BTn{k= H_ z95FDN%X3{&4&hFk{3WHMa0;uSG~wT{gDOwt@;7w-MSz8^JGdYh#l1QVm;G@Wet~arU(Up3 zUt9(_fLVAj6PNvQxzNMwj**GWzPPMzI;-EY#^n`+SzXs-UQHVu)k1q2p0e^>9u4WA zd?j=@$cE8h#B=$1{(?!5iWPX|F))|qr`I3l6bcXgu`6GKS@-(DTy6*^-@_`XHS33P zr+afY)w1+3*w=9>2N~VDksay`GWFl*WH=Y{;TxHDW>M zUrWdi#mZH)QTo#W-?h$n%bL<=1&{R0NC@ivr4i3G-ytb6A`C>V;12Gh9hlz)(Ox6Q z|3m+1h2blPzu9x}ybMAQV5A;o;J9cW;uKclZg{pMO_NNw;PzGc*9>>_05E64VihWw zD4UEB1_D`fx9j@tbj=yTLrY!^8HHWQ6;l1TmAef186Coha5-MYILOU)>;(hX!(10H z4<(?H9-iRj24CQr!u{;ccJjD*-_^#zO8P-9`^18=461H$tkAezw#2$*QK^eF#o$)KgRFodg!e#%BG9AKg#u}Gz zTrA$a`}@XnDm-exPM8Tim-j9$_6r<_+oEg7b6Ks!3GRwXj|EV^#>)@R9#11`s=Hvj0bR1MOD`9aNPhj1GY4-m&*^xfUj*rU^+@+p1a9o<^lkCB{9E{75 zYvU{jg>acB*+azT2fJR9?c*{{vImdL@Hv2=8)00wlkDZ>^5*5`@>-I;hBaI_{103m Vp)@h+I&=U4002ovPDHLkV1j}yuuK2| delta 1724 zcmV;t21EJl7Q_vZ9De|Z@4}}5001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC^vv_z4z?A{GLrk%ljUZ=K1;C z#If`7_iF~n zyo-l+9=p068d_`X6_|D`C!Eke4Q}tngS?-$2cCEU;AK44DmaHjLmObZ_}fwm8Lql; zsrPOVwSBF2U*A^)cQ3#cHf-kn#qIXFcDvd!yjv_eg?}+L;|=&O&hS(jystL$W?csZ`ztH?(V%f&41+U0N%ltzrYQ?2i5Q+&-riYBwRtui+BSFU&={Dr92$PJ|1Q9zYlqNE zS?gi60e^%8^C8HH$HA-6gwU{czrWIlpP>okO&4_3IrOYm|F0kLUIV*cb0Sw5NVflw zxxIkLGQa5i1$vD7^I)_UG^U}7 z=a<+HBjZ`kWp6jU-W2fs%&=2Jh8WLkE$URZ2~mxU#o>ebHSWnqb? zdbM-+vTzhl^=jwfvTy`VHEZYIWnqb?dbM+SSy-Z}UhN!S7M5tL7jMJM!V*mr##@=D zX~bKOrYR!O(9|eOTRblh%w-JZPF`l57Bx7RF_2ka?r^%doXlkgWSo~foPX{vrgIqs zndRj(46D2$fy*I~SzczGPQYaW$N{Gla9IFy!07~B7J(daTA#}zkONNZb6JSDjMGWD zEW}&JX~Sj1Wur~h{A}?+s$ljG{uAn11Qo`(oEM1LJ7X^I*uOR@O`!J9n9En%*DB!> z&E6Sv*~LxvK)rKA9>QF{gnygtnBJMf<%vaW!%_9l8eHz*JJY$W>Yd44R`kwvE-QLx zI+qo_Gnvb(-kHv2Mem$|%hA1aQZ7rqb1E=3MBaX~)}3oFrt0YO*EExhBS9Lv*ghID zIxwE)+ozvuACRXJ@GRawEu4_h@hsjx&7Y9;$8#gfQ0TF<8_xWqY=79rv)=8~5MN~L z_SmsSwr-CdUu5g{*l~ebyT^_T%$hxRe37l$W5)+(-Mkzdm=ot^5zp!5WrXK6k!tX~ zEwokRZ30Ec+pY%XGS15^-X<)v@oiecNlmgM8{eiCoYWAC?1nsq@-mCJiXxkQo0h7` zrsrivkxkFbsv?`7mo@tr*&2Ddf00ek%ZehKo|hFxw&8Lj87>3=Ap(J|V9E|Noykb7pyYd1z?pyLa!5jg42WT9uZT29$Sk zak+cSlt3=9SVJ|V6L4jkCLd9#|DT0=vFkB`r?Wy>TbC5wxT?d|Pn z&Ya1^!;_Yl22^WoY~0)18yOkd*?9cbV z|IHarWTbpZO<=q^&iOg*E|kz0Zc3=FyfJ|V9E|Noykb7pyYd1z?pyLa!5jg8NoIU^`2xN6m^ zw6rv!Di;@*yLay@DJkvVy}Nzc!S_HR#*!evU92m^l*xcL< zx+nHGPM_MS$f$Ps^Z{0()PO_>wmm$o3XZI7Y>aITY+h~L3h!9+L{xctHcv76?l{9( zQo@4QfoGm6504MGgU&fl9-cTZg=;IBd2B=#jxCH(U25qd#o+RrXMd2UtQ*iu22WQ% Jmvv4FO#lPoMx6iv delta 192 zcmaFLc!hC-Og)43;aBYp3=9SVJ|V6L4jkCLd9#|DT0=vFkB`r?Wy>TbC5wxT?d|Pn z&Ya1^!;_Yl22^WoY~0)18yOkd*tGq`w1=v{v*Pi+v|E(0F7txboFyt=akR{0Cns|u>b%7 diff --git a/docs/html/img57.png b/docs/html/img57.png index 3016a54aa5a51e29fb8f5c4b859e0e9c66a24650..bbdf4b88347d61afdcb9aacff51854eb80f9813f 100644 GIT binary patch delta 408 zcmV;J0cZZ61Em9y7k>@}0{{R404~?*0000mP)t-s|NsA)nVENYcU4tY?(Xh0Gc(N0 z%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001bW%=J06^y0W&i*IBS}O- zR49>^Q87!zFc^JJORptY6Mw`~0{{R3ymd6%0000mP)t-sz`($>v$G~9CV+r|OiWCsrluJg z8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001bW%=J06^y0W&i*I97#k$ zR49>SU>In?JONBa97PDR|NYHi(vPZ)$$%jNNO2}0iPZp=K7T+rk52(ea62H0_%bl? zV_3`o0Z4EZAc^F|l$C#A{lM*4{GEZlp7~q90OxnB0E8;ma|{g8V0&I(;QwIyN#Gg7 zySWTJ0t}M`%z&c*K>+9`_5%zIm0)H3A9xKOv@_T;JowM>h=C!UVGEL-EEgCUK7d(V z0YEdBGW=%%6Mvis8QPJQv3-Cko5t{n6&MCf1DF*iT;}8hvVg(Ydlv|RmhwDc;Ddz6 zTZS*}+zxyS8#oFL4svr|;7dUADbUyQ5SHxo9UD0cST8@|-_3AuBZITKvH?OFr}Fa; vQ04?y0agYEK_G*H6DR@VAO-kC5D5SZZctNSIe#+%015yANkvXXu0mjfDp8%t diff --git a/docs/html/img58.png b/docs/html/img58.png index 31995149ce6bcc0dfacd1813a31efb496587aae6..2cb46436b5914a26d927f938194313d45c650527 100644 GIT binary patch delta 809 zcmV+^1J?Y*1-J%~9De~Bz5Xfy001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC?H+LXJj^yrY3zwiGD!7&Pa*be>R)0ZQ6*Ph&ho%r4udva^ zCDk>-tHjPlG=+^@NGgRjQHg|b&hFmr?PiaFjY!A`Gw;ot_ujmDZ}u&af|hV}EF>Nd zLMJ8y8~sW99PE7(QufD-uh_)<4%`FJ_*O{}vt}5r4A|GZxe{#lT`n3^x2Prpk-F&aNPXuhoL^hIdSq`sX!~a57okfG9G3 zgP`X(314Ii#n_FGK+|WqV}>I6n}O^tt`j9G-wF+jnjCs|Ux1C0hQo}2C3yrhw;Mfo zzZuR2mZOLP=`yPXBAk#!St>;mF5yydb109AbU|?~s(%bK%c{v{86Wk6Qj}HRvYcO> z>s|@q$zy% zt?_N$@c8a} z8n`!JK7Sw5>9o#uHdvR{?2M%gqdz&IT4q&=?$H)R__b%$c1vV}LXOOo~Aq8Nai zU3mmlw``*_fLd7=st+7t9fKw*56Zy8i6^mHk*eJf4>6B|!`gl;`umJV+9hkKK?~P# z62z5TdrWtA9v)@nC4AT1O~puRYbCYA?twF2 z`#Z(T&Xmwt3fi~J&bej0Dv>6eq}lr>xK1|H$MKjY*o^qgxjHl^mnT)H7r>{9Ta_p- nJ0d3+Iyq4eYToP!haP_bVc(v(ZZMJ000000NkvXXu0mjfvY&v( delta 691 zcmV;k0!;n52EzrA9De|Ay3V`+001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC)EM9F z-HiTfW5&HeuWrv~BH#dwxT94Q%IKBx2{^YiYGbn)^0#NFft6*TndF?;p)}HT9yqo$ zYGaGZmOu2_1b+^8aBirK6ty}=ZLE@<%&W+p*BzNpk38KmQrMGnEpwMk5l3GxSfPq^ z{bVOal3`yeH|PP}6584Vj7FIm?JcgySp0rbFs(4FpqGBl$$}*ucVZQ3b8WFA6-ma} zs#m8*oG`r`c;sy|qleCqP@gV1l2+KTu!~VkmP`rn-G8k}C+_-{WJDF(jGVyd;pSz0 z#3VCr?9gQjJ!D#8k3CbMCW{$6rGAmr)}lr{(@zzwcM2VfkPYZ^W2O~WNA`-IuX4%x zZc$Gz{Qfd&YvE*ACDejCoToF|Rl+5D*uWW!j$w9^X@$+9o-t>9S^WK?@Aed({QN9( zH=pAJ#ea`5^V3FUA05LlHq#2*GkR^*eI<)gxgGFX`F*m1T#!g~R$mA*OkpfV?wd6< zSA1-I70gWC!Nxot!>J3BR@g%XsH#E>z_>~|(sKaEVE}u9L-gKJzor;1fCWM|Ptx7k zS$-8J)c0mj!2^LBLqZLpNFyDXUQ!JKb=UzdCev)(_F=`?Jhfd=}& Z^cQ!`#o2w$mEr&Z002ovPDHLkV1j`OLuLQ~ diff --git a/docs/html/img59.png b/docs/html/img59.png index 691856369d760220874d6cd13a612d47c764387e..0896a6f55ed36a52122c64b4067d251836e9bf66 100644 GIT binary patch delta 264 zcmV+j0r&pi0hHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCQk!42! delta 202 zcmbQubdPa@Og+QIxso3k7#Oqyd_r6g95}Ff^X7(z1|J`vWy_XHN=gC_V3Dzr2tQt1QGEHys zIm}XLbZwZNsGrR|L7gv{UGPCd2V>!lrgIGk7};hpI6r0zNt|(jO-$e_?{;3D1?OrS zr!(I4>NrqhI=eGr9b<@u(gCFdj1R3GS|2h+FfeRumU{cGr4D2rgQu&X%Q~loCIH54 BNc{i+ diff --git a/docs/html/img6.png b/docs/html/img6.png index db670504b7ba5ad7bd32d3b4993ca9da98d08d0e..d96fe9634d1b3d33ed767f91529123342654fdca 100644 GIT binary patch delta 360 zcmV-u0hj*B0{8-u8Gi!+00ASG{T~1T05(ueR7L;)|CyPYcXxMHRaNfp?lUtp%*@OY z5fQ4Ys)&e)W@ct!U|;|M07OJYI5;@n-Q6N0BD=f0aSGVv00001bW%=J06^y0W&i*H z@JU2LR5*?8Q`vIEAPkfjY>v=i{r}H~1spqWm^PisQ?oP3Sbwa9E<`p&5i2SKEEI{X z={cdOZKgQ@aRbs%@MS%Oplw~SDQxB6xEhIoMG?vEq{Wb0fI*dtP<5f(`a{~@ zzB$krQ8U4~FSawnQCW+jwej-BG-rN^R+D~|#4QT(JOZwORtBvnHOgYfPM1>{fj5gh zovJy$nB)J%bYZU@N}(})!bgNVE3<*Rwx4CS;@x*Ti0cLD-ZgE44vNkU1`B!LA8+Db zUFmvQBHv10cb<88Ih>Vv&S|crWc+S3%=84mGe6Vy4%`5sMg>Z^TKP%<0000}c88Gir(002fLVrKvV00MMUPE!EciJYfM00032NklTD zNu}%SuFHs{hoWXJ-Kp9kFW$&?;GIajlnk;fsQXauon0EqQd;*Z_`FR@w`=MeWDB;~ zASf9K$df`Si)*hqBOSiJ5#}-S84)H#p)sgTYZhnEXnAhAJ>H4fey|zsV)4kRkJkdh zh19WE*s8x6tuYF35qG6RZ>PIZY?;@Om*x&3I!gQrI;DT;4@2KCFIA)RBi%3n0000< KMNUMnLSTX#bcU1w diff --git a/docs/html/img60.png b/docs/html/img60.png index 3a198f8554b389cb8d10373f961ef9966d984d76..31482d5d5916e0f590726df589896c218bae8fa9 100644 GIT binary patch literal 1916 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 Ef(^oA(*OVf diff --git a/docs/html/img61.png b/docs/html/img61.png index a166a3f67c4a8249fc9b8060918415352cc37387..add7a3da12b12943ded6db858505fe44c7574c84 100644 GIT binary patch literal 3748 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 diff --git a/docs/html/img62.png b/docs/html/img62.png index 34a1d28977dbcb547609cfba150ac532205da7eb..9c888139bf716a717db8361abc098b317465d1bc 100644 GIT binary patch literal 3122 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 diff --git a/docs/html/img63.png b/docs/html/img63.png index bb04ee281a7684cf7ebd35e56a712a4a1e858717..4626cda848732af34978b56fe38e836bfeb8e5dd 100644 GIT binary patch delta 348 zcmV-i0i*u60`CHl9De~_oI0)m001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCfGO z1UE5sO#E?xfmMy+JxHjv0Vb&p3?im2Yz#6W4&wn{kOA-%nC;-tFx7zpsOJJhSO0pj uCV0Fs%v3t$!obrg`3<{sH=(;08vp)?y~`{XKa8;@_Yai>mkCN40#}-GP`#m0A#&+z`($H4l2xe08^6X0#um&0xOW@ zyZ|@$ftIjc q3xEk@f*U_@NF9KHjUpaNq5uGWB{zq2iXN~40000Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCspFc>f}U0~S2z+#~M)&X4-2{0)Gi2$Ht zJ_ev-ZUzwNK-soaRSaT2DUOF&9NUyXajM#0FXEbNH^S00000NkvXXu0mjfXZ2Y0 delta 210 zcmV;@04@Lh0p;5_f@^MFGm-`AYyK)&udI2Mi3H=b#Lh z3m~ZnassnJ=I}cdRAzz={$lDcAOK>pzPkvs?8XnM?KX-8oJVB<08U>RK1~pt=l}o! M07*qoM6N<$f^z0hKmY&$ diff --git a/docs/html/img65.png b/docs/html/img65.png index 840e98508fe53db0496cd7043ab0f280552007a2..0f08edcc6b4ad78ec26e694a75abf78f00fd8b09 100644 GIT binary patch delta 227 zcmV<90383}0rvrr9Df0=&cpKn001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC| zssL;u%yCRWQT`$ZwgV7Hnh<9uLBM6ez;yu1zI}m#6~3}$9#0000pGc%2ijagY)+|jEE00001bW%=J06^y0W&i*HVo5|nR2Y?GU?3gj zoqP9A0LtbHU|=_ZvVjb~4Nx{`0t3?lD7)K%;idzWz53m|hej}S%8|^RgUbZp^1?OMu31QiPv{2#jHMN067V^g00000NkvXX Hu0mjf-~mxT diff --git a/docs/html/img66.png b/docs/html/img66.png index 0cb6f7f2055971aa47cdacbca58e6308d4f4b050..5fc286046de65c9e8b31ebb08b1ae4882b8d51ea 100644 GIT binary patch delta 241 zcmVHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCVF5dc!>#227MuW)+YJUAkZKL!Rni61j9eg+kKq6> zn8$DctYwlGL{$L;D$Rh?JOp6+kjF3$Y}jfgEfWR?L#VhF1A{gL+XD!PZ7&038SkI< r5FWDuvH{r%NSsS?y4bCOxdI9R0ed9`_3B#m00000NkvXXu0mjf)FWAi delta 223 zcmV<503iQ`0`mco9De{|ZZM4i001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCh|NsBUz?lFQ-^Reu!dSrV0OhqXF#KWQfSIwJ zfkBsnD*(dbJj%egl>5(52#@>x|NjDT!#Ns|ox!yMnKx$wGH(|$CtmF<5xxR~Gspmy Z2LNtVExL*MDTe?6002ovPDHLkV1hrFTUP)8 diff --git a/docs/html/img67.png b/docs/html/img67.png index 8be7967900ae804f139107fbe5ac58114175e0da..0fe6d6fe0e90a9ee580e1210225646b30c9f0c05 100644 GIT binary patch literal 2398 zcmV-k38D6hP)s$RYK>h-HvRj+CmU>tbzPof15czi6W zLCTo11SNoqa6sP%9&F5mCICvaz@W%FJtD0A=oKk64b^&vxe36HLzs+M0JydUw|}_= z0aZ=ZxQgHIOKa?87EauO6MIAD?LNx1d~$X;yE+2{Q-@GeEYLHwsIS%T=_-BrgDf<` zmu$#T)PQqx6ISkFRVlz>hfVN3tX5`8FwFVm-L8SDSjx(f) ze;EP}E|xO*2@G_b=E+XHL&jGOxru2S7s^M0dP;|6q9z=iswx#DQqUvqMNjt;Qe6hd9>b!*Oq}qb`R9!MpG^TD*BskfX7IzR<{&+Da^)kN_`LkvU!f;| zPl`%E0H0emP~-2A1=G^m;rg@XPkW~r#?c3$j-kgiI7$XrSK!4;rFt5E)Ayd){#Q33 zHibgedYM?K1G)Lz^Ug;kwKoGDS(IFFrD1AiUxUbQ^>YV7SQb$ z!%;m_itOd|E;JgGGzjOr=omDekp^Y*Dv~_(m(`RLr%;qDHN&aHxWJL?7*wsp0CE7c0dh3!<9j|Ln>t55I;+>!_m5u^!6de4i00)AC zI%ml?om3b68@T1=J4$f7!8lq9r9ED}X?b}b>qRSpmk&1~go~77Xmf7SH!$|NtIAeX zE(on%-|=a$f(?;t!!^M-vlWa}CJYY)x%OAtqkh|ELNnQMzL|N$Rsk*^+VR(En>#|% z@B0H^hJ`h3y&|_hm}%&j;L;Xbg;}@?o8A>ta|tSTl*s7wOz@T|%M8nJaew4qb(oFv zAP}P%#+%UAA2Tz;C$GRiL zDayPNdEWlea1ARm$d5df&!8Q$7aJb7X`>|%3DKwu;`KYTfq3fGFq?iLaOvUn)03oP zKf@%zL_f_Q!0RV!?u0FQ7b8*au0!$o%*2PR)h8uSB%e&u3cXC3UP2Gtgc;rHpoOu^ zKVWL7EYbrq?6DH>A}l+)8yZxYaWn@mlWd?ZdHfERY*tg*1$zqSt+HU4J)Raycn8ka z*~9res)pI`D+11AD;Mm$NN90bbB#TC%w{5w1TI?B!I}%pihs+iY37cAld5bucU?G( z1B6LFK;$8_;LD=Vq3MS%Ij_E&921#WeXrgfM#W&o_Fv48u$6<9rDUmuX_So$4Vfh2 z3BfBxo_3nfQjSB`Qe}_I#N z75hs;MsTnEggW8v_;VE|*nGHd&r~%td%jVALKEyb*0qblhQPe8{3iTV$GlDx$hRRV zc_Zmu4hrs0aPkdRW&%6-_2_L{rXMMR>x>eV=$R^YE7~&$N{mco?$?QH5Ug1FPiXz~ z{VaDI>7xIkmz_#EvKgNkqvM>2N?+Ru3y+Q=_Wy;KzW6l;v%`~V4f{)uM5pw{eaSs2 z=vQ&lp8l^5Ne30yW}d?(@eVH1Usw@}#@Yh3&jl?3&zHZc9P~0$Kkxs|j49mRdkTpw z$3Sc2^sbz+h?u>+oJ?2Vk7v$}_8h?MdLR`e?%uz*JOo~cuLJ(k+a@B&1FZ@FI4buM zE?=%F3nlv=vRR5q@s%G*T6so1k1dEwj0ezR{C|0MuE z8wswoA9?{;Y(QDkz7H8##6xjOp4Rd; z*+Uo9(ZA^!jT+{GIX$)^bqmkg%*6PRvc!){Sp~76{%e5S@Hl*jA}HUyrEFQndZfK% zYnI|+ro7aNP^jnZJm>=Z<$D6Wysfk5>YCld^OsQyQ}8JK5BBj(kgdyZ QX#fBK07*qoM6N<$g6MpRoB#j- literal 1640 zcmV-u2ABDXP) zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*M=1D|BRA_Dx0B6gvok{vZLF5YgL){2g@u5owgu6u zP%!DDJjiXVHPeH(IGQi z?n*TsD&xLsA!eaq5gm$@y|Ty-C9Q?ntr)a7w^%R+w!z<_Xy?mwba8gl!C3d8;Pk7c z`eKhUN>{sFUfL;obzNF@Om+BA_b}oI2ZeFdb2FS35ehKwrj0C3A&dwA5RPd{rAhRe%_%g^wOR&ZJ$GJ80+kMha0!x zL&5S03dnjQTbJbmcT5kn+T5x)A#Nd>jW|Ue${~IZ#MSci}lQH5g|wb`NT>@D6t=9F}ZZ727Aot2VM9R+?* zpr}J;bCJVg{5CypGh;LFPef3VV}G(k!f~y3XcK!|mredy(ji(oF_;HP(!?7266}`Q zc`FJX+QRq^?W)6j#To)PrZprWA}CNhBplc3T~_C48T^Wd>7ovefxds!(GHLl6YM%m z-viX&jzWjnP7QZ;O6*7+Yizy`X&G+37i&2yA}Gs5?T~O>t2=f4Jk_>-VDK#%M_f$y z<@vFJGZxINSF)HI=&~?0G(-=mEwr;nw^E@;u5oq#w11&F(r4q}{K+VOf7@4f{9v0f zKDF6JBiZr@)P!%O7FpBZ-#suMxh5SWx%6K!Hv~G%>xmLNM;kaaon;=kR8^>_mQ~(~ z(eNbQ&T>^@+#y*R;pgBSuzqm`goU7Uq96L!ycDa>ZKlGt+W*y|!Z=jjwmFa&PFJN) zC!|394}Q5W2IlhZ9koCGxQUy%iJHXHr?6Vt5mSx8zc;Sv6xJIo;WBn3eD;ci zsqqYAcg}IA0uv+k!)U!Q=oV?6DmoY(f?QRI0(vkGYn%R9v8LnO!{tlA;Ez!D&Hx`*ze zHn3>Ssb_tOy}fJuH4@DtBc5BGb6S+)u@XD2?bIO_m1U88&&S6`P?sw3h8xxtmggWl zB!{pi9l|h~Q~f7qMg82VuS1QFU&Cyf{>kf5Vyi34@K}lZ=UX4k@~HfK`qWZ+a+q`r zyy1p5g;hHwhp=jgA`VX=`aadKeS}N2k`0GBeftN3yvs(g)Anm5^4}H7lyyp!;jt32 z3+Csd8lFXBM0({s{nwDm^ZYIgX$q@$NDg5OF2>m2!V=J)CdoL9j~!Msb1JQyDTdKZ z>%gx;JI-3KL)dPKG9>H8*1py664i(-E~>ot0d`mgo_6Yxrmz%9Okv0SY&nE2xJYi^ z-y;$@k^bTV?c&s*{aD=w=2YVRtP&d!;|}m@Ci`sT zko&!>@+Z@Op}@1ra1Bghg;Npo mWOx~;u*;3(%ix1fHva)qia(|#P;(pr0000Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCVF5dc!>#227MuW)+YJUAkZKL!Rni61j9eg+kKq6> zn8$DctYwlGL{$L;D$Rh?JOp6+kjF3$Y}jfgEfWR?L#VhF1A{gL+XD!PZ7&038SkI< r5FWDuvH{r%NSsS?y4bCOxdI9R0ed9`_3B#m00000NkvXXu0mjf)FWAi delta 223 zcmV<503iQ`0`mco9De{|ZZM4i001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCh|NsBUz?lFQ-^Reu!dSrV0OhqXF#KWQfSIwJ zfkBsnD*(dbJj%egl>5(52#@>x|NjDT!#Ns|ox!yMnKx$wGH(|$CtmF<5xxR~Gspmy Z2LNtVExL*MDTe?6002ovPDHLkV1hrFTUP)8 diff --git a/docs/html/img69.png b/docs/html/img69.png index 9e29b6013007cdb13330767b0145f5f70fbdfe98..624c6cca5adf690ef3e07bb0372b12e8257a1a51 100644 GIT binary patch delta 316 zcmV-C0mJ^60?z`F9Df0YIj&Ct001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC(&1L8WxfG^Qf;59k1H2O!Ffi~a0f|Fe3j4DA5H%*gPDxn>l>sqv2RZ|4Jje`9rU_6>P{9UvHj;cZ*Z}}Vn<3|eK)MqE O00008URRDqnDGNg0Y4UTW&y4MW(c$X{{R012*xy+67B>B4txg$V+%|i$mTzQV6?-; zxe6GVE+807Vd8TF7+wXy8T-#qfQs+=|NkQ@0|GiQ7!a@;g8>GdCxL|Y?hOzI0&p(? z5?A>*Kp1eq`YAtvfm4BF0+@jY_&%`lp^Je*-`QvPoDmchT(xRd zM@L6mS{hKHi;K(MyLXk8ly>jlEibD$6)415666=m;PC7QNZ!NK#W93qW^zJ8LNWtm z8Y^4Mff9yeMhqVVp4<>}$g*_w$rCups-*ToS$n7GUj1tG0Ks6U_hKCk=UF)J@`Zlj i@#%VhZ|`$vW`>2v+!NiuK2--A%HZkh=d#Wzp$P!eN<%IH delta 174 zcmX@bc!+U=Og+QfG=oPB3=9SVJ|V6L4jkCLd9#|DT0=vFkB`r?Wy>TbC5wxT?d|Pn z&Ya1^!;_Yl22^WoY~0)18yOkd*4B?oWoN$2iM(z81 ze}QIJ%zUWZaXRO~0-lKvVi*?wlvXf#&&F}qn9*srx+Cw0_JB2AJpUW7+%Zn)6E$F9 YFf`!V!5NmdKI;Vst09gw`RR910 diff --git a/docs/html/img70.png b/docs/html/img70.png index 20b3af47774f08ea9db181512ac15dab71279e8c..2539460aa3a028e10010860d8eb06ca22e135e5c 100644 GIT binary patch delta 757 zcmV001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCD1_Kkblif>sDDVJQy`48o&p&=Nf*}w z*;|uX2%9u@>ehnLAt?tB(j|7y8j;HF&A8V1v2CXy@ppLd|NZsm%>zQvmWL!ohc12D z;LG?kmeGbBBG=Rk5Nl#v2d!@d^purDR*(`Wj@bG}{w_dM*dcne0rhg~9zzG=CUA>& z!-Vc@d70Uui+{&paP&T(8b?XR8wLc;QYhol&dzf0Q{JVZ0AK&X@BT1$ceR$RsD z^$iE++A|4NcrUo78}xDHWRbT%?rT-G8ZAwbVd{}uV5%6(8q1fS4Vo#W&62%6;od^J zfjqKPl&eplZ!rUA?x;A z$#Z}+7rjokn}Mk!S0^QkWDKShe4BU=x01=5lUXJhPg4^uRp7H>AR-YeDo_(wHOd0# zQN5TMGt+!R`cbk?QixlU87PvTnve6+REl}ZcUlS(g-hqoug*wl5W7rbAO8skg7wBG zt2j;U)qiZ$knuvWUEJiOW)p`-2DN##DVH4Pe#rEcqt&R+`fC+7EV-Z)7;J97O_?m~n2^jc_ zZ*QM?TN`4tIPe@592cDLBsr)ixyZBun>hL*3~p<-GObtSkG)hjUqkgD6ZN~~6C5=`iJY=-gaAcCjb{@oo2F5*^-}K6210yotj>B(u n=RYqI=vD z-8r1N^bMtg3xACLT;IEjQY5~Jd6-eQs<=`u(vD43V!P zfJtr7V;N^@%O*-}r)~5vPMI2;u*UDyu_h>ZiVxbYXn(L5Bk^rJJ}+X5V@GDy8V=LZ z*+f+wtt0JF7q*F39q0|s8g2h@u+CQX#26Nn!^iDm6^S`sDP-c&D-oHagOmmS*k=FAkJu z;jVEzcYhM6atBS0?52@^mCJZut@%`Gu9#r4@X3kQWM+HQ#MWzgp2sFMjzV3#VX=)5 zk9m~O(Q2qcfUeQLa4b;8ej^YSH$G2hRF^G58k>U8jaW|fDF4KQ+uK1LlAas97Q&aM zAvLEjbaoJjq_0mUKYxPq;cv1c$j`e-9$|zL{ueub0kc@Wxx)m1UjP6A07*qoM6N<$ Eg3RbJX8-^I diff --git a/docs/html/img71.png b/docs/html/img71.png index a9a08bc8be5a6aa40c7ecab970355e3db0bb7c27..36fe0d5b93e97e8fbd76d1c6f0452e9535712789 100644 GIT binary patch literal 5090 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 z zhHw6KYe3k_QN|H{sMQ|3WaRqOwRce2e`{Sj#2&EQH)mC`T3`Fq64k^%6kFl2KJVYS zH@!mHNs;ClgZW4KFE$>ry&ZL@Q{en|K_nczHMZ0zx&DrDnn%W3tI}RE}>!Y+nr9!^XhFASU%jIuI(LfrK#uqnTCS4#V9k2 zqTc=#L7QXHGhw~XB=1rVo?b_ERtum-Y`Ynq9nzqsn2zu)+lKlr-w;lyJz$>=caGh` z>M5Z2OFJQ^P4^#s{eMZk@`RqAplkOJFq985)RXB!-m#I#J-? zbvOOtX9=^C2N7c0s$fG{oia2N)3EtONY{-Up_c>m)0`d*x42Ol|A$xBpHM6Oj88^@ z`S)^tg^uk(*VGj&?#PX3%8qR4O!r_Dw(~S(atgsOLh-!Xy!%T1%R-oO z?dx!R5dO%2!C;L~tJbEr%|TTzT{--)={B2Sdwt-lfwrf#nt9;&iV~^$w6O7eiDM(D z!kd62-OGYra`2Sa9Do9zj74@hOrYsC7n8OBN?T*q)bU%8_HlX>8LO}L(GR0JWP$jy zdg;w7wwjX#*{f-t>UP$71#n|$Z*O9MOQ-)J;$umv4X#rcz&kuFNfl~!?GB!UBEk^io74VH18d!c0#}Wa^tB_EH+Vv& z!lzAxz;Ki2ip(_;lcC>satng@E`x!}^_%!?fP@QtSr4)PkW zdgf!=XGwJ7xQ&1oTrA8pC$F9SobUhBY1d{}Oz#%53bKD~01vM$SASA!T##c+&}#Jg oU1(ifh-3@N6u)&NdiH0)>8Sy1IJ#v8xHMwYgClfGwd{ia2awfIB>(^b diff --git a/docs/html/img72.png b/docs/html/img72.png index 75cf014049375b166d4c0162412045a9c50ef5bf..f75a73196919ff05f9b4068baab5eff5c734ebfe 100644 GIT binary patch literal 5450 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 literal 4873 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 OvA}fT+ND=+h5rL^RWJ$w diff --git a/docs/html/img73.png b/docs/html/img73.png index 2b37abe9aed5e746f412357432711f7325a54f81..6cc3ae5c543f5728efc2e11ffa2622bae2cc0a60 100644 GIT binary patch delta 790 zcmV+x1L^$21*Ha%9Df0b*&>Ai001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC<5OAWIMa7R7HmQ z&^@a*=#y7WW0&pGW!`UA$pSPp%Q3` zw2oJ501Y_4w&tS-x=ooD@=-&%rqwx(H$JV#FP`m@m4kf6zm0BrL>oqSZ?}Qgh z8>e~GflNzFbj(cjG$jsa2MoGyq~#e6DPm({sEH*{xp`0V!6rTBO+=q{GpmG9JVhMZ|ac;AA#0*uOI<$>CW`Hls7}wc6 z_z#D>Whg4+NLj*dnR5%mZal%PY8ER<`yN(A2!F{J1t)hNm@WQdhgczV!N|1XMLI4j zd=t3a7KmSI(Xw6^-)Xee(RHe9VxoBx*Bnb*U460eI7+bd;HbHVoO3McE{0qjZiZaP zqdD9IcauiOxa$IUd)YX%0m7hCd?=o^c5m`;fb3EB>7{Na`@y-rj9GS&ka73{Ft4wU U+7FK>A^-pY07*qoM6N<$f@70(SpWb4 delta 690 zcmV;j0!{s;2Eql99De}+-Vzf4001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC$o2+p+dr_3EH6BDn2wS8C4^fYL>I!-@bdP$GMSrCT)e`XFu}cp<6^i%| z1bQf5YI5i;hXs*b1Q&}6{-`UZ1SuN7*_o-?HU{aTr#!;UeBbxpo6N5TMi^m)L&xNx zWM1^@+qj#l4|5<=t=Si6Lm^ADA~C4OZ6?}J=|dIiK#s?NX(>zMx9EGE7Y?=Tp|CsW zd*G*(C2>OZ<$t)nov7vZlFLZ#&Piq^DN8~(fzzuiN)u{#757)_lq){kc*AO+BuVW) z!1Sy~Bnw!c^(nq`=Z6+R$XNZatY8DLagO$A!A$wr(4|~MkM2^Z)TQNu`Aa*4^F*qG z1`)+*!H6JaEEckHI`Rlv7wfb~9q7?LOi|6}TRL-jlYfCm9o*7AydzQ%W8Shuu~B0C zDr6K(8PRE~Tx7VZP;24HWD^&dnT3QUm9S*u1#M&*OPh=;{J88=i!X-Dn5AwPu3D<$ z;`4Z*uCwG5IMizL!cYkxVLZ1~rRjX-v2Oe62twv^9?A0C@xpWVaqnARbJ0-)c1hCp zDMbCpLw}{>B6K1dLBoRblH#LggQny%Ru{5~v+?n$&mKFqIqZD5vGoe=cKhkWFDA3f z$m7}B@Cs{NsLiRJFuPV^u}+i{gp6V#)96Tbw!}p!4iumMPi%DqKEFHCl9f(^k&f{J z#q_%_Wr{ClnF??Us0@4q|ACwPQ<;nLgPbo8e=FJlL_QppWuFb>!@(SZ?ST^=)a|hG Y2cC$={~sFND*ylh07*qoM6N<$g8K(ZoB#j- diff --git a/docs/html/img74.png b/docs/html/img74.png index 0da309de99f9f0ce0dee49db29e7c070ea5429e3..90e36a4d75b43c20cd37a67b86b8d25fece54d58 100644 GIT binary patch delta 349 zcmV-j0iyoj0`LNm9Df1U>H$9h001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCNtsNfE!G51fYv6fl1Z|Bq5e~ zhCr4L46X?r2UhwV{s9H@`L|33QhW+*5115q_cJg(c+a2*Qpu$NBKbbBHgJ2glrYR< vc)$;`Ao4atFW987Se>HuNq{R1E$Iv&?RiaB+CbM@&90w?E$*D9+-?l5tHA(nehMv>wov{3`Ltk7D!h-z6uh* z%%IMEfnkyW(*zHO??CkPaf@)-Pq0uvzCaD3oPV0yrLkb%qe z0E0G2L0y*V1@~UY70000Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCX0I{QdSJ<7_(1vKY_Quy)S zSPpN%dC`NJe0j7C@OV$29$JbUm(I&pO32K;gBf7qa{SVxB~s=-Q_p6^V4J`N4I)tJ z^HO!2u$tBGtbd4JRaOxwKao<^O<}(y(ZW(1XVH~Zjd8*{1!P|n?x5nCjKgM1bRMKO zt?7_6c%T$;%1wald#-qJrn)8n)M(!wii0OPsNmXET#+z`k;2ZE9?t(X;@^~6m3Q6w z&Nq-2{bBjS7}i~D-ETnes`V4g5HqJ(iy3#Mn_lA_TU~ez&D&=jMt^f_io0N7P#nyq!`*u4!s}3puL#BVkL0000i1Kb0U9De|@jem6j001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC0)qjP3T9;GWehw4{~34-fT|v_0R6xT@7x<8rGrUDsewpD5{w--6`>KS(*VFxQ0tj29rv4GmWE zL%b7Few6k41O9!V8ThR~@SHhw!rX5o#4$4%t};VSXW(pLf(9370)r?6gCvkO5yWK` z-~_v!Q(!kk0?RyxK#=l@+#7=Az@bzCjZzd)k{`gap+l3;fy0iWh28BdLpR5SDWG6r z;P|*7cbtI35taK6PZWZ{Jp9t=K!7ymqhQDZ0AuD@@AiFz_y7O^07*qoM6N<$g6as( AssI20 diff --git a/docs/html/img76.png b/docs/html/img76.png index ba3d4c05d9047e97c2a39fcb7d76c08d8e058a92..334a44a7fdc3c5a265566d010f00110eb20c06da 100644 GIT binary patch delta 307 zcmV-30nGlk0>%Q69De~Y!^(RA001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC~_`Un!G$vvU!3}sfV7H6q!VQ7>7Z^JK0NG3o3Y&oLW@KPxVBo&ba2hDY$NPza zf%SqC%Mb3|jUPCW%;2QVJ(Pg2*o6bJigFY%DC>0C>005DLDvz^m1w#M;002ovPDHLk FV1lbZfuaBa delta 291 zcmV+;0o?w^0=5E>9De{u#QN<3001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCCz{gBBZ z2NLH0z;K;`_rrCDP#|Xl+XDuMcOYS=2b>2PxGWDs^vb}@mSN>fV0a~$0O8d#1aN-^ zG2U`>CNNwFVrif~4gL%t3{^qGv2_f;-y1Oeeq3;Fiv0qV+Mvm ph6xNT=2$(#VjPU!+oJ$0005KoEd$6uo5BD9002ovPDHLkV1oH7bKw90 diff --git a/docs/html/img77.png b/docs/html/img77.png index 7f9a996cabb8675b2bf42f977572d8dc5748d7ee..650cef038e8ae6a036b12d2bfd68e2438bb9b9a8 100644 GIT binary patch delta 352 zcmV-m0iXWO0`3Bk7k>@}0{{R41DV;u0000mP)t-s|NsA)nVENYcU4tY?(Xh0Gc(N0 z%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001bW%=J06^y0W&i*H>`6pH zR2Y?GU;qKuQbsV%u=2`vAj!kPz{bG9k>KdV?!bTqK0qi=7Jndd?7)Q!91K{1K?8^k z0Ad9`h8+wF^$r^t6tF2o0Ur*4NHD>`!C(NQfaXllVsT}-5TNj2KLZ0F0~7xx4hDVR z4_qJ@{$ORfBhb*|Anky|L=?bS#2}8t5d{qFaJCYdNZU*`D^I_0000 delta 319 zcmV-F0l@z50?h)D7k>`~0{{R3zrs550000mP)t-sz`($>v$G~9CV+r|rlzK+r>7Yi z8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)_LR`900001bW%=J06^y0W&i*H%Sl8* zR2Y?GV4w}~Jpe-30P_V9f&w;V8U7C-1O<2~ME= z907*KdJGJD40GN+0P!JC;Y(m(c*elD^ne570f#pbKCi(9ke&nv>1hnSbr&}9UDzPQ zz_=60=MmTd(m3?{aRL9n&n(v;01^8>a}b~RwE#$l5vWs=fk6a}Bq4kt0sz6+KYU?* R#cTio002ovPDHLkV1m==d*T29 diff --git a/docs/html/img78.png b/docs/html/img78.png index b57bf530ade023263cb3a7e743944154b064ff8e..c3fd2d55f938f626fca0e4773cd6af70e59006c3 100644 GIT binary patch delta 282 zcmV+#0pHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCQZDcTNdlyh0e>st1`&)*VD<_iR=}=| zG{DJJ03{kPXdEbCx z8IWRQcn=H!uzPMAa0Gy8#sj=8v%qS&FYtj>clEDt0ER0|IZ#ewDcmsq51^=0<~>5L gYsdt<(ZB`(-xG>7Em@9AUH||907*qoM6N<$f+jC-CjbBd delta 265 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 bo4bDksZCi=<1hS#00000NkvXXu0mjfKtiG0 literal 1264 zcmV zv$G~9CV+r|OiWCsrluJg8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001 zbW%=J06^y0W&i*LZb?KzRA_!&1O5<&CJjTjiH)6>4OjgK|yRAebAsU zUBy%cF%9BFkd_6jC{YX)ELf>q2qJ<-A4GjIYZWS_CV8o#46;)Cq{Q1$w$ZxViJ{nv zO}+QK^K)l*CX+}N#W}F^bMN`S^PTy-%Lm*j+;zh;Z5g+0id9ojjQv2P-p0AReaK_0 zC@}ZHOOX)Q9vOrD8!VNB+>j@I%}Hki6#^vLHTMSe}> z^x_UKb-o#u9v@x>dY@a3C-k3unNezOeTDfnp{!!Lj>ef02gZZHNks)z6N!io)eEel zgLPNXQR^;8?rg*AbnqFD!Sc7%F89Nv7;@jB(Hx(h zSs(P?S#I{%R;wJC?X2vg6g=mTN}L(K=$voX(c_rDR)kQ)iHA{*S zvz|zgWgace(g&*3k~Q>M`3WV?*)G;W!wCw}-p5`G2XM1W;8)(Y z^^AOHwTj93dg0Qfa=;3iB}H|TkCBK}l4jSSpW%dC=NFE^c-_IutZ#Py3k%nGUxhJu zfxEQrMVzu{p?!bxN)6lZ73|-S@=vBXx(vDW6zy*)g??zHD&tDFjTZ(wX8A2PzxImc zI&Tm2b@|=hj!M8ERhKa{eCh#8ZLVFa63w=4sjRTL(8{d&5i=gXEESbWs)7)E~+qI zYx{Gp9UgntisKTBJXP=WkFO>Y^h7NW$I}Sutc@neH<)XO)=KsYh!^*^b6ZOI&m#G$ z%#h)KiL5QNnaCJqZJ8*twoE*-woKNR$=WhmTPADEWNn$OEt9onkhNw0%4F7-NyLA? aE%PU5JY6*H5RM=K0000@}0{{R4b)#!a0000mP)t-s|NsA)nVENYcU4tY?(Xh0Gc(N0 z%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001bW%=J06^y0W&i*HWl2Oq zR0x@4U|`^6U|=}F!2gMX$pOe>;QYYAyMcj4fdK-V7=gqFeo+Qwu$3Jo29j8Dkb!}X z0m$W>FabqL@)W&&2_VMpG6vQUAcngCQm_C+1p|XQ*rEjt43j_%A-(PEffN9`RT9o( SJhGMm0000kd7 delta 207 zcmaFPc#m;{cs)N0GXn#|$sZk+K*}J%C&cx@fdiX2Z&p)NYiMZj@$p%zhDN3XE#8SF`h1tAsjQ46ArL3 zNys;4Ztkt$EY~1m7|pW8u0f($%xHrzgJBMrguO@e)jyAlxfqPsov4rINz+M7@L{?* zhrMx=0$VvV^I>s;=Ib*XzbbVIUb*}~n&Ak?lN$C#40Ei+gVpX$QUhAV;OXk;vd$@? F2>_T{N1Olv diff --git a/docs/html/img80.png b/docs/html/img80.png index 10647c53d6bf705d4d1e1aea6d35c3cefd3a0616..5a0d1ca4479d6291cdfd2724c9f8d4233bb7a698 100644 GIT binary patch delta 357 zcmV-r0h<1n0`&rr8Gi!+00GMuNHhQd05ecbR7L;)|CyPYcXxMHRaNfp?lUtp%*@OY z5fQ+^z^baMh=_=0W@Z2Y07OJY-QC?HA|kuHyO%XD9RL6T0d!JMQvg8b*k%9#0Psmf zK~zYI?Ud1ygCGn=!xeCY(B}WYwh7MKx@e`H_Q^dD=)mPBWPbug4}`H0s0XA-P-%W9 z8kawlsoFoT?rhC1T?r8}Spq+00000NkvXXu0mjf D;SQes delta 261 zcmV+g0s8*+0+s@h8Gir(006F}*GvEa00MMUPE!EciJYfM0002bNkl1sU#01bqu^uW)u#ZBVM$wDOnzRUL$u@Ji8jN!&7t)&2r+(MzrS{d*Sp(rNK1Z>b zG6L8Pu-aKvo|}Fe6czG$u0l~UcNWzl%9o+@W~|=DqJR@$UK(iXG?-#9zglyX)pAsH zSl0onMkPp$ZZ`p@kpVJlg|?zX+l~I)T6?2f=B_`e2lb$CjJl;huEot%gBCi_1Dgbp9Df0ng|O`a001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCZg zKpw7+iJK+C0jP@iC^j>Q2N=%UK!RoMw(LwDbNNH3!ofOgmR%vf&-6X2~5ldsKfzD4L6($08+C#Qd}0eC@`=B z*^C=Dz;%G{LjsaS7=s}j?*oQMxXihvt%Ss5I{?f+8oCTlKU5gF+K?pp z4H(u7aII)^KnO8uD_vkf13YJdKmlD8T_PQef>AKE01;&Z5nuxVb(Fhmwz}M_00000 MNkvXXt^-0~g7cfmkN^Mx delta 412 zcmV;N0b~A~1g-;+9De}gf`EGf001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCFsmP!S!aM@V5}yQ~F+BatP=aaB zymvr==AH-b3=F&l4EI6!5t@W8i1-WFhus{8_g}%(QU-=O0t|~m_&=J&e-Pn;X%3n% z!O_B*z`*c~fq!oy2w&zzl~@`8B$ne39}tKK#t*jx1H&|+&p`MfH;M$G!UpaO>=$sE z^Iq#a5|5(*7_|F7gYmtMC=#rfA8<662;kC*3RppeBm{G!NeD7)5S4FVrp{20Zx_&I?2h&8mAdJjT0uaGp8w(6&5BO%QaEtUf6K)Xlsb^ yghoS&2NOaZo=HqNCukzF^gw1yqoEK3!^`I!>@9aY_wxYFWAJqKb6Mw<&;$S$=QNc7 delta 140 zcmZ3^xPWnjOg+O9hQrqw7#I`-d_r6g95}Ff^JX+FAWM#n p6I+2^ms8Q93rtTv7+RSbmQ;uzV6Svu2Gq#l>FUSovd$@?2>{@LEhhi~ diff --git a/docs/html/img83.png b/docs/html/img83.png index 9c2f557f161eb8a6eb56591e6d2cad01878cd239..2f1e81d34fe3199e8948fd35c3c87a2d6ba2a515 100644 GIT binary patch literal 800 zcmV+*1K<3KP)KRY7RfKootM&8E9evI!!x2a8iJ(u-~n-nOl}OcvUbhBE?15nPfLz+pI0E z7tsfq`SbsOKbiS|etF3);#{Jm4oB$fDQ8)sm!r6c;BUj_nP(^k} zHY-Ow1UY*R5mtk{BvLVW88N16ZXOzNyo4MaOuwr6`2p0AnvP>|vtF8De9BvJwB-Sv zKk!lOgV7_iJ{cJgw+9pAVAG+T1tsKtq{P;_IS-QS>NfR=vPGPUuiJzeIbm0OU$7F5 zp3~GfvXg%S=91X=@;FiTvoN<&wrEtQ5mHN{o9;%k`DKgPa3$@v33ib$ib5k(|M7U! z*A0eKDlBSA+T|d!Q$Ht?=ke#0sDbqJK+VE&)PV4`Q9MuPg`!GK&}1a_g_CFT|q!d(Z#)J3*eTmw6@}r3+%z z_r_|u!EcS1$Ve<9UZMwBccC<*xe|`sd%T)R2O!&aV&A;z^d~3tW09pC`;_OK@@N(1 z$z9~$@XHegl&hu17vF5H1bMhki6i*(gN0I;&p&et#6nA>ip@8{-g3(w{!H0%(1$a4 ziql#{@v#HCg`8P#p7$YI@@}NegCT#AX522H_u^wsHNfFkC&Dc>--vC=@gHhG&Klgm z#Zp7;v!dDWgsWzULGR-SMvH>4B27DdaUeGXrLYN^!n`^=`{?SmuOMN(xD_2*ypBul zFH(K_3htIjm1PQToZ|*!@{@Unyd(HVeFPmovI)P;!I`8SC18&~{pcO~}0000B34jDhKnW1qNCNzM zX1AEyouZ}>U>i%_2uU{N9|D*yU=%Q0z$jq0fKk9~0i%G~0!9I|1&jh_3m65=7BC8! zEnpNdht{XByzR0GO$NS4%wK@vyuR_{vUOfhRwL@oH_2I!p+kJ)#=qO#fej+mcGvzL zVQs^MH{R~9{7c9k&?Z9H?%E&GJDV<4KsO3^@mKx?eP4zklddI;4$F+bu9CwocyrJD zfDbQZz4M1@wCHy}P`hmQmkgxO97oaZfnDZks+mK!EBsXeuFfBkxbRyKB}L-O?$)TY zZ8^imW^7)VfsRd6C!iZ;p)aN~c}+~9HmG;YrOxZlAhIaGKHURS7JVWn!Slj=EBG(vm#l}@1>k721PS_OOv-|C+HER?U4 z8szYz@YYO_k0nXqk35afUWSxu3Ds1mSBiSFu?(Tn#qy3XG4w2X&&uBf{1!eqi=y)D z(FabO;(?>DGu0h&R?8`HZqa($K8h*6L={z2*$A_uW~VEI#znkpO0>;xTt}P}%HISe zbLkTYf7W73Mm`hP1?#iU9y2K1=8?-(iuPJT`+G!f2vYRLH1FQy>iOP?sSX*-Qccm? zp3;WM!7Kbt0QV0O_Quc761OLf7S$fyW_3lH&_aF*;?*=#eJ376TWY3zB`K$n z-mM?}natQv$u1H4k4VyI@eAL?@(G;)$DPWO8`W8VN@hU1Y8d|2E5CU^1Tb5`C_Vul WLFj@$^iJ9U0000>10{{R4Nfzc50000pP)t-s|NsA)nVENYcU4tY?(Xh0Gc(N0 z%n=b0z`($&s;Y>Hh-PMH0000)L`2=)-6A3)ySuxWH7^|i0004WQchCS(=jLs68$nvTJEIOvZ6N1JFKZHPqTiyIA#=&wL*^ zIHHb>FZ2Cycpfziq@}0{{R3eRWAK0000mP)t-sz`($>v$G~9CV+r|OiWCsrluJg z8FO=UKR-X2nVAd>3}$9#0000pGc%2ijagY)iHCDE00001bW%=J06^y0W&i*H)=5M` zR2Y?GV4yij03)n`PXUCm1O5*ngaqWR4OqVyGt4h`VE)!G{C}-qV1D%kZolmfAh|~N zhDic{ITe``7q_cj6%`#y69p!r}B$-uxkfq`KnLjVIO0|-en cFtCCo0RO`}fO>33+W-In07*qoM6N<$f-XLPE&u=k diff --git a/docs/html/img85.png b/docs/html/img85.png index 0630d10e7c0ad4f5e97fb442d4d694673767a85f..615372d43358d59ab01a54e1531609f39d883b21 100644 GIT binary patch literal 1401 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 delta 315 zcmV-B0mT090?q=E9De{~hjC5MYJ<5T zCIiD~kQm>~3oHe^222I-K}-gQ{a``<4}1^G7#uxDT};)H5vc+2pVp_wtA0ccUXFw`OjUSk7>i1MQ#C;bL`@+!n-6M>jB zfq`WL15h{P1vGe26aejIbpZPd?oE!5AmjIem`DNg4iswq*n)1P0RUR+G={Px7-j$f N002ovPDHLkV1i^Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC$(*p)Wknmmx0qzF=2Oy^84+b`U mnFgqOVTQ>h_<(@>zyJUtk|Yxs%OdFj0000%RjdBD71A{?;Pl)S*0|z#5-mIpk*3i)4QQ-dwctt zGiUPf@T8@s0o58C8~671Mn*<)`

      <(pm=|3ubl?ABLIPYO!kb SFKz@{%;4$j=d#Wzp$PybgH8(o diff --git a/docs/html/img89.png b/docs/html/img89.png index 17e67867f65da71fb2bbdccd8511733de492d700..168fcb95157e5a8d71ac20bd4b63beb7f0166f74 100644 GIT binary patch delta 223 zcmV<503iSC0rLTn9De~=Fi1lH001XYOjJex|NohpnRj=0RaI5)?(Pv05vr=HW@csp z002ZpMBUxpA|fKYySu)AXOaK_00DGTPE!Ct=GbNc004SPL_t&-m1AIFVBldufCdn0D{X0C#wH?UT6OSl~5>D%k&^;&`JxMpUXO@geCyF|5W$@ delta 209 zcmeyw_>^&iOg)42iY7${1_pxwpAgpr2M%oByje|6t)Zd8$H!;cvSpHzlEuZv_V)HO zXU^o|;YmwN1FAJPHty~1jf{-!Y%ewe@)=8l{DK)Ap4|XRCVRR#hH%VGPEcTosFjwG z_}3V5^$@#6ggBGr8NM2Ji5;>HI(}^bxOsfo5?Xb<Gk|IfEe zY;JCRDATg^+<{7lq)(1)-&ofuh?O%l*RQgkA$s6I%~M8Z29Cp`X(F5caRBXO@O1Ta JS?83{1OUpcN@4&2 diff --git a/docs/html/img90.png b/docs/html/img90.png index f110f1aaa4e6923f001a24c6f1a612529e557925..ec5fdcea19c47b77ae9f36aa4593c485f48e063f 100644 GIT binary patch delta 171 zcmV;c0960F0lEQ@7k>=|0{{R47yzQ@0000UP)t-s|NsA)nVENYckb@)5fKrps;U40 z0Nvf)A|fKYySv!_!@p=ldIu|rYQyfDhYWEL35;)nH-LtkV!}YnvuoJ U+IuhXIgrKR>FVdQ&MBb@0LQ^OT>t<8 diff --git a/docs/html/img91.png b/docs/html/img91.png index 68a5bd7a5cc0bcfe40765ab95333f441964bf416..79d7ada795d432e03e7d13d8272fddfff4c67684 100644 GIT binary patch delta 400 zcmV;B0dM|{1EK?v9De~LL4zCs001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC)%k(Ie`VsWS^J$|n@5AAex6bwG4t?t~Cu;lRkk z8QTd_J2Wg6Pm1sE<@ug3G2jtm4+LgmB;HH?3n5p|Ln*}P2_@3-gNA*81Y+V+wV~xg zh=fRR43ic*#AJNcw~QEk<$Wj4%MOdio=u^B61y1DVQTI?@O6k3=;}-LQ>Az{M<=Yc z-@1{J$jYv)CN{D;_o9I7U45kUQSez%d$9LV@5&M6hubmPGGdSM_c2? zE3W7%&I)cw5|Q%gwu?Law(M~;Wtkx@GshdQH+4l@MyVtcnW>5oi3g1_aPoNSTt3k& u3>j4Sjeft_G2?r!8f^<=xntKq#y7y^IfOA{zGwgd00{s|MNUMnLSTZ(FtXzS delta 377 zcmV-<0fzpf1B?TZ9De{*Mze|l001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchC{(yn807X9b0P6=hhxr0SJOkg}3n(gpf`9+u9R3dsKY=8w3ZS3_ zoWt~hK>@#u#3=v3^+1M!^8!po1;~kh#orlZfFcG!4&TcQECsd@cin0^v? z#$XFn334hQ{|CMY|3Q`_+47(rDF2@UtdD_#D}bFr4^0KbQlPvZOvN+?ZpH%v%qS{2 z6Bw2T9teQg!gBDI;VIvR4G5RM2f5UNPhsDM4G@@6&ovp#B14jsn)p zPl1BG0bnC1GBAiTFnA&d1uFxCAV^RaSulhF3;2i3;eLRr04e4`;47vIZcL$3Fh~FZ XX~0X#u;Ha$00000NkvXXu0mjfv>cKa diff --git a/docs/html/img92.png b/docs/html/img92.png index f47c909318b84edeac01982eb49e1073a623011a..7a1571bee715c24a2bc9cbc0d98ab1ce0dcc993e 100644 GIT binary patch delta 489 zcmVHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC0&oSr-DmoU1C8{91Q+~badV2rHq`3?XGNg#v=z-vj>>WpbAV`9z9R%quQo5@D z-qV&wR%M%utAC-wP4KngWQZ@WASq^yNC!0H5y?3fzJxE7g-a-u{7Ak9%6zLi_iLdr6D}+lXogVZ zJ>?#=Had+Fy625H9u|Q|T-G)|ZS;AXfID)V)Q56}6JpDGNrDzPS{=LE6RnGxgDFOq z;p?`C8-%$)7^u)^>hVG6&h7xWwAxy2nOE2EKntXKN0Zb|RAyB^Ncv^52xeJjCS~NH fNXbrF;D5k3(ojxlFx&L?00000NkvXXu0mjfQ&!_C delta 463 zcmV;=0Wkji1K|UZ9De|J9pYaA001yhOjJd{z`(P!vnD1cfPjEZOiZSxrWqL-b8~Y) zKR=n7nG6gJW@csp001*HGmVXnSy@?$hjTOl0004WQchCd9YQ-~W(vfg1}umsW(N5Ne72Mmk_D9U0FuzmnDY#A7ofqxWd0+<)iz_<4TibCcK z4FAB4|4{QCz|>C$27Xk9{2v%3zzjVIp95l{0)|4S2MoLdK$`IYL-_{=&hJ(M(iM-d za$bNcWN!cxTb|n&FvtK!48Ts{dwGFjl7Jb*2Hp>ud>@b$GRG_OC4l_E{Q>L*KA^5P!mIK8^yQPk?>^X$LuhD}eJLLpuZ55@dxy2_Rn&s!)cN!H5%R!_o;1 zwG08wC<>=BaD_4+2!L4qmYbnnnDYW(LUDsX!w0x$z=mvLc*Mwl!0F-NIh_z$A4h)_EQ1ApWa7Y5`ZCJz0uaL!KAZoa_dE*bW29KSb zTX}T&9b)b=m9+_N@XwXc2>_tDnm{r-UW| Dr@2Ux delta 198 zcmcc3c$IO2cs)N0GXn#I^ok}$Af+4N6XJT{z=6%1H>;_sH8eE%`1mYawoFn|vbeZ- z=FFKqJUnS>X+VX>#>Tz9y^)cT%{;uPfPBW1AirP+hi5lHl3|`Mjv*W~lM@t}j^s3K zoWXw}qJ}>~XBoG`raz3&Su+KizaL|q#w2af{hrbOeQSAw=^Vy4Ji8LYq?yGZw=oF3 w<~tmEkD1#+M=qK9+T(;^2`Nbl7fA_*PX~l9bKjQa09wJ|>FVdQ&MBb@0Cpro1^@s6 diff --git a/docs/html/img94.png b/docs/html/img94.png index 23d1fd06ae8c5336507b5e721b7c1e14b7f3198c..6d9db3033fa7f5cd57633f9d6648bd11a1640f67 100644 GIT binary patch delta 565 zcmV-50?PfL1jYoA9Df0S%fL7Q001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC;w<QXg$IbLqnnG>*9?D zX8O+l4wzuG6ePmY_=wCrggO&^iu)^;7%UrNlLQ^xdOT&)e%8p2=1VFvoN<|+TWpw7 zo!bI4u}u+;8h_~3bIEqO;Y0MU-M;z1()}*Crzl_0n!+(p;El@Kgywc7JQTc&ejx?cgmc`~$Hb zy2cVn2BjO-QS8mmN~>nq4*6hb-uvEs^X7ds3;Z{eR2nXarq_0Vg!hT4XNK;X^y$J| zwOp{D0&kp|Ls(;~5)-5aH_YsQ7#?I;)2|WE;;gM_X#~n2k(O3nK;jj@f zc&oK_)g|fiObU^yI9Hxs0rzl;Sj6UB@Gxf=9yi?=QBKov3h)P`!(%uwe=1PniOOkL z4XHy$89KJJEXl{g7gcfx{w5i1-`MIRH+HN2B;`o!hkA_t{-=y=WPfg7-q>{k<~N2D Q00000Ne4wvM6N<$g4h4<`v3p{ diff --git a/docs/html/img95.png b/docs/html/img95.png index b7f166e98ae5cedbf5dc4528e630f0cc068fe874..48aa78e3f8d4cf21d250e237bfc08d657a632e96 100644 GIT binary patch delta 300 zcmV+{0n`4P0>1)~9De}>x(jCj001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC0wWKI z%glf0viBRGeP4M?GMQS0000AF>p4yniBJ!n?T)?qD(Y>qt_3 z90kl59{gu`$ABaUHIOTS{{zEP2B>rS`jMojF>r-)CNOM(XlfTgb_T;EZoUhA0Z3NC zq}mx`?HDc_gP79JP*Xpx2b&+jz$n1L2{xw=SMZDi>Vq@5zyUl`0IaZ29v{cHlmGw# M07*qoM6N<$f)J}{IRF3v diff --git a/docs/html/img96.png b/docs/html/img96.png index 448dd74a369fe97a2c715e2961577e9ffceadc51..8c52c83827ad825ef3c2a0777f3bbf0554ecd608 100644 GIT binary patch delta 439 zcmV;o0Z9I!1IYuB9Df1zHh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCfEcUY z|6<{9MMxtNJ*oa!q>VK?NRp=!^$*cTGjB`G;y@>bnT;|1T4ND42#D|PScYD50R^J>czjl1# zDjl|gHBv;eGhRuZ0%zJyVW&>9ikDaULb+!IB_?Lg>fb%!dhkvg{HJoP#g_>#@m4sK z1|L+sO~aANZx%?nO-a_^UFG`F{ho`zObqNp^n(GvIxs#k@afSm@ThFByTPQDiDDgZ hyC<}?_d{--H3QLAKE<_5f9wDN002ovPDHLkV1m%i$;NgG8ujxCml!USN2`z;F&(j@z&JI|ILau_K!L&mach2L>B7^`@T$o-sWA z%TR)*em{u8{{h4N2ki{DAOfgn-a8DE{S4U|1Re zB$i`y575876MvW+z`B8c0a4rzdGWnd6w;0g_3Kn08t`$8D7f@v5c(DcCl07C`{_}U84 sg`nw;;VX6vFu(>P)s2EtfC~Ts=jK>Rqqk^R00000Ne4wvM6N<$f;Ew(HUIzs diff --git a/docs/html/img97.png b/docs/html/img97.png index 619cdc20c36c9f1dda53af67f01bf2c4e8daadf7..c4a1e7addb4aaced38e2b20c67297361c6e97cc5 100644 GIT binary patch delta 375 zcmV--0f_$F0*V8W9De~LL4zCs001peOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrH zh=^upW&i*HL_|d0-Q6N0BD=f0cBr!`00001bW%=J06^y0W&i*I3rR#lR5*=eV890& zK*RwCh6yO5Yzz!sV1~p4yt)|}SkU-P5b6NKDI~K<0(^YPZhvtA;sQ8t!va1Yb`TB3 zj0_440?h0V1sAx1JWeDhOaRKz5^x}M_&|gL(*h(R0|rpIB8v!sNvKFC1IGd=6H0Nh zGE4w79{@#wzG7nF;A?o2kiY=(DZ*M%$haUx*bjiBZs-A)DGUs*IOKG|3}$9#v$L}^Gc%2ijagY)?G6?|00001bW%=J06^y0W&i*H+(|@1R5*=eU>H1r z$pM!P7nIIrVAzIT12@S>QbO@?@2xbhRXy7hL;ekjKN2jy(oDD z1CIkp1#<&NFhMvlaBtvr0m|+Hb6E^9LkjE`23V*wti`5)w=@ABa}0bASPfx7#QrE4 ad;kCkq&NI9H11{q0000Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchC)Y#^)<0XUa+X#5vqU~rO{0pul|2ilj; zz!bnx3*_-1U?^cQWaDn&TmazpS7KO6iftr--N*m{n#wJl^FVNc Q00000NkvXXt^-0~g223K9RL6T delta 244 zcmV zUjmTBnZTgT@Sl^{fZqXRiUZ?8hRm5924V$39!CM60>ixxtnD=cKpratg8&03kTDI( uT63UT2+%M60g1==l$IVQ2b@6$s5}58nlSg1TKg6N0000K9001yhOjJex|NohpnRj=0RaI5)?(Q=)GtA7)5fKrp zs;Y>Hh-PMH0000)L`2=)-6A3)ySuv|9U+wf0004WQchCx`8&Z5h zi~~T-2z0Li4?RR#qH;ktDllz876OIF1O^l#h$g7e93}^b z2OHRtg;-fRc^ejRgEeme`H+c$gNM79*MWxt;%zu!V&DamE=VFg{R|7p^~_)aEK3*| zTye^JL8v=G%zusBj94&v9zzkY)QwO1oeB(W8bTKs{(yxxU?^hac3@IqD_}UpkOz}0 zz_d<@!JC0u3l2$()FUm0000_EtK-3ln83DGL6Pg** z8K4da2Elu+?_VPc_K_OAV{{a>)4Et~>;`q299>EO!xRT1d07Oz51w#`60NNWvp7Vqg=>Px#07*qo IM6N<$g8o^PrvLx| diff --git a/docs/html/index.html b/docs/html/index.html index f55b07f2..90ac5de2 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -52,9 +52,9 @@ User's and Reference
      Alfredo Buttari

      -Software version: 3.5.0 +Software version: 3.6.0
      -Sep 1st, 2017 +Dec 1st, 2018

      diff --git a/docs/html/node104.html b/docs/html/node104.html index 855fbf3d..eb954317 100644 --- a/docs/html/node104.html +++ b/docs/html/node104.html @@ -59,7 +59,7 @@ call psb_get_rank(rank, icontxt, id)

      This subroutine returns the MPI rank of the PSBLAS process $id$

      @@ -106,7 +106,7 @@ Specified as: an integer value. $0<= dst <= np-1$.
    @@ -124,12 +124,12 @@ 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
  • This subroutine implies a synchronization, but only between the calling process and the destination process $dst$.
  • diff --git a/docs/html/node116.html b/docs/html/node116.html index 8bf8a9be..2dcc8325 100644 --- a/docs/html/node116.html +++ b/docs/html/node116.html @@ -107,12 +107,12 @@ 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 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. @@ -152,7 +152,7 @@ not specified, size must agree as well.
    1. This subroutine implies a synchronization, but only between the calling process and the source process $src$.
    2. diff --git a/docs/html/node117.html b/docs/html/node117.html index a596e0c1..0204f604 100644 --- a/docs/html/node117.html +++ b/docs/html/node117.html @@ -212,7 +212,7 @@ ifstarsubroutinesubroutinepsb_errorPrints the error stack content and aborts


      \begin{lstlisting}
 call psb_error(icontxt)
@@ -282,7 +282,7 @@ ifstarsubroutinesubroutinepsb_set_erractionSet the type of action to be
 <P>
 <BR>
 <IMG
- WIDTH= string as follows4: + HREF="footnode.html#foot7826">4:

      NONE
      No preconditioning, i.e. the preconditioner is just a copy diff --git a/docs/html/node133.html b/docs/html/node133.html index 510c1924..efdf890f 100644 --- a/docs/html/node133.html +++ b/docs/html/node133.html @@ -72,7 +72,7 @@ err = \frac{\|r_i\|}{(\|A\|\|x_i\|+\|b\|)} < eps --> \begin{displaymath}err = \frac{\Vert r_i\Vert}{(\Vert A\Vert\Vert x_i\Vert+\Vert b\Vert)} < eps \end{displaymath} @@ -110,7 +110,7 @@ err = \frac{\|r_i\|}{\|r_0\|_2} < eps --> \begin{displaymath}err = \frac{\Vert r_i\Vert}{\Vert r_0\Vert _2} < eps \end{displaymath} @@ -169,7 +169,7 @@ call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&
      FCG:
      the Flexible Conjugate Gradient method5; + HREF="footnode.html#foot8281">5;

      @@ -367,7 +367,7 @@ Returned as: a real number. SRC="img1.png" ALT="$A$">; only available with the $CG$ method on real data.
      diff --git a/docs/html/node4.html b/docs/html/node4.html index 675e62c1..1fd13393 100644 --- a/docs/html/node4.html +++ b/docs/html/node4.html @@ -132,7 +132,7 @@ subdomain by $\cal I$, $\cal B$ and
    Table 17: Data types
    \includegraphics[scale=0.65]{figures/points.eps} \begin{displaymath}dot \leftarrow x^H y\end{displaymath}
    @@ -121,10 +121,10 @@ Data types
    $dot$, $x$,
    x
    the local portion of global dense matrix $x$.
    @@ -175,7 +175,7 @@ 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 2. The rank of $y$ must be the same of $x$.
    @@ -236,7 +236,7 @@ Default: global=.true.
    Function value
    is the dot product of vectors $x$ and \begin{lstlisting}
 vres(1) = psb_gedot(x1,y1,desc_a,info,global=.false.)
diff --git a/docs/html/node55.html b/docs/html/node55.html
index 265a6aad..f14e7e64 100644
--- a/docs/html/node55.html
+++ b/docs/html/node55.html
@@ -55,7 +55,7 @@ psb_gedots -- Generalized Dot Product</A>
 <P>
 This subroutine computes a series of  dot products among the columns of
 two dense matrices  <SPAN CLASS=$x$ and

    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. @@ -106,10 +106,10 @@ Data types
    $res$, $x$,
    x
    the local portion of global dense matrix $x$.
    @@ -160,7 +160,7 @@ 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 3. The rank of $y$ must be the same of $x$.
    @@ -206,7 +206,7 @@ Specified as: an object of type descdatapsb_desc_type.
    res
    is the dot product of vectors $x$ and

    This function computes the infinity-norm of a vector $x$.
    If $x$ is a real vector it computes infinity norm as: @@ -80,7 +80,7 @@ amax \leftarrow \max_i |x_i|

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

    @@ -92,7 +92,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} @@ -115,11 +115,11 @@ Data types
    @@ -158,7 +158,7 @@ Data types
    x
    the local portion of global dense matrix $x$. @@ -205,7 +205,7 @@ Default: global=.true.
    Function value
    is the infinity norm of vector $x$.
    @@ -238,7 +238,7 @@ An integer value; 0 means no error has been detected. by using the following scheme:
    \begin{lstlisting}
 vres(1) = psb_geamax(x1,desc_a,info,global=.false.)
diff --git a/docs/html/node57.html b/docs/html/node57.html
index d4842941..fdd2f842 100644
--- a/docs/html/node57.html
+++ b/docs/html/node57.html
@@ -55,7 +55,7 @@ psb_geamaxs -- Generalized Infinity Norm</A>
 <P>
 This subroutine computes a series of  infinity norms on the columns of
 a  dense matrix  <SPAN CLASS=$x$:

    @@ -67,7 +67,7 @@ res(i) \leftarrow \max_k |x(k,i)| --> \begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath} @@ -89,11 +89,11 @@ Data types
    $amax$ $x$ Function
    @@ -132,7 +132,7 @@ Data types
    x
    the local portion of global dense matrix $x$.
    @@ -162,7 +162,7 @@ Specified as: an object of type descdatapsb_desc_type.
    res
    is the infinity norm of the columns of $x$.
    diff --git a/docs/html/node58.html b/docs/html/node58.html index 612d29bc..c4fd28f7 100644 --- a/docs/html/node58.html +++ b/docs/html/node58.html @@ -54,12 +54,12 @@ psb_norm1 -- 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: @@ -79,7 +79,7 @@ asum \leftarrow \|x_i\|

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

    @@ -114,11 +114,11 @@ Data types
    $res$ $x$ Subroutine
    @@ -157,7 +157,7 @@ Data types
    x
    the local portion of global dense matrix $x$. @@ -203,7 +203,7 @@ Default: global=.true.
    Function value
    is the 1-norm of vector $x$.
    @@ -236,7 +236,7 @@ An integer value; 0 means no error has been detected. by using the following scheme:
    \begin{lstlisting}
 vres(1) = psb_geasum(x1,desc_a,info,global=.false.)
diff --git a/docs/html/node59.html b/docs/html/node59.html
index c5c35da2..4ab320ea 100644
--- a/docs/html/node59.html
+++ b/docs/html/node59.html
@@ -55,7 +55,7 @@ psb_geasums -- Generalized 1-Norm of Vector</A>
 <P>
 This subroutine computes a series of  1-norms on the columns of
 a  dense matrix  <SPAN CLASS=$x$:

    @@ -67,19 +67,19 @@ 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: @@ -99,7 +99,7 @@ res(i) \leftarrow \|x_i\|

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

    @@ -111,7 +111,7 @@ 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} @@ -133,11 +133,11 @@ Data types
    $asum$ $x$ Function
    @@ -176,7 +176,7 @@ Data types
    x
    the local portion of global dense matrix $x$. @@ -209,7 +209,7 @@ Specified as: an object of type descdatapsb_desc_type.
    res
    contains the 1-norm of (the columns of) $x$.
    diff --git a/docs/html/node6.html b/docs/html/node6.html index db20a351..caab0136 100644 --- a/docs/html/node6.html +++ b/docs/html/node6.html @@ -61,7 +61,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 @@ -72,7 +72,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) @@ -81,7 +81,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 @@ -106,7 +106,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 diff --git a/docs/html/node60.html b/docs/html/node60.html index df95b3e8..f663ca4c 100644 --- a/docs/html/node60.html +++ b/docs/html/node60.html @@ -54,12 +54,12 @@ psb_norm2 -- 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: @@ -79,7 +79,7 @@ nrm2 \leftarrow \sqrt{x^T x}

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

    @@ -108,11 +108,11 @@ Data types
    $res$ $x$ Subroutine
    @@ -157,7 +157,7 @@ psb_norm2(x, desc_a, info [,global])
    x
    the local portion of global dense matrix $x$.
    @@ -203,7 +203,7 @@ Default: global=.true.
    Function Value
    is the 2-norm of vector $x$.
    @@ -238,7 +238,7 @@ An integer value; 0 means no error has been detected. by using the following scheme:
    \begin{lstlisting}
 vres(1) = psb_genrm2(x1,desc_a,info,global=.false.)
diff --git a/docs/html/node61.html b/docs/html/node61.html
index 484183ad..867d4545 100644
--- a/docs/html/node61.html
+++ b/docs/html/node61.html
@@ -55,7 +55,7 @@ psb_genrm2s -- Generalized 2-Norm of Vector</A>
 <P>
 This subroutine computes a series of  2-norms on the columns of
 a  dense matrix  <SPAN CLASS=$x$:

    @@ -67,7 +67,7 @@ res(i) \leftarrow \|x(:,i)\|_2 --> \begin{displaymath}res(i) \leftarrow \Vert x(:,i)\Vert _2 \end{displaymath} @@ -89,11 +89,11 @@ Data types
    $nrm2$ $x$ Function
    @@ -132,7 +132,7 @@ Data types
    x
    the local portion of global dense matrix $x$. @@ -165,7 +165,7 @@ Specified as: an object of type descdatapsb_desc_type.
    res
    contains the 1-norm of (the columns of) $x$.
    diff --git a/docs/html/node62.html b/docs/html/node62.html index c5a4d925..6ef4e36d 100644 --- a/docs/html/node62.html +++ b/docs/html/node62.html @@ -68,7 +68,7 @@ nrm1 \leftarrow \|A\|_1 --> \begin{displaymath}nrm1 \leftarrow \Vert A\Vert _1 \end{displaymath} diff --git a/docs/html/node63.html b/docs/html/node63.html index 7540dc85..d084adad 100644 --- a/docs/html/node63.html +++ b/docs/html/node63.html @@ -68,7 +68,7 @@ nrmi \leftarrow \|A\|_\infty --> \begin{displaymath}nrmi \leftarrow \Vert A\Vert _\infty \end{displaymath} diff --git a/docs/html/node64.html b/docs/html/node64.html index bd70a04e..9f15d14c 100644 --- a/docs/html/node64.html +++ b/docs/html/node64.html @@ -88,7 +88,7 @@ y \leftarrow \alpha A^T x + \beta y
    $res$ $x$ Subroutine
    \begin{displaymath}
 y \leftarrow \alpha A^T x + \beta y
@@ -122,7 +122,7 @@ y \leftarrow \alpha A^H x + \beta y
 where:
 <DL>
 <DT><STRONG><SPAN CLASS=$x$
    is the global dense matrix WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" SRC="img1.png" ALT="$A$">, $x$, $y$, $\alpha$,
    alpha
    the scalar $\alpha$.
    @@ -244,7 +244,7 @@ Specified as: an object of type spdatapsb_Tspmat_type.
    x
    the local portion of global dense matrix $x$. @@ -258,7 +258,7 @@ 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 12. The rank of $x$ must be the same of 12. The rank of $y$ must be the same of $x$.
    @@ -336,7 +336,7 @@ Type: optional Intent: in.
    Default: $trans = N$
    @@ -354,7 +354,7 @@ Type: optional Intent: inout.
    Specified as: a rank one array of the same type of $x$ and
    $x$
    is the global dense matrix WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" SRC="img55.png" ALT="$T$">, $x$, WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" SRC="img56.png" ALT="$D$">, $\alpha$,
    alpha
    the scalar $\alpha$.
    @@ -218,7 +218,7 @@ Specified as: an object type specified in
    x
    the local portion of global dense matrix $x$. @@ -232,7 +232,7 @@ 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 13. The rank of $y$ must be the same of $x$.
    @@ -308,7 +308,7 @@ Type: optional Intent: in.
    Default: $trans = N$
    @@ -334,7 +334,7 @@ Type: optional Intent: in.
    Default: $unitd = U$
    @@ -397,7 +397,7 @@ Type: optional Intent: inout.
    Specified as: a rank one array of the same type of $x$ with the TARGET attribute. diff --git a/docs/html/node67.html b/docs/html/node67.html index c7999425..1ab4ea30 100644 --- a/docs/html/node67.html +++ b/docs/html/node67.html @@ -75,7 +75,7 @@ x \leftarrow x where:
    $x$
    is a global dense submatrix. @@ -92,10 +92,10 @@ Data types
    @@ -125,7 +125,7 @@ Data types


    \begin{lstlisting}
 call psb_halo(x, desc_a, info)
@@ -143,7 +143,7 @@ call psb_halo(x, desc_a, info, work, data)
 </DD>
 <DT><STRONG>x</STRONG></DT>
 <DD>global dense matrix <SPAN CLASS=$x$.
    @@ -178,7 +178,7 @@ Type: optional Intent: inout.
    Specified as: a rank one array of the same type of $x$. @@ -200,7 +200,7 @@ index list on which to base the data exchange.

    x
    global dense result matrix $x$.
    @@ -237,12 +237,12 @@ Sample discretization mesh.
    $\alpha$, $x$ Subroutine
    \includegraphics[scale=0.45]{figures/try8x8.eps} \includegraphics[scale=0.45]{figures/try8x8} @@ -258,7 +258,7 @@ 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 diff --git a/docs/html/node68.html b/docs/html/node68.html index 2924a570..eff574f4 100644 --- a/docs/html/node68.html +++ b/docs/html/node68.html @@ -74,11 +74,11 @@ x \leftarrow Q x where:
    $x$
    is the global dense submatrix $x$
    @@ -90,10 +90,10 @@ where: operators $ P_a$ and $P_a$ and $ P^{T}$. + ALT="$P^{T}$">.
    @@ -107,7 +107,7 @@ Data types
    @@ -134,7 +134,7 @@ Data types


    \begin{lstlisting}
 call psb_ovrl(x, desc_a, info)
@@ -152,7 +152,7 @@ call psb_ovrl(x, desc_a, info, update=update_type, work=work)
 </DD>
 <DT><STRONG>x</STRONG></DT>
 <DD>global dense matrix <SPAN CLASS=$x$.
    @@ -222,7 +222,7 @@ Type: optional Intent: inout.
    Specified as: a one dimensional array of the same type of $x$. @@ -233,7 +233,7 @@ Specified as: a one dimensional array of the same type of

    x
    global dense result matrix $x$.
    @@ -270,7 +270,7 @@ An integer value; 0 means no error has been detected.
  • The operator $ P^{T}$ performs the reduction sum of overlap + ALT="$P^{T}$"> performs the reduction sum of overlap elements; it is a “prolongation” operator The operator $ P_a$ performs a scaling on the overlap elements by + ALT="$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. @@ -297,12 +297,12 @@ Sample discretization mesh.
  • $x$ Subroutine
    \includegraphics[scale=0.65]{figures/try8x8_ov.eps} \includegraphics[scale=0.65]{figures/try8x8_ov} @@ -319,7 +319,7 @@ 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 diff --git a/docs/html/node69.html b/docs/html/node69.html index 68b008fb..79a9d84c 100644 --- a/docs/html/node69.html +++ b/docs/html/node69.html @@ -98,7 +98,7 @@ process $i$.
    $collect$
    is the collect function. @@ -145,7 +145,7 @@ Data types


    \begin{lstlisting}
 call psb_gather(glob_x, loc_x, desc_a, info, root)
diff --git a/docs/html/node70.html b/docs/html/node70.html
index 0565fbb8..d16ab510 100644
--- a/docs/html/node70.html
+++ b/docs/html/node70.html
@@ -65,7 +65,7 @@ loc\_x_i \leftarrow scatter(glob\_x)
  -->
 
 <IMG
- WIDTH=

    @@ -96,7 +96,7 @@ process $i$.
    $scatter$
    is the scatter function. @@ -143,7 +143,7 @@ Data types


    \begin{lstlisting}
 call psb_scatter(glob_x, loc_x, desc_a, info, root, mold)
diff --git a/docs/html/node72.html b/docs/html/node72.html
index af9ac422..6277372e 100644
--- a/docs/html/node72.html
+++ b/docs/html/node72.html
@@ -122,7 +122,7 @@ Specified as: an integer value <SPAN CLASS=$0,1$, default $0$. @@ -207,7 +207,7 @@ Specified as: a logical value, default: .false. WIDTH="80" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" SRC="img92.png" ALT="$lidx(1:nl)$"> to be assigned to the global indices $vl$.
    diff --git a/docs/html/node73.html b/docs/html/node73.html index 7f060fe7..364e18a0 100644 --- a/docs/html/node73.html +++ b/docs/html/node73.html @@ -106,7 +106,7 @@ Type: required. Intent: in.
    Specified as: an integer array of length $nz$.

    @@ -120,7 +120,7 @@ Type: required. Intent: in.
    Specified as: an integer array of length $nz$. @@ -135,7 +135,7 @@ Type: optional. Intent: in.
    Specified as: a logical array of length $nz$, default .true.. @@ -149,7 +149,7 @@ Type: optional. Intent: in.
    Specified as: an integer array of length $nz$. @@ -192,7 +192,7 @@ Type: optional. Intent: out.
    Specified as: an integer array of length $nz$. @@ -206,7 +206,7 @@ Type: optional. Intent: out.
    Specified as: an integer array of length $nz$. diff --git a/docs/html/node78.html b/docs/html/node78.html index 2a93a784..42ebd801 100644 --- a/docs/html/node78.html +++ b/docs/html/node78.html @@ -127,7 +127,7 @@ An integer value; 0 means no error has been detected.
  • The descriptor may be in either the build or assembled state.
  • Providing a good estimate for the number of nonzeroes $nnz$ in the assembled matrix may substantially improve performance in the diff --git a/docs/html/node79.html b/docs/html/node79.html index 2899651c..ddef5568 100644 --- a/docs/html/node79.html +++ b/docs/html/node79.html @@ -87,7 +87,7 @@ Type:required. Intent: in.
    Specified as: an integer array of size $nz$. @@ -101,7 +101,7 @@ Type:required. Intent: in.
    Specified as: an integer array of size $nz$. @@ -115,11 +115,11 @@ Type:required. Intent: in.
    Specified as: an array of size $nz$. Must be of the same type and kind of the coefficients of the sparse matrix $a$. diff --git a/docs/html/node83.html b/docs/html/node83.html index 6acda544..46fd98a0 100644 --- a/docs/html/node83.html +++ b/docs/html/node83.html @@ -89,7 +89,7 @@ Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a rank-1 array. @@ -107,7 +107,7 @@ Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a rank-1 array. diff --git a/docs/html/node84.html b/docs/html/node84.html index 9b60b9be..92f45b5e 100644 --- a/docs/html/node84.html +++ b/docs/html/node84.html @@ -67,7 +67,7 @@ call psb_geins(m, irw, val, x, desc_a, info [,dupl,local])
    m
    Number of rows in $val$ to be inserted.
    @@ -85,7 +85,7 @@ Specified as: an integer value. SRC="img4.png" ALT="$i$"> of $val$ will be inserted into the local row corresponding to the global row index 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.
    diff --git a/docs/html/node88.html b/docs/html/node88.html index cfacedda..56205478 100644 --- a/docs/html/node88.html +++ b/docs/html/node88.html @@ -125,7 +125,7 @@ accepted. Default: false. SRC="img21.png" ALT="$y$"> is not present, then $x$ is overwritten with the translated integer indices. Scope: global @@ -145,7 +145,7 @@ Specified as: a rank one integer array. WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" SRC="img21.png" ALT="$y$"> is overwritten with the translated integer indices, and $x$ is left unchanged. diff --git a/docs/html/node89.html b/docs/html/node89.html index 050152a7..ac275095 100644 --- a/docs/html/node89.html +++ b/docs/html/node89.html @@ -113,7 +113,7 @@ Specified as: a character variable Ignore, Warning or SRC="img21.png" ALT="$y$"> is not present, then $x$ is overwritten with the translated integer indices. Scope: global @@ -133,7 +133,7 @@ Specified as: a rank one integer array. WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" SRC="img21.png" ALT="$y$"> is overwritten with the translated integer indices, and $x$ is left unchanged. diff --git a/docs/html/node90.html b/docs/html/node90.html index fee6dd3a..aaf6d3e3 100644 --- a/docs/html/node90.html +++ b/docs/html/node90.html @@ -97,7 +97,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
    Function value
    A logical mask which is true if $x$ is owned by the current process Scope: local diff --git a/docs/html/node91.html b/docs/html/node91.html index 00db2a3e..d2bd979c 100644 --- a/docs/html/node91.html +++ b/docs/html/node91.html @@ -108,7 +108,7 @@ Specified as: a character variable Ignore, Warning or
    y
    A logical mask which is true for all corresponding entries of $x$ that are owned by the current process Scope: local diff --git a/docs/html/node92.html b/docs/html/node92.html index 725dc118..a3c4d4b6 100644 --- a/docs/html/node92.html +++ b/docs/html/node92.html @@ -97,7 +97,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
    Function value
    A logical mask which is true if $x$ is local to the current process Scope: local diff --git a/docs/html/node93.html b/docs/html/node93.html index 8ff5d626..3a12cab9 100644 --- a/docs/html/node93.html +++ b/docs/html/node93.html @@ -108,7 +108,7 @@ Specified as: a character variable Ignore, Warning or
    y
    A logical mask which is true for all corresponding entries of $x$ that are local to the current process Scope: local diff --git a/docs/html/node96.html b/docs/html/node96.html index ca9a4144..59c77237 100644 --- a/docs/html/node96.html +++ b/docs/html/node96.html @@ -131,7 +131,7 @@ Specified as: an integer $>0$, default: $row$. @@ -206,7 +206,7 @@ An integer value; 0 means no error has been detected.
    1. The output $nz$ is always the size of the output generated by the current call; thus, if append=.true., the total output diff --git a/docs/html/node98.html b/docs/html/node98.html index 71c0deae..79c9b307 100644 --- a/docs/html/node98.html +++ b/docs/html/node98.html @@ -151,7 +151,7 @@ Type: Optional
      An integer array of rank 1, whose entries are moved to the same position as the corresponding entries in $x$.
    @@ -188,10 +188,10 @@ position as the corresponding entries in $ix(1:n)$ where $n$ is the size of $x$ are initialized to diff --git a/docs/psblas-3.5.pdf b/docs/psblas-3.6.pdf similarity index 99% rename from docs/psblas-3.5.pdf rename to docs/psblas-3.6.pdf index 7c9050aa..d9d36c97 100644 --- a/docs/psblas-3.5.pdf +++ b/docs/psblas-3.6.pdf @@ -21,7 +21,7 @@ stream % 1 0 obj << /S /GoTo /D (title.0) >> % 5 0 obj -(PSBLAS-v3.5.0 User's Guide) +(PSBLAS-v3.6.0 User's Guide) % 6 0 obj << /S /GoTo /D (section.1) >> % 9 0 obj @@ -453,17 +453,17 @@ stream 0 g 0 G 0 g 0 G BT -/F16 24.7871 Tf 135.453 563.395 Td [(PSBLAS)-375(3.5.0)-375(User's)-375(guide)]TJ +/F16 24.7871 Tf 135.453 564.641 Td [(PSBLAS)-375(3.6.0)-375(User's)-375(guide)]TJ ET q -1 0 0 1 125.3 547.151 cm +1 0 0 1 125.3 548.396 cm 0 0 343.711 4.981 re f Q BT -/F18 14.3462 Tf 132.314 525.468 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 526.714 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 -135.228 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 42.624 -11.955 Td [(Sep)-333(1st,)-334(2017)]TJ +/F27 9.9626 Tf 223.567 -133.983 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 41.655 -11.955 Td [(Dec)-333(1st,)-334(2018)]TJ 0 g 0 G 0 g 0 G ET @@ -11415,7 +11415,7 @@ endstream endobj 1149 0 obj << -/Length 6976 +/Length 6975 >> stream 0 g 0 G @@ -11430,114 +11430,114 @@ BT 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -18.597 Td [(y)]TJ +/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.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)-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 +/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 244.743 0 Td [(psb)]TJ ET q -1 0 0 1 436.673 592.09 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 439.811 591.891 Td [(T)]TJ +/F30 9.9626 Tf 439.811 592.034 Td [(T)]TJ ET q -1 0 0 1 445.669 592.09 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 448.807 591.891 Td [(vect)]TJ +/F30 9.9626 Tf 448.807 592.034 Td [(vect)]TJ ET q -1 0 0 1 470.356 592.09 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 473.495 591.891 Td [(type)]TJ +/F30 9.9626 Tf 473.495 592.034 Td [(type)]TJ 0 g 0 G -/F8 9.9626 Tf -297.884 -11.956 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 +/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 [-345(12)]TJ 0 g 0 G [(.)-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 -84.067 -18.597 Td [(desc)]TJ +/F27 9.9626 Tf -84.067 -18.454 Td [(desc)]TJ ET q -1 0 0 1 172.619 549.583 cm +1 0 0 1 172.619 549.87 cm []0 d 0 J 0.398 w 0 0 m 3.437 0 l S Q BT -/F27 9.9626 Tf 176.057 549.383 Td [(a)]TJ +/F27 9.9626 Tf 176.057 549.67 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.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 ET q -1 0 0 1 327.588 501.762 cm +1 0 0 1 327.588 502.049 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 330.727 501.563 Td [(desc)]TJ +/F30 9.9626 Tf 330.727 501.85 Td [(desc)]TJ ET q -1 0 0 1 352.275 501.762 cm +1 0 0 1 352.275 502.049 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 355.414 501.563 Td [(type)]TJ +/F30 9.9626 Tf 355.414 501.85 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -225.63 -18.597 Td [(trans)]TJ +/F27 9.9626 Tf -225.63 -18.454 Td [(trans)]TJ 0 g 0 G /F8 9.9626 Tf 30.609 0 Td [(indicates)-333(what)-334(kind)-333(of)-333(op)-28(eration)-333(to)-333(p)-28(erform.)]TJ 0 g 0 G -/F27 9.9626 Tf -5.703 -18.597 Td [(trans)-383(=)-384(N)]TJ +/F27 9.9626 Tf -5.703 -18.453 Td [(trans)-383(=)-384(N)]TJ 0 g 0 G /F8 9.9626 Tf 56.124 0 Td [(the)-333(op)-28(eration)-333(is)-334(sp)-28(eci\014ed)-333(b)28(y)-333(equation)]TJ 0 0 1 rg 0 0 1 RG [-334(1)]TJ 0 g 0 G 0 g 0 G -/F27 9.9626 Tf -56.124 -14.612 Td [(trans)-383(=)-384(T)]TJ +/F27 9.9626 Tf -56.124 -14.469 Td [(trans)-383(=)-384(T)]TJ 0 g 0 G /F8 9.9626 Tf 55.128 0 Td [(the)-333(op)-28(eration)-333(is)-334(sp)-28(eci\014ed)-333(b)28(y)-333(equation)]TJ 0 0 1 rg 0 0 1 RG [-334(2)]TJ 0 g 0 G 0 g 0 G -/F27 9.9626 Tf -55.128 -14.612 Td [(trans)-383(=)-384(C)]TJ +/F27 9.9626 Tf -55.128 -14.468 Td [(trans)-383(=)-384(C)]TJ 0 g 0 G /F8 9.9626 Tf 55.433 0 Td [(the)-333(op)-28(eration)-333(is)-334(sp)-27(ec)-1(i\014)1(e)-1(d)-333(b)28(y)-333(equation)]TJ 0 0 1 rg 0 0 1 RG [-334(3)]TJ 0 g 0 G - -55.433 -18.597 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.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Default:)]TJ/F11 9.9626 Tf 39.436 0 Td [(tr)-28(ans)]TJ/F8 9.9626 Tf 27.052 0 Td [(=)]TJ/F11 9.9626 Tf 10.517 0 Td [(N)]TJ/F8 9.9626 Tf -77.005 -11.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(c)28(haracter)-334(v)56(ariable.)]TJ + -55.433 -18.453 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 [(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 [(tr)-28(ans)]TJ/F8 9.9626 Tf 27.052 0 Td [(=)]TJ/F11 9.9626 Tf 10.517 0 Td [(N)]TJ/F8 9.9626 Tf -77.005 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(c)28(haracter)-334(v)56(ariable.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -18.596 Td [(w)32(ork)]TJ +/F27 9.9626 Tf -24.906 -18.454 Td [(w)32(ork)]TJ 0 g 0 G -/F8 9.9626 Tf 29.431 0 Td [(w)28(ork)-334(arr)1(a)27(y)84(.)]TJ -4.525 -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 [(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 [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-487(as:)-753(a)-487(rank)-488(one)-487(arra)28(y)-488(of)-487(the)-488(same)-487(t)27(yp)-27(e)-488(of)]TJ/F11 9.9626 Tf 239.183 0 Td [(x)]TJ/F8 9.9626 Tf 10.551 0 Td [(and)]TJ/F11 9.9626 Tf 20.907 0 Td [(y)]TJ/F8 9.9626 Tf 10.099 0 Td [(with)-487(the)]TJ -280.74 -11.955 Td [(T)83(AR)28(GET)-333(attribute.)]TJ +/F8 9.9626 Tf 29.431 0 Td [(w)28(ork)-334(arr)1(a)27(y)84(.)]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.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 [(inout)]TJ/F8 9.9626 Tf 26.096 0 Td [(.)]TJ -59.582 -11.955 Td [(Sp)-28(eci\014ed)-487(as:)-753(a)-487(rank)-488(one)-487(arra)28(y)-488(of)-487(the)-488(same)-487(t)27(yp)-27(e)-488(of)]TJ/F11 9.9626 Tf 239.183 0 Td [(x)]TJ/F8 9.9626 Tf 10.551 0 Td [(and)]TJ/F11 9.9626 Tf 20.907 0 Td [(y)]TJ/F8 9.9626 Tf 10.099 0 Td [(with)-487(the)]TJ -280.74 -11.955 Td [(T)83(AR)28(GET)-333(attribute.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -18.597 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -24.906 -18.454 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G - 0 -18.597 Td [(y)]TJ + 0 -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(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.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)-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 +/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(12)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.906 -18.597 Td [(info)]TJ +/F27 9.9626 Tf -24.906 -18.454 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(t)1(e)-1(d.)]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 -36.529 Td [(48)]TJ + 141.968 -38.108 Td [(48)]TJ 0 g 0 G ET @@ -12647,19 +12647,19 @@ endobj /Type /ObjStm /N 100 /First 995 -/Length 12713 +/Length 12718 >> stream 1116 0 248 58 1117 115 1113 174 1122 318 1119 466 1120 611 1124 758 252 817 1126 875 1121 934 1133 1080 1127 1246 1128 1393 1129 1538 1130 1682 1135 1829 256 1887 1136 1944 1137 2003 -1138 2062 1139 2121 1132 2180 1148 2337 1131 2539 1140 2686 1141 2829 1142 2975 1143 3122 1144 3273 -1145 3424 1146 3574 1150 3719 1147 3778 1154 3884 1151 4023 1156 4169 260 4227 1157 4284 1153 4343 -1166 4514 1152 4707 1159 4855 1160 4999 1161 5146 1162 5293 1163 5437 1164 5584 1168 5730 1165 5789 -1172 5921 1169 6069 1170 6216 1174 6363 1171 6421 1177 6527 1175 6666 1179 6814 264 6873 1176 6931 -1185 7011 1180 7168 1181 7312 1182 7459 1187 7606 268 7664 1188 7721 1189 7780 1190 7838 1191 7896 -1184 7954 1195 8086 1199 8234 1200 8361 1201 8404 1202 8611 1203 8849 1204 9125 1183 9361 1193 9508 -1197 9654 1198 9713 1194 9772 1208 9920 1210 10038 1207 10096 1217 10177 1213 10334 1214 10478 1215 10625 -1219 10771 272 10830 1220 10888 1221 10947 1222 11006 1223 11065 1216 11124 1229 11269 1224 11426 1226 11573 +1138 2062 1139 2121 1132 2180 1148 2337 1131 2539 1140 2686 1141 2830 1142 2977 1143 3124 1144 3275 +1145 3426 1146 3577 1150 3724 1147 3783 1154 3889 1151 4028 1156 4174 260 4232 1157 4289 1153 4348 +1166 4519 1152 4712 1159 4860 1160 5004 1161 5151 1162 5298 1163 5442 1164 5589 1168 5735 1165 5794 +1172 5926 1169 6074 1170 6221 1174 6368 1171 6426 1177 6532 1175 6671 1179 6819 264 6878 1176 6936 +1185 7016 1180 7173 1181 7317 1182 7464 1187 7611 268 7669 1188 7726 1189 7785 1190 7843 1191 7901 +1184 7959 1195 8091 1199 8239 1200 8366 1201 8409 1202 8616 1203 8854 1204 9130 1183 9366 1193 9513 +1197 9659 1198 9718 1194 9777 1208 9925 1210 10043 1207 10101 1217 10182 1213 10339 1214 10483 1215 10630 +1219 10776 272 10835 1220 10893 1221 10952 1222 11011 1223 11070 1216 11129 1229 11274 1224 11431 1226 11578 % 1116 0 obj << /D [1114 0 R /XYZ 98.895 753.953 null] @@ -12811,7 +12811,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [419.358 588.68 495.412 599.805] +/Rect [419.358 588.824 495.412 599.949] /A << /S /GoTo /D (vdata) >> >> % 1141 0 obj @@ -12819,7 +12819,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [377.029 577.002 388.984 587.85] +/Rect [377.029 577.145 388.984 587.994] /A << /S /GoTo /D (table.12) >> >> % 1142 0 obj @@ -12827,7 +12827,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [310.273 498.352 377.331 509.477] +/Rect [310.273 498.639 377.331 509.764] /A << /S /GoTo /D (descdata) >> >> % 1143 0 obj @@ -12835,7 +12835,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.199 461.435 404.172 472.284] +/Rect [397.199 462.009 404.172 472.858] /A << /S /GoTo /D (equation.4.1) >> >> % 1144 0 obj @@ -12843,7 +12843,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [396.202 446.823 403.176 457.672] +/Rect [396.202 447.541 403.176 458.389] /A << /S /GoTo /D (equation.4.2) >> >> % 1145 0 obj @@ -12851,7 +12851,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [396.507 432.212 403.481 443.06] +/Rect [396.507 433.073 403.481 443.921] /A << /S /GoTo /D (equation.4.3) >> >> % 1146 0 obj @@ -12859,7 +12859,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [253.818 190.452 265.774 201.3] +/Rect [253.818 191.887 265.774 202.735] /A << /S /GoTo /D (table.12) >> >> % 1150 0 obj @@ -19912,7 +19912,7 @@ endstream endobj 1626 0 obj << -/Length 6213 +/Length 6189 >> stream 0 g 0 G @@ -19928,54 +19928,54 @@ BT /F16 11.9552 Tf 124.986 706.129 Td [(nrm2)-375(|)-375(Global)-375(2-norm)-375(reduction)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf -25.091 -18.389 Td [(call)-525(psb_nrm2\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -19.794 Td [(This)-425(subroutine)-426(imp)1(le)-1(men)28(ts)-425(a)-425(2-norm)-426(v)56(alue)-425(reduction)-426(op)-27(eration)-426(based)-425(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_nrm2\050icontxt,)-525(dat,)-525(root\051)]TJ/F8 9.9626 Tf 14.944 -19.604 Td [(This)-425(subroutine)-426(imp)1(le)-1(men)28(ts)-425(a)-425(2-norm)-426(v)56(alue)-425(reduction)-426(op)-27(eration)-426(based)-425(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 -18.226 Td [(T)32(yp)-32(e:)]TJ +/F27 9.9626 Tf 0 -18.074 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.076 Td [(On)-383(En)32(try)]TJ +/F27 9.9626 Tf -33.797 -19 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G - 0 -19.076 Td [(icon)32(txt)]TJ + 0 -19 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.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.076 Td [(dat)]TJ +/F27 9.9626 Tf -24.907 -19 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.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)-421(as:)-619(a)-421(real)-421(v)55(ariable,)-443(whic)28(h)-421(ma)28(y)-421(b)-28(e)-421(a)-421(scalar,)-443(or)-421(a)-420(rank)-421(1)-421(arra)28(y)83(.)]TJ 0 -11.955 Td [(Kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(ce)-1(sses.)]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(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.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)-421(as:)-619(a)-421(real)-421(v)55(ariable,)-443(whic)28(h)-421(ma)28(y)-421(b)-28(e)-421(a)-421(scalar,)-443(or)-421(a)-420(rank)-421(1)-421(arra)28(y)83(.)]TJ 0 -11.955 Td [(Kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(ce)-1(sses.)]TJ 0 g 0 G -/F27 9.9626 Tf -24.907 -19.075 Td [(ro)-32(ot)]TJ +/F27 9.9626 Tf -24.907 -19 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.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 -31.749 Td [(On)-383(Return)]TJ +/F27 9.9626 Tf -251.325 -31.559 Td [(On)-383(Return)]TJ 0 g 0 G 0 g 0 G - 0 -19.076 Td [(dat)]TJ + 0 -19 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(2-norm)-333(reduction.)]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)-333(as:)-445(a)-333(real)-333(v)55(ariable,)-333(whic)28(h)-333(ma)27(y)-333(b)-28(e)-333(a)-333(sc)-1(alar)1(,)-334(or)-333(a)-333(rank)-334(1)-333(arra)28(y)83(.)]TJ 0 -11.955 Td [(Kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(ce)-1(sses.)]TJ/F16 11.9552 Tf -24.907 -19.794 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(2-norm)-333(reduction.)]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.956 Td [(Sp)-28(eci\014ed)-333(as:)-445(a)-333(real)-333(v)55(ariable,)-333(whic)28(h)-333(ma)27(y)-333(b)-28(e)-333(a)-333(sc)-1(alar)1(,)-334(or)-333(a)-333(rank)-334(1)-333(arra)28(y)83(.)]TJ 0 -11.955 Td [(Kind,)-333(rank)-333(and)-334(size)-333(m)28(ust)-334(agree)-333(on)-333(all)-334(pro)-27(ce)-1(sses.)]TJ/F16 11.9552 Tf -24.907 -19.603 Td [(Notes)]TJ 0 g 0 G -/F8 9.9626 Tf 12.177 -18.226 Td [(1.)]TJ +/F8 9.9626 Tf 12.177 -18.075 Td [(1.)]TJ 0 g 0 G [-500(This)-416(reduction)-416(is)-416(appropriate)-416(to)-416(compute)-416(the)-417(results)-416(of)-416(m)28(ultiple)-416(\050lo)-28(cal\051)]TJ 12.73 -11.955 Td [(NRM2)-333(op)-28(erations)-333(at)-334(the)-333(same)-334(ti)1(m)-1(e.)]TJ 0 g 0 G - -12.73 -19.076 Td [(2.)]TJ + -12.73 -18.999 Td [(2.)]TJ 0 g 0 G - [-500(Denoting)-283(b)28(y)]TJ/F11 9.9626 Tf 68.601 0 Td [(dat)]TJ/F10 6.9738 Tf 14.05 -1.494 Td [(i)]TJ/F8 9.9626 Tf 6.138 1.494 Td [(the)-283(v)55(alue)-283(of)-283(the)-283(v)55(ariable)]TJ/F11 9.9626 Tf 106.29 0 Td [(dat)]TJ/F8 9.9626 Tf 16.87 0 Td [(on)-283(pro)-28(cess)]TJ/F11 9.9626 Tf 47.57 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(,)-293(the)-283(output)]TJ/F11 9.9626 Tf 54.503 0 Td [(r)-28(es)]TJ/F8 9.9626 Tf -304.724 -11.955 Td [(is)-333(equiv)55(alen)28(t)-333(to)-334(the)-333(computation)-333(of)]TJ/F11 9.9626 Tf 122.071 -25.904 Td [(r)-28(es)]TJ/F8 9.9626 Tf 16.847 0 Td [(=)]TJ/F1 9.9626 Tf 10.516 14.335 Td [(s)]TJ + [-500(Denoting)-283(b)28(y)]TJ/F11 9.9626 Tf 68.601 0 Td [(dat)]TJ/F10 6.9738 Tf 14.05 -1.495 Td [(i)]TJ/F8 9.9626 Tf 6.138 1.495 Td [(the)-283(v)55(alue)-283(of)-283(the)-283(v)55(ariable)]TJ/F11 9.9626 Tf 106.29 0 Td [(dat)]TJ/F8 9.9626 Tf 16.87 0 Td [(on)-283(pro)-28(cess)]TJ/F11 9.9626 Tf 47.57 0 Td [(i)]TJ/F8 9.9626 Tf 3.432 0 Td [(,)-293(the)-283(output)]TJ/F11 9.9626 Tf 54.503 0 Td [(r)-28(es)]TJ/F8 9.9626 Tf -304.724 -11.956 Td [(is)-333(equiv)55(alen)28(t)-333(to)-334(the)-333(computation)-333(of)]TJ/F11 9.9626 Tf 122.071 -25.714 Td [(r)-28(es)]TJ/F8 9.9626 Tf 16.847 0 Td [(=)]TJ/F1 9.9626 Tf 10.516 14.335 Td [(s)]TJ ET q -1 0 0 1 284.199 203.069 cm +1 0 0 1 284.199 204.589 cm []0 d 0 J 0.398 w 0 0 m 34.569 0 l S Q BT -/F1 9.9626 Tf 284.199 197.999 Td [(X)]TJ/F10 6.9738 Tf 5.786 -21.219 Td [(i)]TJ/F11 9.9626 Tf 10.265 11.755 Td [(dat)]TJ/F7 6.9738 Tf 14.049 3.431 Td [(2)]TJ/F10 6.9738 Tf 0 -6.208 Td [(i)]TJ/F11 9.9626 Tf 4.469 2.777 Td [(;)]TJ/F8 9.9626 Tf -193.966 -30.908 Td [(with)-333(care)-334(tak)28(en)-333(to)-334(a)28(v)28(oid)-333(unnecessary)-334(o)28(v)28(er\015o)28(w.)]TJ +/F1 9.9626 Tf 284.199 199.519 Td [(X)]TJ/F10 6.9738 Tf 5.786 -21.219 Td [(i)]TJ/F11 9.9626 Tf 10.265 11.754 Td [(dat)]TJ/F7 6.9738 Tf 14.049 3.432 Td [(2)]TJ/F10 6.9738 Tf 0 -6.209 Td [(i)]TJ/F11 9.9626 Tf 4.469 2.777 Td [(;)]TJ/F8 9.9626 Tf -193.966 -30.717 Td [(with)-333(care)-334(tak)28(en)-333(to)-334(a)28(v)28(oid)-333(unnecessary)-334(o)28(v)28(er\015o)28(w.)]TJ 0 g 0 G - -12.73 -19.075 Td [(3.)]TJ + -12.73 -19 Td [(3.)]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.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 - 139.477 -36.158 Td [(117)]TJ + 139.477 -37.944 Td [(117)]TJ 0 g 0 G ET @@ -20274,7 +20274,7 @@ endobj /Type /ObjStm /N 100 /First 967 -/Length 9159 +/Length 9161 >> stream 405 0 1558 58 1559 116 1554 175 1562 307 1564 425 409 483 1565 540 1566 598 1567 656 @@ -20283,10 +20283,10 @@ stream 1585 2467 1590 2573 1592 2691 433 2749 1589 2806 1594 2938 1596 3056 437 3115 1597 3173 1598 3232 1593 3291 1600 3423 1602 3541 441 3599 1603 3656 1604 3714 1599 3772 1606 3904 1608 4022 445 4081 1609 4139 1610 4198 1605 4257 1612 4389 1614 4507 449 4565 1615 4622 1616 4680 1611 4738 1619 4870 -1621 4988 453 5047 1622 5105 1623 5164 1618 5223 1625 5355 1627 5473 457 5531 1628 5588 1629 5645 -1631 5703 1624 5760 1633 5930 1635 6048 461 6107 1636 6165 1632 6223 1638 6355 1640 6473 465 6531 -1641 6588 1637 6645 1645 6777 1642 6925 1643 7070 1647 7217 469 7276 1644 7334 1651 7427 1653 7545 -1654 7603 1655 7662 1657 7721 1658 7780 1659 7839 1660 7898 1661 7957 1662 8015 1663 8074 1664 8133 +1621 4988 453 5047 1622 5105 1623 5164 1618 5223 1625 5355 1627 5473 457 5531 1628 5588 1629 5646 +1631 5704 1624 5762 1633 5932 1635 6050 461 6109 1636 6167 1632 6225 1638 6357 1640 6475 465 6533 +1641 6590 1637 6647 1645 6779 1642 6927 1643 7072 1647 7219 469 7278 1644 7336 1651 7429 1653 7547 +1654 7605 1655 7664 1657 7723 1658 7782 1659 7841 1660 7900 1661 7959 1662 8017 1663 8076 1664 8135 % 405 0 obj << /D [1555 0 R /XYZ 150.705 720.077 null] @@ -20626,15 +20626,15 @@ stream >> % 1628 0 obj << -/D [1625 0 R /XYZ 99.895 272.94 null] +/D [1625 0 R /XYZ 99.895 274.156 null] >> % 1629 0 obj << -/D [1625 0 R /XYZ 99.895 239.973 null] +/D [1625 0 R /XYZ 99.895 241.264 null] >> % 1631 0 obj << -/D [1625 0 R /XYZ 99.895 152.13 null] +/D [1625 0 R /XYZ 99.895 153.877 null] >> % 1624 0 obj << @@ -21616,7 +21616,7 @@ endstream endobj 1760 0 obj << -/Length 4508 +/Length 5089 >> stream 0 g 0 G @@ -21625,7 +21625,7 @@ BT /F16 11.9552 Tf 150.705 706.129 Td [(init)-375(|)-375(Initialize)-375(a)-375(preconditioner)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf 0 -18.389 Td [(call)-525(prec%init\050ptype,)-525(info\051)]TJ +/F30 9.9626 Tf 0 -18.389 Td [(call)-525(prec%init\050icontxt,ptype,)-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 @@ -21634,32 +21634,36 @@ BT /F27 9.9626 Tf -33.797 -19.926 Td [(On)-383(En)32(try)]TJ 0 g 0 G 0 g 0 G - 0 -19.925 Td [(pt)32(yp)-32(e)]TJ + 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.)]TJ -15.082 -11.955 Td [(Scop)-28(e:)]TJ/F27 9.9626 Tf 27.95 0 Td [(global)]TJ/F8 9.9626 Tf 29.757 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.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.956 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 [(pt)32(yp)-32(e)]TJ 0 g 0 G -/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.651 -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(c)28(haracter)-334(stri)1(ng,)-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.906 -19.926 Td [(On)-383(Exit)]TJ +/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.378 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.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.097 0 Td [(.)]TJ -59.583 -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.538 0 Td [(psb)]TJ +/F30 9.9626 Tf 197.537 0 Td [(psb)]TJ ET q -1 0 0 1 389.467 514.589 cm +1 0 0 1 389.467 446.843 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 392.606 514.39 Td [(prec)]TJ +/F30 9.9626 Tf 392.606 446.644 Td [(prec)]TJ ET q -1 0 0 1 414.155 514.589 cm +1 0 0 1 414.155 446.843 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F30 9.9626 Tf 417.293 514.39 Td [(type)]TJ +/F30 9.9626 Tf 417.293 446.644 Td [(type)]TJ 0 g 0 G /F8 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G @@ -22389,7 +22393,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [372.153 511.179 439.211 522.304] +/Rect [372.153 443.433 439.211 454.558] /A << /S /GoTo /D (precdata) >> >> % 1757 0 obj @@ -22397,7 +22401,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [219.641 421.792 226.103 433.832] +/Rect [219.641 354.046 226.103 366.086] /A << /S /GoTo /D (Hfootnote.4) >> >> % 1761 0 obj @@ -28547,11 +28551,11 @@ endstream endobj 2028 0 obj << - /Title (Parallel Sparse BLAS V. 3.5.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$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.18)/Keywords() -/CreationDate (D:20180904173147+01'00') -/ModDate (D:20180904173147+01'00') + /Title (Parallel Sparse BLAS V. 3.6.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$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.17)/Keywords() +/CreationDate (D:20181011090433+01'00') +/ModDate (D:20181011090433+01'00') /Trapped /False -/PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) kpathsea version 6.2.3) +/PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) kpathsea version 6.2.2) >> endobj 2001 0 obj @@ -28714,7 +28718,7 @@ endobj /W [1 3 1] /Root 2027 0 R /Info 2028 0 R -/ID [<92A2920F2726132CA3CAC852168500EC> <92A2920F2726132CA3CAC852168500EC>] +/ID [<40F15E8DF9A4249227B6550011EFEDD4> <40F15E8DF9A4249227B6550011EFEDD4>] /Length 10150 >> stream @@ -28729,32 +28733,32 @@ stream kksk#k$k%k&k'k(k)k*k+k,k-k.k/k0k1k2k3k4k5k6k7k8k9k:k;k<k=k>k?k@kAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkTkRk!kQkUkVkWkXkYkZk[k\k]k^k_k`kakbkc     kS:]!"#$%&'()*, ^3E%E+NE;OMBCL?@23497-E6./01rA:;@8<E'E EE#E>E!?KEFJAGHBCD>=LMOKN][PAQESTUVWXYZ@ @ \P^_`abc@@@@@@@@@E(E,^@ @@ m@ @@@@@@@@@ @@@@ @!@.@/@,@@@"@#@$@%@&@'@(@)@*@+@8@-'@0@1@2@3@4@5@:@;@@@9ܐ@<@F@A@BE-@M@G@H@J@O@P@Q@X@N@R@U@V@WJ@^@Y?@Z@_O@`@b + E. ȕ$S #',%&./2-,0E/M45<3>69E):?=/>C@2AEFGHIJPND3KQRTOPSVWXYZ^U[#[]E0`_ysabc  -  # !"%&'+$(*E1-./3,02<4;56789:;>?@D=KYACGEhMFIJKOHjLNXPuQRSTUVWE2Z[\`Y]_bc^a^^j^^^ -^^E$^ ^ ^ ^^^^^ S^^^^^^^^^^^^^!^#0^ ^#^)^'^">^$^&E3^*^+^,^-^.^/^1^(Ym^0^3^4^6^2x^5^8^;^7^9^=^>^?^N^F^<S^@^B^C^D^E^O^R^G^P^Q^H^I^J^K^L^Mn^U^S&^TE"E4^W^X^Y^`^V2-^Z^\^]^^^_^b^c^aS -  -   9@ AE5"*(!F#%&'+,.)e-3/vI058467:=9=;<E>ѻ?@ABCDE6GJF\HLQKMNOPSTXR -UWZ[^Y \`c_ $aCCCC YC -_@E7C -C qOCCC C C CC  wCCCCCCCCC CC&C CCCCC C!C"C#C$C%C(C)C,C' C*C5C- ־C.C/C0C1C2C3C4E8C7C8C;C6 C9C=C>CBC< C?CACDCECHCC CFCJCKCNCI -CLCSCO -*CPCQCRCUCVCWCZCT -/CXE9C\C]C`C[ -D&C^Ca -QCb & -& +  # !"%&'+$(*E1-./3,02<4;56789:;>?@D=KYACGEhMFIJKOHjLNXPuQRSTUVWE2Z[\`Y]_bc^a^^j^^^ +^^E$^ ^ ^ ^^^^^ S^^^^^^^^^^^^^!^#0^ ^#^)^'^">^$^&E3^*^+^,^-^.^/^1^(Yl^0^3^4^6^2x^5^8^;^7^9^=^>^?^N^F^<R^@^B^C^D^E^O^R^G^P^Q^H^I^J^K^L^Mm^U^S&^TE"E4^W^X^Y^`^V2,^Z^\^]^^^_^b^c^aS .  +   =D AE5"*(!G#%&'+,.)e-3/vM058467:=9A;<E>ѿ?@ABCDE6GJF`HLQKMNOPSTXR 1UWZ[^Y \`c_ %aCCCC YC +_DE7C +C qSCCC C C CC  wCCCCCCCCC CC&C CCCCC C!C"C#C$C%C(C)C,C' C*C5C- C.C/C0C1C2C3C4E8C7C8C;C6 C9C=C>CBC< C?CACDCECHCC CFCJCKCNCI +CLCSCO +*CPCQCRCUCVCWCZCT +/CXE9C\C]C`C[ +D*C^Ca +QCb * +*  -    -  -E: -ɐ! -D #'" -)$&).( -*,-05/ 1347:6 8E;@; 2g<=>?BCDGA A#EKH Q{IWL hFMNOPQRSTUV[X Ya\ ]_`E<b c  - Ծ       E= " 7 (# <$&'.) 1*,-4/ F$023:5 Z689E>@; oT<>?GA *BDEEFLH IKQM NPSTWR UX KYZ[E\]^_`abc  -   E?   /# 5[!")$ ;%'(-* Dl+/4. F023E@6;5 Y79:=B< nl>@AHC |DFGJOI KMNUP 0QSTYV WEA[\`Z ]_bca c    -   *XEB.r"9Y $%.,#;&()*+E/013-\2574x}6G89:<DFECQHIPRSTUVWXYZ[\]^_`abcEEEDEEEAEhE6fE\E |>E -E E #E ehE.EEzE:=EiEEOEEDEEEFEGEHEIEJ2Xw w wwwwwwwwwwwwwwwwwww w!w"w#w$w%w&w'w(w)w*w+w,w-w.w/w0w1w2w3w4w5w6w7w8w9w:w;w<w=w>w?w@wAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw[w\w]w^w_w`wawbwc  -   _I +    +  +E: +ɔ! +H #'" +-$&).( +*,-05/ 1347:6 8E;@; 2k<=>?BCDGA A'EKH QIWL hJMNOPQRSTUV[X Ya\ ]_`E<b c  +        E= " ; (# @$&'.) 1*,-4/ F(023:5 Z689E>@; oX<>?GA .BDEEFLH IKQM NPSTWR UX 7YZ[E\]^_`abc  +   E?   /# 5I!")$ ;%'(-* DZ+/4. F023E@6;5 Y79:=B< nZ>@AHC |DFGJOI KMNUP QSTYV WEA[\`Z x]_bca –?<  +     ,EB0"; $%.,#>&()*+E/013-^2574z6G8+9:<DFECQHIPRSTUVWXYZ[\]^_`abcE2EEGE6EEtEE8E_ E ~qE +*E E %E gEaE EEw?w@wAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw[w\w]w^w_w`wawbwc  +   | endstream endobj startxref -1291081 +1291644 %%EOF diff --git a/docs/src/Makefile b/docs/src/Makefile index 1fbf2b03..65574507 100644 --- a/docs/src/Makefile +++ b/docs/src/Makefile @@ -138,7 +138,7 @@ PDF = $(join $(BASEFILE),.pdf) PS = $(join $(BASEFILE),.ps) GXS = $(join $(BASEFILE),.gxs) GLX = $(join $(BASEFILE),.glx) -TARGETPDF= ../psblas-3.5.pdf +TARGETPDF= ../psblas-3.6.pdf BASEHTML = $(patsubst %.tex,%,$(HTMLFILE)) HTML = $(join $(HTMLFILE),.html) HTMLDIR = ../html diff --git a/docs/src/precs.tex b/docs/src/precs.tex index bfea0e1f..6c58bbc0 100644 --- a/docs/src/precs.tex +++ b/docs/src/precs.tex @@ -28,12 +28,17 @@ backward compatibility \addcontentsline{toc}{subsection}{prec\%init} \begin{verbatim} -call prec%init(ptype, info) +call prec%init(icontxt,ptype, info) \end{verbatim} \begin{description} \item[Type:] Asynchronous. \item[\bf On Entry] +\item[icontxt] the communication context.\\ +Scope:{\bf global}.\\ +Type:{\bf required}.\\ +Intent: {\bf in}.\\ +Specified as: an integer value. \item[ptype] the type of preconditioner. Scope: {\bf global} \\ Type: {\bf required}\\ diff --git a/docs/src/userguide.tex b/docs/src/userguide.tex index 170df8cb..a3a9c0bd 100644 --- a/docs/src/userguide.tex +++ b/docs/src/userguide.tex @@ -25,7 +25,7 @@ \relax \pdfcompresslevel=0 %-- 0 = none, 9 = best \pdfinfo{ %-- Info dictionary of PDF output /Author (Alfredo Buttari) - /Title (Parallel Sparse BLAS V. 3.5.0) + /Title (Parallel Sparse BLAS V. 3.6.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) @@ -88,7 +88,7 @@ \begin{document} -\pdfbookmark{PSBLAS-v3.5.0 User's Guide}{title} +\pdfbookmark{PSBLAS-v3.6.0 User's Guide}{title} \lstset{language=Fortran} \newlength{\centeroffset} \setlength{\centeroffset}{-0.5\oddsidemargin} @@ -98,7 +98,7 @@ \vspace*{\stretch{1}} \noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth} \flushright -{\Huge\bfseries PSBLAS 3.5.0 User's guide +{\Huge\bfseries PSBLAS 3.6.0 User's guide } \noindent\rule[-1ex]{\textwidth}{5pt}\\[2.5ex] \hfill\emph{\Large A reference guide for the Parallel Sparse BLAS library} @@ -110,7 +110,7 @@ {\bfseries by Salvatore Filippone\\ and Alfredo Buttari}\\ -Sep 1st, 2017 +Dec 1st, 2018 \end{minipage}} %\addtolength{\textwidth}{\centeroffset} diff --git a/docs/src/userhtml.tex b/docs/src/userhtml.tex index da8b976a..dd21efbe 100644 --- a/docs/src/userhtml.tex +++ b/docs/src/userhtml.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.5.0) +% /Title (Parallel Sparse BLAS V. 3.6.0) % /Subject (Parallel Sparse Basic Linear Algebra Subroutines) % /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) % /Creator (pdfLaTeX) @@ -93,9 +93,9 @@ Alfredo Buttari } \\ %\\[10ex] %\today -Software version: 3.5.0\\ +Software version: 3.6.0\\ %\today -Sep 1st, 2017 +Dec 1st, 2018 \cleardoublepage \begingroup \renewcommand*{\thepage}{toc} From f2e247c8a8117de0bb76a2a7312f73ce2bd34f08 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Thu, 18 Oct 2018 17:58:08 +0100 Subject: [PATCH 23/26] Take out obsolete method impl. --- base/serial/impl/psb_c_csr_impl.f90 | 54 ----------------------------- base/serial/impl/psb_d_csr_impl.f90 | 54 ----------------------------- base/serial/impl/psb_s_csr_impl.f90 | 54 ----------------------------- base/serial/impl/psb_z_csr_impl.f90 | 54 ----------------------------- 4 files changed, 216 deletions(-) diff --git a/base/serial/impl/psb_c_csr_impl.f90 b/base/serial/impl/psb_c_csr_impl.f90 index 451a3bec..bb0d5309 100644 --- a/base/serial/impl/psb_c_csr_impl.f90 +++ b/base/serial/impl/psb_c_csr_impl.f90 @@ -2185,60 +2185,6 @@ contains end subroutine psb_c_csr_csgetrow -!!$subroutine psb_c_csr_csgetblk(imin,imax,a,b,info,& -!!$ & jmin,jmax,iren,append,rscale,cscale) -!!$ ! Output is always in COO format -!!$ use psb_error_mod -!!$ use psb_const_mod -!!$ use psb_c_csr_mat_mod, psb_protect_name => psb_c_csr_csgetblk -!!$ implicit none -!!$ -!!$ class(psb_c_csr_sparse_mat), intent(in) :: a -!!$ class(psb_c_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 -!!$ integer(psb_ipk_) :: ierr(5) -!!$ 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 call psb_error_handler(err_act) -!!$ -!!$ return -!!$ -!!$end subroutine psb_c_csr_csgetblk ! ! CSR implementation of tril/triu diff --git a/base/serial/impl/psb_d_csr_impl.f90 b/base/serial/impl/psb_d_csr_impl.f90 index d2931fbd..868f0fe6 100644 --- a/base/serial/impl/psb_d_csr_impl.f90 +++ b/base/serial/impl/psb_d_csr_impl.f90 @@ -2185,60 +2185,6 @@ contains end subroutine psb_d_csr_csgetrow -!!$subroutine psb_d_csr_csgetblk(imin,imax,a,b,info,& -!!$ & jmin,jmax,iren,append,rscale,cscale) -!!$ ! Output is always in COO format -!!$ use psb_error_mod -!!$ use psb_const_mod -!!$ use psb_d_csr_mat_mod, psb_protect_name => psb_d_csr_csgetblk -!!$ implicit none -!!$ -!!$ class(psb_d_csr_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 -!!$ integer(psb_ipk_) :: ierr(5) -!!$ 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 call psb_error_handler(err_act) -!!$ -!!$ return -!!$ -!!$end subroutine psb_d_csr_csgetblk ! ! CSR implementation of tril/triu diff --git a/base/serial/impl/psb_s_csr_impl.f90 b/base/serial/impl/psb_s_csr_impl.f90 index bcb9f933..9a537360 100644 --- a/base/serial/impl/psb_s_csr_impl.f90 +++ b/base/serial/impl/psb_s_csr_impl.f90 @@ -2185,60 +2185,6 @@ contains end subroutine psb_s_csr_csgetrow -!!$subroutine psb_s_csr_csgetblk(imin,imax,a,b,info,& -!!$ & jmin,jmax,iren,append,rscale,cscale) -!!$ ! Output is always in COO format -!!$ use psb_error_mod -!!$ use psb_const_mod -!!$ use psb_s_csr_mat_mod, psb_protect_name => psb_s_csr_csgetblk -!!$ implicit none -!!$ -!!$ class(psb_s_csr_sparse_mat), intent(in) :: a -!!$ class(psb_s_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 -!!$ integer(psb_ipk_) :: ierr(5) -!!$ 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 call psb_error_handler(err_act) -!!$ -!!$ return -!!$ -!!$end subroutine psb_s_csr_csgetblk ! ! CSR implementation of tril/triu diff --git a/base/serial/impl/psb_z_csr_impl.f90 b/base/serial/impl/psb_z_csr_impl.f90 index 9e99060f..502b7c5b 100644 --- a/base/serial/impl/psb_z_csr_impl.f90 +++ b/base/serial/impl/psb_z_csr_impl.f90 @@ -2185,60 +2185,6 @@ contains end subroutine psb_z_csr_csgetrow -!!$subroutine psb_z_csr_csgetblk(imin,imax,a,b,info,& -!!$ & jmin,jmax,iren,append,rscale,cscale) -!!$ ! Output is always in COO format -!!$ use psb_error_mod -!!$ use psb_const_mod -!!$ use psb_z_csr_mat_mod, psb_protect_name => psb_z_csr_csgetblk -!!$ implicit none -!!$ -!!$ class(psb_z_csr_sparse_mat), intent(in) :: a -!!$ class(psb_z_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 -!!$ integer(psb_ipk_) :: ierr(5) -!!$ 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 call psb_error_handler(err_act) -!!$ -!!$ return -!!$ -!!$end subroutine psb_z_csr_csgetblk ! ! CSR implementation of tril/triu From 4dc21ec7e25484e560ac4b49b26caad0e7a16ccd Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Sun, 21 Oct 2018 18:34:29 +0100 Subject: [PATCH 24/26] Fix chksz in getblk. --- base/serial/impl/psb_c_base_mat_impl.F90 | 6 +++--- base/serial/impl/psb_d_base_mat_impl.F90 | 6 +++--- base/serial/impl/psb_s_base_mat_impl.F90 | 6 +++--- base/serial/impl/psb_z_base_mat_impl.F90 | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/base/serial/impl/psb_c_base_mat_impl.F90 b/base/serial/impl/psb_c_base_mat_impl.F90 index fe016135..c463746b 100644 --- a/base/serial/impl/psb_c_base_mat_impl.F90 +++ b/base/serial/impl/psb_c_base_mat_impl.F90 @@ -447,7 +447,7 @@ end subroutine psb_c_base_csgetrow ! If performance is critical it can be overridden. ! subroutine psb_c_base_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) + & jmin,jmax,iren,append,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -461,7 +461,7 @@ subroutine psb_c_base_csgetblk(imin,imax,a,b,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 + logical, intent(in), optional :: rscale,cscale,chksz integer(psb_ipk_) :: err_act, nzin, nzout integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' @@ -522,7 +522,7 @@ subroutine psb_c_base_csgetblk(imin,imax,a,b,info,& 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) + & nzin=nzin, rscale=rscale, cscale=cscale, chksz=chksz) if (info /= psb_success_) goto 9999 diff --git a/base/serial/impl/psb_d_base_mat_impl.F90 b/base/serial/impl/psb_d_base_mat_impl.F90 index be63683a..59c9975d 100644 --- a/base/serial/impl/psb_d_base_mat_impl.F90 +++ b/base/serial/impl/psb_d_base_mat_impl.F90 @@ -447,7 +447,7 @@ end subroutine psb_d_base_csgetrow ! If performance is critical it can be overridden. ! subroutine psb_d_base_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) + & jmin,jmax,iren,append,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -461,7 +461,7 @@ subroutine psb_d_base_csgetblk(imin,imax,a,b,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 + logical, intent(in), optional :: rscale,cscale,chksz integer(psb_ipk_) :: err_act, nzin, nzout integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' @@ -522,7 +522,7 @@ subroutine psb_d_base_csgetblk(imin,imax,a,b,info,& 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) + & nzin=nzin, rscale=rscale, cscale=cscale, chksz=chksz) if (info /= psb_success_) goto 9999 diff --git a/base/serial/impl/psb_s_base_mat_impl.F90 b/base/serial/impl/psb_s_base_mat_impl.F90 index d4cf3058..aaef8dfb 100644 --- a/base/serial/impl/psb_s_base_mat_impl.F90 +++ b/base/serial/impl/psb_s_base_mat_impl.F90 @@ -447,7 +447,7 @@ end subroutine psb_s_base_csgetrow ! If performance is critical it can be overridden. ! subroutine psb_s_base_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) + & jmin,jmax,iren,append,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -461,7 +461,7 @@ subroutine psb_s_base_csgetblk(imin,imax,a,b,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 + logical, intent(in), optional :: rscale,cscale,chksz integer(psb_ipk_) :: err_act, nzin, nzout integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' @@ -522,7 +522,7 @@ subroutine psb_s_base_csgetblk(imin,imax,a,b,info,& 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) + & nzin=nzin, rscale=rscale, cscale=cscale, chksz=chksz) if (info /= psb_success_) goto 9999 diff --git a/base/serial/impl/psb_z_base_mat_impl.F90 b/base/serial/impl/psb_z_base_mat_impl.F90 index fde15356..103eeef6 100644 --- a/base/serial/impl/psb_z_base_mat_impl.F90 +++ b/base/serial/impl/psb_z_base_mat_impl.F90 @@ -447,7 +447,7 @@ end subroutine psb_z_base_csgetrow ! If performance is critical it can be overridden. ! subroutine psb_z_base_csgetblk(imin,imax,a,b,info,& - & jmin,jmax,iren,append,rscale,cscale) + & jmin,jmax,iren,append,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -461,7 +461,7 @@ subroutine psb_z_base_csgetblk(imin,imax,a,b,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 + logical, intent(in), optional :: rscale,cscale,chksz integer(psb_ipk_) :: err_act, nzin, nzout integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' @@ -522,7 +522,7 @@ subroutine psb_z_base_csgetblk(imin,imax,a,b,info,& 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) + & nzin=nzin, rscale=rscale, cscale=cscale, chksz=chksz) if (info /= psb_success_) goto 9999 From e16b7906fa88d949f16fc06678018f29e21ebd4b Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Sun, 28 Oct 2018 11:20:00 +0000 Subject: [PATCH 25/26] Fixed test directory issues with Makefiles and interface updates. --- test/fileread/Makefile | 5 ++++- test/hello/Makefile | 11 +++++++---- test/kernel/Makefile | 4 +++- test/pargen/Makefile | 5 ++++- test/serial/Makefile | 5 ++++- test/serial/d_matgen.F90 | 2 +- test/serial/psb_d_xyz_impl.f90 | 28 +++++++++++++++++----------- test/serial/psb_d_xyz_mat_mod.f90 | 14 ++++++++++++-- test/torture/Makefile | 12 ++++++++---- test/util/Makefile | 6 +++--- 10 files changed, 63 insertions(+), 29 deletions(-) diff --git a/test/fileread/Makefile b/test/fileread/Makefile index d825eab4..132a2e15 100644 --- a/test/fileread/Makefile +++ b/test/fileread/Makefile @@ -18,7 +18,10 @@ ZFOBJS=getp.o psb_zf_sample.o EXEDIR=./runs -all: psb_sf_sample psb_df_sample psb_cf_sample psb_zf_sample +all: runsd psb_sf_sample psb_df_sample psb_cf_sample psb_zf_sample + +runsd: + (if test ! -d runs ; then mkdir runs; fi) psb_sf_sample.o psb_df_sample.o psb_cf_sample.o psb_zf_sample.o: getp.o diff --git a/test/hello/Makefile b/test/hello/Makefile index 1a73ff34..6516a868 100644 --- a/test/hello/Makefile +++ b/test/hello/Makefile @@ -1,10 +1,10 @@ -BASEDIR=../.. -INCDIR=$(BASEDIR)/include +INSTALLDIR=../.. +INCDIR=$(INSTALLDIR)/include MODDIR=$(INSTALLDIR)/modules/ include $(INCDIR)/Make.inc.psblas # # Libraries used -LIBDIR=$(BASEDIR)/lib +LIBDIR=$(INSTALLDIR)/lib PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) # @@ -16,7 +16,10 @@ FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). EXEDIR=./runs -all: hello pingpong +all: runsd hello pingpong + +runsd: + (if test ! -d runs ; then mkdir runs; fi) hello: hello.o $(FLINK) hello.o -o hello $(PSBLAS_LIB) $(LDLIBS) diff --git a/test/kernel/Makefile b/test/kernel/Makefile index 453bcd26..8eb076a4 100644 --- a/test/kernel/Makefile +++ b/test/kernel/Makefile @@ -17,8 +17,10 @@ STOBJS=s_file_spmv.o DPGOBJS=pdgenspmv.o EXEDIR=./runs -all: d_file_spmv s_file_spmv pdgenspmv +all: runsd d_file_spmv s_file_spmv pdgenspmv +runsd: + (if test ! -d runs ; then mkdir runs; fi) d_file_spmv: $(DTOBJS) $(FLINK) $(LOPT) $(DTOBJS) -o d_file_spmv $(PSBLAS_LIB) $(LDLIBS) diff --git a/test/pargen/Makefile b/test/pargen/Makefile index 72a2a512..20a95c0b 100644 --- a/test/pargen/Makefile +++ b/test/pargen/Makefile @@ -16,7 +16,10 @@ FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). EXEDIR=./runs -all: psb_d_pde3d psb_s_pde3d psb_d_pde2d psb_s_pde2d +all: runsd psb_d_pde3d psb_s_pde3d psb_d_pde2d psb_s_pde2d + +runsd: + (if test ! -d runs ; then mkdir runs; fi) psb_d_pde3d: psb_d_pde3d.o $(FLINK) psb_d_pde3d.o -o psb_d_pde3d $(PSBLAS_LIB) $(LDLIBS) diff --git a/test/serial/Makefile b/test/serial/Makefile index 3469d375..0136949a 100644 --- a/test/serial/Makefile +++ b/test/serial/Makefile @@ -15,7 +15,10 @@ FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). EXEDIR=./runs -all: d_matgen +all: runsd d_matgen + +runsd: + (if test ! -d runs ; then mkdir runs; fi) psb_d_xyz_impl.o d_matgen.o: psb_d_xyz_mat_mod.o diff --git a/test/serial/d_matgen.F90 b/test/serial/d_matgen.F90 index 31f7f882..68d4f70d 100644 --- a/test/serial/d_matgen.F90 +++ b/test/serial/d_matgen.F90 @@ -414,7 +414,7 @@ program d_matgen ! call psb_barrier(ictxt) t1 = psb_wtime() - if (.true.) then + if (.false.) then call psb_gen_pde3d(ictxt,idim,a,b,x,desc_a,afmt,& & a1,a2,a3,b1,b2,b3,c,g,info,amold=acsr) else if (.false.) then diff --git a/test/serial/psb_d_xyz_impl.f90 b/test/serial/psb_d_xyz_impl.f90 index 4f57c53d..cf32ec60 100644 --- a/test/serial/psb_d_xyz_impl.f90 +++ b/test/serial/psb_d_xyz_impl.f90 @@ -2008,7 +2008,7 @@ end subroutine psb_d_xyz_csgetptn subroutine psb_d_xyz_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) ! Output is always in COO format use psb_error_mod use psb_const_mod @@ -2026,9 +2026,9 @@ subroutine psb_d_xyz_csgetrow(imin,imax,a,nz,ia,ja,val,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, intent(in), optional :: rscale,cscale,chksz - logical :: append_, rscale_, cscale_ + logical :: append_, rscale_, cscale_, chksz_ integer(psb_ipk_) :: nzin_, jmin_, jmax_, err_act, i integer(psb_ipk_) :: ierr(5) character(len=20) :: name='csget' @@ -2073,13 +2073,18 @@ subroutine psb_d_xyz_csgetrow(imin,imax,a,nz,ia,ja,val,info,& else cscale_ = .false. endif + if (present(chksz)) then + chksz_ = chksz + else + chksz_ = .true. + endif if ((rscale_.or.cscale_).and.(present(iren))) then info = psb_err_many_optional_arg_ call psb_errpush(info,name,a_err='iren (rscale.or.cscale)') goto 9999 end if - call xyz_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,info,& + call xyz_getrow(imin,imax,jmin_,jmax_,a,nz,ia,ja,val,nzin_,append_,chksz_,info,& & iren) if (rscale_) then @@ -2103,7 +2108,7 @@ subroutine psb_d_xyz_csgetrow(imin,imax,a,nz,ia,ja,val,info,& contains - subroutine xyz_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,info,& + subroutine xyz_getrow(imin,imax,jmin,jmax,a,nz,ia,ja,val,nzin,append,chksz,info,& & iren) use psb_const_mod @@ -2118,7 +2123,7 @@ contains integer(psb_ipk_), allocatable, intent(inout) :: ia(:), ja(:) real(psb_dpk_), allocatable, intent(inout) :: val(:) integer(psb_ipk_), intent(in) :: nzin - logical, intent(in) :: append + logical, intent(in) :: append, chksz integer(psb_ipk_) :: info integer(psb_ipk_), optional :: iren(:) integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw @@ -2146,11 +2151,12 @@ contains nz = 0 - call psb_ensure_size(nzin_+nzt,ia,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) - if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) - - if (info /= psb_success_) return + if (chksz) then + call psb_ensure_size(nzin_+nzt,ia,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info) + if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info) + if (info /= psb_success_) return + end if if (present(iren)) then do i=irw, lrw diff --git a/test/serial/psb_d_xyz_mat_mod.f90 b/test/serial/psb_d_xyz_mat_mod.f90 index 08717b8b..245623d3 100644 --- a/test/serial/psb_d_xyz_mat_mod.f90 +++ b/test/serial/psb_d_xyz_mat_mod.f90 @@ -59,6 +59,7 @@ module psb_d_xyz_mat_mod real(psb_dpk_), allocatable :: val(:) contains + procedure, pass(a) :: is_by_rows => d_xyz_is_by_rows procedure, pass(a) :: get_size => d_xyz_get_size procedure, pass(a) :: get_nzeros => d_xyz_get_nzeros procedure, nopass :: get_fmt => d_xyz_get_fmt @@ -313,7 +314,7 @@ module psb_d_xyz_mat_mod !! \see psb_d_base_mat_mod::psb_d_base_csgetrow interface subroutine psb_d_xyz_csgetrow(imin,imax,a,nz,ia,ja,val,info,& - & jmin,jmax,iren,append,nzin,rscale,cscale) + & jmin,jmax,iren,append,nzin,rscale,cscale,chksz) import :: psb_ipk_, psb_d_xyz_sparse_mat, psb_dpk_ class(psb_d_xyz_sparse_mat), intent(in) :: a integer(psb_ipk_), intent(in) :: imin,imax @@ -324,7 +325,7 @@ module psb_d_xyz_mat_mod 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, intent(in), optional :: rscale,cscale,chksz end subroutine psb_d_xyz_csgetrow end interface @@ -518,6 +519,15 @@ contains ! == =================================== + function d_xyz_is_by_rows(a) result(res) + implicit none + class(psb_d_xyz_sparse_mat), intent(in) :: a + logical :: res + res = .true. + + end function d_xyz_is_by_rows + + function d_xyz_sizeof(a) result(res) implicit none class(psb_d_xyz_sparse_mat), intent(in) :: a diff --git a/test/torture/Makefile b/test/torture/Makefile index 2b4e7788..8a98657e 100644 --- a/test/torture/Makefile +++ b/test/torture/Makefile @@ -1,8 +1,8 @@ -BASEDIR=../.. -INCDIR=$(BASEDIR)/include/ +INSTALLDIR=../.. +INCDIR=$(INSTALLDIR)/include/ MODDIR=$(INSTALLDIR)/modules/ include $(INCDIR)/Make.inc.psblas -LIBDIR=$(BASEDIR)/lib/ +LIBDIR=$(INSTALLDIR)/lib/ PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) CCOPT= -g @@ -14,7 +14,11 @@ PSBTOBJS=psbtf.o psb_mvsv_tester.o \ EXEDIR=./runs -all: psbtf +all: runsd psbtf + +runsd: + (if test ! -d runs ; then mkdir runs; fi) + psbtf.o: psb_mvsv_tester.o psb_mvsv_tester.o: psb_s_mvsv_tester.o psb_d_mvsv_tester.o psb_c_mvsv_tester.o \ psb_z_mvsv_tester.o diff --git a/test/util/Makefile b/test/util/Makefile index 37fb3da6..404170fb 100644 --- a/test/util/Makefile +++ b/test/util/Makefile @@ -1,11 +1,11 @@ -BASEDIR=../.. -INCDIR=$(BASEDIR)/include/ +INSTALLDIR=../.. +INCDIR=$(INSTALLDIR)/include/ MODDIR=$(INSTALLDIR)/modules/ include $(INCDIR)/Make.inc.psblas # # Libraries used # -LIBDIR=$(BASEDIR)/lib/ +LIBDIR=$(INSTALLDIR)/lib/ PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) From 56e6742719237666ff7fcc3a5a3902597a2eb3ff Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Mon, 29 Oct 2018 15:32:46 +0000 Subject: [PATCH 26/26] changelog update. --- Changelog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Changelog b/Changelog index 4790da3d..cd7a0c51 100644 --- a/Changelog +++ b/Changelog @@ -1,5 +1,10 @@ Changelog. A lot less detailed than usual, at least for past history. +2018/10/10: new ICTXT argument to prec%init method. +2018/09/04: Modified vector class get_vect method +2018/08/10: Optional arguments in GETROW method. +2018/07/30: Improved TRIL/TRIU implementations. +2018/06/14: New FCG code. 2018/04/23: Change default for CDALL with VL. New GLOBAL argument for reductions. 2018/04/15: Fixed pargen benchmark programs. Made MOLD mandatory.