Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a3bb61eefb |
+7
-4
@@ -11,15 +11,18 @@ skip_commits:
|
||||
# Add [av skip] to commit messages
|
||||
message: /\[av skip\]/
|
||||
|
||||
cache:
|
||||
- '%APPVEYOR_BUILD_FOLDER%\build'
|
||||
|
||||
environment:
|
||||
global:
|
||||
CONDA_INSTALL_LOCN: C:\\Miniconda37-x64
|
||||
CTEST_OUTPUT_ON_FAILURE: 1
|
||||
CONDA_INSTALL_LOCN: C:\\Miniconda36-x64
|
||||
|
||||
install:
|
||||
- call %CONDA_INSTALL_LOCN%\Scripts\activate.bat
|
||||
# - conda config --set auto_update_conda false
|
||||
- conda install -c conda-forge --yes --quiet flang=11.0.1 jom
|
||||
- conda config --set auto_update_conda false
|
||||
- conda config --add channels conda-forge --force
|
||||
- conda install --yes --quiet flang jom
|
||||
- call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
|
||||
- set "LIB=%CONDA_INSTALL_LOCN%\Library\lib;%LIB%"
|
||||
- set "CPATH=%CONDA_INSTALL_LOCN%\Library\include;%CPATH%"
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Security updates are applied only to the latest release.
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
If you have discovered a security vulnerability in this project, please report it privately. **Do not disclose it as a public issue.** This gives us time to work with you to fix the issue before public exposure, reducing the chance that the exploit will be used before a patch is released.
|
||||
|
||||
Please disclose it at [security advisory](https://github.com/Reference-LAPACK/lapack/security/advisories/new).
|
||||
|
||||
This project is maintained by a team of volunteers on a reasonable-effort basis. As such, please give us at least 90 days to work on a fix before public exposure.
|
||||
+28
-113
@@ -4,7 +4,7 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- try-github-actions-for-windows
|
||||
- try-github-actions
|
||||
paths:
|
||||
- .github/workflows/cmake.yml
|
||||
- '**CMakeLists.txt'
|
||||
@@ -33,9 +33,6 @@ on:
|
||||
- '!**Makefile'
|
||||
- '!**md'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
CFLAGS: "-Wall -pedantic"
|
||||
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
|
||||
@@ -62,38 +59,35 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
os: [ macos-latest, ubuntu-latest, windows-latest ]
|
||||
os: [ macos-latest, ubuntu-latest ]
|
||||
fflags: [
|
||||
"-Wall -Wno-unused-dummy-argument -Wno-unused-variable -Wno-unused-label -Werror=conversion -fimplicit-none -frecursive -fcheck=all",
|
||||
"-Wall -Wno-unused-dummy-argument -Wno-unused-variable -Wno-unused-label -Werror=conversion -fimplicit-none -frecursive -fcheck=all -fopenmp" ]
|
||||
"-fimplicit-none -frecursive -fcheck=all",
|
||||
"-fimplicit-none -frecursive -fcheck=all -fopenmp" ]
|
||||
|
||||
steps:
|
||||
|
||||
- name: Checkout LAPACK
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
|
||||
- name: Install ninja-build tool
|
||||
uses: seanmiddleditch/gha-setup-ninja@16b940825621068d98711680b6c3ff92201f8fc0 # v3
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Use GCC-11 on MacOS
|
||||
if: ${{ matrix.os == 'macos-latest' }}
|
||||
run: >
|
||||
cmake -B build -G Ninja
|
||||
cmake -B build
|
||||
-D CMAKE_C_COMPILER="gcc-11"
|
||||
-D CMAKE_Fortran_COMPILER="gfortran-11"
|
||||
-D USE_FLAT_NAMESPACE:BOOL=ON
|
||||
|
||||
- name: Special flags for Windows
|
||||
if: ${{ matrix.os == 'windows-latest' }}
|
||||
run: >
|
||||
cmake -B build -G Ninja
|
||||
-D CMAKE_EXE_LINKER_FLAGS="-Wl,--stack=2097152"
|
||||
# - name: Use Unix Makefiles on Windows
|
||||
# if: ${{ matrix.os == 'windows-latest' }}
|
||||
# run: >
|
||||
# cmake -B build
|
||||
# -G "Unix Makefiles"
|
||||
# -D CMAKE_C_FLAGS="${{env.CFLAGS}} -Wl,--stack=1000000000"
|
||||
|
||||
- name: Configure CMake
|
||||
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
|
||||
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
|
||||
run: >
|
||||
cmake -B build -G Ninja
|
||||
cmake -B build
|
||||
-D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
|
||||
-D CMAKE_INSTALL_PREFIX=${{github.workspace}}/lapack_install
|
||||
-D CBLAS:BOOL=ON
|
||||
@@ -103,19 +97,27 @@ jobs:
|
||||
-D BUILD_SHARED_LIBS:BOOL=ON
|
||||
|
||||
- name: Build
|
||||
working-directory: ${{github.workspace}}/build
|
||||
# Execute tests defined by the CMake configuration.
|
||||
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
|
||||
run: cmake --build build --config ${{env.BUILD_TYPE}}
|
||||
run: |
|
||||
ctest -D ExperimentalStart
|
||||
ctest -D ExperimentalConfigure
|
||||
ctest -D ExperimentalBuild -j2
|
||||
|
||||
- name: Test with OpenMP
|
||||
working-directory: ${{github.workspace}}/build
|
||||
if: ${{ contains( matrix.fflags, 'openmp' ) && (matrix.os != 'windows-latest') }}
|
||||
run: ctest -C ${{env.BUILD_TYPE}} --schedule-random -j1 --output-on-failure --timeout 100
|
||||
if: ${{ contains( matrix.fflags, 'openmp' ) }}
|
||||
run: |
|
||||
ctest -D ExperimentalTest --schedule-random -j1 --output-on-failure --timeout 100
|
||||
ctest -D ExperimentalSubmit
|
||||
|
||||
- name: Test
|
||||
working-directory: ${{github.workspace}}/build
|
||||
if: ${{ !contains( matrix.fflags, 'openmp' ) && (matrix.os != 'windows-latest') }}
|
||||
run: ctest -C ${{env.BUILD_TYPE}} --schedule-random -j2 --output-on-failure --timeout 100
|
||||
if: ${{ !contains( matrix.fflags, 'openmp' ) }}
|
||||
run: |
|
||||
ctest -D ExperimentalTest --schedule-random -j2 --output-on-failure --timeout 100
|
||||
ctest -D ExperimentalSubmit
|
||||
|
||||
- name: Install
|
||||
run: cmake --build build --target install -j2
|
||||
@@ -128,16 +130,13 @@ jobs:
|
||||
steps:
|
||||
|
||||
- name: Checkout LAPACK
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
|
||||
- name: Install ninja-build tool
|
||||
uses: seanmiddleditch/gha-setup-ninja@16b940825621068d98711680b6c3ff92201f8fc0 # v3
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Configure CMake
|
||||
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
|
||||
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
|
||||
run: >
|
||||
cmake -B build -G Ninja
|
||||
cmake -B build
|
||||
-D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
|
||||
-D CMAKE_INSTALL_PREFIX=${{github.workspace}}/lapack_install
|
||||
-D CBLAS:BOOL=ON
|
||||
@@ -154,87 +153,3 @@ jobs:
|
||||
echo "Coverage"
|
||||
cmake --build build --target coverage
|
||||
bash <(curl -s https://codecov.io/bash) -X gcov
|
||||
|
||||
test-install-cblas-lapacke-without-fortran-compiler:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout LAPACK
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
|
||||
- name: Install ninja-build tool
|
||||
uses: seanmiddleditch/gha-setup-ninja@16b940825621068d98711680b6c3ff92201f8fc0 # v3
|
||||
|
||||
- name: Install basics
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y cmake liblapack-dev libblas-dev
|
||||
sudo apt purge gfortran
|
||||
|
||||
- name: Configure CMake
|
||||
run: >
|
||||
cmake -B build -G Ninja
|
||||
-D CMAKE_BUILD_TYPE=Release
|
||||
-D CMAKE_INSTALL_PREFIX=${{github.workspace}}/lapack_install
|
||||
-D CBLAS:BOOL=ON
|
||||
-D LAPACKE:BOOL=ON
|
||||
-D USE_OPTIMIZED_BLAS:BOOL=ON
|
||||
-D USE_OPTIMIZED_LAPACK:BOOL=ON
|
||||
-D BUILD_TESTING:BOOL=OFF
|
||||
-D LAPACKE_WITH_TMG:BOOL=OFF
|
||||
-D BUILD_SHARED_LIBS:BOOL=ON
|
||||
|
||||
- name: Install
|
||||
run: cmake --build build --target install -j2
|
||||
|
||||
memory-check:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
BUILD_TYPE: Debug
|
||||
|
||||
steps:
|
||||
|
||||
- name: Checkout LAPACK
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
|
||||
- name: Install ninja-build tool
|
||||
uses: seanmiddleditch/gha-setup-ninja@16b940825621068d98711680b6c3ff92201f8fc0 # v3
|
||||
|
||||
- name: Install APT packages
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y cmake valgrind gfortran
|
||||
|
||||
- name: Configure CMake
|
||||
run: >
|
||||
cmake -B build -G Ninja
|
||||
-D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
|
||||
-D CBLAS:BOOL=ON
|
||||
-D LAPACKE:BOOL=ON
|
||||
-D BUILD_TESTING:BOOL=ON
|
||||
-D LAPACKE_WITH_TMG:BOOL=ON
|
||||
-D BUILD_SHARED_LIBS:BOOL=ON
|
||||
-D LAPACK_TESTING_USE_PYTHON:BOOL=OFF
|
||||
|
||||
- name: Build
|
||||
run: cmake --build build --config ${{env.BUILD_TYPE}}
|
||||
|
||||
- name: Test
|
||||
working-directory: ${{github.workspace}}/build
|
||||
run: |
|
||||
ctest -C ${{env.BUILD_TYPE}} --schedule-random -j2 -T memcheck > memcheck.out
|
||||
cat memcheck.out
|
||||
if tail -n 1 memcheck.out | grep -q "Memory checking results:"; then
|
||||
exit 0
|
||||
else
|
||||
for f in Testing/Temporary/MemoryChecker.*.log; do
|
||||
if tail -n 1 $f | grep -q "ERROR SUMMARY: 0 errors"; then
|
||||
tail -n 1 $f
|
||||
continue
|
||||
else
|
||||
echo "Memory check failed in $f"
|
||||
cat $f
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
@@ -31,19 +31,9 @@ on:
|
||||
- '!**CMakeLists.txt'
|
||||
- '!**md'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
CC: "gcc"
|
||||
FC: "gfortran"
|
||||
CFLAGS: "-O3 -flto -Wall -pedantic-errors"
|
||||
FFLAGS: "-O2 -flto -Wall -Werror=conversion -pedantic -fimplicit-none -frecursive -fopenmp -fcheck=all"
|
||||
FFLAGS_NOOPT: "-O0 -flto -Wall -fimplicit-none -frecursive -fopenmp -fcheck=all"
|
||||
LDFLAGS: ""
|
||||
AR: "ar"
|
||||
ARFLAGS: "cr"
|
||||
RANLIB: "ranlib"
|
||||
CFLAGS: "-Wall -pedantic"
|
||||
FFLAGS: "-fimplicit-none -frecursive -fopenmp -fcheck=all"
|
||||
|
||||
defaults:
|
||||
run:
|
||||
@@ -55,20 +45,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout LAPACK
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
- name: Set configurations
|
||||
run: |
|
||||
echo "SHELL = /bin/sh" >> make.inc
|
||||
echo "FFLAGS_DRV = ${{env.FFLAGS}}" >> make.inc
|
||||
echo "TIMER = INT_ETIME" >> make.inc
|
||||
echo "BLASLIB = ${{github.workspace}}/librefblas.a" >> make.inc
|
||||
echo "CBLASLIB = ${{github.workspace}}/libcblas.a" >> make.inc
|
||||
echo "LAPACKLIB = ${{github.workspace}}/liblapack.a" >> make.inc
|
||||
echo "TMGLIB = ${{github.workspace}}/libtmglib.a" >> make.inc
|
||||
echo "LAPACKELIB = ${{github.workspace}}/liblapacke.a" >> make.inc
|
||||
echo "DOCSDIR = ${{github.workspace}}/DOCS" >> make.inc
|
||||
uses: actions/checkout@v2
|
||||
- name: Install
|
||||
run: |
|
||||
cp make.inc.example make.inc
|
||||
make -s -j2 all
|
||||
make -j2 lapack_install
|
||||
|
||||
@@ -76,23 +56,13 @@ jobs:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: Checkout LAPACK
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
- name: Set configurations
|
||||
run: |
|
||||
echo "SHELL = /bin/sh" >> make.inc
|
||||
echo "FFLAGS_DRV = ${{env.FFLAGS}}" >> make.inc
|
||||
echo "TIMER = INT_ETIME" >> make.inc
|
||||
echo "BLASLIB = ${{github.workspace}}/librefblas.a" >> make.inc
|
||||
echo "CBLASLIB = ${{github.workspace}}/libcblas.a" >> make.inc
|
||||
echo "LAPACKLIB = ${{github.workspace}}/liblapack.a" >> make.inc
|
||||
echo "TMGLIB = ${{github.workspace}}/libtmglib.a" >> make.inc
|
||||
echo "LAPACKELIB = ${{github.workspace}}/liblapacke.a" >> make.inc
|
||||
echo "DOCSDIR = ${{github.workspace}}/DOCS" >> make.inc
|
||||
uses: actions/checkout@v2
|
||||
- name: Alias for GCC compilers
|
||||
run: |
|
||||
sudo ln -s $(which gcc-11) /usr/local/bin/gcc
|
||||
sudo ln -s $(which gfortran-11) /usr/local/bin/gfortran
|
||||
- name: Install
|
||||
run: |
|
||||
cp make.inc.example make.inc
|
||||
make -s -j2 all
|
||||
make -j2 lapack_install
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
# This workflow uses actions that are not certified by GitHub. They are provided
|
||||
# by a third-party and are governed by separate terms of service, privacy
|
||||
# policy, and support documentation.
|
||||
|
||||
name: Scorecard supply-chain security
|
||||
on:
|
||||
# For Branch-Protection check. Only the default branch is supported. See
|
||||
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
|
||||
branch_protection_rule:
|
||||
# To guarantee Maintained check is occasionally updated. See
|
||||
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
|
||||
schedule:
|
||||
- cron: '40 17 * * 2'
|
||||
push:
|
||||
branches: [ "master" ]
|
||||
|
||||
# Declare default permissions as read only.
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
analysis:
|
||||
name: Scorecard analysis
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
# Needed to upload the results to code-scanning dashboard.
|
||||
security-events: write
|
||||
# Needed to publish results and get a badge (see publish_results below).
|
||||
id-token: write
|
||||
# Uncomment the permissions below if installing in a private repository.
|
||||
# contents: read
|
||||
# actions: read
|
||||
|
||||
steps:
|
||||
- name: "Checkout code"
|
||||
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: "Run analysis"
|
||||
uses: ossf/scorecard-action@08b4669551908b1024bb425080c797723083c031 # v2.2.0
|
||||
with:
|
||||
results_file: results.sarif
|
||||
results_format: sarif
|
||||
# (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
|
||||
# - you want to enable the Branch-Protection check on a *public* repository, or
|
||||
# - you are installing Scorecard on a *private* repository
|
||||
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat.
|
||||
# repo_token: ${{ secrets.SCORECARD_TOKEN }}
|
||||
|
||||
# Public repositories:
|
||||
# - Publish results to OpenSSF REST API for easy access by consumers
|
||||
# - Allows the repository to include the Scorecard badge.
|
||||
# - See https://github.com/ossf/scorecard-action#publishing-results.
|
||||
# For private repositories:
|
||||
# - `publish_results` will always be set to `false`, regardless
|
||||
# of the value entered here.
|
||||
publish_results: true
|
||||
|
||||
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
||||
# format to the repository Actions tab.
|
||||
- name: "Upload artifact"
|
||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
||||
with:
|
||||
name: SARIF file
|
||||
path: results.sarif
|
||||
retention-days: 5
|
||||
|
||||
# Upload the results to GitHub's code scanning dashboard.
|
||||
- name: "Upload to code-scanning"
|
||||
uses: github/codeql-action/upload-sarif@f9a7c6738f28efb36e31d49c53a201a9c5d6a476 # v2.14.2
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
@@ -25,10 +25,8 @@ CBLAS/examples/cblas_ex2
|
||||
# LAPACK testing
|
||||
TESTING/LIN/xlintst*
|
||||
TESTING/EIG/xeigtst*
|
||||
TESTING/EIG/xdmd*
|
||||
TESTING/*.out
|
||||
TESTING/*.txt
|
||||
!TESTING/CMakeLists.txt
|
||||
TESTING/x*
|
||||
|
||||
# LAPACKE example
|
||||
@@ -43,6 +41,3 @@ build*
|
||||
DOCS/man
|
||||
DOCS/explore-html
|
||||
output_err
|
||||
|
||||
# Editor config files
|
||||
.vscode/
|
||||
@@ -1,9 +1,3 @@
|
||||
enable_language(Fortran)
|
||||
|
||||
# Check for any necessary platform specific compiler flags
|
||||
include(CheckLAPACKCompilerFlags)
|
||||
CheckLAPACKCompilerFlags()
|
||||
|
||||
add_subdirectory(SRC)
|
||||
if(BUILD_TESTING)
|
||||
add_subdirectory(TESTING)
|
||||
|
||||
+4
-58
@@ -38,22 +38,12 @@ set(CBLAS1 scabs1.f scasum.f scnrm2.f90 icamax.f caxpy.f ccopy.f
|
||||
set(DBLAS1 idamax.f dasum.f daxpy.f dcopy.f ddot.f dnrm2.f90
|
||||
drot.f drotg.f90 dscal.f dsdot.f dswap.f drotmg.f drotm.f)
|
||||
|
||||
set(DB1AUX sscal.f isamax.f)
|
||||
|
||||
set(ZBLAS1 dcabs1.f dzasum.f dznrm2.f90 izamax.f zaxpy.f zcopy.f
|
||||
zdotc.f zdotu.f zdscal.f zrotg.f90 zscal.f zswap.f zdrot.f)
|
||||
|
||||
set(CB1AUX
|
||||
isamax.f idamax.f
|
||||
sasum.f saxpy.f scopy.f sdot.f sgemm.f sgemv.f snrm2.f90 srot.f sscal.f
|
||||
sswap.f)
|
||||
set(CB1AUX isamax.f sasum.f saxpy.f scopy.f snrm2.f90 sscal.f)
|
||||
|
||||
set(ZB1AUX
|
||||
icamax.f idamax.f
|
||||
cgemm.f cherk.f cscal.f ctrsm.f
|
||||
dasum.f daxpy.f dcopy.f ddot.f dgemm.f dgemv.f dnrm2.f90 drot.f dscal.f
|
||||
dswap.f
|
||||
scabs1.f)
|
||||
set(ZB1AUX idamax.f dasum.f daxpy.f dcopy.f dnrm2.f90 dscal.f)
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
# Auxiliary routines needed by both the Level 2 and Level 3 BLAS
|
||||
@@ -98,8 +88,7 @@ if(BUILD_SINGLE)
|
||||
list(APPEND SOURCES ${SBLAS1} ${ALLBLAS} ${SBLAS2} ${SBLAS3})
|
||||
endif()
|
||||
if(BUILD_DOUBLE)
|
||||
list(APPEND SOURCES
|
||||
${DBLAS1} ${DB1AUX} ${ALLBLAS} ${DBLAS2} ${DBLAS3} ${SBLAS3})
|
||||
list(APPEND SOURCES ${DBLAS1} ${ALLBLAS} ${DBLAS2} ${DBLAS3})
|
||||
endif()
|
||||
if(BUILD_COMPLEX)
|
||||
list(APPEND SOURCES ${CBLAS1} ${CB1AUX} ${ALLBLAS} ${CBLAS2} ${CBLAS3})
|
||||
@@ -109,53 +98,10 @@ if(BUILD_COMPLEX16)
|
||||
endif()
|
||||
list(REMOVE_DUPLICATES SOURCES)
|
||||
|
||||
add_library(${BLASLIB}_obj OBJECT ${SOURCES})
|
||||
set_target_properties(${BLASLIB}_obj PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
if(BUILD_INDEX64_EXT_API)
|
||||
set(SOURCES_64_F)
|
||||
# Copy files so we can set source property specific to /${BLASLIB}_64_obj target
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${BLASLIB}_64_obj)
|
||||
file(COPY ${SOURCES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${BLASLIB}_64_obj)
|
||||
file(GLOB SOURCES_64_F ${CMAKE_CURRENT_BINARY_DIR}/${BLASLIB}_64_obj/*.f*)
|
||||
add_library(${BLASLIB}_64_obj OBJECT ${SOURCES_64_F})
|
||||
target_compile_options(${BLASLIB}_64_obj PRIVATE ${FOPT_ILP64})
|
||||
set_target_properties(${BLASLIB}_64_obj PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
#Add _64 suffix to all Fortran functions via macros
|
||||
foreach(F IN LISTS SOURCES_64_F)
|
||||
if(CMAKE_Fortran_COMPILER_ID STREQUAL "NAG")
|
||||
set_source_files_properties(${F} PROPERTIES COMPILE_FLAGS "-fpp")
|
||||
else()
|
||||
set_source_files_properties(${F} PROPERTIES COMPILE_FLAGS "-cpp")
|
||||
endif()
|
||||
file(STRINGS ${F} ${F}.lst)
|
||||
list(FILTER ${F}.lst INCLUDE REGEX "subroutine|SUBROUTINE|external|EXTERNAL|function|FUNCTION")
|
||||
list(FILTER ${F}.lst EXCLUDE REGEX "^!.*")
|
||||
list(FILTER ${F}.lst EXCLUDE REGEX "^[*].*")
|
||||
list(FILTER ${F}.lst EXCLUDE REGEX "end|END")
|
||||
foreach(FUNC IN LISTS ${F}.lst)
|
||||
string(REGEX REPLACE "^[a-zA-Z0-9_ *]*(subroutine|SUBROUTINE|external|EXTERNAL|function|FUNCTION)[ ]*[*]?" "" FUNC ${FUNC})
|
||||
string(REGEX REPLACE "[(][a-zA-Z0-9_, )]*$" "" FUNC ${FUNC})
|
||||
string(STRIP ${FUNC} FUNC)
|
||||
list(APPEND COPT_64_F "${FUNC}=${FUNC}_64")
|
||||
endforeach()
|
||||
list(REMOVE_DUPLICATES COPT_64_F)
|
||||
set_source_files_properties(${F} PROPERTIES COMPILE_DEFINITIONS "${COPT_64_F}")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
add_library(${BLASLIB}
|
||||
$<TARGET_OBJECTS:${BLASLIB}_obj>
|
||||
$<$<BOOL:${BUILD_INDEX64_EXT_API}>: $<TARGET_OBJECTS:${BLASLIB}_64_obj>>)
|
||||
|
||||
add_library(${BLASLIB} ${SOURCES})
|
||||
set_target_properties(
|
||||
${BLASLIB} PROPERTIES
|
||||
VERSION ${LAPACK_VERSION}
|
||||
SOVERSION ${LAPACK_MAJOR_VERSION}
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
)
|
||||
lapack_install_library(${BLASLIB})
|
||||
|
||||
if( TEST_FORTRAN_COMPILER )
|
||||
add_dependencies( ${BLASLIB} run_test_zcomplexabs run_test_zcomplexdiv run_test_zcomplexmult run_test_zminMax )
|
||||
endif()
|
||||
|
||||
+1
-1
@@ -72,7 +72,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup axpy
|
||||
*> \ingroup complex_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup copy
|
||||
*> \ingroup complex_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -67,7 +67,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup dot
|
||||
*> \ingroup complex_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -67,7 +67,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup dot
|
||||
*> \ingroup complex_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+2
-5
@@ -148,8 +148,6 @@
|
||||
*> ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
|
||||
*> Before entry, the incremented array Y must contain the
|
||||
*> vector y. On exit, Y is overwritten by the updated vector y.
|
||||
*> If either m or n is zero, then Y not referenced and the function
|
||||
*> performs a quick return.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] INCY
|
||||
@@ -167,7 +165,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup gbmv
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -185,8 +183,7 @@
|
||||
*> \endverbatim
|
||||
*>
|
||||
* =====================================================================
|
||||
SUBROUTINE CGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,
|
||||
+ BETA,Y,INCY)
|
||||
SUBROUTINE CGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
|
||||
*
|
||||
* -- Reference BLAS level2 routine --
|
||||
* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
|
||||
|
||||
+2
-3
@@ -166,7 +166,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup gemm
|
||||
*> \ingroup complex_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -183,8 +183,7 @@
|
||||
*> \endverbatim
|
||||
*>
|
||||
* =====================================================================
|
||||
SUBROUTINE CGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,
|
||||
+ BETA,C,LDC)
|
||||
SUBROUTINE CGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
|
||||
*
|
||||
* -- Reference BLAS level3 routine --
|
||||
* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
|
||||
|
||||
+1
-3
@@ -119,8 +119,6 @@
|
||||
*> Before entry with BETA non-zero, the incremented array Y
|
||||
*> must contain the vector y. On exit, Y is overwritten by the
|
||||
*> updated vector y.
|
||||
*> If either m or n is zero, then Y not referenced and the function
|
||||
*> performs a quick return.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] INCY
|
||||
@@ -138,7 +136,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup gemv
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -109,7 +109,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup ger
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -109,7 +109,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup ger
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -165,7 +165,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup hbmv
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+3
-5
@@ -170,7 +170,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup hemm
|
||||
*> \ingroup complex_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -238,11 +238,9 @@
|
||||
* Test the input parameters.
|
||||
*
|
||||
INFO = 0
|
||||
IF ((.NOT.LSAME(SIDE,'L')) .AND.
|
||||
+ (.NOT.LSAME(SIDE,'R'))) THEN
|
||||
IF ((.NOT.LSAME(SIDE,'L')) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
|
||||
INFO = 1
|
||||
ELSE IF ((.NOT.UPPER) .AND.
|
||||
+ (.NOT.LSAME(UPLO,'L'))) THEN
|
||||
ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
|
||||
INFO = 2
|
||||
ELSE IF (M.LT.0) THEN
|
||||
INFO = 3
|
||||
|
||||
+1
-1
@@ -132,7 +132,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup hemv
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -114,7 +114,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup her
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -129,7 +129,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup her2
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -173,7 +173,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup her2k
|
||||
*> \ingroup complex_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+3
-3
@@ -149,7 +149,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup herk
|
||||
*> \ingroup complex_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -352,7 +352,7 @@
|
||||
200 CONTINUE
|
||||
RTEMP = ZERO
|
||||
DO 210 L = 1,K
|
||||
RTEMP = RTEMP + REAL(CONJG(A(L,J))*A(L,J))
|
||||
RTEMP = RTEMP + CONJG(A(L,J))*A(L,J)
|
||||
210 CONTINUE
|
||||
IF (BETA.EQ.ZERO) THEN
|
||||
C(J,J) = ALPHA*RTEMP
|
||||
@@ -364,7 +364,7 @@
|
||||
DO 260 J = 1,N
|
||||
RTEMP = ZERO
|
||||
DO 230 L = 1,K
|
||||
RTEMP = RTEMP + REAL(CONJG(A(L,J))*A(L,J))
|
||||
RTEMP = RTEMP + CONJG(A(L,J))*A(L,J)
|
||||
230 CONTINUE
|
||||
IF (BETA.EQ.ZERO) THEN
|
||||
C(J,J) = ALPHA*RTEMP
|
||||
|
||||
+1
-1
@@ -127,7 +127,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup hpmv
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -109,7 +109,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup hpr
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -124,7 +124,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup hpr2
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+60
-107
@@ -1,28 +1,31 @@
|
||||
!> \brief \b CROTG generates a Givens rotation with real cosine and complex sine.
|
||||
!> \brief \b CROTG
|
||||
!
|
||||
! =========== DOCUMENTATION ===========
|
||||
!
|
||||
! Online html documentation available at
|
||||
! http://www.netlib.org/lapack/explore-html/
|
||||
!
|
||||
! Definition:
|
||||
! ===========
|
||||
!
|
||||
! CROTG constructs a plane rotation
|
||||
! [ c s ] [ a ] = [ r ]
|
||||
! [ -conjg(s) c ] [ b ] [ 0 ]
|
||||
! where c is real, s is complex, and c**2 + conjg(s)*s = 1.
|
||||
!
|
||||
!> \par Purpose:
|
||||
! =============
|
||||
!>
|
||||
!> \verbatim
|
||||
!>
|
||||
!> CROTG constructs a plane rotation
|
||||
!> [ c s ] [ a ] = [ r ]
|
||||
!> [ -conjg(s) c ] [ b ] [ 0 ]
|
||||
!> where c is real, s is complex, and c**2 + conjg(s)*s = 1.
|
||||
!>
|
||||
!> The computation uses the formulas
|
||||
!> |x| = sqrt( Re(x)**2 + Im(x)**2 )
|
||||
!> sgn(x) = x / |x| if x /= 0
|
||||
!> = 1 if x = 0
|
||||
!> c = |a| / sqrt(|a|**2 + |b|**2)
|
||||
!> s = sgn(a) * conjg(b) / sqrt(|a|**2 + |b|**2)
|
||||
!> r = sgn(a)*sqrt(|a|**2 + |b|**2)
|
||||
!> When a and b are real and r /= 0, the formulas simplify to
|
||||
!> r = sgn(a)*sqrt(|a|**2 + |b|**2)
|
||||
!> c = a / r
|
||||
!> s = b / r
|
||||
!> the same as in SROTG when |a| > |b|. When |b| >= |a|, the
|
||||
@@ -30,8 +33,6 @@
|
||||
!> if the signs of a and b are not the same.
|
||||
!>
|
||||
!> \endverbatim
|
||||
!>
|
||||
!> @see lartg, @see lartgp
|
||||
!
|
||||
! Arguments:
|
||||
! ==========
|
||||
@@ -64,19 +65,20 @@
|
||||
! Authors:
|
||||
! ========
|
||||
!
|
||||
!> \author Weslley Pereira, University of Colorado Denver, USA
|
||||
!> \author Edward Anderson, Lockheed Martin
|
||||
!
|
||||
!> \date December 2021
|
||||
!> \par Contributors:
|
||||
! ==================
|
||||
!>
|
||||
!> Weslley Pereira, University of Colorado Denver, USA
|
||||
!
|
||||
!> \ingroup rotg
|
||||
!> \ingroup single_blas_level1
|
||||
!
|
||||
!> \par Further Details:
|
||||
! =====================
|
||||
!>
|
||||
!> \verbatim
|
||||
!>
|
||||
!> Based on the algorithm from
|
||||
!>
|
||||
!> Anderson E. (2017)
|
||||
!> Algorithm 978: Safe Scaling in the Level 1 BLAS
|
||||
!> ACM Trans Math Softw 44:1--28
|
||||
@@ -106,14 +108,21 @@ subroutine CROTG( a, b, c, s )
|
||||
1-minexponent(0._wp), &
|
||||
maxexponent(0._wp)-1 &
|
||||
)
|
||||
real(wp), parameter :: rtmin = sqrt( safmin )
|
||||
real(wp), parameter :: rtmin = sqrt( real(radix(0._wp),wp)**max( &
|
||||
minexponent(0._wp)-1, &
|
||||
1-maxexponent(0._wp) &
|
||||
) / epsilon(0._wp) )
|
||||
real(wp), parameter :: rtmax = sqrt( real(radix(0._wp),wp)**max( &
|
||||
1-minexponent(0._wp), &
|
||||
maxexponent(0._wp)-1 &
|
||||
) * epsilon(0._wp) )
|
||||
! ..
|
||||
! .. Scalar Arguments ..
|
||||
real(wp) :: c
|
||||
complex(wp) :: a, b, s
|
||||
! ..
|
||||
! .. Local Scalars ..
|
||||
real(wp) :: d, f1, f2, g1, g2, h2, u, v, w, rtmax
|
||||
real(wp) :: d, f1, f2, g1, g2, h2, p, u, uu, v, vv, w
|
||||
complex(wp) :: f, fs, g, gs, r, t
|
||||
! ..
|
||||
! .. Intrinsic Functions ..
|
||||
@@ -135,43 +144,30 @@ subroutine CROTG( a, b, c, s )
|
||||
r = f
|
||||
else if( f == czero ) then
|
||||
c = zero
|
||||
if( real(g) == zero ) then
|
||||
r = abs(aimag(g))
|
||||
s = conjg( g ) / r
|
||||
elseif( aimag(g) == zero ) then
|
||||
r = abs(real(g))
|
||||
s = conjg( g ) / r
|
||||
else
|
||||
g1 = max( abs(real(g)), abs(aimag(g)) )
|
||||
rtmax = sqrt( safmax/2 )
|
||||
if( g1 > rtmin .and. g1 < rtmax ) then
|
||||
g1 = max( abs(real(g)), abs(aimag(g)) )
|
||||
if( g1 > rtmin .and. g1 < rtmax ) then
|
||||
!
|
||||
! Use unscaled algorithm
|
||||
!
|
||||
! The following two lines can be replaced by `d = abs( g )`.
|
||||
! This algorithm do not use the intrinsic complex abs.
|
||||
g2 = ABSSQ( g )
|
||||
d = sqrt( g2 )
|
||||
s = conjg( g ) / d
|
||||
r = d
|
||||
else
|
||||
g2 = ABSSQ( g )
|
||||
d = sqrt( g2 )
|
||||
s = conjg( g ) / d
|
||||
r = d
|
||||
else
|
||||
!
|
||||
! Use scaled algorithm
|
||||
!
|
||||
u = min( safmax, max( safmin, g1 ) )
|
||||
gs = g / u
|
||||
! The following two lines can be replaced by `d = abs( gs )`.
|
||||
! This algorithm do not use the intrinsic complex abs.
|
||||
g2 = ABSSQ( gs )
|
||||
d = sqrt( g2 )
|
||||
s = conjg( gs ) / d
|
||||
r = d*u
|
||||
end if
|
||||
u = min( safmax, max( safmin, g1 ) )
|
||||
uu = one / u
|
||||
gs = g*uu
|
||||
g2 = ABSSQ( gs )
|
||||
d = sqrt( g2 )
|
||||
s = conjg( gs ) / d
|
||||
r = d*u
|
||||
end if
|
||||
else
|
||||
f1 = max( abs(real(f)), abs(aimag(f)) )
|
||||
g1 = max( abs(real(g)), abs(aimag(g)) )
|
||||
rtmax = sqrt( safmax/4 )
|
||||
if( f1 > rtmin .and. f1 < rtmax .and. &
|
||||
g1 > rtmin .and. g1 < rtmax ) then
|
||||
!
|
||||
@@ -180,51 +176,32 @@ subroutine CROTG( a, b, c, s )
|
||||
f2 = ABSSQ( f )
|
||||
g2 = ABSSQ( g )
|
||||
h2 = f2 + g2
|
||||
! safmin <= f2 <= h2 <= safmax
|
||||
if( f2 >= h2 * safmin ) then
|
||||
! safmin <= f2/h2 <= 1, and h2/f2 is finite
|
||||
c = sqrt( f2 / h2 )
|
||||
r = f / c
|
||||
rtmax = rtmax * 2
|
||||
if( f2 > rtmin .and. h2 < rtmax ) then
|
||||
! safmin <= sqrt( f2*h2 ) <= safmax
|
||||
s = conjg( g ) * ( f / sqrt( f2*h2 ) )
|
||||
else
|
||||
s = conjg( g ) * ( r / h2 )
|
||||
end if
|
||||
if( f2 > rtmin .and. h2 < rtmax ) then
|
||||
d = sqrt( f2*h2 )
|
||||
else
|
||||
! f2/h2 <= safmin may be subnormal, and h2/f2 may overflow.
|
||||
! Moreover,
|
||||
! safmin <= f2*f2 * safmax < f2 * h2 < h2*h2 * safmin <= safmax,
|
||||
! sqrt(safmin) <= sqrt(f2 * h2) <= sqrt(safmax).
|
||||
! Also,
|
||||
! g2 >> f2, which means that h2 = g2.
|
||||
d = sqrt( f2 * h2 )
|
||||
c = f2 / d
|
||||
if( c >= safmin ) then
|
||||
r = f / c
|
||||
else
|
||||
! f2 / sqrt(f2 * h2) < safmin, then
|
||||
! sqrt(safmin) <= f2 * sqrt(safmax) <= h2 / sqrt(f2 * h2) <= h2 * (safmin / f2) <= h2 <= safmax
|
||||
r = f * ( h2 / d )
|
||||
end if
|
||||
s = conjg( g ) * ( f / d )
|
||||
d = sqrt( f2 )*sqrt( h2 )
|
||||
end if
|
||||
p = 1 / d
|
||||
c = f2*p
|
||||
s = conjg( g )*( f*p )
|
||||
r = f*( h2*p )
|
||||
else
|
||||
!
|
||||
! Use scaled algorithm
|
||||
!
|
||||
u = min( safmax, max( safmin, f1, g1 ) )
|
||||
gs = g / u
|
||||
uu = one / u
|
||||
gs = g*uu
|
||||
g2 = ABSSQ( gs )
|
||||
if( f1 / u < rtmin ) then
|
||||
if( f1*uu < rtmin ) then
|
||||
!
|
||||
! f is not well-scaled when scaled by g1.
|
||||
! Use a different scaling for f.
|
||||
!
|
||||
v = min( safmax, max( safmin, f1 ) )
|
||||
w = v / u
|
||||
fs = f / v
|
||||
vv = one / v
|
||||
w = v * uu
|
||||
fs = f*vv
|
||||
f2 = ABSSQ( fs )
|
||||
h2 = f2*w**2 + g2
|
||||
else
|
||||
@@ -232,43 +209,19 @@ subroutine CROTG( a, b, c, s )
|
||||
! Otherwise use the same scaling for f and g.
|
||||
!
|
||||
w = one
|
||||
fs = f / u
|
||||
fs = f*uu
|
||||
f2 = ABSSQ( fs )
|
||||
h2 = f2 + g2
|
||||
end if
|
||||
! safmin <= f2 <= h2 <= safmax
|
||||
if( f2 >= h2 * safmin ) then
|
||||
! safmin <= f2/h2 <= 1, and h2/f2 is finite
|
||||
c = sqrt( f2 / h2 )
|
||||
r = fs / c
|
||||
rtmax = rtmax * 2
|
||||
if( f2 > rtmin .and. h2 < rtmax ) then
|
||||
! safmin <= sqrt( f2*h2 ) <= safmax
|
||||
s = conjg( gs ) * ( fs / sqrt( f2*h2 ) )
|
||||
else
|
||||
s = conjg( gs ) * ( r / h2 )
|
||||
end if
|
||||
if( f2 > rtmin .and. h2 < rtmax ) then
|
||||
d = sqrt( f2*h2 )
|
||||
else
|
||||
! f2/h2 <= safmin may be subnormal, and h2/f2 may overflow.
|
||||
! Moreover,
|
||||
! safmin <= f2*f2 * safmax < f2 * h2 < h2*h2 * safmin <= safmax,
|
||||
! sqrt(safmin) <= sqrt(f2 * h2) <= sqrt(safmax).
|
||||
! Also,
|
||||
! g2 >> f2, which means that h2 = g2.
|
||||
d = sqrt( f2 * h2 )
|
||||
c = f2 / d
|
||||
if( c >= safmin ) then
|
||||
r = fs / c
|
||||
else
|
||||
! f2 / sqrt(f2 * h2) < safmin, then
|
||||
! sqrt(safmin) <= f2 * sqrt(safmax) <= h2 / sqrt(f2 * h2) <= h2 * (safmin / f2) <= h2 <= safmax
|
||||
r = fs * ( h2 / d )
|
||||
end if
|
||||
s = conjg( gs ) * ( fs / d )
|
||||
d = sqrt( f2 )*sqrt( h2 )
|
||||
end if
|
||||
! Rescale c and r
|
||||
c = c * w
|
||||
r = r * u
|
||||
p = 1 / d
|
||||
c = ( f2*p )*w
|
||||
s = conjg( gs )*( fs*p )
|
||||
r = ( fs*( h2*p ) )*u
|
||||
end if
|
||||
end if
|
||||
a = r
|
||||
|
||||
+2
-6
@@ -61,7 +61,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup scal
|
||||
*> \ingroup complex_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -93,11 +93,7 @@
|
||||
* .. Local Scalars ..
|
||||
INTEGER I,NINCX
|
||||
* ..
|
||||
* .. Parameters ..
|
||||
COMPLEX ONE
|
||||
PARAMETER (ONE= (1.0E+0,0.0E+0))
|
||||
* ..
|
||||
IF (N.LE.0 .OR. INCX.LE.0 .OR. CA.EQ.ONE) RETURN
|
||||
IF (N.LE.0 .OR. INCX.LE.0) RETURN
|
||||
IF (INCX.EQ.1) THEN
|
||||
*
|
||||
* code for increment equal to 1
|
||||
|
||||
+1
-1
@@ -91,7 +91,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup rot
|
||||
*> \ingroup complex_blas_level1
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE CSROT( N, CX, INCX, CY, INCY, C, S )
|
||||
|
||||
+2
-6
@@ -61,7 +61,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup scal
|
||||
*> \ingroup complex_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -93,14 +93,10 @@
|
||||
* .. Local Scalars ..
|
||||
INTEGER I,NINCX
|
||||
* ..
|
||||
* .. Parameters ..
|
||||
REAL ONE
|
||||
PARAMETER (ONE=1.0E+0)
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
INTRINSIC AIMAG,CMPLX,REAL
|
||||
* ..
|
||||
IF (N.LE.0 .OR. INCX.LE.0 .OR. SA.EQ.ONE) RETURN
|
||||
IF (N.LE.0 .OR. INCX.LE.0) RETURN
|
||||
IF (INCX.EQ.1) THEN
|
||||
*
|
||||
* code for increment equal to 1
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup swap
|
||||
*> \ingroup complex_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+3
-5
@@ -168,7 +168,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup hemm
|
||||
*> \ingroup complex_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -236,11 +236,9 @@
|
||||
* Test the input parameters.
|
||||
*
|
||||
INFO = 0
|
||||
IF ((.NOT.LSAME(SIDE,'L')) .AND.
|
||||
+ (.NOT.LSAME(SIDE,'R'))) THEN
|
||||
IF ((.NOT.LSAME(SIDE,'L')) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
|
||||
INFO = 1
|
||||
ELSE IF ((.NOT.UPPER) .AND.
|
||||
+ (.NOT.LSAME(UPLO,'L'))) THEN
|
||||
ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
|
||||
INFO = 2
|
||||
ELSE IF (M.LT.0) THEN
|
||||
INFO = 3
|
||||
|
||||
+1
-1
@@ -167,7 +167,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup her2k
|
||||
*> \ingroup complex_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -146,7 +146,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup herk
|
||||
*> \ingroup complex_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+3
-5
@@ -164,7 +164,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup tbmv
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -223,12 +223,10 @@
|
||||
INFO = 0
|
||||
IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
|
||||
INFO = 1
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND.
|
||||
+ .NOT.LSAME(TRANS,'T') .AND.
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
|
||||
+ .NOT.LSAME(TRANS,'C')) THEN
|
||||
INFO = 2
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND.
|
||||
+ .NOT.LSAME(DIAG,'N')) THEN
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
|
||||
INFO = 3
|
||||
ELSE IF (N.LT.0) THEN
|
||||
INFO = 4
|
||||
|
||||
+3
-5
@@ -168,7 +168,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup tbsv
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -226,12 +226,10 @@
|
||||
INFO = 0
|
||||
IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
|
||||
INFO = 1
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND.
|
||||
+ .NOT.LSAME(TRANS,'T') .AND.
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
|
||||
+ .NOT.LSAME(TRANS,'C')) THEN
|
||||
INFO = 2
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND.
|
||||
+ .NOT.LSAME(DIAG,'N')) THEN
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
|
||||
INFO = 3
|
||||
ELSE IF (N.LT.0) THEN
|
||||
INFO = 4
|
||||
|
||||
+3
-5
@@ -120,7 +120,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup tpmv
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -179,12 +179,10 @@
|
||||
INFO = 0
|
||||
IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
|
||||
INFO = 1
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND.
|
||||
+ .NOT.LSAME(TRANS,'T') .AND.
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
|
||||
+ .NOT.LSAME(TRANS,'C')) THEN
|
||||
INFO = 2
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND.
|
||||
+ .NOT.LSAME(DIAG,'N')) THEN
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
|
||||
INFO = 3
|
||||
ELSE IF (N.LT.0) THEN
|
||||
INFO = 4
|
||||
|
||||
+3
-5
@@ -123,7 +123,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup tpsv
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -181,12 +181,10 @@
|
||||
INFO = 0
|
||||
IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
|
||||
INFO = 1
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND.
|
||||
+ .NOT.LSAME(TRANS,'T') .AND.
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
|
||||
+ .NOT.LSAME(TRANS,'C')) THEN
|
||||
INFO = 2
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND.
|
||||
+ .NOT.LSAME(DIAG,'N')) THEN
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
|
||||
INFO = 3
|
||||
ELSE IF (N.LT.0) THEN
|
||||
INFO = 4
|
||||
|
||||
+2
-3
@@ -156,7 +156,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup trmm
|
||||
*> \ingroup complex_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -233,8 +233,7 @@
|
||||
+ (.NOT.LSAME(TRANSA,'T')) .AND.
|
||||
+ (.NOT.LSAME(TRANSA,'C'))) THEN
|
||||
INFO = 3
|
||||
ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND.
|
||||
+ (.NOT.LSAME(DIAG,'N'))) THEN
|
||||
ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN
|
||||
INFO = 4
|
||||
ELSE IF (M.LT.0) THEN
|
||||
INFO = 5
|
||||
|
||||
+3
-5
@@ -125,7 +125,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup trmv
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -184,12 +184,10 @@
|
||||
INFO = 0
|
||||
IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
|
||||
INFO = 1
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND.
|
||||
+ .NOT.LSAME(TRANS,'T') .AND.
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
|
||||
+ .NOT.LSAME(TRANS,'C')) THEN
|
||||
INFO = 2
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND.
|
||||
+ .NOT.LSAME(DIAG,'N')) THEN
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
|
||||
INFO = 3
|
||||
ELSE IF (N.LT.0) THEN
|
||||
INFO = 4
|
||||
|
||||
+2
-3
@@ -159,7 +159,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup trsm
|
||||
*> \ingroup complex_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -236,8 +236,7 @@
|
||||
+ (.NOT.LSAME(TRANSA,'T')) .AND.
|
||||
+ (.NOT.LSAME(TRANSA,'C'))) THEN
|
||||
INFO = 3
|
||||
ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND.
|
||||
+ (.NOT.LSAME(DIAG,'N'))) THEN
|
||||
ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN
|
||||
INFO = 4
|
||||
ELSE IF (M.LT.0) THEN
|
||||
INFO = 5
|
||||
|
||||
+3
-5
@@ -128,7 +128,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup trsv
|
||||
*> \ingroup complex_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -186,12 +186,10 @@
|
||||
INFO = 0
|
||||
IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
|
||||
INFO = 1
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND.
|
||||
+ .NOT.LSAME(TRANS,'T') .AND.
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
|
||||
+ .NOT.LSAME(TRANS,'C')) THEN
|
||||
INFO = 2
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND.
|
||||
+ .NOT.LSAME(DIAG,'N')) THEN
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
|
||||
INFO = 3
|
||||
ELSE IF (N.LT.0) THEN
|
||||
INFO = 4
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup asum
|
||||
*> \ingroup double_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -73,7 +73,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup axpy
|
||||
*> \ingroup double_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup abs1
|
||||
*> \ingroup double_blas_level1
|
||||
*
|
||||
* =====================================================================
|
||||
DOUBLE PRECISION FUNCTION DCABS1(Z)
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup copy
|
||||
*> \ingroup double_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup dot
|
||||
*> \ingroup double_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+2
-5
@@ -146,8 +146,6 @@
|
||||
*> ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
|
||||
*> Before entry, the incremented array Y must contain the
|
||||
*> vector y. On exit, Y is overwritten by the updated vector y.
|
||||
*> If either m or n is zero, then Y not referenced and the function
|
||||
*> performs a quick return.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] INCY
|
||||
@@ -165,7 +163,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup gbmv
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -183,8 +181,7 @@
|
||||
*> \endverbatim
|
||||
*>
|
||||
* =====================================================================
|
||||
SUBROUTINE DGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,
|
||||
+ BETA,Y,INCY)
|
||||
SUBROUTINE DGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
|
||||
*
|
||||
* -- Reference BLAS level2 routine --
|
||||
* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
|
||||
|
||||
+2
-3
@@ -166,7 +166,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup gemm
|
||||
*> \ingroup double_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -183,8 +183,7 @@
|
||||
*> \endverbatim
|
||||
*>
|
||||
* =====================================================================
|
||||
SUBROUTINE DGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,
|
||||
+ BETA,C,LDC)
|
||||
SUBROUTINE DGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
|
||||
*
|
||||
* -- Reference BLAS level3 routine --
|
||||
* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
|
||||
|
||||
+1
-3
@@ -117,8 +117,6 @@
|
||||
*> Before entry with BETA non-zero, the incremented array Y
|
||||
*> must contain the vector y. On exit, Y is overwritten by the
|
||||
*> updated vector y.
|
||||
*> If either m or n is zero, then Y not referenced and the function
|
||||
*> performs a quick return.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] INCY
|
||||
@@ -136,7 +134,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup gemv
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -109,7 +109,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup ger
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+4
-4
@@ -60,7 +60,7 @@
|
||||
!
|
||||
!> \date August 2016
|
||||
!
|
||||
!> \ingroup nrm2
|
||||
!> \ingroup single_blas_level1
|
||||
!
|
||||
!> \par Contributors:
|
||||
! ==================
|
||||
@@ -99,15 +99,15 @@ function DNRM2( n, x, incx )
|
||||
real(wp), parameter :: one = 1.0_wp
|
||||
real(wp), parameter :: maxN = huge(0.0_wp)
|
||||
! ..
|
||||
! .. Blue's scaling constants ..
|
||||
! .. Blue's ccaling constants ..
|
||||
real(wp), parameter :: tsml = real(radix(0._wp), wp)**ceiling( &
|
||||
(minexponent(0._wp) - 1) * 0.5_wp)
|
||||
real(wp), parameter :: tbig = real(radix(0._wp), wp)**floor( &
|
||||
(maxexponent(0._wp) - digits(0._wp) + 1) * 0.5_wp)
|
||||
real(wp), parameter :: ssml = real(radix(0._wp), wp)**( - floor( &
|
||||
(minexponent(0._wp) - digits(0._wp)) * 0.5_wp))
|
||||
(minexponent(0._wp) - 1) * 0.5_wp))
|
||||
real(wp), parameter :: sbig = real(radix(0._wp), wp)**( - ceiling( &
|
||||
(maxexponent(0._wp) + digits(0._wp) - 1) * 0.5_wp))
|
||||
(maxexponent(0._wp) - digits(0._wp) + 1) * 0.5_wp))
|
||||
! ..
|
||||
! .. Scalar Arguments ..
|
||||
integer :: incx, n
|
||||
|
||||
+1
-1
@@ -76,7 +76,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup rot
|
||||
*> \ingroup double_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+9
-8
@@ -5,16 +5,19 @@
|
||||
! Online html documentation available at
|
||||
! http://www.netlib.org/lapack/explore-html/
|
||||
!
|
||||
! Definition:
|
||||
! ===========
|
||||
!
|
||||
! DROTG constructs a plane rotation
|
||||
! [ c s ] [ a ] = [ r ]
|
||||
! [ -s c ] [ b ] [ 0 ]
|
||||
! satisfying c**2 + s**2 = 1.
|
||||
!
|
||||
!> \par Purpose:
|
||||
! =============
|
||||
!>
|
||||
!> \verbatim
|
||||
!>
|
||||
!> DROTG constructs a plane rotation
|
||||
!> [ c s ] [ a ] = [ r ]
|
||||
!> [ -s c ] [ b ] [ 0 ]
|
||||
!> satisfying c**2 + s**2 = 1.
|
||||
!>
|
||||
!> The computation uses the formulas
|
||||
!> sigma = sgn(a) if |a| > |b|
|
||||
!> = sgn(b) if |b| >= |a|
|
||||
@@ -31,8 +34,6 @@
|
||||
!> If |z| > 1, set c = 1/z and s = sqrt( 1 - c**2).
|
||||
!>
|
||||
!> \endverbatim
|
||||
!>
|
||||
!> @see lartg, @see lartgp
|
||||
!
|
||||
! Arguments:
|
||||
! ==========
|
||||
@@ -73,7 +74,7 @@
|
||||
!>
|
||||
!> Weslley Pereira, University of Colorado Denver, USA
|
||||
!
|
||||
!> \ingroup rotg
|
||||
!> \ingroup single_blas_level1
|
||||
!
|
||||
!> \par Further Details:
|
||||
! =====================
|
||||
|
||||
+1
-1
@@ -89,7 +89,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup rotm
|
||||
*> \ingroup double_blas_level1
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE DROTM(N,DX,INCX,DY,INCY,DPARAM)
|
||||
|
||||
+1
-1
@@ -83,7 +83,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup rotmg
|
||||
*> \ingroup double_blas_level1
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE DROTMG(DD1,DD2,DX1,DY1,DPARAM)
|
||||
|
||||
+1
-1
@@ -162,7 +162,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup hbmv
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+2
-5
@@ -62,7 +62,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup scal
|
||||
*> \ingroup double_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -93,14 +93,11 @@
|
||||
*
|
||||
* .. Local Scalars ..
|
||||
INTEGER I,M,MP1,NINCX
|
||||
* .. Parameters ..
|
||||
DOUBLE PRECISION ONE
|
||||
PARAMETER (ONE=1.0D+0)
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
INTRINSIC MOD
|
||||
* ..
|
||||
IF (N.LE.0 .OR. INCX.LE.0 .OR. DA.EQ.ONE) RETURN
|
||||
IF (N.LE.0 .OR. INCX.LE.0) RETURN
|
||||
IF (INCX.EQ.1) THEN
|
||||
*
|
||||
* code for increment equal to 1
|
||||
|
||||
+1
-1
@@ -84,7 +84,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup dot
|
||||
*> \ingroup double_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -125,7 +125,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup hpmv
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -106,7 +106,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup hpr
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -121,7 +121,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup hpr2
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup swap
|
||||
*> \ingroup double_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+2
-3
@@ -168,7 +168,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup hemm
|
||||
*> \ingroup double_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -234,8 +234,7 @@
|
||||
* Test the input parameters.
|
||||
*
|
||||
INFO = 0
|
||||
IF ((.NOT.LSAME(SIDE,'L')) .AND.
|
||||
+ (.NOT.LSAME(SIDE,'R'))) THEN
|
||||
IF ((.NOT.LSAME(SIDE,'L')) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
|
||||
INFO = 1
|
||||
ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
|
||||
INFO = 2
|
||||
|
||||
+1
-1
@@ -130,7 +130,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup hemv
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -111,7 +111,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup her
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -126,7 +126,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup her2
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -170,7 +170,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup her2k
|
||||
*> \ingroup double_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -148,7 +148,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup herk
|
||||
*> \ingroup double_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+3
-5
@@ -164,7 +164,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup tbmv
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -223,12 +223,10 @@
|
||||
INFO = 0
|
||||
IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
|
||||
INFO = 1
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND.
|
||||
+ .NOT.LSAME(TRANS,'T') .AND.
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
|
||||
+ .NOT.LSAME(TRANS,'C')) THEN
|
||||
INFO = 2
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND.
|
||||
+ .NOT.LSAME(DIAG,'N')) THEN
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
|
||||
INFO = 3
|
||||
ELSE IF (N.LT.0) THEN
|
||||
INFO = 4
|
||||
|
||||
+3
-5
@@ -168,7 +168,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup tbsv
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -226,12 +226,10 @@
|
||||
INFO = 0
|
||||
IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
|
||||
INFO = 1
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND.
|
||||
+ .NOT.LSAME(TRANS,'T') .AND.
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
|
||||
+ .NOT.LSAME(TRANS,'C')) THEN
|
||||
INFO = 2
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND.
|
||||
+ .NOT.LSAME(DIAG,'N')) THEN
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
|
||||
INFO = 3
|
||||
ELSE IF (N.LT.0) THEN
|
||||
INFO = 4
|
||||
|
||||
+3
-5
@@ -120,7 +120,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup tpmv
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -176,12 +176,10 @@
|
||||
INFO = 0
|
||||
IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
|
||||
INFO = 1
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND.
|
||||
+ .NOT.LSAME(TRANS,'T') .AND.
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
|
||||
+ .NOT.LSAME(TRANS,'C')) THEN
|
||||
INFO = 2
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND.
|
||||
+ .NOT.LSAME(DIAG,'N')) THEN
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
|
||||
INFO = 3
|
||||
ELSE IF (N.LT.0) THEN
|
||||
INFO = 4
|
||||
|
||||
+3
-5
@@ -123,7 +123,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup tpsv
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -178,12 +178,10 @@
|
||||
INFO = 0
|
||||
IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
|
||||
INFO = 1
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND.
|
||||
+ .NOT.LSAME(TRANS,'T') .AND.
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
|
||||
+ .NOT.LSAME(TRANS,'C')) THEN
|
||||
INFO = 2
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND.
|
||||
+ .NOT.LSAME(DIAG,'N')) THEN
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
|
||||
INFO = 3
|
||||
ELSE IF (N.LT.0) THEN
|
||||
INFO = 4
|
||||
|
||||
+2
-3
@@ -156,7 +156,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup trmm
|
||||
*> \ingroup double_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -230,8 +230,7 @@
|
||||
+ (.NOT.LSAME(TRANSA,'T')) .AND.
|
||||
+ (.NOT.LSAME(TRANSA,'C'))) THEN
|
||||
INFO = 3
|
||||
ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND.
|
||||
+ (.NOT.LSAME(DIAG,'N'))) THEN
|
||||
ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN
|
||||
INFO = 4
|
||||
ELSE IF (M.LT.0) THEN
|
||||
INFO = 5
|
||||
|
||||
+3
-5
@@ -125,7 +125,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup trmv
|
||||
*> \ingroup double_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -184,12 +184,10 @@
|
||||
INFO = 0
|
||||
IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
|
||||
INFO = 1
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND.
|
||||
+ .NOT.LSAME(TRANS,'T') .AND.
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
|
||||
+ .NOT.LSAME(TRANS,'C')) THEN
|
||||
INFO = 2
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND.
|
||||
+ .NOT.LSAME(DIAG,'N')) THEN
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
|
||||
INFO = 3
|
||||
ELSE IF (N.LT.0) THEN
|
||||
INFO = 4
|
||||
|
||||
+2
-3
@@ -159,7 +159,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup trsm
|
||||
*> \ingroup double_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -234,8 +234,7 @@
|
||||
+ (.NOT.LSAME(TRANSA,'T')) .AND.
|
||||
+ (.NOT.LSAME(TRANSA,'C'))) THEN
|
||||
INFO = 3
|
||||
ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND.
|
||||
+ (.NOT.LSAME(DIAG,'N'))) THEN
|
||||
ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN
|
||||
INFO = 4
|
||||
ELSE IF (M.LT.0) THEN
|
||||
INFO = 5
|
||||
|
||||
+4
-6
@@ -136,12 +136,12 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup trsv
|
||||
*> \ingroup double_blas_level1
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE DTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
|
||||
*
|
||||
* -- Reference BLAS level2 routine --
|
||||
* -- Reference BLAS level1 routine --
|
||||
* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
*
|
||||
@@ -180,12 +180,10 @@
|
||||
INFO = 0
|
||||
IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
|
||||
INFO = 1
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND.
|
||||
+ .NOT.LSAME(TRANS,'T') .AND.
|
||||
ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
|
||||
+ .NOT.LSAME(TRANS,'C')) THEN
|
||||
INFO = 2
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND.
|
||||
+ .NOT.LSAME(DIAG,'N')) THEN
|
||||
ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
|
||||
INFO = 3
|
||||
ELSE IF (N.LT.0) THEN
|
||||
INFO = 4
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup asum
|
||||
*> \ingroup double_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+4
-4
@@ -61,7 +61,7 @@
|
||||
!
|
||||
!> \date August 2016
|
||||
!
|
||||
!> \ingroup nrm2
|
||||
!> \ingroup single_blas_level1
|
||||
!
|
||||
!> \par Contributors:
|
||||
! ==================
|
||||
@@ -100,15 +100,15 @@ function DZNRM2( n, x, incx )
|
||||
real(wp), parameter :: one = 1.0_wp
|
||||
real(wp), parameter :: maxN = huge(0.0_wp)
|
||||
! ..
|
||||
! .. Blue's scaling constants ..
|
||||
! .. Blue's ccaling constants ..
|
||||
real(wp), parameter :: tsml = real(radix(0._wp), wp)**ceiling( &
|
||||
(minexponent(0._wp) - 1) * 0.5_wp)
|
||||
real(wp), parameter :: tbig = real(radix(0._wp), wp)**floor( &
|
||||
(maxexponent(0._wp) - digits(0._wp) + 1) * 0.5_wp)
|
||||
real(wp), parameter :: ssml = real(radix(0._wp), wp)**( - floor( &
|
||||
(minexponent(0._wp) - digits(0._wp)) * 0.5_wp))
|
||||
(minexponent(0._wp) - 1) * 0.5_wp))
|
||||
real(wp), parameter :: sbig = real(radix(0._wp), wp)**( - ceiling( &
|
||||
(maxexponent(0._wp) + digits(0._wp) - 1) * 0.5_wp))
|
||||
(maxexponent(0._wp) - digits(0._wp) + 1) * 0.5_wp))
|
||||
! ..
|
||||
! .. Scalar Arguments ..
|
||||
integer :: incx, n
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup iamax
|
||||
*> \ingroup aux_blas
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup iamax
|
||||
*> \ingroup aux_blas
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup iamax
|
||||
*> \ingroup aux_blas
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup iamax
|
||||
*> \ingroup aux_blas
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup lsame
|
||||
*> \ingroup aux_blas
|
||||
*
|
||||
* =====================================================================
|
||||
LOGICAL FUNCTION LSAME(CA,CB)
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup asum
|
||||
*> \ingroup single_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -73,7 +73,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup axpy
|
||||
*> \ingroup single_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup abs1
|
||||
*> \ingroup single_blas_level1
|
||||
*
|
||||
* =====================================================================
|
||||
REAL FUNCTION SCABS1(Z)
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup asum
|
||||
*> \ingroup single_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+4
-4
@@ -61,7 +61,7 @@
|
||||
!
|
||||
!> \date August 2016
|
||||
!
|
||||
!> \ingroup nrm2
|
||||
!> \ingroup single_blas_level1
|
||||
!
|
||||
!> \par Contributors:
|
||||
! ==================
|
||||
@@ -100,15 +100,15 @@ function SCNRM2( n, x, incx )
|
||||
real(wp), parameter :: one = 1.0_wp
|
||||
real(wp), parameter :: maxN = huge(0.0_wp)
|
||||
! ..
|
||||
! .. Blue's scaling constants ..
|
||||
! .. Blue's ccaling constants ..
|
||||
real(wp), parameter :: tsml = real(radix(0._wp), wp)**ceiling( &
|
||||
(minexponent(0._wp) - 1) * 0.5_wp)
|
||||
real(wp), parameter :: tbig = real(radix(0._wp), wp)**floor( &
|
||||
(maxexponent(0._wp) - digits(0._wp) + 1) * 0.5_wp)
|
||||
real(wp), parameter :: ssml = real(radix(0._wp), wp)**( - floor( &
|
||||
(minexponent(0._wp) - digits(0._wp)) * 0.5_wp))
|
||||
(minexponent(0._wp) - 1) * 0.5_wp))
|
||||
real(wp), parameter :: sbig = real(radix(0._wp), wp)**( - ceiling( &
|
||||
(maxexponent(0._wp) + digits(0._wp) - 1) * 0.5_wp))
|
||||
(maxexponent(0._wp) - digits(0._wp) + 1) * 0.5_wp))
|
||||
! ..
|
||||
! .. Scalar Arguments ..
|
||||
integer :: incx, n
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup copy
|
||||
*> \ingroup single_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup dot
|
||||
*> \ingroup single_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+3
-3
@@ -82,7 +82,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup dot
|
||||
*> \ingroup single_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -130,7 +130,7 @@
|
||||
* ..
|
||||
DSDOT = SB
|
||||
IF (N.LE.0) THEN
|
||||
SDSDOT = REAL(DSDOT)
|
||||
SDSDOT = DSDOT
|
||||
RETURN
|
||||
END IF
|
||||
IF (INCX.EQ.INCY .AND. INCX.GT.0) THEN
|
||||
@@ -155,7 +155,7 @@
|
||||
KY = KY + INCY
|
||||
END DO
|
||||
END IF
|
||||
SDSDOT = REAL(DSDOT)
|
||||
SDSDOT = DSDOT
|
||||
RETURN
|
||||
*
|
||||
* End of SDSDOT
|
||||
|
||||
+2
-5
@@ -146,8 +146,6 @@
|
||||
*> ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
|
||||
*> Before entry, the incremented array Y must contain the
|
||||
*> vector y. On exit, Y is overwritten by the updated vector y.
|
||||
*> If either m or n is zero, then Y not referenced and the function
|
||||
*> performs a quick return.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] INCY
|
||||
@@ -165,7 +163,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup gbmv
|
||||
*> \ingroup single_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -183,8 +181,7 @@
|
||||
*> \endverbatim
|
||||
*>
|
||||
* =====================================================================
|
||||
SUBROUTINE SGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,
|
||||
+ BETA,Y,INCY)
|
||||
SUBROUTINE SGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
|
||||
*
|
||||
* -- Reference BLAS level2 routine --
|
||||
* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
|
||||
|
||||
+2
-3
@@ -166,7 +166,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup gemm
|
||||
*> \ingroup single_blas_level3
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
@@ -183,8 +183,7 @@
|
||||
*> \endverbatim
|
||||
*>
|
||||
* =====================================================================
|
||||
SUBROUTINE SGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,
|
||||
+ BETA,C,LDC)
|
||||
SUBROUTINE SGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
|
||||
*
|
||||
* -- Reference BLAS level3 routine --
|
||||
* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
|
||||
|
||||
+1
-3
@@ -117,8 +117,6 @@
|
||||
*> Before entry with BETA non-zero, the incremented array Y
|
||||
*> must contain the vector y. On exit, Y is overwritten by the
|
||||
*> updated vector y.
|
||||
*> If either m or n is zero, then Y not referenced and the function
|
||||
*> performs a quick return.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] INCY
|
||||
@@ -136,7 +134,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup gemv
|
||||
*> \ingroup single_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+1
-1
@@ -109,7 +109,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup ger
|
||||
*> \ingroup single_blas_level2
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+4
-4
@@ -60,7 +60,7 @@
|
||||
!
|
||||
!> \date August 2016
|
||||
!
|
||||
!> \ingroup nrm2
|
||||
!> \ingroup single_blas_level1
|
||||
!
|
||||
!> \par Contributors:
|
||||
! ==================
|
||||
@@ -99,15 +99,15 @@ function SNRM2( n, x, incx )
|
||||
real(wp), parameter :: one = 1.0_wp
|
||||
real(wp), parameter :: maxN = huge(0.0_wp)
|
||||
! ..
|
||||
! .. Blue's scaling constants ..
|
||||
! .. Blue's ccaling constants ..
|
||||
real(wp), parameter :: tsml = real(radix(0._wp), wp)**ceiling( &
|
||||
(minexponent(0._wp) - 1) * 0.5_wp)
|
||||
real(wp), parameter :: tbig = real(radix(0._wp), wp)**floor( &
|
||||
(maxexponent(0._wp) - digits(0._wp) + 1) * 0.5_wp)
|
||||
real(wp), parameter :: ssml = real(radix(0._wp), wp)**( - floor( &
|
||||
(minexponent(0._wp) - digits(0._wp)) * 0.5_wp))
|
||||
(minexponent(0._wp) - 1) * 0.5_wp))
|
||||
real(wp), parameter :: sbig = real(radix(0._wp), wp)**( - ceiling( &
|
||||
(maxexponent(0._wp) + digits(0._wp) - 1) * 0.5_wp))
|
||||
(maxexponent(0._wp) - digits(0._wp) + 1) * 0.5_wp))
|
||||
! ..
|
||||
! .. Scalar Arguments ..
|
||||
integer :: incx, n
|
||||
|
||||
+1
-1
@@ -76,7 +76,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup rot
|
||||
*> \ingroup single_blas_level1
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
||||
+9
-8
@@ -5,16 +5,19 @@
|
||||
! Online html documentation available at
|
||||
! http://www.netlib.org/lapack/explore-html/
|
||||
!
|
||||
! Definition:
|
||||
! ===========
|
||||
!
|
||||
! SROTG constructs a plane rotation
|
||||
! [ c s ] [ a ] = [ r ]
|
||||
! [ -s c ] [ b ] [ 0 ]
|
||||
! satisfying c**2 + s**2 = 1.
|
||||
!
|
||||
!> \par Purpose:
|
||||
! =============
|
||||
!>
|
||||
!> \verbatim
|
||||
!>
|
||||
!> SROTG constructs a plane rotation
|
||||
!> [ c s ] [ a ] = [ r ]
|
||||
!> [ -s c ] [ b ] [ 0 ]
|
||||
!> satisfying c**2 + s**2 = 1.
|
||||
!>
|
||||
!> The computation uses the formulas
|
||||
!> sigma = sgn(a) if |a| > |b|
|
||||
!> = sgn(b) if |b| >= |a|
|
||||
@@ -31,8 +34,6 @@
|
||||
!> If |z| > 1, set c = 1/z and s = sqrt( 1 - c**2).
|
||||
!>
|
||||
!> \endverbatim
|
||||
!>
|
||||
!> @see lartg, @see lartgp
|
||||
!
|
||||
! Arguments:
|
||||
! ==========
|
||||
@@ -73,7 +74,7 @@
|
||||
!>
|
||||
!> Weslley Pereira, University of Colorado Denver, USA
|
||||
!
|
||||
!> \ingroup rotg
|
||||
!> \ingroup single_blas_level1
|
||||
!
|
||||
!> \par Further Details:
|
||||
! =====================
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user