diff --git a/base/modules/serial/psb_serial_mod.f90 b/base/modules/serial/psb_serial_mod.f90 index 2f2154e0..627b318e 100644 --- a/base/modules/serial/psb_serial_mod.f90 +++ b/base/modules/serial/psb_serial_mod.f90 @@ -1,9 +1,9 @@ -! +! ! Parallel Sparse BLAS version 3.5 ! (C) Copyright 2006-2018 -! Salvatore Filippone -! Alfredo Buttari -! +! Salvatore Filippone +! Alfredo Buttari +! ! Redistribution and use in source and binary forms, with or without ! modification, are permitted provided that the following conditions ! are met: @@ -15,7 +15,7 @@ ! 3. The name of the PSBLAS group or the names of its contributors may ! not be used to endorse or promote products derived from this ! software without specific written permission. -! +! ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED ! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR @@ -27,8 +27,8 @@ ! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ! POSSIBILITY OF SUCH DAMAGE. -! -! +! +! module psb_serial_mod use psb_const_mod use psb_error_mod @@ -66,9 +66,42 @@ module psb_serial_mod real(psb_dpk_), intent (in) :: alpha, beta integer(psb_ipk_), intent(out) :: info end subroutine psb_d_nspaxpby + subroutine psb_s_nspaxpby(nz,iz,z,alpha, nx, ix, x, beta, ny,iy,y,info) + use psb_const_mod + integer(psb_ipk_), intent(out) :: nz + integer(psb_ipk_), intent(out) :: iz(:) + real(psb_spk_), intent (out) :: z(:) + integer(psb_ipk_), intent(in) :: nx, ny + integer(psb_ipk_), intent(in) :: ix(:), iy(:) + real(psb_spk_), intent (in) :: x(:), y(:) + real(psb_spk_), intent (in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_nspaxpby + subroutine psb_c_nspaxpby(nz,iz,z,alpha, nx, ix, x, beta, ny,iy,y,info) + use psb_const_mod + integer(psb_ipk_), intent(out) :: nz + integer(psb_ipk_), intent(out) :: iz(:) + complex(psb_spk_), intent (out) :: z(:) + integer(psb_ipk_), intent(in) :: nx, ny + integer(psb_ipk_), intent(in) :: ix(:), iy(:) + complex(psb_spk_), intent (in) :: x(:), y(:) + complex(psb_spk_), intent (in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_nspaxpby + subroutine psb_z_nspaxpby(nz,iz,z,alpha, nx, ix, x, beta, ny,iy,y,info) + use psb_const_mod + integer(psb_ipk_), intent(out) :: nz + integer(psb_ipk_), intent(out) :: iz(:) + complex(psb_dpk_), intent (out) :: z(:) + integer(psb_ipk_), intent(in) :: nx, ny + integer(psb_ipk_), intent(in) :: ix(:), iy(:) + complex(psb_dpk_), intent (in) :: x(:), y(:) + complex(psb_dpk_), intent (in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_nspaxpby end interface psb_nspaxpby - interface + interface subroutine symbmm (n, m, l, ia, ja, diaga, & & ib, jb, diagb, ic, jc, diagc, index) import :: psb_ipk_ @@ -84,7 +117,7 @@ module psb_serial_mod integer(psb_lpk_), allocatable :: ic(:),jc(:) end subroutine lsymbmm end interface - + contains @@ -103,13 +136,13 @@ contains elemental function psb_cnrm1(x) result(res) complex(psb_spk_), intent(in) :: x real(psb_spk_) :: res - res = abs( real( x ) ) + abs( aimag( x ) ) + res = abs( real( x ) ) + abs( aimag( x ) ) end function psb_cnrm1 elemental function psb_znrm1(x) result(res) complex(psb_dpk_), intent(in) :: x real(psb_dpk_) :: res - res = abs( real( x ) ) + abs( aimag( x ) ) + res = abs( real( x ) ) + abs( aimag( x ) ) end function psb_znrm1 elemental function psb_sminreal(x) result(res) @@ -127,13 +160,13 @@ contains elemental function psb_cminreal(x) result(res) complex(psb_spk_), intent(in) :: x real(psb_spk_) :: res - res = min( real( x ) , aimag( x ) ) + res = min( real( x ) , aimag( x ) ) end function psb_cminreal elemental function psb_zminreal(x) result(res) complex(psb_dpk_), intent(in) :: x real(psb_dpk_) :: res - res = min( real( x ) , aimag( x ) ) + res = min( real( x ) , aimag( x ) ) end function psb_zminreal @@ -197,7 +230,7 @@ contains ! .. executable statements .. ! if( n <= 0 ) return - if( incx == 1 .and. incy == 1 ) then + if( incx == 1 .and. incy == 1 ) then ! ! code for both increments equal to 1 ! @@ -232,7 +265,7 @@ contains real(psb_spk_) norm,scale complex(psb_spk_) alpha ! - if (cabs(ca) == 0.0) then + if (cabs(ca) == 0.0) then ! c = 0.0d0 s = (1.0,0.0) @@ -316,7 +349,7 @@ contains ! .. executable statements .. ! if( n <= 0 ) return - if( incx == 1 .and. incy == 1 ) then + if( incx == 1 .and. incy == 1 ) then ! ! code for both increments equal to 1 ! @@ -351,7 +384,7 @@ contains real(psb_dpk_) norm,scale complex(psb_dpk_) alpha ! - if (cdabs(ca) == 0.0d0) then + if (cdabs(ca) == 0.0d0) then ! c = 0.0d0 s = (1.0d0,0.0d0) @@ -374,4 +407,3 @@ contains end module psb_serial_mod -