diff --git a/.gitignore b/.gitignore index da51fad437..f0bc81606e 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,7 @@ # allow folks to create a .clang-format to hide their personal style settings .clang-format -# Created by https://www.gitignore.io/api/python,fortran,c,c++,cuda,emacs,vim +# Created by https://www.gitignore.io/api/python,fortran,c,c++,cuda,emacs,vim,cmake ### C ### # Prerequisites @@ -91,6 +91,23 @@ dkms.conf # Executables +### CMake ### +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps + +### CMake Patch ### +# External projects +*-prefix/ + ### CUDA ### *.i *.ii @@ -146,6 +163,10 @@ flycheck_*.el # directory configuration .dir-locals.el +# network security +/network-security.data + + ### Fortran ### # Prerequisites @@ -182,6 +203,7 @@ parts/ sdist/ var/ wheels/ +share/python-wheels/ *.egg-info/ .installed.cfg *.egg @@ -207,8 +229,10 @@ htmlcov/ nosetests.xml coverage.xml *.cover +*.py,cover .hypothesis/ .pytest_cache/ +cover/ # Translations *.mo @@ -218,6 +242,7 @@ coverage.xml *.log local_settings.py db.sqlite3 +db.sqlite3-journal # Flask stuff: instance/ @@ -230,6 +255,7 @@ instance/ docs/_build/ # PyBuilder +.pybuilder/ target/ # Jupyter Notebook @@ -240,10 +266,38 @@ profile_default/ ipython_config.py # pyenv -.python-version +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version -# celery beat schedule file +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff celerybeat-schedule +celerybeat.pid # SageMath parsed files *.sage.py @@ -272,24 +326,26 @@ venv.bak/ .dmypy.json dmypy.json -### Python Patch ### -.venv/ +# Pyre type checker +.pyre/ -### Python.VirtualEnv Stack ### -# Virtualenv -# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ -[Bb]in -[Ii]nclude -[Ll]ib -[Ll]ib64 -[Ll]ocal -[Ss]cripts -pyvenv.cfg -pip-selfcheck.json +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ ### Vim ### # Swap [._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files [._]*.sw[a-p] [._]s[a-rt-v][a-z] [._]ss[a-gi-z] @@ -297,6 +353,7 @@ pip-selfcheck.json # Session Session.vim +Sessionx.vim # Temporary .netrwhist @@ -305,5 +362,4 @@ tags # Persistent undo [._]*.un~ - -# End of https://www.gitignore.io/api/python,fortran,c,c++,cuda,emacs,vim +# End of https://www.gitignore.io/api/python,fortran,c,c++,cuda,emacs,vim,cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 73f10476ab..12e8fc968c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,8 +52,8 @@ if(GIT_DESC) string(REGEX REPLACE "^([0-9\\-]+) .*" "\\1" VERSION_DATE "${GIT_COMMIT_DATE}") else() - set(VERSION_MAJOR 21) - set(VERSION_MINOR 10) + set(VERSION_MAJOR 22) + set(VERSION_MINOR 11) set(VERSION_PATCH 00) endif() @@ -101,7 +101,8 @@ endforeach() # OPTIONS option(CMAKE_POSITION_INDEPENDENT_CODE "Enable position independent code" ON) - +option(CP2K_DEBUG_MODE "Enable several additional options for debugging cp2k." + OFF) option(CP2K_USE_SIRIUS "Enable plane wave dft calculations with sirius" OFF) option(CP2K_USE_FFTW3 "Use fftw3 for the calculating fast fourier transforms" ON) @@ -114,21 +115,20 @@ option(CP2K_USE_VORI "Enable libvori support" OFF) option(CP2K_USE_PEXSI "Enable pexsi support" OFF) option(CP2K_USE_QUIP "Enable quip support" OFF) option(CP2K_USE_SPGLIB "Enable spglib support" ON) - option(CP2K_USE_LIBXC "Enable libxc support" ON) - option(CP2K_USE_STATIC_BLAS "Link against static version of BLAS/LAPACK" OFF) - option(CP2K_USE_SPLA "Use SPLA offloading gemm feature to the GPU if it is beneficial. " OFF) - option(CP2K_USE_METIS "enable metis library support" OFF) - option(CP2K_USE_LIBXSMM "Use libxsmm for small gemms (supports x86 platforms)" ON) cmake_dependent_option(CP2K_ENABLE_ELPA_OPENMP_SUPPORT "Enable elpa openmp support" OFF "CP2K_USE_ELPA" OFF) +cmake_dependent_option(CP2K_ENABLE_FFTW3_OPENMP_SUPPORT + "Enable FFTW openmp support" ON "CP2K_USE_FFTW3" OFF) +cmake_dependent_option(CP2K_ENABLE_FFTW3_THREADS_SUPPORT + "Enable FFTW THREADS support" OFF "CP2K_USE_FFTW3" OFF) set(CP2K_SCALAPACK_VENDOR_LIST "MKL" "SCI" "GENERIC") set(CP2K_SCALAPACK_VENDOR @@ -168,9 +168,6 @@ set_property( CACHE CP2K_WITH_GPU PROPERTY STRINGS ${CP2K_SUPPORTED_CUDA_ARCHITECTURES} ${CP2K_SUPPORTED_HIP_ARCHITECTURES}) -option(CP2K_DEBUG_MODE OFF - "Enable several additional options for debugging cp2k.") - set(CP2K_USE_ACCEL "NONE" CACHE STRING "Set hardware acceleartion support: CUDA, HIP") @@ -189,14 +186,13 @@ cmake_dependent_option( # # ############################################################################## -cmake_dependent_option(CP2K_DEBUG_MODE OFF "Enable CP2K debug options" - "NOT CP2K_USE_ACCEL MATCHES \"NONE\" " OFF) cmake_dependent_option( CP2K_DISABLE_GRID_GPU OFF "disable the hardware accelerated backend for grid related functions. It is only effective when general gpu support is enabled." "CP2K_DEBUG_MODE" OFF) + cmake_dependent_option( CP2K_DISABLE_PW_GPU OFF @@ -213,15 +209,13 @@ cmake_dependent_option( CP2K_DBCSR_CPU_ONLY "Use DBCSR compiled without GPU support." OFF "CP2K_DEBUG_MODE" OFF) -set(CMAKE_POSITION_INDEPENDENT_CODE ${CP2K_SET_POSITION_INDEPENDENT_CODE}) - -find_package(PkgConfig) - -# =================================== Python this module looks preferably for -# version 3 of Python. If not found, version 2 is searched. In CMake 3.15, if a -# python virtual environment is activated, it will search the virtual -# environment for a python interpreter before searching elsewhere in the system. -# In CMake <3.15, the system is searched before the virtual environment. +# Python +# +# this module looks preferably for version 3 of Python. If not found, version 2 +# is searched. In CMake 3.15, if a python virtual environment is activated, it +# will search the virtual environment for a python interpreter before searching +# elsewhere in the system. In CMake <3.15, the system is searched before the +# virtual environment. if(NOT Python_EXECUTABLE) # If the python interpreter isn't specified as a command line option, look for @@ -254,9 +248,8 @@ add_custom_target( -DGIT_HASH_CACHE=${GIT_HASH_CACHE} -P ${CURRENT_LIST_DIR}/CheckGit.cmake BYPRODUCTS ${post_configure_file}) -# =================================== MPI +# MPI -# if (CP2K_USE_MPI) get_property(REQUIRED_MPI_COMPONENTS GLOBAL PROPERTY ENABLED_LANGUAGES) list(REMOVE_ITEM REQUIRED_MPI_COMPONENTS CUDA) # CUDA does not have an MPI # component @@ -285,10 +278,11 @@ if("${MPI_Fortran_LIBRARY_VERSION_STRING}" MATCHES "Open MPI v2.1" " Please use a newer version of OpenMPI or switch to MPICH if you plan on using MPI-RMA." ) endif() -# endif () =================================== BLAS & LAPACK, PkgConfig + +# BLAS & LAPACK, PkgConfig find_package(Lapack REQUIRED) # also calls find_package(BLAS) -# =================================== SMM (Small Matrix-Matrix multiplication) +# SMM (Small Matrix-Matrix multiplication) if(CP2K_USE_LIBXSMM) find_package(LibXSMM REQUIRED) message(STATUS "-- Using libxsmm for Small Matrix Multiplication") @@ -298,9 +292,7 @@ endif() # turn it off find_package(SCALAPACK REQUIRED) -# ================================== CUDA / ROCM easy for cuda a moving target -# for hip -# ====================================== +# CUDA / ROCM easy for cuda a moving target for hip if((CP2K_USE_ACCEL MATCHES CUDA) OR (CP2K_USE_ACCEL MATCHES HIP)) set(CP2K_GPU_ARCH_NUMBER_K20X 35) @@ -357,7 +349,7 @@ if(CP2K_USE_ACCEL MATCHES "CUDA") endif() set(CP2K_USE_CUDA ON) - message(STATUS "-- CUDA compiler and libraries found") + message(STATUS ``"-- CUDA compiler and libraries found") elseif(CP2K_USE_ACCEL MATCHES "HIP") enable_language(HIP) # Find hip @@ -397,7 +389,7 @@ if(CP2K_USE_LIBXC) endif() if(CP2K_USE_COSMA) - find_package(cosma REQUIRED) + find_package(cosma REQUIRED HINTS "${COSMA_ROOT}" "$ENV(COSMA_ROOT)") get_target_property(COSMA_INCLUDE_DIRS cosma::cosma INTERFACE_INCLUDE_DIRECTORIES) if(NOT COSMA_INCLUDE_DIRS) @@ -406,10 +398,11 @@ if(CP2K_USE_COSMA) # check that cosma::cosma_pxgemm and cosma::cosma_prefixed_pxgemm exist if(NOT TARGET cosma::cosma_pxgemm OR NOT TARGET cosma::cosma_prefixed_pxgemm) - message(ERROR " COSMA needs tor be build with scalapack offloading support") + message(ERROR_ERROR + " COSMA needs tor be build with scalapack offloading support") message( - FATAL - " COSTA_SCALAPACK and COSMA_SCALAPACK should probably be set properly") + FATAL_ERROR + " COSTA_SCALAPACK and COSMA_SCALAPACK should probably be set properly") endif() endif() @@ -417,28 +410,44 @@ if(CP2K_USE_VORI) find_package(LibVORI REQUIRED) endif() -# =================================== CP2K_FFTW3 -# =========================================== +# FFTW3 if(CP2K_USE_FFTW3) find_package(Fftw REQUIRED) + if(CP2K_ENABLE_FFTW3_THREADS_SUPPORT AND CP2K_ENABLE_FFTW3_OPENMP_SUPPORT) + message( + FATAL_ERROR + "Fftw3 threads and openmp supports can not be used at the same time") + endif() + + if((CP2K_ENABLE_FFTW3_THREADS_SUPPORT) AND (NOT TARGET + CP2K_FFTW3::fftw3_threads)) + message( + FATAL_ERROR + "fftw3 was compiled without multithreading support (--enable-threads option in fftw build system)." + ) + endif() + + if((CP2K_ENABLE_FFTW3_OPENMP_SUPPORT) AND (NOT TARGET CP2K_FFTW3::fftw3_omp)) + message( + FATAL_ERROR + "fftw3 was compiled without openmp support (--enable-openmp option in fftw build system)." + ) + endif() endif() -# ==================================== QUIP -# =========================================== +# QUIP if(CP2K_USE_QUIP) find_package(Quip REQUIRED) endif() -# ==================================== libint -# ========================================= +# libint if(CP2K_USE_LIBINT2) find_package(Libint2 REQUIRED) endif() -# ==================================== spglib -# ========================================= +# spglib if(CP2K_USE_SPGLIB) find_package(LibSPG REQUIRED) @@ -455,13 +464,12 @@ if(CP2K_USE_SPLA) if(NOT SPLA_GPU_BACKEND AND CP2K_USE_GEMM_OFFLOADING) set(CP2K_USE_GEMM_OFFLOADING OFF) message( - ERROR - "SPLA should be compiled with GPU support if the gemm offloading is requested. Use -DCP2K_USE_GEMM_OFFLOADING=OFF othrwise" + FATAL_ERROR + "SPLA should be compiled with GPU support if the gemm offloading is requested. Use -DCP2K_USE_GEMM_OFFLOADING=OFF otherwise" ) endif() endif() -# =================================== SIRIUS -# ========================================== +# SIRIUS if(CP2K_USE_SIRIUS) find_package(sirius REQUIRED) @@ -493,7 +501,6 @@ if(CP2K_USE_PLUMED) find_package(Plumed REQUIRED) endif() -# ================================================================================================= # OPTION HANDLING # make sure that the default build type is RELEASE diff --git a/cmake/FindFftw.cmake b/cmake/FindFftw.cmake index 2e3f623631..c49ea9c6e9 100644 --- a/cmake/FindFftw.cmake +++ b/cmake/FindFftw.cmake @@ -13,7 +13,6 @@ include(FindPackageHandleStandardArgs) include(cp2k_utils) cp2k_set_default_paths(FFTW3 "Fftw") - # Check if we can use PkgConfig find_package(PkgConfig) @@ -27,13 +26,19 @@ endif() foreach(_lib fftw3 fftw3f fftw3l fftw3q) if(NOT CP2K_${__lib_up}_FOUND) - cp2k_find_libraries("${__lib_up}" ${_lib}) + set(CP2K_${__lib_up}_PREFIX "${CP2k_FFTW3_PREFIX}") + cp2k_find_libraries("${__lib_up}" "${_lib}") + unset(CP2K_${__lib_up}_PREFIX CACHE) endif() # OMP variant foreach(_subtype "mpi" "omp" "threads") string(TOUPPER "${_lib}_${_subtype}" _sub_lib) - cp2k_find_libraries("${_sub_lib}" ${_lib}_${_subtype}) + + # yeah not super deep + set(CP2K_${_sub_lib}_PREFIX "${CP2K_FFTW3_PREFIX}") + cp2k_find_libraries("${_sub_lib}" "${_lib}_${_subtype}") + unset(CP2K_${_sub_lib}_PREFIX CACHE) endforeach() endforeach() diff --git a/cmake/FindLibXC.cmake b/cmake/FindLibXC.cmake index b18e359f81..f7d07ab772 100644 --- a/cmake/FindLibXC.cmake +++ b/cmake/FindLibXC.cmake @@ -17,9 +17,9 @@ if(PKG_CONFIG_FOUND) REQUIRED IMPORTED_TARGET GLOBAL - libxc>=${LibXC_FIND_VERSION} + libxcf90 libxcf03 - libxcf90) + libxc>=${LibXC_FIND_VERSION}) endif() if(NOT CP2K_LIBXC_FOUND) @@ -41,27 +41,18 @@ else() find_package_handle_standard_args(LibXC DEFAULT_MSG CP2K_LIBXC_FOUND CP2K_LIBXC_LINK_LIBRARIES) endif() -if(CP2K_LIBXC_FOUND AND NOT TARGET CP2K_CP2K_Libxc::xc) - add_library(CP2K_Libxc::xc INTERFACE IMPORTED) +if(CP2K_LIBXC_FOUND) + if(NOT TARGET CP2K_CP2K_Libxc::xc) + add_library(CP2K_Libxc::xc INTERFACE IMPORTED) + endif() + if(LIBXC_INCLUDE_DIRS) set_target_properties( - CP2K_Libxc::xc - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_LIBXC_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${CP2K_LIBXC_LINK_LIBRARIES}") - else() - set_target_properties(CP2K_Libxc::xc PROPERTIES INTERFACE_LINK_LIBRARIES - "${CP2K_LIBXC_LIBRARIES}") + CP2K_Libxc::xc PROPERTIES INTERFACE_INCLUDE_DIRECTORIES + "${CP2K_LIBXC_INCLUDE_DIRS}") endif() - add_library(CP2K_Libxc::xcf90 INTERFACE IMPORTED) - set_target_properties( - CP2K_Libxc::xcf90 PROPERTIES INTERFACE_LINK_LIBRARIES - "${CP2K_LIBXCF90_LINK_LIBRARIES}") - add_library(CP2K_Libxc::xcf03 INTERFACE IMPORTED) - set_target_properties( - CP2K_Libxc::xcf03 PROPERTIES INTERFACE_LINK_LIBRARIES - "${CP2K_LIBXCF03_LINK_LIBRARIES}") + target_link_libraries(CP2K_Libxc::xc INTERFACE ${CP2K_LIBXC_LINK_LIBRARIES}) endif() -mark_as_advanced( - CP2K_LIBXC_FOUND CP2K_LIBXC_LINK_LIBRARIES CP2K_LIBXC_INCLUDE_DIRS - CP2K_LIBXCF03_LINK_LIBRARIES CP2K_LIBXCF90_LINK_LIBRARIES) +mark_as_advanced(CP2K_LIBXC_FOUND CP2K_LIBXC_LINK_LIBRARIES + CP2K_LIBXC_INCLUDE_DIRS) diff --git a/cmake/FindOpenBLAS.cmake b/cmake/FindOpenBLAS.cmake index a346efb52a..bc0ae53d93 100644 --- a/cmake/FindOpenBLAS.cmake +++ b/cmake/FindOpenBLAS.cmake @@ -17,7 +17,7 @@ find_package(PkgConfig) cp2k_set_default_paths(OPENBLAS "OpenBLAS") if(PKG_CONFIG_FOUND) - pkg_check_modules(CP2K_OPENBLAS openblas) + pkg_check_modules(CP2K_OPENBLAS IMPORTED_TARGET GLOBAL openblas) endif() # try the openblas module of openblas library Maybe we are lucky it is installed diff --git a/cmake/FindPEXSI.cmake b/cmake/FindPEXSI.cmake index 8eb815915d..9d78ce95be 100644 --- a/cmake/FindPEXSI.cmake +++ b/cmake/FindPEXSI.cmake @@ -16,8 +16,18 @@ find_package(ptscotch) cp2k_set_default_paths(PEXSI "PEXSI") -cp2k_find_libraries(PEXSI pexsi) -cp2k_include_dirs(PEXSI "pexsi.h pexsi/pexsi.h") +cp2k_find_libraries(PEXSI "pexsi") +cp2k_include_dirs(PEXSI "pexsi.hpp") + +find_file(CP2K_PEXSI_MOD_FILE NAMES "f_ppexsi_interface.mod" PATCHS + "${CP2K_PEXSI_PREFIX}/include") + +if(NOT CP2K_PEXSI_MOD_FILE) + message( + FATAL_ERROR + "The pexsi library needs to be compiled with fortran support. Either recompile pexsi or disable it." + ) +endif() find_package_handle_standard_args(PEXSI DEFAULT_MSG CP2K_PEXSI_INCLUDE_DIRS CP2K_PEXSI_LINK_LIBRARIES) diff --git a/cmake/FindPlumed.cmake b/cmake/FindPlumed.cmake index 3d5b365065..8144bb302d 100644 --- a/cmake/FindPlumed.cmake +++ b/cmake/FindPlumed.cmake @@ -18,15 +18,14 @@ cp2k_set_default_paths(PLUMED "Plumed") # First try with pkg if(PKG_CONFIG_FOUND) # plumed has a pkg-config module - pkg_check_module(CP2K_PLUMED IMPORTED_TARGET GLOBAL "plumed") + pkg_check_module(CP2K_PLUMED IMPORTED_TARGET GLOBAL plumed plumedInternals) endif() if(NOT ${CP2K_PLUMED_FOUND}) cp2k_find_libraries(PLUMED "plumed") + cp2k_include_dirs(PLUMED "plumed.h plumed/plumed.h") endif() -cp2k_include_dirs(PLUMED "plumed.h plumed/plumed.h") - if(CP2K_PLUMED_INCLUDE_DIRS) find_package_handle_standard_args(Plumed DEFAULT_MSG CP2K_PLUMED_INCLUDE_DIRS CP2K_PLUMED_LINK_LIBRARIES) @@ -35,8 +34,10 @@ else() CP2K_PLUMED_LINK_LIBRARIES) endif() -if(CP2K_PLUMED_FOUND AND NOT TARGET CP2K_plumed::plumed) - add_library(CP2K_plumed::plumed INTERFACE IMPORTED) +if(CP2K_PLUMED_FOUND) + if(NOT TARGET CP2K_plumed::plumed) + add_library(CP2K_plumed::plumed INTERFACE IMPORTED) + endif() set_target_properties( CP2K_plumed::plumed PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_PLUMED_INCLUDE_DIRS}" diff --git a/cmake/FindSCALAPACK.cmake b/cmake/FindSCALAPACK.cmake index 85f732ea9e..230593dfcb 100644 --- a/cmake/FindSCALAPACK.cmake +++ b/cmake/FindSCALAPACK.cmake @@ -25,7 +25,7 @@ if(CP2K_SCALAPACK_VENDOR STREQUAL "GENERIC") message(" ") message( WARNING - "You may want to use mkl implementation of scalapack. To do this add -DSCALAPACK_VENDOR=MKL to the cmake command line" + "You may want to use mkl implementation of scalapack. To do this add -DCP2K_SCALAPACK_VENDOR=MKL to the cmake command line" ) endif() @@ -36,7 +36,7 @@ if(CP2K_SCALAPACK_VENDOR STREQUAL "GENERIC") message(" ") message( WARNING - "You may want to use Cray implementation of scalapack. To do this add -DSCALAPACK_VENDOR=SCI to the cmake command line" + "You may want to use Cray implementation of scalapack. To do this add -DCP2K_SCALAPACK_VENDOR=SCI to the cmake command line" ) message(" ") message(" ") diff --git a/cmake/FindSuperLU.cmake b/cmake/FindSuperLU.cmake index bbe1a0e7c8..240ddc1265 100644 --- a/cmake/FindSuperLU.cmake +++ b/cmake/FindSuperLU.cmake @@ -14,7 +14,7 @@ include(cp2k_utils) find_package(PkgConfig) cp2k_set_default_paths(SUPERLU "SuperLU") -pkg_search_module(CP2K_SUPERLU IMPORTED_TARGET GLOBAL "superlu superlu_dist") +pkg_search_module(CP2K_SUPERLU IMPORTED_TARGET GLOBAL "superlu_dist") if(NOT CP2K_SUPERLU_FOUND) cp2k_find_libraries(SUPERLU "superlu;superlu_dist") @@ -30,8 +30,10 @@ find_package_handle_standard_args(SuperLU DEFAULT_MSG CP2K_SUPERLU_INCLUDE_DIRS if(CP2K_SUPERLU_FOUND AND NOT TARGET CP2K_superlu::superlu) add_library(CP2K_superlu::superlu INTERFACE IMPORTED) - set_target_properties( - CP2K_superlu::superlu - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_SUPERLU_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${CP2K_SUPERLU_LINK_LIBRARIES}") endif() +set_target_properties( + CP2K_superlu::superlu + PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_SUPERLU_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES "${CP2K_SUPERLU_LINK_LIBRARIES}") +mark_as_advanced(CP2K_SUPERLU_LINK_LIBRARIES CP2K_SUPERLU_INCLUDE_DIRS + CP2K_SUPERLU_FOUND) diff --git a/cmake/cp2k_utils.cmake b/cmake/cp2k_utils.cmake index f377442b96..a5dc45a175 100644 --- a/cmake/cp2k_utils.cmake +++ b/cmake/cp2k_utils.cmake @@ -43,11 +43,11 @@ function(cp2k_set_default_paths _varname _package_name) PARENT_SCOPE) unset(CP2K_${_varname}_PREFIX_TMP CACHE) - # mark_as_advanced(CP2K_${_varname}_PREFIX) endfunction() function(cp2k_find_libraries _package_name _library_name) string(TOUPPER ${_library_name} _library_name_upper) + find_library( CP2K_${_package_name}_LIBRARIES_TMP NAMES "${_library_name}" @@ -64,13 +64,11 @@ function(cp2k_find_libraries _package_name _library_name) ON PARENT_SCOPE) endif() + unset(CP2K_${_package_name}_LIBRARIES_TMP CACHE) - # mark_as_advanced(CP2K_${_package_name}_LINK_LIBRARIES - # CP2K_${_package_name}_LIBRARIES) endfunction() function(cp2k_include_dirs _package_name _library_include_file) - # string(TOUPPER ${_package_name} _library_name_upper) find_path( CP2K_${_package_name}_INCLUDE_DIRS_TMP NAMES "${_lib_include_file}" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cb65d5674b..a576681ff6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -575,6 +575,7 @@ list( qs_loc_types.F qs_loc_utils.F qs_matrix_pools.F + qs_matrix_w.F qs_mixing_utils.F qs_mo_io.F qs_moments.F @@ -1365,43 +1366,43 @@ endif() add_library(cp2k_link_libs INTERFACE) target_link_libraries( cp2k_link_libs - INTERFACE $<$:PEXSI::pexsi> - $<$:sirius::sirius> - $<$:CP2K_VORI::vori> - $<$:CP2K_PEXSI::pexsi> - $<$:CP2K_ptscotch::ptscotch> - $<$:CP2K_LIBSPG::libspg> - $<$:CP2K_Libxc::xc - CP2K_Libxc::xcf90 - CP2K_Libxc::xcf03> - $<$:CP2K_ELPA::elpa> - $<$:CP2K_FFTW3::fftw3> - $<$:CP2K_FFTW3::fftw3_threads> - $<$:SPLA::spla> - $<$:CP2K_Libint2::int2> - $<$:cosma::cosma_prefixed_pxgemm> - $<$:cosma::cosma> - $<$:costa::costa> - DBCSR::dbcsr - $<$:CUDA::cufft> - $<$:CUDA::cufftw> - $<$:CUDA::cublas> - $<$:CUDA::cudart> - $<$:hip::hipfft> - $<$:roc::hipblas> - $<$:hip::device> - CP2K_SCALAPACK::scalapack - $<$:CP2K_LibXSMM::libxsmmf> - $<$:CP2K_LibXSMM::libxsmmext> - $<$:CP2K_LibXSMM::libxsmm> - CP2K_LAPACK::lapack - CP2K_BLAS::blas - MPI::MPI_Fortran - MPI::MPI_C - MPI::MPI_CXX - OpenMP::OpenMP_Fortran - OpenMP::OpenMP_C - OpenMP::OpenMP_CXX) + INTERFACE + $<$:PEXSI::pexsi> + $<$:sirius::sirius> + $<$:CP2K_VORI::vori> + $<$:CP2K_PEXSI::pexsi> + $<$:CP2K_ptscotch::ptscotch> + $<$:CP2K_LIBSPG::libspg> + $<$:CP2K_Libxc::xc> + $<$:CP2K_ELPA::elpa> + $<$:CP2K_FFTW3::fftw3> + $<$:CP2K_FFTW3::fftw3_threads> + $<$:CP2K_FFTW3::fftw3_omp> + $<$:SPLA::spla> + $<$:CP2K_Libint2::int2> + $<$:cosma::cosma_prefixed_pxgemm> + $<$:cosma::cosma> + $<$:costa::costa> + DBCSR::dbcsr + $<$:CUDA::cufft> + $<$:CUDA::cufftw> + $<$:CUDA::cublas> + $<$:CUDA::cudart> + $<$:hip::hipfft> + $<$:roc::hipblas> + $<$:hip::device> + CP2K_SCALAPACK::scalapack + $<$:CP2K_LibXSMM::libxsmmf> + $<$:CP2K_LibXSMM::libxsmmext> + $<$:CP2K_LibXSMM::libxsmm> + CP2K_LAPACK::lapack + CP2K_BLAS::blas + MPI::MPI_Fortran + MPI::MPI_C + MPI::MPI_CXX + OpenMP::OpenMP_Fortran + OpenMP::OpenMP_C + OpenMP::OpenMP_CXX) # mix the target and variables pointing to the include directories. @@ -1416,6 +1417,11 @@ include_directories( $ $) +if(DEFINED ENV{CPATH}) + string(REPLACE ":" ";" INCLUDE_LIST $ENV{CPATH}) + include_directories(${INCLUDE_LIST}) +endif() + string(TIMESTAMP CP2K_TIMESTAMP "%Y-%m-%d %H:%M:%S") target_link_libraries(cp2k PUBLIC cp2k_link_libs) diff --git a/tools/docker/Dockerfile.test_cmake b/tools/docker/Dockerfile.test_cmake index caf8b78efe..b9977f7c2c 100644 --- a/tools/docker/Dockerfile.test_cmake +++ b/tools/docker/Dockerfile.test_cmake @@ -59,28 +59,34 @@ COPY ./tools/toolchain/scripts/arch_base.tmpl \ ./scripts/ RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +COPY ./tools/build_utils/fypp /bin/fypp +# temporary solution we build dbcsr without using the cloned repo. It will eventually be moved inside the toolchain +COPY ./tools/docker/scripts/install_dbcsr.sh ./scripts/ +RUN ./scripts/install_dbcsr.sh && rm -rf ./build + # Install CP2K using CMake. + WORKDIR /opt/cp2k COPY ./src ./src COPY ./exts ./exts COPY ./tools/build_utils ./tools/build_utils COPY ./cmake ./cmake COPY ./CMakeLists.txt . +COPY ./cp2k.pc.in . WORKDIR ./build -RUN /bin/bash -c " \ - echo 'Compiling dbcsr...' && \ - source /opt/cp2k-toolchain/install/setup && \ - cmake ../exts/dbcsr && \ - make -j" RUN /bin/bash -c " \ echo 'Compiling cp2k...' && \ + ls /opt/cp2k-toolchain/install/scalapack-2.2.1 && \ + ls /opt/cp2k-toolchain/install/fftw-3.3.10/lib && \ source /opt/cp2k-toolchain/install/setup && \ - export PKG_CONFIG_PATH=/opt/cp2k-toolchain/install/openblas-0.3.21/lib/pkgconfig && \ - cmake -DCP2K_USE_LIBXSMM=NO -DSCALAPACK_ROOT=/opt/cp2k-toolchain/install/scalapack-2.1.0 .. && \ + export PKG_CONFIG_PATH=/opt/cp2k-toolchain/install/libxsmm-1.17/lib:/opt/cp2k-toolchain/install/openblas-0.3.21/lib/pkgconfig:/opt/cp2k-toolchain/install/libxc-6.0.0/lib/pkgconfig:/opt/cp2k-toolchain/install/fftw-3.3.10/lib/pkgconfig:/opt/cp2k-toolchain/install/libint-v2.6.0-cp2k-lmax-5/lib/pkgconfig:/opt/cp2k-toolchain/install/plumed-2.8.0/lib/pkgconfig:/opt/cp2k-toolchain/install/superlu_dist-6.1.0/lib/pkgconfig && \ + cmake -DCP2K_USE_COSMA=OFF -DCP2K_USE_LIBXSMM=NO -DSCALAPACK_ROOT=/opt/cp2k-toolchain/install/scalapack-2.2.1 -DCP2K_BLAS_VENDOR=OpenBLAS -DLibXC_ROOT=/opt/cp2k-toolchain/install/libxc-6.0.0 -DLibint2_ROOT=/opt/cp2k-toolchain/install/libint-v2.6.0-cp2k-lmax-5 -DDBCSR_ROOT=/opt/cp2k-toolchain/install/DBCSR-2.4.1 -DCP2K_USE_SPGLIB=ON -DCP2K_USE_LIBINT2=NO -DCP2K_USE_LIBXC=ON -DLibSPG_ROOT=/opt/cp2k-toolchain/install/spglib-1.16.2 .. && \ make -j" COPY ./data ./data COPY ./tests ./tests COPY ./tools/regtesting ./tools/regtesting + RUN echo "\nSummary: Compilation works fine.\nStatus: OK\n" #EOF diff --git a/tools/docker/generate_dockerfiles.py b/tools/docker/generate_dockerfiles.py index ddd270054c..27e3557b30 100755 --- a/tools/docker/generate_dockerfiles.py +++ b/tools/docker/generate_dockerfiles.py @@ -376,28 +376,34 @@ def install_cp2k_cmake() -> str: # TODO: This is a draft and does not yet actually work. return rf""" + +COPY ./tools/build_utils/fypp /bin/fypp +# temporary solution we build dbcsr without using the cloned repo. It will eventually be moved inside the toolchain +COPY ./tools/docker/scripts/install_dbcsr.sh ./scripts/ +RUN ./scripts/install_dbcsr.sh && rm -rf ./build + # Install CP2K using CMake. + WORKDIR /opt/cp2k COPY ./src ./src COPY ./exts ./exts COPY ./tools/build_utils ./tools/build_utils COPY ./cmake ./cmake COPY ./CMakeLists.txt . +COPY ./cp2k.pc.in . WORKDIR ./build -RUN /bin/bash -c " \ - echo 'Compiling dbcsr...' && \ - source /opt/cp2k-toolchain/install/setup && \ - cmake ../exts/dbcsr && \ - make -j" RUN /bin/bash -c " \ echo 'Compiling cp2k...' && \ + ls /opt/cp2k-toolchain/install/scalapack-2.2.1 && \ + ls /opt/cp2k-toolchain/install/fftw-3.3.10/lib && \ source /opt/cp2k-toolchain/install/setup && \ - export PKG_CONFIG_PATH=/opt/cp2k-toolchain/install/openblas-0.3.21/lib/pkgconfig && \ - cmake -DCP2K_USE_LIBXSMM=NO -DSCALAPACK_ROOT=/opt/cp2k-toolchain/install/scalapack-2.1.0 .. && \ + export PKG_CONFIG_PATH=/opt/cp2k-toolchain/install/libxsmm-1.17/lib:/opt/cp2k-toolchain/install/openblas-0.3.21/lib/pkgconfig:/opt/cp2k-toolchain/install/libxc-6.0.0/lib/pkgconfig:/opt/cp2k-toolchain/install/fftw-3.3.10/lib/pkgconfig:/opt/cp2k-toolchain/install/libint-v2.6.0-cp2k-lmax-5/lib/pkgconfig:/opt/cp2k-toolchain/install/plumed-2.8.0/lib/pkgconfig:/opt/cp2k-toolchain/install/superlu_dist-6.1.0/lib/pkgconfig && \ + cmake -DCP2K_USE_COSMA=OFF -DCP2K_USE_LIBXSMM=NO -DSCALAPACK_ROOT=/opt/cp2k-toolchain/install/scalapack-2.2.1 -DCP2K_BLAS_VENDOR=OpenBLAS -DLibXC_ROOT=/opt/cp2k-toolchain/install/libxc-6.0.0 -DLibint2_ROOT=/opt/cp2k-toolchain/install/libint-v2.6.0-cp2k-lmax-5 -DDBCSR_ROOT=/opt/cp2k-toolchain/install/DBCSR-2.4.1 -DCP2K_USE_SPGLIB=ON -DCP2K_USE_LIBINT2=NO -DCP2K_USE_LIBXC=ON -DLibSPG_ROOT=/opt/cp2k-toolchain/install/spglib-1.16.2 .. && \ make -j" COPY ./data ./data COPY ./tests ./tests COPY ./tools/regtesting ./tools/regtesting + RUN echo "\nSummary: Compilation works fine.\nStatus: OK\n" #EOF @@ -763,7 +769,7 @@ class OutputFile: output_path = Path(__file__).parent / self.filename if self.check: assert output_path.read_text(encoding="utf8") == self.content.getvalue() - print(f"File {output_path} is consisted with generator script.") + print(f"File {output_path} is consistent with generator script.") else: output_path.write_text(self.content.getvalue(), encoding="utf8") print(f"Wrote {output_path}") diff --git a/tools/docker/scripts/install_dbcsr.sh b/tools/docker/scripts/install_dbcsr.sh new file mode 100755 index 0000000000..632b304b76 --- /dev/null +++ b/tools/docker/scripts/install_dbcsr.sh @@ -0,0 +1,113 @@ +#!/bin/bash -e + +# TODO: Review and if possible fix shellcheck errors. +# shellcheck disable=all + +[ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 +SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")" && pwd -P)" + +DBCSR_ver="2.4.1" +DBCSR_sha256="e5c545ec16688027537f7865976b905c0783d038ec289e65635e63e961330601" +source "${SCRIPT_DIR}"/common_vars.sh +source "${SCRIPT_DIR}"/tool_kit.sh +source "${SCRIPT_DIR}"/signal_trap.sh +source "${INSTALLDIR}"/toolchain.conf +source "${INSTALLDIR}"/toolchain.env + +[ -f "${BUILDDIR}/setup_dbcsr" ] && rm "${BUILDDIR}/setup_dbcsr" + +DBCSR_CFLAGS='' +DBCSR_LDFLAGS='' +DBCSR_LIBS='' +! [ -d "${BUILDDIR}" ] && mkdir -p "${BUILDDIR}" +cd "${BUILDDIR}" + +####case "$with_dbcsr" in +#### __INSTALL__) +echo "==================== Installing DBCSR ====================" +pkg_install_dir="${INSTALLDIR}/DBCSR-${DBCSR_ver}" +install_lock_file="$pkg_install_dir/install_successful" +if verify_checksums "${install_lock_file}"; then + echo "DBCSR-${DBCSR_ver} is already installed, skipping it." +else + if [ -f dbcsr-${DBCSR_ver}.tar.gz ]; then + echo "dbcsr-${DBCSR_ver}.tar.gz is found" + else + wget "https://github.com/cp2k/dbcsr/archive/refs/tags/v${DBCSR_ver}.tar.gz" -O "dbcsr-${DBCSR_ver}.tar.gz" + fi + echo "Installing from scratch into ${pkg_install_dir}" + [ -d dbcsr-${DBCSR_ver} ] && rm -rf dbcsr-${DBCSR_ver} + tar xzf dbcsr-${DBCSR_ver}.tar.gz + cd dbcsr-${DBCSR_ver} + mkdir build + cd build + # build compilation option list + + COMPILATION_OPTIONS="-DCMAKE_INSTALL_PREFIX=${pkg_install_dir} -DUSE_OPENMP=ON -DBUILD_TESTING=NO -DWITH_EXAMPLES=NO" + if [ "$MPI_MODE" == "no" ]; then + COMPILATION_OPTIONS="${COMPILATION_OPTIONS} -DUSE_MPI=no" + fi + if [ "$ENABLE_CUDA" == "__TRUE__" ]; then + COMPILATION_OPTIONS="${COMPILATION_OPTIONS} -DUSE_ACCEL=nvidia -DWITH_GPU=P100" + fi + if [ "$ENABLE_HIP" == "__TRUE__" ]; then + COMPILATION_OPTIONS="${COMPILATION_OPTIONS} -DUSE_ACCEL=hip -DWITH_GPU=Mi250" + fi + cmake $COMPILATION_OPTIONS .. + make -j $(get_nprocs) #> make.log 2>&1 + make install #> install.log 2>&1 + cd .. + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/$(basename ${SCRIPT_NAME})" + DBCSR_CFLAGS="-I'${pkg_install_dir}/include'" + DBCSR_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath='${pkg_install_dir}/lib'" +fi +### ;; +### __SYSTEM__) +### echo "==================== Finding DBCSR from system paths ====================" +### check_lib -ldbcsr "dbcsr" +### add_include_from_paths DBCSR_CFLAGS "dbcsr.h" $INCLUDE_PATHS +### add_lib_from_paths DBCSR_LDFLAGS "dbcsr.*" $LIB_PATHS +### ;; +### __DONTUSE__) +### report_error ${LINENO} "It is not possible to compile cp2k without dbcsr" +### ;; +### *) +echo "==================== Linking DBCSR to user paths ====================" +#####pkg_install_dir="$with_dbcsr" +check_dir "${pkg_install_dir}/lib" +check_dir "${pkg_install_dir}/include" +DBCSR_CFLAGS="-I'${pkg_install_dir}/include'" +DBCSR_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath='${pkg_install_dir}/lib'" +##;; +##esac +##if [ "$with_dbcsr" != "__DONTUSE__" ]; then +DBCSR_LIBS="-ldbcsr" +## if [ "$with_dbscr" != "__SYSTEM__" ]; then +## cat << EOF > "${BUILDDIR}/setup_dbcsr" +##prepend_path LD_LIBRARY_PATH "$pkg_install_dir/lib" +##prepend_path LD_RUN_PATH "$pkg_install_dir/lib" +##prepend_path LIBRARY_PATH "$pkg_install_dir/lib" +##prepend_path CPATH "$pkg_install_dir/include" +##EOF +## cat "${BUILDDIR}/setup_dbcsr" >> $SETUPFILE +## fi +cat << EOF >> "${BUILDDIR}/setup_dbcsr" +export DBCSR_CFLAGS="${DBCSR_CFLAGS}" +export DBCSR_LDFLAGS="${DBCSR_LDFLAGS}" +export DBCSR_LIBS="${DBCSR_LIBS}" +export CP_DFLAGS="\${CP_DFLAGS} IF_CUDA(-D__DBCSR_ACC -D__DBCSR|IF_HIP(-D__DBCSR_ACC -D__DBCSR|-D__DBCSR))" +export CP_CFLAGS="\${CP_CFLAGS} ${DBCSR_CFLAGS}" +export CP_LDFLAGS="\${CP_LDFLAGS} ${DBCSR_LDFLAGS}" +export CP_LIBS="${DBCSR_LIBS} \${CP_LIBS}" +export DBCSRROOT="$pkg_install_dir" +EOF +#else +# echo "DBCSR is a hard dependency for cp2k" +# exit 1 +#fi + +load "${BUILDDIR}/setup_dbcsr" +write_toolchain_env "${INSTALLDIR}" + +cd "${ROOTDIR}" +report_timing "DBCSR" diff --git a/tools/toolchain/scripts/stage4/install_scalapack.sh b/tools/toolchain/scripts/stage4/install_scalapack.sh index db430fe161..bb70168c1c 100755 --- a/tools/toolchain/scripts/stage4/install_scalapack.sh +++ b/tools/toolchain/scripts/stage4/install_scalapack.sh @@ -6,12 +6,9 @@ [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -scalapack_ver="2.1.0" -scalapack_sha256="61d9216cf81d246944720cfce96255878a3f85dec13b9351f1fa0fd6768220a6" +scalapack_ver="2.2.1" +scalapack_sha256="4aede775fdb28fa44b331875730bcd5bab130caaec225fadeccf424c8fcb55aa" scalapack_pkg="scalapack-${scalapack_ver}.tgz" -patches=( - "${SCRIPT_DIR}/stage4/scalapack-${scalapack_ver}-gcc10.patch" -) source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh @@ -45,20 +42,16 @@ case "$with_scalapack" in [ -d scalapack-${scalapack_ver} ] && rm -rf scalapack-${scalapack_ver} tar -xzf ${scalapack_pkg} - pushd "scalapack-${scalapack_ver}" > /dev/null - for patch in "${patches[@]}"; do - patch -p1 < "${patch}" >> patch.log 2>&1 - done - popd > /dev/null - mkdir -p "scalapack-${scalapack_ver}/build" pushd "scalapack-${scalapack_ver}/build" > /dev/null - cmake -DCMAKE_FIND_ROOT_PATH="$ROOTDIR" \ + FFLAGS="-fallow-argument-mismatch" cmake -DCMAKE_FIND_ROOT_PATH="$ROOTDIR" \ -DCMAKE_INSTALL_PREFIX="${pkg_install_dir}" \ -DCMAKE_INSTALL_LIBDIR="lib" \ -DBUILD_SHARED_LIBS=NO \ -DCMAKE_BUILD_TYPE=Release .. \ + -DBUILD_TESTING=NO \ + -DSCALAPACK_BUILD_TESTS=NO \ > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log make install >> make.log 2>&1 || tail -n ${LOG_LINES} make.log diff --git a/tools/toolchain/scripts/stage4/scalapack-2.1.0-gcc10.patch b/tools/toolchain/scripts/stage4/scalapack-2.1.0-gcc10.patch deleted file mode 100644 index 5fea4255c1..0000000000 --- a/tools/toolchain/scripts/stage4/scalapack-2.1.0-gcc10.patch +++ /dev/null @@ -1,5628 +0,0 @@ -diff --git a/BLACS/TESTING/CMakeLists.txt b/BLACS/TESTING/CMakeLists.txt -index d8846b5..4e91ac2 100644 ---- a/BLACS/TESTING/CMakeLists.txt -+++ b/BLACS/TESTING/CMakeLists.txt -@@ -1,10 +1,14 @@ --set(FTestObj -+set(FTestObj - blacstest.f btprim.f tools.f) - -+if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) -+ set_source_files_properties(blacstest.f PROPERTIES COMPILE_FLAGS "-std=legacy") -+endif() -+ - add_executable(xFbtest ${FTestObj}) - target_link_libraries(xFbtest scalapack) - --set(CTestObj -+set(CTestObj - Cbt.c) - - set_property( -@@ -46,4 +50,4 @@ add_test(xFbtest - -DRUNTIMEDIR=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} - -DSOURCEDIR=${CMAKE_CURRENT_SOURCE_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/runtest.cmake -- ) -\ No newline at end of file -+ ) -diff --git a/PBLAS/TESTING/CMakeLists.txt b/PBLAS/TESTING/CMakeLists.txt -index e60f5e4..ee77091 100644 ---- a/PBLAS/TESTING/CMakeLists.txt -+++ b/PBLAS/TESTING/CMakeLists.txt -@@ -10,7 +10,7 @@ set (zpbtcom pzblastst.f dlamch.f ${pbtcom}) - - set_property( - SOURCE ${PblasErrorHandler} -- APPEND PROPERTY COMPILE_DEFINITIONS TestingPblas -+ APPEND PROPERTY COMPILE_DEFINITIONS TestingPblas - ) - - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/PBLAS/TESTING) -@@ -74,5 +74,6 @@ add_test(dpb3tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./dpb3tst) - add_test(cpb3tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./cpb3tst) - add_test(zpb3tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./zpb3tst) - -- -- -+if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) -+ set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" ) # local to this directory -+endif() -diff --git a/PBLAS/TIMING/CMakeLists.txt b/PBLAS/TIMING/CMakeLists.txt -index 763330f..208bbc3 100644 ---- a/PBLAS/TIMING/CMakeLists.txt -+++ b/PBLAS/TIMING/CMakeLists.txt -@@ -74,5 +74,6 @@ add_test(dpb3tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./dpb3tim) - add_test(cpb3tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./cpb3tim) - add_test(zpb3tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./zpb3tim) - -- -- -+if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) -+ set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" ) # local to this directory -+endif() -diff --git a/SRC/pclarf.f b/SRC/pclarf.f -index f941e46..371f710 100644 ---- a/SRC/pclarf.f -+++ b/SRC/pclarf.f -@@ -242,7 +242,7 @@ - $ IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC, - $ LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW, - $ NQ, RDEST -- COMPLEX TAULOC -+ COMPLEX TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, CCOPY, CGEBR2D, CGEBS2D, -@@ -336,7 +336,7 @@ - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -345,7 +345,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -363,8 +363,8 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -379,9 +379,9 @@ - * - IF( MYCOL.EQ.ICCOL ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -398,7 +398,7 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, V( IOFFV ), 1, -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1, - $ WORK, 1, C( IOFFC ), LDC ) - END IF - * -@@ -421,9 +421,9 @@ - IPW = MP+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -441,7 +441,7 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * -@@ -471,7 +471,7 @@ - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -480,7 +480,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -500,8 +500,8 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -516,18 +516,18 @@ - WORK(IPW) = TAU( JJV ) - CALL CGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MP+1 - CALL CGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -547,8 +547,8 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -577,9 +577,9 @@ - * - IF( MYROW.EQ.ICROW ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -597,7 +597,7 @@ - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFV.GT.0 .AND. IOFFC.GT.0 ) -- $ CALL CGERC( MP, NQ, -TAULOC, WORK, 1, -+ $ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC ), - $ LDC ) - END IF -@@ -621,9 +621,9 @@ - IPW = NQ+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -641,8 +641,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -667,7 +667,7 @@ - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -676,7 +676,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -694,8 +694,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -720,18 +720,18 @@ - WORK(IPW) = TAU( IIV ) - CALL CGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQ+1 - CALL CGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -750,8 +750,8 @@ - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFC.GT.0 ) -- $ CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ $ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -770,7 +770,7 @@ - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -779,7 +779,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -797,8 +797,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -diff --git a/SRC/pclarfc.f b/SRC/pclarfc.f -index d6a2d3b..f84c493 100644 ---- a/SRC/pclarfc.f -+++ b/SRC/pclarfc.f -@@ -242,7 +242,7 @@ - $ IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC, - $ LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW, - $ NQ, RDEST -- COMPLEX TAULOC -+ COMPLEX TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, CCOPY, CGEBR2D, CGEBS2D, -@@ -336,17 +336,17 @@ - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAULOC, 1, IVROW, MYCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -364,8 +364,8 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -380,9 +380,9 @@ - * - IF( MYCOL.EQ.ICCOL ) THEN - * -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -399,7 +399,7 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, V( IOFFV ), 1, -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1, - $ WORK, 1, C( IOFFC ), LDC ) - END IF - * -@@ -422,9 +422,9 @@ - IPW = MP+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -442,7 +442,7 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * -@@ -472,17 +472,17 @@ - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC, - $ 1, IVROW, MYCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -500,8 +500,8 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), 1, -- $ C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -516,18 +516,18 @@ - WORK(IPW) = TAU( JJV ) - CALL CGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * - ELSE - * - IPW = MP+1 - CALL CGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -545,8 +545,8 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), 1, -- $ C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -575,9 +575,9 @@ - * - IF( MYROW.EQ.ICROW ) THEN - * -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -594,7 +594,7 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC ), LDC ) - END IF - * -@@ -617,9 +617,9 @@ - IPW = NQ+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -637,8 +637,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -663,17 +663,17 @@ - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, - $ 1, MYROW, IVCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -691,8 +691,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -716,18 +716,18 @@ - WORK(IPW) = TAU( IIV ) - CALL CGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * - ELSE - * - IPW = NQ+1 - CALL CGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -745,8 +745,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -765,17 +765,17 @@ - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, 1, - $ MYROW, IVCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -793,8 +793,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -diff --git a/SRC/pclarz.f b/SRC/pclarz.f -index 9ba730c..673860a 100644 ---- a/SRC/pclarz.f -+++ b/SRC/pclarz.f -@@ -251,7 +251,7 @@ - $ IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2, - $ MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW, - $ NQC2, NQV, RDEST -- COMPLEX TAULOC -+ COMPLEX TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, CAXPY, CCOPY, CGEBR2D, -@@ -370,7 +370,7 @@ - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -379,7 +379,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -402,9 +402,9 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -420,9 +420,9 @@ - * - IF( MYCOL.EQ.ICCOL2 ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -445,11 +445,11 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK, -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK, - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, V( IOFFV ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -471,9 +471,9 @@ - IPW = MPV+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -496,10 +496,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -530,16 +530,16 @@ - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -- CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC, -- $ 1, IVROW, MYCOL ) -+ CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, -+ $ TAULOC( 1 ), 1, IVROW, MYCOL ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -562,10 +562,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -580,18 +580,18 @@ - WORK( IPW ) = TAU( JJV ) - CALL CGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MPV+1 - CALL CGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -614,10 +614,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -646,9 +646,9 @@ - * - IF( MYROW.EQ.ICROW2 ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -669,13 +669,13 @@ - $ ICCOL2 ) - * - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK, 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK, 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * - IF( MPC2.GT.0 .AND. NQV.GT.0 ) -- $ CALL CGERC( MPC2, NQV, -TAULOC, WORK, 1, -+ $ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC2 ), - $ LDC ) - END IF -@@ -699,9 +699,9 @@ - IPW = NQV+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -720,13 +720,14 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), - $ RDEST, ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -- $ C( IOFFC1 ), 1 ) -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), -+ $ WORK( IPW ), 1, WORK, 1, -+ $ C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -751,16 +752,16 @@ - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -- CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, -- $ 1, MYROW, IVCOL ) -+ CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, -+ $ TAULOC( 1 ), 1, MYROW, IVCOL ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -779,13 +780,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -809,18 +810,18 @@ - WORK( IPW ) = TAU( IIV ) - CALL CGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQV+1 - CALL CGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -840,13 +841,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -865,7 +866,7 @@ - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -874,7 +875,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -893,13 +894,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -diff --git a/SRC/pclarzc.f b/SRC/pclarzc.f -index f1bc21e..b6d3b6d 100644 ---- a/SRC/pclarzc.f -+++ b/SRC/pclarzc.f -@@ -251,7 +251,7 @@ - $ IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2, - $ MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW, - $ NQC2, NQV, RDEST -- COMPLEX TAULOC -+ COMPLEX TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, CAXPY, CCOPY, CGEBR2D, -@@ -370,17 +370,17 @@ - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAULOC, 1, IVROW, MYCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -403,9 +403,9 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -421,9 +421,9 @@ - * - IF( MYCOL.EQ.ICCOL2 ) THEN - * -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -446,11 +446,11 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK, -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK, - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, V( IOFFV ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -472,9 +472,9 @@ - IPW = MPV+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -497,10 +497,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -531,17 +531,17 @@ - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC, - $ 1, IVROW, MYCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -564,10 +564,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -582,18 +582,18 @@ - WORK( IPW ) = TAU( JJV ) - CALL CGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * - ELSE - * - IPW = MPV+1 - CALL CGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -616,10 +616,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -648,9 +648,9 @@ - * - IF( MYROW.EQ.ICROW2 ) THEN - * -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -671,12 +671,12 @@ - $ ICCOL2 ) - * - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK, 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK, 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK, 1, -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC2 ), LDC ) - END IF - * -@@ -699,9 +699,9 @@ - IPW = NQV+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -720,13 +720,14 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), - $ RDEST, ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -- $ C( IOFFC1 ), 1 ) -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), -+ $ WORK( IPW ), 1, WORK, 1, -+ $ C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -751,17 +752,17 @@ - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, - $ 1, MYROW, IVCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -780,13 +781,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -810,18 +811,18 @@ - WORK( IPW ) = TAU( IIV ) - CALL CGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * - ELSE - * - IPW = NQV+1 - CALL CGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -841,13 +842,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -866,17 +867,17 @@ - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * - ELSE - * -- CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, 1, -- $ MYROW, IVCOL ) -- TAULOC = CONJG( TAULOC ) -+ CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, -+ $ TAULOC( 1 ), 1, MYROW, IVCOL ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -895,13 +896,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -diff --git a/SRC/pclattrs.f b/SRC/pclattrs.f -index c744aea..0d12a8b 100644 ---- a/SRC/pclattrs.f -+++ b/SRC/pclattrs.f -@@ -271,7 +271,8 @@ - $ JINC, JLAST, LDA, LDX, MB, MYCOL, MYROW, NB, - $ NPCOL, NPROW, RSRC - REAL BIGNUM, GROW, REC, SMLNUM, TJJ, TMAX, TSCAL, -- $ XBND, XJ, XMAX -+ $ XBND, XJ -+ REAL XMAX( 1 ) - COMPLEX CSUMJ, TJJS, USCAL, XJTMP, ZDUM - * .. - * .. External Functions .. -@@ -391,11 +392,11 @@ - * Compute a bound on the computed solution vector to see if the - * Level 2 PBLAS routine PCTRSV can be used. - * -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - CALL PCAMAX( N, ZDUM, IMAX, X, IX, JX, DESCX, 1 ) -- XMAX = CABS2( ZDUM ) -+ XMAX( 1 ) = CABS2( ZDUM ) - CALL SGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, -1, -1 ) -- XBND = XMAX -+ XBND = XMAX( 1 ) - * - IF( NOTRAN ) THEN - * -@@ -590,16 +591,16 @@ - * - * Use a Level 1 PBLAS solve, scaling intermediate results. - * -- IF( XMAX.GT.BIGNUM*HALF ) THEN -+ IF( XMAX( 1 ).GT.BIGNUM*HALF ) THEN - * - * Scale X so that its components are less than or equal to - * BIGNUM in absolute value. - * -- SCALE = ( BIGNUM*HALF ) / XMAX -+ SCALE = ( BIGNUM*HALF ) / XMAX( 1 ) - CALL PCSSCAL( N, SCALE, X, IX, JX, DESCX, 1 ) -- XMAX = BIGNUM -+ XMAX( 1 ) = BIGNUM - ELSE -- XMAX = XMAX*TWO -+ XMAX( 1 ) = XMAX( 1 )*TWO - END IF - * - IF( NOTRAN ) THEN -@@ -651,7 +652,7 @@ - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * X( J ) = CLADIV( X( J ), TJJS ) -@@ -682,7 +683,7 @@ - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - * X( J ) = CLADIV( X( J ), TJJS ) - * XJ = CABS1( X( J ) ) -@@ -706,7 +707,7 @@ - XJTMP = CONE - XJ = ONE - SCALE = ZERO -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - END IF - 90 CONTINUE - * -@@ -715,7 +716,7 @@ - * - IF( XJ.GT.ONE ) THEN - REC = ONE / XJ -- IF( CNORM( J ).GT.( BIGNUM-XMAX )*REC ) THEN -+ IF( CNORM( J ).GT.( BIGNUM-XMAX( 1 ) )*REC ) THEN - * - * Scale x by 1/(2*abs(x(j))). - * -@@ -724,7 +725,7 @@ - XJTMP = XJTMP*REC - SCALE = SCALE*REC - END IF -- ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX ) ) THEN -+ ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX( 1 ) ) ) THEN - * - * Scale x by 1/2. - * -@@ -743,7 +744,7 @@ - CALL PCAXPY( J-1, ZDUM, A, IA, JA+J-1, DESCA, 1, X, - $ IX, JX, DESCX, 1 ) - CALL PCAMAX( J-1, ZDUM, IMAX, X, IX, JX, DESCX, 1 ) -- XMAX = CABS1( ZDUM ) -+ XMAX( 1 ) = CABS1( ZDUM ) - CALL SGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, - $ -1, -1 ) - END IF -@@ -757,7 +758,7 @@ - CALL PCAXPY( N-J, ZDUM, A, IA+J, JA+J-1, DESCA, 1, - $ X, IX+J, JX, DESCX, 1 ) - CALL PCAMAX( N-J, ZDUM, I, X, IX+J, JX, DESCX, 1 ) -- XMAX = CABS1( ZDUM ) -+ XMAX( 1 ) = CABS1( ZDUM ) - CALL SGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, - $ -1, -1 ) - END IF -@@ -785,7 +786,7 @@ - END IF - XJ = CABS1( XJTMP ) - USCAL = CMPLX( TSCAL ) -- REC = ONE / MAX( XMAX, ONE ) -+ REC = ONE / MAX( XMAX( 1 ), ONE ) - IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN - * - * If x(j) could overflow, scale x by 1/(2*XMAX). -@@ -820,7 +821,7 @@ - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * -@@ -924,7 +925,7 @@ - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * X( J ) = CLADIV( X( J ), TJJS ) -@@ -945,7 +946,7 @@ - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - * X( J ) = CLADIV( X( J ), TJJS ) - XJTMP = CLADIV( XJTMP, TJJS ) -@@ -966,7 +967,7 @@ - END IF - XJTMP = CONE - SCALE = ZERO -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - END IF - 110 CONTINUE - ELSE -@@ -981,7 +982,7 @@ - X( IROWX ) = XJTMP - END IF - END IF -- XMAX = MAX( XMAX, CABS1( XJTMP ) ) -+ XMAX( 1 ) = MAX( XMAX( 1 ), CABS1( XJTMP ) ) - 120 CONTINUE - * - ELSE -@@ -1004,7 +1005,7 @@ - END IF - XJ = CABS1( XJTMP ) - USCAL = TSCAL -- REC = ONE / MAX( XMAX, ONE ) -+ REC = ONE / MAX( XMAX( 1 ), ONE ) - IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN - * - * If x(j) could overflow, scale x by 1/(2*XMAX). -@@ -1039,7 +1040,7 @@ - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * -@@ -1145,7 +1146,7 @@ - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * X( J ) = CLADIV( X( J ), TJJS ) -@@ -1164,7 +1165,7 @@ - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - * X( J ) = CLADIV( X( J ), TJJS ) - XJTMP = CLADIV( XJTMP, TJJS ) -@@ -1181,7 +1182,7 @@ - $ X( IROWX ) = CONE - XJTMP = CONE - SCALE = ZERO -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - END IF - 130 CONTINUE - ELSE -@@ -1194,7 +1195,7 @@ - IF( ( MYROW.EQ.ITMP1X ) .AND. ( MYCOL.EQ.ITMP2X ) ) - $ X( IROWX ) = XJTMP - END IF -- XMAX = MAX( XMAX, CABS1( XJTMP ) ) -+ XMAX( 1 ) = MAX( XMAX( 1 ), CABS1( XJTMP ) ) - 140 CONTINUE - END IF - SCALE = SCALE / TSCAL -diff --git a/SRC/pclawil.f b/SRC/pclawil.f -index 24a49b9..b33b3b1 100644 ---- a/SRC/pclawil.f -+++ b/SRC/pclawil.f -@@ -124,11 +124,10 @@ - $ MODKM1, MYCOL, MYROW, NPCOL, NPROW, NUM, RIGHT, - $ RSRC, UP - REAL S -- COMPLEX CDUM, H11, H12, H21, H22, H33S, H44S, V1, V2, -- $ V3 -+ COMPLEX CDUM, H22, H33S, H44S, V1, V2 - * .. - * .. Local Arrays .. -- COMPLEX BUF( 4 ) -+ COMPLEX BUF( 4 ), V3( 1 ), H11( 1 ), H12( 1 ), H21( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, CGERV2D, CGESD2D -@@ -181,18 +180,18 @@ - IF( NPCOL.GT.1 ) THEN - CALL CGERV2D( CONTXT, 1, 1, V3, 1, MYROW, LEFT ) - ELSE -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - IF( NUM.GT.1 ) THEN - CALL CGERV2D( CONTXT, 4, 1, BUF, 4, UP, LEFT ) -- H11 = BUF( 1 ) -- H21 = BUF( 2 ) -- H12 = BUF( 3 ) -+ H11( 1 ) = BUF( 1 ) -+ H21( 1 ) = BUF( 2 ) -+ H12( 1 ) = BUF( 3 ) - H22 = BUF( 4 ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) - END IF - END IF -@@ -223,22 +222,22 @@ - CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, RSRC, JSRC ) - IF( NUM.GT.1 ) THEN -- CALL CGERV2D( CONTXT, 1, 1, H11, 1, UP, LEFT ) -+ CALL CGERV2D( CONTXT, 1, 1, H11( 1 ), 1, UP, LEFT ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) - END IF - IF( NPROW.GT.1 ) THEN - CALL CGERV2D( CONTXT, 1, 1, H12, 1, UP, MYCOL ) - ELSE -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - END IF - IF( NPCOL.GT.1 ) THEN -- CALL CGERV2D( CONTXT, 1, 1, H21, 1, MYROW, LEFT ) -+ CALL CGERV2D( CONTXT, 1, 1, H21( 1 ), 1, MYROW, LEFT ) - ELSE -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) - END IF - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - END IF - IF( ( MYROW.NE.II ) .OR. ( MYCOL.NE.JJ ) ) -@@ -247,24 +246,24 @@ - IF( MODKM1.GT.1 ) THEN - CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, RSRC, JSRC ) -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - * -- H44S = H44 - H11 -- H33S = H33 - H11 -- V1 = ( H33S*H44S-H43H34 ) / H21 + H12 -- V2 = H22 - H11 - H33S - H44S -- S = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 ) -+ H44S = H44 - H11( 1 ) -+ H33S = H33 - H11( 1 ) -+ V1 = ( H33S*H44S-H43H34 ) / H21( 1 ) + H12( 1 ) -+ V2 = H22 - H11( 1 ) - H33S - H44S -+ S = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3( 1 ) ) - V1 = V1 / S - V2 = V2 / S -- V3 = V3 / S -+ V3( 1 ) = V3( 1 ) / S - V( 1 ) = V1 - V( 2 ) = V2 -- V( 3 ) = V3 -+ V( 3 ) = V3( 1 ) - * - RETURN - * -diff --git a/SRC/pctrevc.f b/SRC/pctrevc.f -index d0a3043..bf6c52b 100644 ---- a/SRC/pctrevc.f -+++ b/SRC/pctrevc.f -@@ -218,11 +218,12 @@ - $ ITMP2, J, K, KI, LDT, LDVL, LDVR, LDW, MB, - $ MYCOL, MYROW, NB, NPCOL, NPROW, RSRC - REAL SELF -- REAL OVFL, REMAXD, SCALE, SMIN, SMLNUM, ULP, UNFL -+ REAL OVFL, REMAXD, SCALE, SMLNUM, ULP, UNFL - COMPLEX CDUM, REMAXC, SHIFT - * .. - * .. Local Arrays .. - INTEGER DESCW( DLEN_ ) -+ REAL SMIN( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -355,13 +356,13 @@ - $ GO TO 70 - END IF - * -- SMIN = ZERO -+ SMIN( 1 ) = ZERO - SHIFT = CZERO - CALL INFOG2L( KI, KI, DESCT, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, ITMP1, ITMP2 ) - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - SHIFT = T( ( ICOL-1 )*LDT+IROW ) -- SMIN = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) -+ SMIN( 1 ) = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) - END IF - CALL SGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SMIN, 1, -1, -1 ) - CALL CGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SHIFT, 1, -1, -1 ) -@@ -396,8 +397,9 @@ - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - T( ( ICOL-1 )*LDT+IROW ) = T( ( ICOL-1 )*LDT+IROW ) - - $ SHIFT -- IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN ) THEN -- T( ( ICOL-1 )*LDT+IROW ) = CMPLX( SMIN ) -+ IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN( 1 ) ) -+ $ THEN -+ T( ( ICOL-1 )*LDT+IROW ) = CMPLX( SMIN( 1 ) ) - END IF - END IF - 50 CONTINUE -@@ -467,13 +469,13 @@ - $ GO TO 110 - END IF - * -- SMIN = ZERO -+ SMIN( 1 ) = ZERO - SHIFT = CZERO - CALL INFOG2L( KI, KI, DESCT, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, ITMP1, ITMP2 ) - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - SHIFT = T( ( ICOL-1 )*LDT+IROW ) -- SMIN = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) -+ SMIN( 1 ) = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) - END IF - CALL SGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SMIN, 1, -1, -1 ) - CALL CGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SHIFT, 1, -1, -1 ) -@@ -507,8 +509,8 @@ - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - T( ( ICOL-1 )*LDT+IROW ) = T( ( ICOL-1 )*LDT+IROW ) - - $ SHIFT -- IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN ) -- $ T( ( ICOL-1 )*LDT+IROW ) = CMPLX( SMIN ) -+ IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN( 1 ) ) -+ $ T( ( ICOL-1 )*LDT+IROW ) = CMPLX( SMIN( 1 ) ) - END IF - 90 CONTINUE - * -diff --git a/SRC/pdhseqr.f b/SRC/pdhseqr.f -index ffc3652..6e0f751 100644 ---- a/SRC/pdhseqr.f -+++ b/SRC/pdhseqr.f -@@ -259,11 +259,12 @@ - $ HRSRC4, HCSRC4, LIWKOPT - LOGICAL INITZ, LQUERY, WANTT, WANTZ, PAIR, BORDER - DOUBLE PRECISION TMP1, TMP2, TMP3, TMP4, DUM1, DUM2, DUM3, -- $ DUM4, ELEM1, ELEM2, ELEM3, ELEM4, -+ $ DUM4, ELEM1, ELEM4, - $ CS, SN, ELEM5, TMP, LWKOPT - * .. - * .. Local Arrays .. - INTEGER DESCH2( DLEN_ ) -+ DOUBLE PRECISION ELEM2( 1 ), ELEM3( 1 ) - * .. - * .. External Functions .. - INTEGER PILAENVX, NUMROC, ICEIL -@@ -566,28 +567,28 @@ - IF( MYROW.EQ.HRSRC1 .AND. MYCOL.EQ.HCSRC1 ) THEN - ELEM1 = H((JLOC1-1)*LLDH+ILOC1) - IF( K.LT.N ) THEN -- ELEM3 = H((JLOC1-1)*LLDH+ILOC1+1) -+ ELEM3( 1 ) = H((JLOC1-1)*LLDH+ILOC1+1) - ELSE -- ELEM3 = ZERO -+ ELEM3( 1 ) = ZERO - END IF -- IF( ELEM3.NE.ZERO ) THEN -- ELEM2 = H((JLOC1)*LLDH+ILOC1) -+ IF( ELEM3( 1 ).NE.ZERO ) THEN -+ ELEM2( 1 ) = H((JLOC1)*LLDH+ILOC1) - ELEM4 = H((JLOC1)*LLDH+ILOC1+1) -- CALL DLANV2( ELEM1, ELEM2, ELEM3, ELEM4, -- $ WR( K ), WI( K ), WR( K+1 ), WI( K+1 ), -- $ SN, CS ) -+ CALL DLANV2( ELEM1, ELEM2( 1 ), ELEM3( 1 ), -+ $ ELEM4, WR( K ), WI( K ), WR( K+1 ), -+ $ WI( K+1 ), SN, CS ) - PAIR = .TRUE. - ELSE - IF( K.GT.1 ) THEN - TMP = H((JLOC1-2)*LLDH+ILOC1) - IF( TMP.NE.ZERO ) THEN - ELEM1 = H((JLOC1-2)*LLDH+ILOC1-1) -- ELEM2 = H((JLOC1-1)*LLDH+ILOC1-1) -- ELEM3 = H((JLOC1-2)*LLDH+ILOC1) -+ ELEM2( 1 ) = H((JLOC1-1)*LLDH+ILOC1-1) -+ ELEM3( 1 ) = H((JLOC1-2)*LLDH+ILOC1) - ELEM4 = H((JLOC1-1)*LLDH+ILOC1) -- CALL DLANV2( ELEM1, ELEM2, ELEM3, -- $ ELEM4, WR( K-1 ), WI( K-1 ), -- $ WR( K ), WI( K ), SN, CS ) -+ CALL DLANV2( ELEM1, ELEM2( 1 ), -+ $ ELEM3( 1 ), ELEM4, WR( K-1 ), -+ $ WI( K-1 ), WR( K ), WI( K ), SN, CS ) - ELSE - WR( K ) = ELEM1 - END IF -@@ -620,12 +621,12 @@ - CALL INFOG2L( K+1, K+1, DESCH, NPROW, NPCOL, MYROW, MYCOL, - $ ILOC4, JLOC4, HRSRC4, HCSRC4 ) - IF( MYROW.EQ.HRSRC2 .AND. MYCOL.EQ.HCSRC2 ) THEN -- ELEM2 = H((JLOC2-1)*LLDH+ILOC2) -+ ELEM2( 1 ) = H((JLOC2-1)*LLDH+ILOC2) - IF( HRSRC1.NE.HRSRC2 .OR. HCSRC1.NE.HCSRC2 ) - $ CALL DGESD2D( ICTXT, 1, 1, ELEM2, 1, HRSRC1, HCSRC1) - END IF - IF( MYROW.EQ.HRSRC3 .AND. MYCOL.EQ.HCSRC3 ) THEN -- ELEM3 = H((JLOC3-1)*LLDH+ILOC3) -+ ELEM3( 1 ) = H((JLOC3-1)*LLDH+ILOC3) - IF( HRSRC1.NE.HRSRC3 .OR. HCSRC1.NE.HCSRC3 ) - $ CALL DGESD2D( ICTXT, 1, 1, ELEM3, 1, HRSRC1, HCSRC1) - END IF -@@ -651,8 +652,9 @@ - ELEM5 = WORK(2) - IF( ELEM5.EQ.ZERO ) THEN - IF( WR( K ).EQ.ZERO .AND. WI( K ).EQ.ZERO ) THEN -- CALL DLANV2( ELEM1, ELEM2, ELEM3, ELEM4, WR( K ), -- $ WI( K ), WR( K+1 ), WI( K+1 ), SN, CS ) -+ CALL DLANV2( ELEM1, ELEM2( 1 ), ELEM3( 1 ), ELEM4, -+ $ WR( K ), WI( K ), WR( K+1 ), WI( K+1 ), SN, -+ $ CS ) - ELSEIF( WR( K+1 ).EQ.ZERO .AND. WI( K+1 ).EQ.ZERO ) - $ THEN - WR( K+1 ) = ELEM4 -diff --git a/SRC/pdlacon.f b/SRC/pdlacon.f -index b625d97..74b9eab 100644 ---- a/SRC/pdlacon.f -+++ b/SRC/pdlacon.f -@@ -160,10 +160,10 @@ - INTEGER I, ICTXT, IFLAG, IIVX, IMAXROW, IOFFVX, IROFF, - $ ITER, IVXCOL, IVXROW, J, JLAST, JJVX, JUMP, - $ K, MYCOL, MYROW, NP, NPCOL, NPROW -- DOUBLE PRECISION ALTSGN, ESTOLD, JLMAX, TEMP, XMAX -+ DOUBLE PRECISION ALTSGN, ESTOLD, JLMAX, XMAX - * .. - * .. Local Arrays .. -- DOUBLE PRECISION WORK( 2 ) -+ DOUBLE PRECISION ESTWORK( 1 ), TEMP( 1 ), WORK( 2 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, DCOPY, DGEBR2D, DGEBS2D, -@@ -184,6 +184,7 @@ - * - * Get grid parameters. - * -+ ESTWORK( 1 ) = EST - ICTXT = DESCX( CTXT_ ) - CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL ) - * -@@ -215,21 +216,21 @@ - IF( N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN - V( IOFFVX ) = X( IOFFVX ) -- EST = ABS( V( IOFFVX ) ) -- CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 ) -+ ESTWORK( 1 ) = ABS( V( IOFFVX ) ) -+ CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 ) - ELSE -- CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1, -+ CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1, - $ IVXROW, MYCOL ) - END IF - * ... QUIT - GO TO 150 - END IF -- CALL PDASUM( N, EST, X, IX, JX, DESCX, 1 ) -+ CALL PDASUM( N, ESTWORK( 1 ), X, IX, JX, DESCX, 1 ) - IF( DESCX( M_ ).EQ.1 .AND. N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN -- CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 ) -+ CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 ) - ELSE -- CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1, -+ CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1, - $ IVXROW, MYCOL ) - END IF - END IF -@@ -281,13 +282,13 @@ - * - 70 CONTINUE - CALL DCOPY( NP, X( IOFFVX ), 1, V( IOFFVX ), 1 ) -- ESTOLD = EST -- CALL PDASUM( N, EST, V, IV, JV, DESCV, 1 ) -+ ESTOLD = ESTWORK( 1 ) -+ CALL PDASUM( N, ESTWORK( 1 ), V, IV, JV, DESCV, 1 ) - IF( DESCV( M_ ).EQ.1 .AND. N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN -- CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 ) -+ CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 ) - ELSE -- CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1, -+ CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1, - $ IVXROW, MYCOL ) - END IF - END IF -@@ -305,7 +306,7 @@ - * REPEATED SIGN VECTOR DETECTED, HENCE ALGORITHM HAS CONVERGED. - * ALONG WITH IT, TEST FOR CYCLING. - * -- IF( IFLAG.EQ.0 .OR. EST.LE.ESTOLD ) -+ IF( IFLAG.EQ.0 .OR. ESTWORK( 1 ).LE.ESTOLD ) - $ GO TO 120 - * - DO 100 I = IOFFVX, IOFFVX+NP-1 -@@ -361,7 +362,7 @@ - * X HAS BEEN OVERWRITTEN BY A*X - * - 140 CONTINUE -- CALL PDASUM( N, TEMP, X, IX, JX, DESCX, 1 ) -+ CALL PDASUM( N, TEMP( 1 ), X, IX, JX, DESCX, 1 ) - IF( DESCX( M_ ).EQ.1 .AND. N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN - CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, TEMP, 1 ) -@@ -370,15 +371,16 @@ - $ IVXROW, MYCOL ) - END IF - END IF -- TEMP = TWO*( TEMP / DBLE( 3*N ) ) -- IF( TEMP.GT.EST ) THEN -+ TEMP( 1 ) = TWO*( TEMP( 1 ) / DBLE( 3*N ) ) -+ IF( TEMP( 1 ).GT.ESTWORK( 1 ) ) THEN - CALL DCOPY( NP, X( IOFFVX ), 1, V( IOFFVX ), 1 ) -- EST = TEMP -+ ESTWORK( 1 ) = TEMP( 1 ) - END IF - * - 150 CONTINUE - KASE = 0 - * -+ EST = ESTWORK( 1 ) - RETURN - * - * End of PDLACON -diff --git a/SRC/pdlarf.f b/SRC/pdlarf.f -index 29da1ac..41368d6 100644 ---- a/SRC/pdlarf.f -+++ b/SRC/pdlarf.f -@@ -241,7 +241,7 @@ - $ IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC, - $ LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW, - $ NQ, RDEST -- DOUBLE PRECISION TAULOC -+ DOUBLE PRECISION TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, DCOPY, DGEBR2D, DGEBS2D, -@@ -335,7 +335,7 @@ - * - CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -344,7 +344,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -362,8 +362,8 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL DGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -378,9 +378,9 @@ - * - IF( MYCOL.EQ.ICCOL ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -397,8 +397,8 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL DGER( MP, NQ, -TAULOC, V( IOFFV ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL DGER( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -420,9 +420,9 @@ - IPW = MP+1 - CALL DGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -440,7 +440,7 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL DGER( MP, NQ, -TAULOC, WORK, 1, -+ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * -@@ -470,7 +470,7 @@ - * - CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -479,7 +479,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -499,8 +499,8 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL DGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -515,18 +515,18 @@ - WORK(IPW) = TAU( JJV ) - CALL DGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MP+1 - CALL DGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -546,8 +546,8 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL DGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -576,9 +576,9 @@ - * - IF( MYROW.EQ.ICROW ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -596,7 +596,7 @@ - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFV.GT.0 .AND. IOFFC.GT.0 ) -- $ CALL DGER( MP, NQ, -TAULOC, WORK, 1, -+ $ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC ), LDC ) - END IF - * -@@ -619,9 +619,9 @@ - IPW = NQ+1 - CALL DGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -639,7 +639,7 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MP, NQ, -TAULOC, WORK( IPW ), 1, -+ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, - $ WORK, 1, C( IOFFC ), LDC ) - END IF - * -@@ -665,7 +665,7 @@ - * - CALL DGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -674,7 +674,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -692,8 +692,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -718,18 +718,18 @@ - WORK(IPW) = TAU( IIV ) - CALL DGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQ+1 - CALL DGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -748,8 +748,8 @@ - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFC.GT.0 ) -- $ CALL DGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ $ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -768,7 +768,7 @@ - * - CALL DGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -777,7 +777,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -795,8 +795,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, WORK, -+ $ 1, C( IOFFC ), LDC ) - END IF - * - END IF -diff --git a/SRC/pdlarz.f b/SRC/pdlarz.f -index b91282c..f45c137 100644 ---- a/SRC/pdlarz.f -+++ b/SRC/pdlarz.f -@@ -250,7 +250,7 @@ - $ IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2, - $ MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW, - $ NQC2, NQV, RDEST -- DOUBLE PRECISION TAULOC -+ DOUBLE PRECISION TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, DAXPY, DCOPY, DGEBR2D, -@@ -369,7 +369,7 @@ - * - CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -378,7 +378,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -401,9 +401,9 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL DAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL DAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL DGER( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL DGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -419,9 +419,9 @@ - * - IF( MYCOL.EQ.ICCOL2 ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -444,11 +444,11 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL DAXPY( NQC2, -TAULOC, WORK, -+ $ CALL DAXPY( NQC2, -TAULOC( 1 ), WORK, - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL DGER( MPV, NQC2, -TAULOC, V( IOFFV ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL DGER( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -470,9 +470,9 @@ - IPW = MPV+1 - CALL DGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -495,10 +495,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL DAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL DAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL DGER( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL DGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -529,7 +529,7 @@ - * - CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -538,7 +538,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -561,10 +561,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL DAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL DAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL DGER( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL DGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -579,18 +579,18 @@ - WORK( IPW ) = TAU( JJV ) - CALL DGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MPV+1 - CALL DGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -613,10 +613,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL DAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL DAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL DGER( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL DGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -645,9 +645,9 @@ - * - IF( MYROW.EQ.ICROW2 ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -668,13 +668,13 @@ - $ ICCOL2 ) - * - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL DAXPY( MPC2, -TAULOC, WORK, 1, -+ $ CALL DAXPY( MPC2, -TAULOC( 1 ), WORK, 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * - IF( MPC2.GT.0 .AND. NQV.GT.0 ) -- $ CALL DGER( MPC2, NQV, -TAULOC, WORK, 1, -+ $ CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC2 ), - $ LDC ) - END IF -@@ -698,9 +698,9 @@ - IPW = NQV+1 - CALL DGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -719,13 +719,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), - $ RDEST, ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL DAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -- $ C( IOFFC1 ), 1 ) -+ $ CALL DAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -750,7 +750,7 @@ - * - CALL DGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -759,7 +759,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -778,12 +778,12 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL DAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL DAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -+ CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, - $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -808,18 +808,18 @@ - WORK( IPW ) = TAU( IIV ) - CALL DGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQV+1 - CALL DGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -839,13 +839,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL DAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL DAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -864,7 +864,7 @@ - * - CALL DGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -873,7 +873,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -892,13 +892,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL DAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL DAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -diff --git a/SRC/pdlawil.f b/SRC/pdlawil.f -index 90a4d74..e8bc3a0 100644 ---- a/SRC/pdlawil.f -+++ b/SRC/pdlawil.f -@@ -120,10 +120,10 @@ - INTEGER CONTXT, DOWN, HBL, ICOL, IROW, JSRC, LDA, LEFT, - $ MODKM1, MYCOL, MYROW, NPCOL, NPROW, NUM, RIGHT, - $ RSRC, UP -- DOUBLE PRECISION H11, H12, H21, H22, H33S, H44S, S, V1, V2, V3 -+ DOUBLE PRECISION H22, H33S, H44S, S, V1, V2 - * .. - * .. Local Arrays .. -- DOUBLE PRECISION BUF( 4 ) -+ DOUBLE PRECISION BUF( 4 ), H11( 1 ), H12( 1 ), H21( 1 ), V3( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, DGERV2D, DGESD2D, INFOG2L -@@ -170,18 +170,18 @@ - IF( NPCOL.GT.1 ) THEN - CALL DGERV2D( CONTXT, 1, 1, V3, 1, MYROW, LEFT ) - ELSE -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - IF( NUM.GT.1 ) THEN - CALL DGERV2D( CONTXT, 4, 1, BUF, 4, UP, LEFT ) -- H11 = BUF( 1 ) -- H21 = BUF( 2 ) -- H12 = BUF( 3 ) -+ H11( 1 ) = BUF( 1 ) -+ H21( 1 ) = BUF( 2 ) -+ H12( 1 ) = BUF( 3 ) - H22 = BUF( 4 ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) - END IF - END IF -@@ -214,20 +214,20 @@ - IF( NUM.GT.1 ) THEN - CALL DGERV2D( CONTXT, 1, 1, H11, 1, UP, LEFT ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) - END IF - IF( NPROW.GT.1 ) THEN - CALL DGERV2D( CONTXT, 1, 1, H12, 1, UP, MYCOL ) - ELSE -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - END IF - IF( NPCOL.GT.1 ) THEN - CALL DGERV2D( CONTXT, 1, 1, H21, 1, MYROW, LEFT ) - ELSE -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) - END IF - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - END IF - IF( ( MYROW.NE.II ) .OR. ( MYCOL.NE.JJ ) ) -@@ -236,24 +236,24 @@ - IF( MODKM1.GT.1 ) THEN - CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, RSRC, JSRC ) -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - * -- H44S = H44 - H11 -- H33S = H33 - H11 -- V1 = ( H33S*H44S-H43H34 ) / H21 + H12 -- V2 = H22 - H11 - H33S - H44S -- S = ABS( V1 ) + ABS( V2 ) + ABS( V3 ) -+ H44S = H44 - H11( 1 ) -+ H33S = H33 - H11( 1 ) -+ V1 = ( H33S*H44S-H43H34 ) / H21( 1 ) + H12( 1 ) -+ V2 = H22 - H11( 1 ) - H33S - H44S -+ S = ABS( V1 ) + ABS( V2 ) + ABS( V3( 1 ) ) - V1 = V1 / S - V2 = V2 / S -- V3 = V3 / S -+ V3( 1 ) = V3( 1 ) / S - V( 1 ) = V1 - V( 2 ) = V2 -- V( 3 ) = V3 -+ V( 3 ) = V3( 1 ) - * - RETURN - * -diff --git a/SRC/pdstebz.f b/SRC/pdstebz.f -index e7006f9..bf4dacc 100644 ---- a/SRC/pdstebz.f -+++ b/SRC/pdstebz.f -@@ -246,14 +246,14 @@ - $ ITMP2, J, JB, K, LAST, LEXTRA, LREQ, MYCOL, - $ MYROW, NALPHA, NBETA, NCMP, NEIGINT, NEXT, NGL, - $ NGLOB, NGU, NINT, NPCOL, NPROW, OFFSET, -- $ ONEDCONTEXT, P, PREV, REXTRA, RREQ, SELF, -- $ TORECV -+ $ ONEDCONTEXT, P, PREV, REXTRA, RREQ, SELF - DOUBLE PRECISION ALPHA, ATOLI, BETA, BNORM, DRECV, DSEND, GL, - $ GU, INITVL, INITVU, LSAVE, MID, PIVMIN, RELTOL, - $ SAFEMN, TMP1, TMP2, TNORM, ULP - * .. - * .. Local Arrays .. - INTEGER IDUM( 5, 2 ) -+ INTEGER TORECV( 1, 1 ) - * .. - * .. Executable Statements .. - * This is just to keep ftnchek happy -@@ -784,14 +784,14 @@ - ELSE - CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', 1, 1, TORECV, 1, 0, - $ I-1 ) -- IF( TORECV.NE.0 ) THEN -- CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, IWORK, -- $ TORECV, 0, I-1 ) -- CALL DGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, WORK, -- $ TORECV, 0, I-1 ) -- CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, -- $ IWORK( N+1 ), TORECV, 0, I-1 ) -- DO 120 J = 1, TORECV -+ IF( TORECV( 1, 1 ).NE.0 ) THEN -+ CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1, -+ $ IWORK, TORECV( 1, 1 ), 0, I-1 ) -+ CALL DGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1, -+ $ WORK, TORECV( 1, 1 ), 0, I-1 ) -+ CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1, -+ $ IWORK( N+1 ), TORECV( 1, 1 ), 0, I-1 ) -+ DO 120 J = 1, TORECV( 1, 1 ) - W( IWORK( J ) ) = WORK( J ) - IBLOCK( IWORK( J ) ) = IWORK( N+J ) - 120 CONTINUE -diff --git a/SRC/pdtrord.f b/SRC/pdtrord.f -index 1f37d8e..3870574 100644 ---- a/SRC/pdtrord.f -+++ b/SRC/pdtrord.f -@@ -328,12 +328,13 @@ - $ EAST, WEST, ILOC4, SOUTH, NORTH, INDXS, - $ ITT, JTT, ILEN, DLEN, INDXE, TRSRC1, TCSRC1, - $ TRSRC2, TCSRC2, ILOS, DIR, TLIHI, TLILO, TLSEL, -- $ ROUND, LAST, WIN0S, WIN0E, WINE, MMAX, MMIN -+ $ ROUND, LAST, WIN0S, WIN0E, WINE - DOUBLE PRECISION ELEM, ELEM1, ELEM2, ELEM3, ELEM4, SN, CS, TMP, - $ ELEM5 - * .. - * .. Local Arrays .. -- INTEGER IBUFF( 8 ), IDUM1( 1 ), IDUM2( 1 ) -+ INTEGER IBUFF( 8 ), IDUM1( 1 ), IDUM2( 1 ), MMAX( 1 ), -+ $ MMIN( 1 ), INFODUM( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -483,16 +484,16 @@ - END IF - IF( SELECT(K).NE.0 ) M = M + 1 - 10 CONTINUE -- MMAX = M -- MMIN = M -+ MMAX( 1 ) = M -+ MMIN( 1 ) = M - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX, 1, -1, - $ -1, -1, -1, -1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN, 1, -1, - $ -1, -1, -1, -1 ) -- IF( MMAX.GT.MMIN ) THEN -- M = MMAX -+ IF( MMAX( 1 ).GT.MMIN( 1 ) ) THEN -+ M = MMAX( 1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, N, 1, SELECT, N, - $ -1, -1, -1, -1, -1 ) -@@ -520,9 +521,11 @@ - * - * Global maximum on info. - * -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, -1, -1, - $ -1, -1 ) -+ INFO = INFODUM( 1 ) -+ END IF - * - * Return if some argument is incorrect. - * -@@ -1576,9 +1579,11 @@ - * experienced a failure in the reordering. - * - MYIERR = IERR -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, IERR, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ IERR = INFODUM( 1 ) -+ END IF - * - IF( IERR.NE.0 ) THEN - * -@@ -1586,9 +1591,11 @@ - * to swap. - * - IF( MYIERR.NE.0 ) INFO = MAX(1,I+KKS-1) -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ INFO = INFODUM( 1 ) -+ END IF - GO TO 300 - END IF - * -@@ -3245,9 +3252,11 @@ - * experienced a failure in the reordering. - * - MYIERR = IERR -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, IERR, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ IERR = INFODUM( 1 ) -+ END IF - * - IF( IERR.NE.0 ) THEN - * -@@ -3255,9 +3264,11 @@ - * to swap. - * - IF( MYIERR.NE.0 ) INFO = MAX(1,I+KKS-1) -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ IERR = INFODUM( 1 ) -+ END IF - GO TO 300 - END IF - * -diff --git a/SRC/pdtrsen.f b/SRC/pdtrsen.f -index 78c5599..c65ea91 100644 ---- a/SRC/pdtrsen.f -+++ b/SRC/pdtrsen.f -@@ -354,13 +354,15 @@ - LOGICAL LQUERY, WANTBH, WANTQ, WANTS, WANTSP - INTEGER ICOFFT12, ICTXT, IDUM1, IDUM2, IERR, ILOC1, - $ IPW1, ITER, ITT, JLOC1, JTT, K, LIWMIN, LLDT, -- $ LLDQ, LWMIN, MMAX, MMIN, MYROW, MYCOL, N1, N2, -+ $ LLDQ, LWMIN, MYROW, MYCOL, N1, N2, - $ NB, NOEXSY, NPCOL, NPROCS, NPROW, SPACE, - $ T12ROWS, T12COLS, TCOLS, TCSRC, TROWS, TRSRC, - $ WRK1, IWRK1, WRK2, IWRK2, WRK3, IWRK3 -- DOUBLE PRECISION DPDUM1, ELEM, EST, SCALE, RNORM -+ DOUBLE PRECISION ELEM, EST, SCALE, RNORM - * .. Local Arrays .. -- INTEGER DESCT12( DLEN_ ), MBNB2( 2 ) -+ INTEGER DESCT12( DLEN_ ), MBNB2( 2 ), MMAX( 1 ), -+ $ MMIN( 1 ) -+ DOUBLE PRECISION DPDUM1( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -521,16 +523,16 @@ - END IF - IF( SELECT(K) ) M = M + 1 - 10 CONTINUE -- MMAX = M -- MMIN = M -+ MMAX( 1 ) = M -+ MMIN( 1 ) = M - IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX, 1, -1, -- $ -1, -1, -1, -1 ) -+ $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX( 1 ), 1, -+ $ -1, -1, -1, -1, -1 ) - IF( NPROCS.GT.1 ) -- $ CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN, 1, -1, -- $ -1, -1, -1, -1 ) -- IF( MMAX.GT.MMIN ) THEN -- M = MMAX -+ $ CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN( 1 ), 1, -+ $ -1, -1, -1, -1, -1 ) -+ IF( MMAX( 1 ).GT.MMIN( 1 ) ) THEN -+ M = MMAX( 1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, N, 1, IWORK, N, - $ -1, -1, -1, -1, -1 ) -diff --git a/SRC/pshseqr.f b/SRC/pshseqr.f -index 10eb24a..e8ecea9 100644 ---- a/SRC/pshseqr.f -+++ b/SRC/pshseqr.f -@@ -259,11 +259,12 @@ - $ HRSRC4, HCSRC4, LIWKOPT - LOGICAL INITZ, LQUERY, WANTT, WANTZ, PAIR, BORDER - REAL TMP1, TMP2, TMP3, TMP4, DUM1, DUM2, DUM3, -- $ DUM4, ELEM1, ELEM2, ELEM3, ELEM4, -+ $ DUM4, ELEM1, ELEM4, - $ CS, SN, ELEM5, TMP, LWKOPT - * .. - * .. Local Arrays .. - INTEGER DESCH2( DLEN_ ) -+ REAL ELEM2( 1 ), ELEM3( 1 ) - * .. - * .. External Functions .. - INTEGER PILAENVX, NUMROC, ICEIL -@@ -566,28 +567,28 @@ - IF( MYROW.EQ.HRSRC1 .AND. MYCOL.EQ.HCSRC1 ) THEN - ELEM1 = H((JLOC1-1)*LLDH+ILOC1) - IF( K.LT.N ) THEN -- ELEM3 = H((JLOC1-1)*LLDH+ILOC1+1) -+ ELEM3( 1 ) = H((JLOC1-1)*LLDH+ILOC1+1) - ELSE -- ELEM3 = ZERO -+ ELEM3( 1 ) = ZERO - END IF -- IF( ELEM3.NE.ZERO ) THEN -- ELEM2 = H((JLOC1)*LLDH+ILOC1) -+ IF( ELEM3( 1 ).NE.ZERO ) THEN -+ ELEM2( 1 ) = H((JLOC1)*LLDH+ILOC1) - ELEM4 = H((JLOC1)*LLDH+ILOC1+1) -- CALL SLANV2( ELEM1, ELEM2, ELEM3, ELEM4, -- $ WR( K ), WI( K ), WR( K+1 ), WI( K+1 ), -- $ SN, CS ) -+ CALL SLANV2( ELEM1, ELEM2( 1 ), ELEM3( 1 ), -+ $ ELEM4, WR( K ), WI( K ), WR( K+1 ), -+ $ WI( K+1 ), SN, CS ) - PAIR = .TRUE. - ELSE - IF( K.GT.1 ) THEN - TMP = H((JLOC1-2)*LLDH+ILOC1) - IF( TMP.NE.ZERO ) THEN - ELEM1 = H((JLOC1-2)*LLDH+ILOC1-1) -- ELEM2 = H((JLOC1-1)*LLDH+ILOC1-1) -- ELEM3 = H((JLOC1-2)*LLDH+ILOC1) -+ ELEM2( 1 ) = H((JLOC1-1)*LLDH+ILOC1-1) -+ ELEM3( 1 ) = H((JLOC1-2)*LLDH+ILOC1) - ELEM4 = H((JLOC1-1)*LLDH+ILOC1) -- CALL SLANV2( ELEM1, ELEM2, ELEM3, -- $ ELEM4, WR( K-1 ), WI( K-1 ), -- $ WR( K ), WI( K ), SN, CS ) -+ CALL SLANV2( ELEM1, ELEM2( 1 ), -+ $ ELEM3( 1 ), ELEM4, WR( K-1 ), -+ $ WI( K-1 ), WR( K ), WI( K ), SN, CS ) - ELSE - WR( K ) = ELEM1 - END IF -@@ -620,12 +621,12 @@ - CALL INFOG2L( K+1, K+1, DESCH, NPROW, NPCOL, MYROW, MYCOL, - $ ILOC4, JLOC4, HRSRC4, HCSRC4 ) - IF( MYROW.EQ.HRSRC2 .AND. MYCOL.EQ.HCSRC2 ) THEN -- ELEM2 = H((JLOC2-1)*LLDH+ILOC2) -+ ELEM2( 1 ) = H((JLOC2-1)*LLDH+ILOC2) - IF( HRSRC1.NE.HRSRC2 .OR. HCSRC1.NE.HCSRC2 ) - $ CALL SGESD2D( ICTXT, 1, 1, ELEM2, 1, HRSRC1, HCSRC1) - END IF - IF( MYROW.EQ.HRSRC3 .AND. MYCOL.EQ.HCSRC3 ) THEN -- ELEM3 = H((JLOC3-1)*LLDH+ILOC3) -+ ELEM3( 1 ) = H((JLOC3-1)*LLDH+ILOC3) - IF( HRSRC1.NE.HRSRC3 .OR. HCSRC1.NE.HCSRC3 ) - $ CALL SGESD2D( ICTXT, 1, 1, ELEM3, 1, HRSRC1, HCSRC1) - END IF -@@ -651,8 +652,9 @@ - ELEM5 = WORK(2) - IF( ELEM5.EQ.ZERO ) THEN - IF( WR( K ).EQ.ZERO .AND. WI( K ).EQ.ZERO ) THEN -- CALL SLANV2( ELEM1, ELEM2, ELEM3, ELEM4, WR( K ), -- $ WI( K ), WR( K+1 ), WI( K+1 ), SN, CS ) -+ CALL SLANV2( ELEM1, ELEM2( 1 ), ELEM3( 1 ), ELEM4, -+ $ WR( K ), WI( K ), WR( K+1 ), WI( K+1 ), SN, -+ $ CS ) - ELSEIF( WR( K+1 ).EQ.ZERO .AND. WI( K+1 ).EQ.ZERO ) - $ THEN - WR( K+1 ) = ELEM4 -diff --git a/SRC/pslacon.f b/SRC/pslacon.f -index 20d27ff..673bf1a 100644 ---- a/SRC/pslacon.f -+++ b/SRC/pslacon.f -@@ -160,10 +160,12 @@ - INTEGER I, ICTXT, IFLAG, IIVX, IMAXROW, IOFFVX, IROFF, - $ ITER, IVXCOL, IVXROW, J, JLAST, JJVX, JUMP, - $ K, MYCOL, MYROW, NP, NPCOL, NPROW -- REAL ALTSGN, ESTOLD, JLMAX, TEMP, XMAX -+ REAL ALTSGN, ESTOLD, JLMAX, XMAX - * .. - * .. Local Arrays .. - REAL WORK( 2 ) -+ REAL ESTWORK( 1 ) -+ REAL TEMP( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, IGSUM2D, INFOG2L, PSAMAX, -@@ -184,6 +186,7 @@ - * - * Get grid parameters. - * -+ ESTWORK( 1 ) = EST - ICTXT = DESCX( CTXT_ ) - CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL ) - * -@@ -215,21 +218,21 @@ - IF( N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN - V( IOFFVX ) = X( IOFFVX ) -- EST = ABS( V( IOFFVX ) ) -- CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 ) -+ ESTWORK( 1 ) = ABS( V( IOFFVX ) ) -+ CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 ) - ELSE -- CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1, -+ CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1, - $ IVXROW, MYCOL ) - END IF - * ... QUIT - GO TO 150 - END IF -- CALL PSASUM( N, EST, X, IX, JX, DESCX, 1 ) -+ CALL PSASUM( N, ESTWORK( 1 ), X, IX, JX, DESCX, 1 ) - IF( DESCX( M_ ).EQ.1 .AND. N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN -- CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 ) -+ CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 ) - ELSE -- CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1, -+ CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1, - $ IVXROW, MYCOL ) - END IF - END IF -@@ -281,13 +284,13 @@ - * - 70 CONTINUE - CALL SCOPY( NP, X( IOFFVX ), 1, V( IOFFVX ), 1 ) -- ESTOLD = EST -- CALL PSASUM( N, EST, V, IV, JV, DESCV, 1 ) -+ ESTOLD = ESTWORK( 1 ) -+ CALL PSASUM( N, ESTWORK( 1 ), V, IV, JV, DESCV, 1 ) - IF( DESCV( M_ ).EQ.1 .AND. N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN -- CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 ) -+ CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 ) - ELSE -- CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1, -+ CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1, - $ IVXROW, MYCOL ) - END IF - END IF -@@ -305,7 +308,7 @@ - * REPEATED SIGN VECTOR DETECTED, HENCE ALGORITHM HAS CONVERGED. - * ALONG WITH IT, TEST FOR CYCLING. - * -- IF( IFLAG.EQ.0 .OR. EST.LE.ESTOLD ) -+ IF( IFLAG.EQ.0 .OR. ESTWORK( 1 ).LE.ESTOLD ) - $ GO TO 120 - * - DO 100 I = IOFFVX, IOFFVX+NP-1 -@@ -361,7 +364,7 @@ - * X HAS BEEN OVERWRITTEN BY A*X - * - 140 CONTINUE -- CALL PSASUM( N, TEMP, X, IX, JX, DESCX, 1 ) -+ CALL PSASUM( N, TEMP( 1 ), X, IX, JX, DESCX, 1 ) - IF( DESCX( M_ ).EQ.1 .AND. N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN - CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, TEMP, 1 ) -@@ -370,15 +373,16 @@ - $ IVXROW, MYCOL ) - END IF - END IF -- TEMP = TWO*( TEMP / REAL( 3*N ) ) -- IF( TEMP.GT.EST ) THEN -+ TEMP( 1 ) = TWO*( TEMP( 1 ) / REAL( 3*N ) ) -+ IF( TEMP( 1 ).GT.ESTWORK( 1 ) ) THEN - CALL SCOPY( NP, X( IOFFVX ), 1, V( IOFFVX ), 1 ) -- EST = TEMP -+ ESTWORK( 1 ) = TEMP( 1 ) - END IF - * - 150 CONTINUE - KASE = 0 - * -+ EST = ESTWORK( 1 ) - RETURN - * - * End of PSLACON -diff --git a/SRC/pslarf.f b/SRC/pslarf.f -index c1d3a15..39de0ed 100644 ---- a/SRC/pslarf.f -+++ b/SRC/pslarf.f -@@ -241,7 +241,7 @@ - $ IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC, - $ LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW, - $ NQ, RDEST -- REAL TAULOC -+ REAL TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBSTRNV, -@@ -335,7 +335,7 @@ - * - CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -344,7 +344,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -362,8 +362,8 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL SGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -378,9 +378,9 @@ - * - IF( MYCOL.EQ.ICCOL ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -397,8 +397,8 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL SGER( MP, NQ, -TAULOC, V( IOFFV ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL SGER( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -420,9 +420,9 @@ - IPW = MP+1 - CALL SGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -440,7 +440,7 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL SGER( MP, NQ, -TAULOC, WORK, 1, -+ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * -@@ -470,7 +470,7 @@ - * - CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -479,7 +479,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -499,8 +499,8 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL SGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -515,18 +515,18 @@ - WORK(IPW) = TAU( JJV ) - CALL SGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MP+1 - CALL SGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -546,8 +546,8 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL SGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -576,9 +576,9 @@ - * - IF( MYROW.EQ.ICROW ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -596,7 +596,7 @@ - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFV.GT.0 .AND. IOFFC.GT.0 ) -- $ CALL SGER( MP, NQ, -TAULOC, WORK, 1, -+ $ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC ), LDC ) - END IF - * -@@ -619,9 +619,9 @@ - IPW = NQ+1 - CALL SGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -639,7 +639,7 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MP, NQ, -TAULOC, WORK( IPW ), 1, -+ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, - $ WORK, 1, C( IOFFC ), LDC ) - END IF - * -@@ -665,7 +665,7 @@ - * - CALL SGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -674,7 +674,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -692,8 +692,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1 -+ $ , WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -718,18 +718,18 @@ - WORK(IPW) = TAU( IIV ) - CALL SGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQ+1 - CALL SGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -748,8 +748,8 @@ - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFC.GT.0 ) -- $ CALL SGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ $ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -768,7 +768,7 @@ - * - CALL SGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -777,7 +777,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -795,8 +795,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, WORK, -+ $ 1, C( IOFFC ), LDC ) - END IF - * - END IF -diff --git a/SRC/pslarz.f b/SRC/pslarz.f -index aa70db7..8901530 100644 ---- a/SRC/pslarz.f -+++ b/SRC/pslarz.f -@@ -250,7 +250,7 @@ - $ IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2, - $ MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW, - $ NQC2, NQV, RDEST -- REAL TAULOC -+ REAL TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBSTRNV, -@@ -369,7 +369,7 @@ - * - CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -378,7 +378,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -401,9 +401,9 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL SAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL SAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL SGER( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL SGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -419,9 +419,9 @@ - * - IF( MYCOL.EQ.ICCOL2 ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -444,11 +444,11 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL SAXPY( NQC2, -TAULOC, WORK, -+ $ CALL SAXPY( NQC2, -TAULOC( 1 ), WORK, - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL SGER( MPV, NQC2, -TAULOC, V( IOFFV ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL SGER( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -470,9 +470,9 @@ - IPW = MPV+1 - CALL SGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -495,10 +495,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL SAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL SAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL SGER( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL SGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -529,7 +529,7 @@ - * - CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -538,7 +538,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -561,10 +561,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL SAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL SAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL SGER( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL SGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -579,18 +579,18 @@ - WORK( IPW ) = TAU( JJV ) - CALL SGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MPV+1 - CALL SGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -613,10 +613,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL SAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL SAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL SGER( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL SGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -645,9 +645,9 @@ - * - IF( MYROW.EQ.ICROW2 ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -668,13 +668,13 @@ - $ ICCOL2 ) - * - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL SAXPY( MPC2, -TAULOC, WORK, 1, -+ $ CALL SAXPY( MPC2, -TAULOC( 1 ), WORK, 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * - IF( MPC2.GT.0 .AND. NQV.GT.0 ) -- $ CALL SGER( MPC2, NQV, -TAULOC, WORK, 1, -+ $ CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC2 ), - $ LDC ) - END IF -@@ -698,9 +698,9 @@ - IPW = NQV+1 - CALL SGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -719,13 +719,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), - $ RDEST, ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL SAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -- $ C( IOFFC1 ), 1 ) -+ $ CALL SAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -750,7 +750,7 @@ - * - CALL SGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -759,7 +759,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -778,12 +778,12 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL SAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL SAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -+ CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, - $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -808,18 +808,18 @@ - WORK( IPW ) = TAU( IIV ) - CALL SGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQV+1 - CALL SGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -839,13 +839,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL SAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL SAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -864,7 +864,7 @@ - * - CALL SGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -873,7 +873,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -892,13 +892,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL SAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL SAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -diff --git a/SRC/pslawil.f b/SRC/pslawil.f -index e04c16b..671e08e 100644 ---- a/SRC/pslawil.f -+++ b/SRC/pslawil.f -@@ -120,10 +120,14 @@ - INTEGER CONTXT, DOWN, HBL, ICOL, IROW, JSRC, LDA, LEFT, - $ MODKM1, MYCOL, MYROW, NPCOL, NPROW, NUM, RIGHT, - $ RSRC, UP -- REAL H11, H12, H21, H22, H33S, H44S, S, V1, V2, V3 -+ REAL H22, H33S, H44S, S, V1, V2 - * .. - * .. Local Arrays .. - REAL BUF( 4 ) -+ REAL H11( 1 ) -+ REAL H12( 1 ) -+ REAL H21( 1 ) -+ REAL V3( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, SGERV2D, SGESD2D, INFOG2L -@@ -170,18 +174,18 @@ - IF( NPCOL.GT.1 ) THEN - CALL SGERV2D( CONTXT, 1, 1, V3, 1, MYROW, LEFT ) - ELSE -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - IF( NUM.GT.1 ) THEN - CALL SGERV2D( CONTXT, 4, 1, BUF, 4, UP, LEFT ) -- H11 = BUF( 1 ) -- H21 = BUF( 2 ) -- H12 = BUF( 3 ) -+ H11( 1 ) = BUF( 1 ) -+ H21( 1 ) = BUF( 2 ) -+ H12( 1 ) = BUF( 3 ) - H22 = BUF( 4 ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) - END IF - END IF -@@ -214,20 +218,20 @@ - IF( NUM.GT.1 ) THEN - CALL SGERV2D( CONTXT, 1, 1, H11, 1, UP, LEFT ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) - END IF - IF( NPROW.GT.1 ) THEN - CALL SGERV2D( CONTXT, 1, 1, H12, 1, UP, MYCOL ) - ELSE -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - END IF - IF( NPCOL.GT.1 ) THEN - CALL SGERV2D( CONTXT, 1, 1, H21, 1, MYROW, LEFT ) - ELSE -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) - END IF - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - END IF - IF( ( MYROW.NE.II ) .OR. ( MYCOL.NE.JJ ) ) -@@ -236,24 +240,24 @@ - IF( MODKM1.GT.1 ) THEN - CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, RSRC, JSRC ) -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - * -- H44S = H44 - H11 -- H33S = H33 - H11 -- V1 = ( H33S*H44S-H43H34 ) / H21 + H12 -- V2 = H22 - H11 - H33S - H44S -- S = ABS( V1 ) + ABS( V2 ) + ABS( V3 ) -+ H44S = H44 - H11( 1 ) -+ H33S = H33 - H11( 1 ) -+ V1 = ( H33S*H44S-H43H34 ) / H21( 1 ) + H12( 1 ) -+ V2 = H22 - H11( 1 ) - H33S - H44S -+ S = ABS( V1 ) + ABS( V2 ) + ABS( V3( 1 ) ) - V1 = V1 / S - V2 = V2 / S -- V3 = V3 / S -+ V3( 1 ) = V3( 1 ) / S - V( 1 ) = V1 - V( 2 ) = V2 -- V( 3 ) = V3 -+ V( 3 ) = V3( 1 ) - * - RETURN - * -diff --git a/SRC/psstebz.f b/SRC/psstebz.f -index a8a2496..7e588a9 100644 ---- a/SRC/psstebz.f -+++ b/SRC/psstebz.f -@@ -244,14 +244,14 @@ - $ ITMP2, J, JB, K, LAST, LEXTRA, LREQ, MYCOL, - $ MYROW, NALPHA, NBETA, NCMP, NEIGINT, NEXT, NGL, - $ NGLOB, NGU, NINT, NPCOL, NPROW, OFFSET, -- $ ONEDCONTEXT, P, PREV, REXTRA, RREQ, SELF, -- $ TORECV -+ $ ONEDCONTEXT, P, PREV, REXTRA, RREQ, SELF - REAL ALPHA, ATOLI, BETA, BNORM, DRECV, DSEND, GL, - $ GU, INITVL, INITVU, LSAVE, MID, PIVMIN, RELTOL, - $ SAFEMN, TMP1, TMP2, TNORM, ULP - * .. - * .. Local Arrays .. - INTEGER IDUM( 5, 2 ) -+ INTEGER TORECV( 1, 1 ) - * .. - * .. Executable Statements .. - * This is just to keep ftnchek happy -@@ -774,14 +774,14 @@ - ELSE - CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', 1, 1, TORECV, 1, 0, - $ I-1 ) -- IF( TORECV.NE.0 ) THEN -- CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, IWORK, -- $ TORECV, 0, I-1 ) -- CALL SGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, WORK, -- $ TORECV, 0, I-1 ) -- CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, -- $ IWORK( N+1 ), TORECV, 0, I-1 ) -- DO 120 J = 1, TORECV -+ IF( TORECV( 1, 1 ).NE.0 ) THEN -+ CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1, -+ $ IWORK, TORECV( 1, 1 ), 0, I-1 ) -+ CALL SGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1, -+ $ WORK, TORECV( 1, 1 ), 0, I-1 ) -+ CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1, -+ $ IWORK( N+1 ), TORECV( 1, 1 ), 0, I-1 ) -+ DO 120 J = 1, TORECV( 1, 1 ) - W( IWORK( J ) ) = WORK( J ) - IBLOCK( IWORK( J ) ) = IWORK( N+J ) - 120 CONTINUE -diff --git a/SRC/pstrord.f b/SRC/pstrord.f -index 3562242..5cdb549 100644 ---- a/SRC/pstrord.f -+++ b/SRC/pstrord.f -@@ -328,12 +328,13 @@ - $ EAST, WEST, ILOC4, SOUTH, NORTH, INDXS, - $ ITT, JTT, ILEN, DLEN, INDXE, TRSRC1, TCSRC1, - $ TRSRC2, TCSRC2, ILOS, DIR, TLIHI, TLILO, TLSEL, -- $ ROUND, LAST, WIN0S, WIN0E, WINE, MMAX, MMIN -+ $ ROUND, LAST, WIN0S, WIN0E, WINE - REAL ELEM, ELEM1, ELEM2, ELEM3, ELEM4, SN, CS, TMP, - $ ELEM5 - * .. - * .. Local Arrays .. -- INTEGER IBUFF( 8 ), IDUM1( 1 ), IDUM2( 1 ) -+ INTEGER IBUFF( 8 ), IDUM1( 1 ), IDUM2( 1 ), MMAX( 1 ), -+ $ MMIN( 1 ), INFODUM( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -483,16 +484,16 @@ - END IF - IF( SELECT(K).NE.0 ) M = M + 1 - 10 CONTINUE -- MMAX = M -- MMIN = M -+ MMAX( 1 ) = M -+ MMIN( 1 ) = M - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX, 1, -1, - $ -1, -1, -1, -1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN, 1, -1, - $ -1, -1, -1, -1 ) -- IF( MMAX.GT.MMIN ) THEN -- M = MMAX -+ IF( MMAX( 1 ).GT.MMIN( 1 ) ) THEN -+ M = MMAX( 1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, N, 1, SELECT, N, - $ -1, -1, -1, -1, -1 ) -@@ -520,9 +521,11 @@ - * - * Global maximum on info. - * -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -1, -1, -- $ -1, -1 ) -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, -1, -+ $ -1, -1, -1 ) -+ INFO = INFODUM( 1 ) -+ END IF - * - * Return if some argument is incorrect. - * -@@ -1576,9 +1579,11 @@ - * experienced a failure in the reordering. - * - MYIERR = IERR -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, IERR, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ IERR = INFODUM( 1 ) -+ END IF - * - IF( IERR.NE.0 ) THEN - * -@@ -1586,9 +1591,11 @@ - * to swap. - * - IF( MYIERR.NE.0 ) INFO = MAX(1,I+KKS-1) -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ INFO = INFODUM( 1 ) -+ END IF - GO TO 300 - END IF - * -@@ -3245,9 +3252,11 @@ - * experienced a failure in the reordering. - * - MYIERR = IERR -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, IERR, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ IERR = INFODUM( 1 ) -+ END IF - * - IF( IERR.NE.0 ) THEN - * -@@ -3255,9 +3264,11 @@ - * to swap. - * - IF( MYIERR.NE.0 ) INFO = MAX(1,I+KKS-1) -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ INFO = INFODUM( 1 ) -+ END IF - GO TO 300 - END IF - * -diff --git a/SRC/pstrsen.f b/SRC/pstrsen.f -index 6219bdb..1922e8f 100644 ---- a/SRC/pstrsen.f -+++ b/SRC/pstrsen.f -@@ -354,13 +354,15 @@ - LOGICAL LQUERY, WANTBH, WANTQ, WANTS, WANTSP - INTEGER ICOFFT12, ICTXT, IDUM1, IDUM2, IERR, ILOC1, - $ IPW1, ITER, ITT, JLOC1, JTT, K, LIWMIN, LLDT, -- $ LLDQ, LWMIN, MMAX, MMIN, MYROW, MYCOL, N1, N2, -+ $ LLDQ, LWMIN, MYROW, MYCOL, N1, N2, - $ NB, NOEXSY, NPCOL, NPROCS, NPROW, SPACE, - $ T12ROWS, T12COLS, TCOLS, TCSRC, TROWS, TRSRC, - $ WRK1, IWRK1, WRK2, IWRK2, WRK3, IWRK3 -- REAL DPDUM1, ELEM, EST, SCALE, RNORM -+ REAL ELEM, EST, SCALE, RNORM - * .. Local Arrays .. -- INTEGER DESCT12( DLEN_ ), MBNB2( 2 ) -+ INTEGER DESCT12( DLEN_ ), MBNB2( 2 ), MMAX( 1 ), -+ $ MMIN( 1 ), INFODUM( 1 ) -+ REAL DPDUM1( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -521,16 +523,16 @@ - END IF - IF( SELECT(K) ) M = M + 1 - 10 CONTINUE -- MMAX = M -- MMIN = M -+ MMAX( 1 ) = M -+ MMIN( 1 ) = M - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX, 1, -1, - $ -1, -1, -1, -1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN, 1, -1, - $ -1, -1, -1, -1 ) -- IF( MMAX.GT.MMIN ) THEN -- M = MMAX -+ IF( MMAX( 1 ).GT.MMIN( 1 ) ) THEN -+ M = MMAX( 1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, N, 1, IWORK, N, - $ -1, -1, -1, -1, -1 ) -@@ -602,9 +604,11 @@ c $ IERR ) - * - * Global maximum on info - * -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, -1, -1, - $ -1, -1 ) -+ INFO = INFODUM( 1 ) -+ END IF - * - * Return if some argument is incorrect - * -diff --git a/SRC/pzlarf.f b/SRC/pzlarf.f -index df65912..7bff287 100644 ---- a/SRC/pzlarf.f -+++ b/SRC/pzlarf.f -@@ -242,7 +242,7 @@ - $ IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC, - $ LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW, - $ NQ, RDEST -- COMPLEX*16 TAULOC -+ COMPLEX*16 TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBZTRNV, -@@ -336,7 +336,7 @@ - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -345,7 +345,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -363,8 +363,8 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -379,9 +379,9 @@ - * - IF( MYCOL.EQ.ICCOL ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -398,7 +398,7 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, V( IOFFV ), 1, -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1, - $ WORK, 1, C( IOFFC ), LDC ) - END IF - * -@@ -421,9 +421,9 @@ - IPW = MP+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -441,7 +441,7 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * -@@ -471,7 +471,7 @@ - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -480,7 +480,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -500,8 +500,8 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -516,18 +516,18 @@ - WORK(IPW) = TAU( JJV ) - CALL ZGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MP+1 - CALL ZGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -547,8 +547,8 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -577,9 +577,9 @@ - * - IF( MYROW.EQ.ICROW ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -597,7 +597,7 @@ - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFV.GT.0 .AND. IOFFC.GT.0 ) -- $ CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, -+ $ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC ), - $ LDC ) - END IF -@@ -621,9 +621,9 @@ - IPW = NQ+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -641,8 +641,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -667,7 +667,7 @@ - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -676,7 +676,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -694,8 +694,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -720,18 +720,18 @@ - WORK(IPW) = TAU( IIV ) - CALL ZGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQ+1 - CALL ZGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -750,8 +750,8 @@ - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFC.GT.0 ) -- $ CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ $ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -770,7 +770,7 @@ - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -779,7 +779,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -797,8 +797,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -diff --git a/SRC/pzlarfc.f b/SRC/pzlarfc.f -index eb469fc..ddd7ec6 100644 ---- a/SRC/pzlarfc.f -+++ b/SRC/pzlarfc.f -@@ -242,7 +242,7 @@ - $ IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC, - $ LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW, - $ NQ, RDEST -- COMPLEX*16 TAULOC -+ COMPLEX*16 TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBZTRNV, -@@ -336,17 +336,17 @@ - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAULOC, 1, IVROW, MYCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -364,8 +364,8 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -380,9 +380,9 @@ - * - IF( MYCOL.EQ.ICCOL ) THEN - * -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -399,7 +399,7 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, V( IOFFV ), 1, -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1, - $ WORK, 1, C( IOFFC ), LDC ) - END IF - * -@@ -422,9 +422,9 @@ - IPW = MP+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -442,7 +442,7 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * -@@ -472,17 +472,17 @@ - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC, - $ 1, IVROW, MYCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -500,8 +500,8 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), 1, -- $ C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -516,18 +516,18 @@ - WORK(IPW) = TAU( JJV ) - CALL ZGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * - ELSE - * - IPW = MP+1 - CALL ZGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -545,8 +545,8 @@ - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), 1, -- $ C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -575,9 +575,9 @@ - * - IF( MYROW.EQ.ICROW ) THEN - * -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -594,7 +594,7 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC ), LDC ) - END IF - * -@@ -617,9 +617,9 @@ - IPW = NQ+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -637,8 +637,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -663,17 +663,17 @@ - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, - $ 1, MYROW, IVCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -691,8 +691,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -716,18 +716,18 @@ - WORK(IPW) = TAU( IIV ) - CALL ZGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * - ELSE - * - IPW = NQ+1 - CALL ZGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -745,8 +745,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -765,17 +765,17 @@ - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, 1, - $ MYROW, IVCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -793,8 +793,8 @@ - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -diff --git a/SRC/pzlarz.f b/SRC/pzlarz.f -index fefc133..abf6288 100644 ---- a/SRC/pzlarz.f -+++ b/SRC/pzlarz.f -@@ -251,7 +251,7 @@ - $ IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2, - $ MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW, - $ NQC2, NQV, RDEST -- COMPLEX*16 TAULOC -+ COMPLEX*16 TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBZTRNV, -@@ -370,7 +370,7 @@ - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -379,7 +379,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -402,9 +402,9 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -420,9 +420,9 @@ - * - IF( MYCOL.EQ.ICCOL2 ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -445,11 +445,11 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK, -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK, - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, V( IOFFV ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -471,9 +471,9 @@ - IPW = MPV+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -496,10 +496,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -530,7 +530,7 @@ - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -539,7 +539,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -562,10 +562,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -580,18 +580,18 @@ - WORK( IPW ) = TAU( JJV ) - CALL ZGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MPV+1 - CALL ZGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -614,10 +614,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -646,9 +646,9 @@ - * - IF( MYROW.EQ.ICROW2 ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -669,13 +669,13 @@ - $ ICCOL2 ) - * - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK, 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK, 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * - IF( MPC2.GT.0 .AND. NQV.GT.0 ) -- $ CALL ZGERC( MPC2, NQV, -TAULOC, WORK, 1, -+ $ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC2 ), - $ LDC ) - END IF -@@ -699,9 +699,9 @@ - IPW = NQV+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -720,13 +720,14 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), - $ RDEST, ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -- $ C( IOFFC1 ), 1 ) -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), -+ $ WORK( IPW ), 1, WORK, 1, -+ $ C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -751,7 +752,7 @@ - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -760,7 +761,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -779,13 +780,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -809,18 +810,18 @@ - WORK( IPW ) = TAU( IIV ) - CALL ZGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQV+1 - CALL ZGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -840,13 +841,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -865,7 +866,7 @@ - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -874,7 +875,7 @@ - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -893,13 +894,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -diff --git a/SRC/pzlarzc.f b/SRC/pzlarzc.f -index 936caec..2c574ff 100644 ---- a/SRC/pzlarzc.f -+++ b/SRC/pzlarzc.f -@@ -251,7 +251,7 @@ - $ IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2, - $ MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW, - $ NQC2, NQV, RDEST -- COMPLEX*16 TAULOC -+ COMPLEX*16 TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBZTRNV, -@@ -370,17 +370,17 @@ - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAULOC, 1, IVROW, MYCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -403,9 +403,9 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -421,9 +421,9 @@ - * - IF( MYCOL.EQ.ICCOL2 ) THEN - * -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -446,11 +446,11 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK, -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK, - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, V( IOFFV ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -472,9 +472,9 @@ - IPW = MPV+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -497,10 +497,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -531,17 +531,17 @@ - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC, - $ 1, IVROW, MYCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -564,10 +564,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -582,18 +582,18 @@ - WORK( IPW ) = TAU( JJV ) - CALL ZGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * - ELSE - * - IPW = MPV+1 - CALL ZGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -616,10 +616,10 @@ - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -648,9 +648,9 @@ - * - IF( MYROW.EQ.ICROW2 ) THEN - * -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -671,12 +671,12 @@ - $ ICCOL2 ) - * - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK, 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK, 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK, 1, -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC2 ), LDC ) - END IF - * -@@ -699,9 +699,9 @@ - IPW = NQV+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -720,13 +720,14 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), - $ RDEST, ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -- $ C( IOFFC1 ), 1 ) -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), -+ $ WORK( IPW ), 1, WORK, 1, -+ $ C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -751,17 +752,17 @@ - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, - $ 1, MYROW, IVCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -780,13 +781,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -810,18 +811,18 @@ - WORK( IPW ) = TAU( IIV ) - CALL ZGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * - ELSE - * - IPW = NQV+1 - CALL ZGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -841,13 +842,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -866,17 +867,17 @@ - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, 1, - $ MYROW, IVCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -895,13 +896,13 @@ - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -diff --git a/SRC/pzlattrs.f b/SRC/pzlattrs.f -index 819e476..5a54209 100644 ---- a/SRC/pzlattrs.f -+++ b/SRC/pzlattrs.f -@@ -271,8 +271,9 @@ - $ JINC, JLAST, LDA, LDX, MB, MYCOL, MYROW, NB, - $ NPCOL, NPROW, RSRC - DOUBLE PRECISION BIGNUM, GROW, REC, SMLNUM, TJJ, TMAX, TSCAL, -- $ XBND, XJ, XMAX -+ $ XBND, XJ - COMPLEX*16 CSUMJ, TJJS, USCAL, XJTMP, ZDUM -+ DOUBLE PRECISION XMAX( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -391,11 +392,11 @@ - * Compute a bound on the computed solution vector to see if the - * Level 2 PBLAS routine PZTRSV can be used. - * -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - CALL PZAMAX( N, ZDUM, IMAX, X, IX, JX, DESCX, 1 ) -- XMAX = CABS2( ZDUM ) -+ XMAX( 1 ) = CABS2( ZDUM ) - CALL DGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, -1, -1 ) -- XBND = XMAX -+ XBND = XMAX( 1 ) - * - IF( NOTRAN ) THEN - * -@@ -590,16 +591,16 @@ - * - * Use a Level 1 PBLAS solve, scaling intermediate results. - * -- IF( XMAX.GT.BIGNUM*HALF ) THEN -+ IF( XMAX( 1 ).GT.BIGNUM*HALF ) THEN - * - * Scale X so that its components are less than or equal to - * BIGNUM in absolute value. - * -- SCALE = ( BIGNUM*HALF ) / XMAX -+ SCALE = ( BIGNUM*HALF ) / XMAX( 1 ) - CALL PZDSCAL( N, SCALE, X, IX, JX, DESCX, 1 ) -- XMAX = BIGNUM -+ XMAX( 1 ) = BIGNUM - ELSE -- XMAX = XMAX*TWO -+ XMAX( 1 ) = XMAX( 1 )*TWO - END IF - * - IF( NOTRAN ) THEN -@@ -651,7 +652,7 @@ - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * X( J ) = ZLADIV( X( J ), TJJS ) -@@ -682,7 +683,7 @@ - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - * X( J ) = ZLADIV( X( J ), TJJS ) - * XJ = CABS1( X( J ) ) -@@ -706,7 +707,7 @@ - XJTMP = CONE - XJ = ONE - SCALE = ZERO -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - END IF - 90 CONTINUE - * -@@ -715,7 +716,7 @@ - * - IF( XJ.GT.ONE ) THEN - REC = ONE / XJ -- IF( CNORM( J ).GT.( BIGNUM-XMAX )*REC ) THEN -+ IF( CNORM( J ).GT.( BIGNUM-XMAX( 1 ) )*REC ) THEN - * - * Scale x by 1/(2*abs(x(j))). - * -@@ -724,7 +725,7 @@ - XJTMP = XJTMP*REC - SCALE = SCALE*REC - END IF -- ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX ) ) THEN -+ ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX( 1 ) ) ) THEN - * - * Scale x by 1/2. - * -@@ -743,7 +744,7 @@ - CALL PZAXPY( J-1, ZDUM, A, IA, JA+J-1, DESCA, 1, X, - $ IX, JX, DESCX, 1 ) - CALL PZAMAX( J-1, ZDUM, IMAX, X, IX, JX, DESCX, 1 ) -- XMAX = CABS1( ZDUM ) -+ XMAX( 1 ) = CABS1( ZDUM ) - CALL DGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, - $ -1, -1 ) - END IF -@@ -757,7 +758,7 @@ - CALL PZAXPY( N-J, ZDUM, A, IA+J, JA+J-1, DESCA, 1, - $ X, IX+J, JX, DESCX, 1 ) - CALL PZAMAX( N-J, ZDUM, I, X, IX+J, JX, DESCX, 1 ) -- XMAX = CABS1( ZDUM ) -+ XMAX( 1 ) = CABS1( ZDUM ) - CALL DGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, - $ -1, -1 ) - END IF -@@ -785,7 +786,7 @@ - END IF - XJ = CABS1( XJTMP ) - USCAL = DCMPLX( TSCAL ) -- REC = ONE / MAX( XMAX, ONE ) -+ REC = ONE / MAX( XMAX( 1 ), ONE ) - IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN - * - * If x(j) could overflow, scale x by 1/(2*XMAX). -@@ -820,7 +821,7 @@ - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * -@@ -924,7 +925,7 @@ - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * X( J ) = ZLADIV( X( J ), TJJS ) -@@ -945,7 +946,7 @@ - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - * X( J ) = ZLADIV( X( J ), TJJS ) - XJTMP = ZLADIV( XJTMP, TJJS ) -@@ -966,7 +967,7 @@ - END IF - XJTMP = CONE - SCALE = ZERO -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - END IF - 110 CONTINUE - ELSE -@@ -981,7 +982,7 @@ - X( IROWX ) = XJTMP - END IF - END IF -- XMAX = MAX( XMAX, CABS1( XJTMP ) ) -+ XMAX( 1 ) = MAX( XMAX( 1 ), CABS1( XJTMP ) ) - 120 CONTINUE - * - ELSE -@@ -1004,7 +1005,7 @@ - END IF - XJ = CABS1( XJTMP ) - USCAL = TSCAL -- REC = ONE / MAX( XMAX, ONE ) -+ REC = ONE / MAX( XMAX( 1 ), ONE ) - IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN - * - * If x(j) could overflow, scale x by 1/(2*XMAX). -@@ -1039,7 +1040,7 @@ - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * -@@ -1145,7 +1146,7 @@ - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * X( J ) = ZLADIV( X( J ), TJJS ) -@@ -1164,7 +1165,7 @@ - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - * X( J ) = ZLADIV( X( J ), TJJS ) - XJTMP = ZLADIV( XJTMP, TJJS ) -@@ -1181,7 +1182,7 @@ - $ X( IROWX ) = CONE - XJTMP = CONE - SCALE = ZERO -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - END IF - 130 CONTINUE - ELSE -@@ -1194,7 +1195,7 @@ - IF( ( MYROW.EQ.ITMP1X ) .AND. ( MYCOL.EQ.ITMP2X ) ) - $ X( IROWX ) = XJTMP - END IF -- XMAX = MAX( XMAX, CABS1( XJTMP ) ) -+ XMAX( 1 ) = MAX( XMAX( 1 ), CABS1( XJTMP ) ) - 140 CONTINUE - END IF - SCALE = SCALE / TSCAL -diff --git a/SRC/pzlawil.f b/SRC/pzlawil.f -index e89a9a3..7e502ef 100644 ---- a/SRC/pzlawil.f -+++ b/SRC/pzlawil.f -@@ -124,11 +124,10 @@ - $ MODKM1, MYCOL, MYROW, NPCOL, NPROW, NUM, RIGHT, - $ RSRC, UP - DOUBLE PRECISION S -- COMPLEX*16 CDUM, H11, H12, H21, H22, H33S, H44S, V1, V2, -- $ V3 -+ COMPLEX*16 CDUM, H22, H33S, H44S, V1, V2 - * .. - * .. Local Arrays .. -- COMPLEX*16 BUF( 4 ) -+ COMPLEX*16 BUF( 4 ), H11( 1 ), H12( 1 ), H21( 1 ), V3( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, ZGERV2D, ZGESD2D -@@ -181,18 +180,18 @@ - IF( NPCOL.GT.1 ) THEN - CALL ZGERV2D( CONTXT, 1, 1, V3, 1, MYROW, LEFT ) - ELSE -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - IF( NUM.GT.1 ) THEN - CALL ZGERV2D( CONTXT, 4, 1, BUF, 4, UP, LEFT ) -- H11 = BUF( 1 ) -- H21 = BUF( 2 ) -- H12 = BUF( 3 ) -+ H11( 1 ) = BUF( 1 ) -+ H21( 1 ) = BUF( 2 ) -+ H12( 1 ) = BUF( 3 ) - H22 = BUF( 4 ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) - END IF - END IF -@@ -225,20 +224,20 @@ - IF( NUM.GT.1 ) THEN - CALL ZGERV2D( CONTXT, 1, 1, H11, 1, UP, LEFT ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) - END IF - IF( NPROW.GT.1 ) THEN - CALL ZGERV2D( CONTXT, 1, 1, H12, 1, UP, MYCOL ) - ELSE -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - END IF - IF( NPCOL.GT.1 ) THEN - CALL ZGERV2D( CONTXT, 1, 1, H21, 1, MYROW, LEFT ) - ELSE -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) - END IF - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - END IF - IF( ( MYROW.NE.II ) .OR. ( MYCOL.NE.JJ ) ) -@@ -247,24 +246,24 @@ - IF( MODKM1.GT.1 ) THEN - CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, RSRC, JSRC ) -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - * -- H44S = H44 - H11 -- H33S = H33 - H11 -- V1 = ( H33S*H44S-H43H34 ) / H21 + H12 -- V2 = H22 - H11 - H33S - H44S -- S = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 ) -+ H44S = H44 - H11( 1 ) -+ H33S = H33 - H11( 1 ) -+ V1 = ( H33S*H44S-H43H34 ) / H21( 1 ) + H12( 1 ) -+ V2 = H22 - H11( 1 ) - H33S - H44S -+ S = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3( 1 ) ) - V1 = V1 / S - V2 = V2 / S -- V3 = V3 / S -+ V3( 1 ) = V3( 1 ) / S - V( 1 ) = V1 - V( 2 ) = V2 -- V( 3 ) = V3 -+ V( 3 ) = V3( 1 ) - * - RETURN - * -diff --git a/SRC/pztrevc.f b/SRC/pztrevc.f -index 0536475..3b27286 100644 ---- a/SRC/pztrevc.f -+++ b/SRC/pztrevc.f -@@ -218,11 +218,12 @@ - $ ITMP2, J, K, KI, LDT, LDVL, LDVR, LDW, MB, - $ MYCOL, MYROW, NB, NPCOL, NPROW, RSRC - REAL SELF -- DOUBLE PRECISION OVFL, REMAXD, SCALE, SMIN, SMLNUM, ULP, UNFL -+ DOUBLE PRECISION OVFL, REMAXD, SCALE, SMLNUM, ULP, UNFL - COMPLEX*16 CDUM, REMAXC, SHIFT - * .. - * .. Local Arrays .. - INTEGER DESCW( DLEN_ ) -+ DOUBLE PRECISION SMIN( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -355,13 +356,13 @@ - $ GO TO 70 - END IF - * -- SMIN = ZERO -+ SMIN( 1 ) = ZERO - SHIFT = CZERO - CALL INFOG2L( KI, KI, DESCT, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, ITMP1, ITMP2 ) - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - SHIFT = T( ( ICOL-1 )*LDT+IROW ) -- SMIN = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) -+ SMIN( 1 ) = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) - END IF - CALL DGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SMIN, 1, -1, -1 ) - CALL ZGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SHIFT, 1, -1, -1 ) -@@ -396,8 +397,9 @@ - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - T( ( ICOL-1 )*LDT+IROW ) = T( ( ICOL-1 )*LDT+IROW ) - - $ SHIFT -- IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN ) THEN -- T( ( ICOL-1 )*LDT+IROW ) = DCMPLX( SMIN ) -+ IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN( 1 ) ) -+ $ THEN -+ T( ( ICOL-1 )*LDT+IROW ) = DCMPLX( SMIN( 1 ) ) - END IF - END IF - 50 CONTINUE -@@ -467,13 +469,13 @@ - $ GO TO 110 - END IF - * -- SMIN = ZERO -+ SMIN( 1 ) = ZERO - SHIFT = CZERO - CALL INFOG2L( KI, KI, DESCT, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, ITMP1, ITMP2 ) - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - SHIFT = T( ( ICOL-1 )*LDT+IROW ) -- SMIN = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) -+ SMIN( 1 ) = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) - END IF - CALL DGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SMIN, 1, -1, -1 ) - CALL ZGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SHIFT, 1, -1, -1 ) -@@ -507,8 +509,8 @@ - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - T( ( ICOL-1 )*LDT+IROW ) = T( ( ICOL-1 )*LDT+IROW ) - - $ SHIFT -- IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN ) -- $ T( ( ICOL-1 )*LDT+IROW ) = DCMPLX( SMIN ) -+ IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN( 1 ) ) -+ $ T( ( ICOL-1 )*LDT+IROW ) = DCMPLX( SMIN( 1 ) ) - END IF - 90 CONTINUE - * -diff --git a/TESTING/EIG/CMakeLists.txt b/TESTING/EIG/CMakeLists.txt -index 97c7036..19a1f34 100644 ---- a/TESTING/EIG/CMakeLists.txt -+++ b/TESTING/EIG/CMakeLists.txt -@@ -97,3 +97,6 @@ target_link_libraries(xzheevr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) - target_link_libraries(xshseqr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) - target_link_libraries(xdhseqr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) - -+if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) -+ set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" ) # local to this directory -+endif() -diff --git a/TESTING/LIN/CMakeLists.txt b/TESTING/LIN/CMakeLists.txt -index 55a53e9..65f169b 100644 ---- a/TESTING/LIN/CMakeLists.txt -+++ b/TESTING/LIN/CMakeLists.txt -@@ -110,3 +110,7 @@ target_link_libraries(xsls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) - target_link_libraries(xdls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) - target_link_libraries(xcls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) - target_link_libraries(xzls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) -+ -+if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) -+ set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" ) # local to this directory -+endif()