From f4e8cf15c15e16f3cc4d3034f57299cc928c8022 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Wed, 29 Apr 2015 17:07:21 +0000 Subject: [PATCH] psblas3: psi_acx_mod.f90 psi_alcx_mod.f90 psi_lcx_mod.f90 --- base/serial/aux/Makefile | 3 +- base/serial/aux/psi_acx_mod.f90 | 113 +++++++++++++++++++++++++++ base/serial/aux/psi_alcx_mod.f90 | 130 +++++++++++++++++++++++++++++++ base/serial/aux/psi_lcx_mod.f90 | 122 +++++++++++++++++++++++++++++ 4 files changed, 367 insertions(+), 1 deletion(-) create mode 100644 base/serial/aux/psi_acx_mod.f90 create mode 100644 base/serial/aux/psi_alcx_mod.f90 create mode 100644 base/serial/aux/psi_lcx_mod.f90 diff --git a/base/serial/aux/Makefile b/base/serial/aux/Makefile index 80f8e407..28095f54 100644 --- a/base/serial/aux/Makefile +++ b/base/serial/aux/Makefile @@ -3,7 +3,8 @@ include ../../../Make.inc # The object files # -FOBJS = isr.o isrx.o iasr.o iasrx.o msort_up.o msort_dw.o\ +FOBJS = psi_acx_mod.o psi_alcx_mod.o psi_lcx_mod.o psi_tscx.o\ + isr.o isrx.o iasr.o iasrx.o msort_up.o msort_dw.o\ imsr.o imsrx.o imsru.o iamsort_up.o iamsort_dw.o idot.o inrm2.o\ dsr.o dsrx.o dasr.o dasrx.o dmsr.o dmsrx.o \ dmsort_up.o dmsort_dw.o damsort_up.o damsort_dw.o \ diff --git a/base/serial/aux/psi_acx_mod.f90 b/base/serial/aux/psi_acx_mod.f90 new file mode 100644 index 00000000..7dda8b86 --- /dev/null +++ b/base/serial/aux/psi_acx_mod.f90 @@ -0,0 +1,113 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.4 +!!$ (C) Copyright 2006, 2010, 2015 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +module psi_acx_mod + use psb_const_mod + interface operator(<) + module procedure psi_calt, psi_zalt + end interface + interface operator(<=) + module procedure psi_cale, psi_zale + end interface + interface operator(>) + module procedure psi_cagt, psi_zagt + end interface + interface operator(>=) + module procedure psi_cage, psi_zage + end interface + +contains + + function psi_calt(a,b) result(res) + use psb_const_mod + complex(psb_spk_), intent(in) :: a,b + logical :: res + + res = (abs(a) < abs(b)) + end function psi_calt + + function psi_cale(a,b) result(res) + use psb_const_mod + complex(psb_spk_), intent(in) :: a,b + logical :: res + + res = (abs(a) <= abs(b)) + end function psi_cale + + function psi_cagt(a,b) result(res) + use psb_const_mod + complex(psb_spk_), intent(in) :: a,b + logical :: res + + res = (abs(a) > abs(b)) + end function psi_cagt + + function psi_cage(a,b) result(res) + use psb_const_mod + complex(psb_spk_), intent(in) :: a,b + logical :: res + + res = (abs(a) >= abs(b)) + end function psi_cage + + function psi_zalt(a,b) result(res) + use psb_const_mod + complex(psb_dpk_), intent(in) :: a,b + logical :: res + + res = (abs(a) < abs(b)) + end function psi_zalt + + function psi_zale(a,b) result(res) + use psb_const_mod + complex(psb_dpk_), intent(in) :: a,b + logical :: res + + res = (abs(a) <= abs(b)) + end function psi_zale + + function psi_zagt(a,b) result(res) + use psb_const_mod + complex(psb_dpk_), intent(in) :: a,b + logical :: res + + res = (abs(a) > abs(b)) + end function psi_zagt + + function psi_zage(a,b) result(res) + use psb_const_mod + complex(psb_dpk_), intent(in) :: a,b + logical :: res + + res = (abs(a) >= abs(b)) + end function psi_zage + +end module psi_acx_mod diff --git a/base/serial/aux/psi_alcx_mod.f90 b/base/serial/aux/psi_alcx_mod.f90 new file mode 100644 index 00000000..e4dcbebc --- /dev/null +++ b/base/serial/aux/psi_alcx_mod.f90 @@ -0,0 +1,130 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.4 +!!$ (C) Copyright 2006, 2010, 2015 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +module psi_lcx_mod + use psb_const_mod + interface operator(<) + module procedure psi_callt, psi_zallt + end interface + interface operator(<=) + module procedure psi_calle, psi_zalle + end interface + interface operator(>) + module procedure psi_calgt, psi_zalgt + end interface + interface operator(>=) + module procedure psi_calge, psi_zalge + end interface + +contains + + function psi_callt(a,b) result(res) + use psb_const_mod + complex(psb_spk_), intent(in) :: a,b + logical :: res + + res = (abs(real(a))abs(real(b))).or. & + & ((abs(real(a)) == abs(real(b))).and. & + & (abs(aimag(a))>abs(aimag(b)))) + end function psi_calgt + + function psi_calge(a,b) result(res) + use psb_const_mod + complex(psb_spk_), intent(in) :: a,b + logical :: res + + res = (abs(real(a))>abs(real(b))).or. & + & ((abs(real(a)) == abs(real(b))).and. & + & (abs(aimag(a))>=abs(aimag(b)))) + end function psi_calge + + function psi_zallt(a,b) result(res) + use psb_const_mod + complex(psb_dpk_), intent(in) :: a,b + logical :: res + + res = (abs(real(a))abs(real(b))).or. & + & ((abs(real(a)) == abs(real(b))).and. & + & (abs(aimag(a))>abs(aimag(b)))) + end function psi_zalgt + + function psi_zalge(a,b) result(res) + use psb_const_mod + complex(psb_dpk_), intent(in) :: a,b + logical :: res + + res = (abs(real(a))>abs(real(b))).or. & + & ((abs(real(a)) == abs(real(b))).and. & + & (abs(aimag(a))>=abs(aimag(b)))) + end function psi_zalge + +end module psi_lcx_mod + diff --git a/base/serial/aux/psi_lcx_mod.f90 b/base/serial/aux/psi_lcx_mod.f90 new file mode 100644 index 00000000..407161bc --- /dev/null +++ b/base/serial/aux/psi_lcx_mod.f90 @@ -0,0 +1,122 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.4 +!!$ (C) Copyright 2006, 2010, 2015 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the PSBLAS group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +module psi_lcx_mod + use psb_const_mod + interface operator(<) + module procedure psi_cllt, psi_zllt + end interface + interface operator(<=) + module procedure psi_clle, psi_zlle + end interface + interface operator(>) + module procedure psi_clgt, psi_zlgt + end interface + interface operator(>=) + module procedure psi_clge, psi_zlge + end interface + +contains + + function psi_cllt(a,b) result(res) + use psb_const_mod + complex(psb_spk_), intent(in) :: a,b + logical :: res + + res = (real(a)real(b)).or. & + & ((real(a) == real(b)).and.(aimag(a)>aimag(b))) + end function psi_clgt + + function psi_clge(a,b) result(res) + use psb_const_mod + complex(psb_spk_), intent(in) :: a,b + logical :: res + + res = (real(a)>real(b)).or. & + & ((real(a) == real(b)).and.(aimag(a)>=aimag(b))) + end function psi_clge + + function psi_zllt(a,b) result(res) + use psb_const_mod + complex(psb_dpk_), intent(in) :: a,b + logical :: res + + res = (real(a)real(b)).or. & + & ((real(a) == real(b)).and.(aimag(a)>aimag(b))) + end function psi_zlgt + + function psi_zlge(a,b) result(res) + use psb_const_mod + complex(psb_dpk_), intent(in) :: a,b + logical :: res + + res = (real(a)>real(b)).or. & + & ((real(a) == real(b)).and.(aimag(a)>=aimag(b))) + end function psi_zlge + +end module psi_lcx_mod +