Merge pull request #25 from xianyi/develop

rebase
This commit is contained in:
Martin Kroeker 2021-04-30 13:47:17 +02:00 committed by GitHub
commit 3a30c12019
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
32 changed files with 159 additions and 94 deletions

View File

@ -167,7 +167,6 @@ ifeq ($(NO_SHARED), 1)
$(error OpenBLAS: neither static nor shared are enabled.) $(error OpenBLAS: neither static nor shared are enabled.)
endif endif
endif endif
@-ln -fs $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
@for d in $(SUBDIRS) ; \ @for d in $(SUBDIRS) ; \
do if test -d $$d; then \ do if test -d $$d; then \
$(MAKE) -C $$d $(@F) || exit 1 ; \ $(MAKE) -C $$d $(@F) || exit 1 ; \
@ -196,6 +195,7 @@ endif
ifdef USE_THREAD ifdef USE_THREAD
@echo USE_THREAD=$(USE_THREAD) >> Makefile.conf_last @echo USE_THREAD=$(USE_THREAD) >> Makefile.conf_last
endif endif
@-ln -fs $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
@touch lib.grd @touch lib.grd
prof : prof_blas prof_lapack prof : prof_blas prof_lapack

View File

@ -4,6 +4,14 @@ trigger:
branches: branches:
include: include:
- develop - develop
resources:
containers:
- container: oneapi-hpckit
image: intel/oneapi-hpckit:latest
options: '-v /usr/bin/sudo:/usr/bin/sudo -v /usr/lib/sudo/libsudo_util.so.0:/usr/lib/sudo/libsudo_util.so.0 -v /usr/lib/sudo/sudoers.so:/usr/lib/sudo/sudoers.so'
- container: oneapi-basekit
image: intel/oneapi-basekit:latest
options: '-v /usr/bin/sudo:/usr/bin/sudo -v /usr/lib/sudo/libsudo_util.so.0:/usr/lib/sudo/libsudo_util.so.0 -v /usr/lib/sudo/sudoers.so:/usr/lib/sudo/sudoers.so'
jobs: jobs:
# manylinux1 is useful to test because the # manylinux1 is useful to test because the
@ -94,7 +102,38 @@ jobs:
- script: | - script: |
brew update brew update
brew install llvm libomp brew install llvm libomp
brew tap LouisBrunner/valgrind make TARGET=CORE2 USE_OPENMP=1 INTERFACE64=1 DYNAMIC_ARCH=1 CC=/usr/local/opt/llvm/bin/clang FC=gfortran-10
brew install --HEAD LouisBrunner/valgrind/valgrind
make TARGET=SANDYBRIDGE NO_AVX512=1 USE_OPENMP=1 INTERFACE64=1 DYNAMIC_ARCH=1 DYNAMIC_LIST=SANDYBRIDGE DEBUG=1 NO_PARALLEL_MAKE=1 CC=/usr/local/opt/llvm/bin/clang FC=gfortran-10 - job: OSX_Ifort_Clang
cd ctest; OMP_NUM_THREADS=1 valgrind ./xscblat2 <sin2 pool:
vmImage: 'macOS-10.15'
variables:
LD_LIBRARY_PATH: /usr/local/opt/llvm/lib
MACOS_HPCKIT_URL: https://registrationcenter-download.intel.com/akdlm/irc_nas/17643/m_HPCKit_p_2021.2.0.2903_offline.dmg
LIBRARY_PATH: /usr/local/opt/llvm/lib
MACOS_FORTRAN_COMPONENTS: intel.oneapi.mac.ifort-compiler
steps:
- script: |
brew update
brew install llvm libomp
sudo mkdir -p /opt/intel
sudo chown $USER /opt/intel
displayName: prepare for cache restore
- task: Cache@2
inputs:
path: /opt/intel/oneapi
key: '"install" | "$(MACOS_HPCKIT_URL)" | "$(MACOS_FORTRAN_COMPONENTS)"'
cacheHitVar: CACHE_RESTORED
- script: |
curl --output webimage.dmg --url $(MACOS_HPCKIT_URL) --retry 5 --retry-delay 5
hdiutil attach webimage.dmg
sudo /Volumes/"$(basename "$(MACOS_HPCKIT_URL)" .dmg)"/bootstrapper.app/Contents/MacOS/bootstrapper -s --action install --components="$(MACOS_FORTRAN_COMPONENTS)" --eula=accept --continue-with-optional-error=yes --log-dir=.
installer_exit_code=$?
hdiutil detach /Volumes/"$(basename "$URL" .dmg)" -quiet
exit $installer_exit_code
displayName: install
condition: ne(variables.CACHE_RESTORED, 'true')
- script: |
source /opt/intel/oneapi/setvars.sh
make CC=/usr/local/opt/llvm/bin/clang FC=ifort

View File

@ -139,9 +139,13 @@ endif
ifneq (,$(filter 1 2,$(NOFORTRAN))) ifneq (,$(filter 1 2,$(NOFORTRAN)))
#only build without Fortran #only build without Fortran
$(CC) $(CFLAGS) $(LDFLAGS) -all_load -headerpad_max_install_names -install_name "$(CURDIR)/../$(INTERNALNAME)" -dynamiclib -o ../$(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def $(FEXTRALIB) $(CC) $(CFLAGS) $(LDFLAGS) -all_load -headerpad_max_install_names -install_name "$(CURDIR)/../$(INTERNALNAME)" -dynamiclib -o ../$(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def $(FEXTRALIB)
else
ifeq ($(F_COMPILER), INTEL)
$(FC) $(FFLAGS) $(LDFLAGS) -all-load -headerpad_max_install_names -install_name "$(CURDIR)/../$(INTERNALNAME)" -dynamiclib -o ../$(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def
else else
$(FC) $(FFLAGS) $(LDFLAGS) -all_load -headerpad_max_install_names -install_name "$(CURDIR)/../$(INTERNALNAME)" -dynamiclib -o ../$(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def $(FEXTRALIB) $(FC) $(FFLAGS) $(LDFLAGS) -all_load -headerpad_max_install_names -install_name "$(CURDIR)/../$(INTERNALNAME)" -dynamiclib -o ../$(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def $(FEXTRALIB)
endif endif
endif
dllinit.$(SUFFIX) : dllinit.c dllinit.$(SUFFIX) : dllinit.c
$(CC) $(CFLAGS) -c -o $(@F) -s $< $(CC) $(CFLAGS) -c -o $(@F) -s $<

View File

@ -391,10 +391,6 @@ if ($link ne "") {
} }
if ($vendor eq "INTEL"){
$linker_a .= "-lgfortran"
}
if ($vendor eq "FLANG"){ if ($vendor eq "FLANG"){
$linker_a .= "-lflang" $linker_a .= "-lflang"
} }

View File

@ -79,8 +79,12 @@ void NAME(FLOAT *DA, FLOAT *DB, FLOAT *C, FLOAT *S){
aa_i = fabs(da_r); aa_i = fabs(da_r);
} }
scale = (aa_i / aa_r); if (aa_r == ZERO) {
ada = aa_r * sqrt(ONE + scale * scale); ada = 0.;
} else {
scale = (aa_i / aa_r);
ada = aa_r * sqrt(ONE + scale * scale);
}
bb_r = fabs(db_r); bb_r = fabs(db_r);
bb_i = fabs(db_i); bb_i = fabs(db_i);
@ -90,9 +94,12 @@ void NAME(FLOAT *DA, FLOAT *DB, FLOAT *C, FLOAT *S){
bb_i = fabs(bb_r); bb_i = fabs(bb_r);
} }
scale = (bb_i / bb_r); if (bb_r == ZERO) {
adb = bb_r * sqrt(ONE + scale * scale); adb = 0.;
} else {
scale = (bb_i / bb_r);
adb = bb_r * sqrt(ONE + scale * scale);
}
scale = ada + adb; scale = ada + adb;
aa_r = da_r / scale; aa_r = da_r / scale;

View File

@ -1,6 +1,4 @@
/* need a new enough GCC for avx512 support */ #if defined(HAVE_FMA3) && defined(HAVE_AVX2)
#if (( defined(__GNUC__) && __GNUC__ > 6 && defined(__AVX512CD__)) || (defined(__clang__) && __clang_major__ >= 9))
#define HAVE_DROT_KERNEL 1 #define HAVE_DROT_KERNEL 1
#include <immintrin.h> #include <immintrin.h>

View File

@ -566,8 +566,8 @@ void LAPACK_cgbrfsx(
lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs,
lapack_complex_float const* AB, lapack_int const* ldab, lapack_complex_float const* AB, lapack_int const* ldab,
lapack_complex_float const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, lapack_complex_float const* AFB, lapack_int const* ldafb, lapack_int const* ipiv,
float* R, const float* R,
float* C, const float* C,
lapack_complex_float const* B, lapack_int const* ldb, lapack_complex_float const* B, lapack_int const* ldb,
lapack_complex_float* X, lapack_int const* ldx, lapack_complex_float* X, lapack_int const* ldx,
float* rcond, float* rcond,
@ -585,8 +585,8 @@ void LAPACK_dgbrfsx(
lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs,
double const* AB, lapack_int const* ldab, double const* AB, lapack_int const* ldab,
double const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, double const* AFB, lapack_int const* ldafb, lapack_int const* ipiv,
double* R, const double* R,
double* C, const double* C,
double const* B, lapack_int const* ldb, double const* B, lapack_int const* ldb,
double* X, lapack_int const* ldx, double* X, lapack_int const* ldx,
double* rcond, double* rcond,
@ -604,8 +604,8 @@ void LAPACK_sgbrfsx(
lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs,
float const* AB, lapack_int const* ldab, float const* AB, lapack_int const* ldab,
float const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, float const* AFB, lapack_int const* ldafb, lapack_int const* ipiv,
float* R, const float* R,
float* C, const float* C,
float const* B, lapack_int const* ldb, float const* B, lapack_int const* ldb,
float* X, lapack_int const* ldx, float* X, lapack_int const* ldx,
float* rcond, float* rcond,
@ -623,8 +623,8 @@ void LAPACK_zgbrfsx(
lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs,
lapack_complex_double const* AB, lapack_int const* ldab, lapack_complex_double const* AB, lapack_int const* ldab,
lapack_complex_double const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, lapack_complex_double const* AFB, lapack_int const* ldafb, lapack_int const* ipiv,
double* R, const double* R,
double* C, const double* C,
lapack_complex_double const* B, lapack_int const* ldb, lapack_complex_double const* B, lapack_int const* ldb,
lapack_complex_double* X, lapack_int const* ldx, lapack_complex_double* X, lapack_int const* ldx,
double* rcond, double* rcond,
@ -4913,7 +4913,7 @@ void LAPACK_cherfsx(
lapack_int const* n, lapack_int const* nrhs, lapack_int const* n, lapack_int const* nrhs,
lapack_complex_float const* A, lapack_int const* lda, lapack_complex_float const* A, lapack_int const* lda,
lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv,
float* S, const float* S,
lapack_complex_float const* B, lapack_int const* ldb, lapack_complex_float const* B, lapack_int const* ldb,
lapack_complex_float* X, lapack_int const* ldx, lapack_complex_float* X, lapack_int const* ldx,
float* rcond, float* rcond,
@ -4931,7 +4931,7 @@ void LAPACK_zherfsx(
lapack_int const* n, lapack_int const* nrhs, lapack_int const* n, lapack_int const* nrhs,
lapack_complex_double const* A, lapack_int const* lda, lapack_complex_double const* A, lapack_int const* lda,
lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv,
double* S, const double* S,
lapack_complex_double const* B, lapack_int const* ldb, lapack_complex_double const* B, lapack_int const* ldb,
lapack_complex_double* X, lapack_int const* ldx, lapack_complex_double* X, lapack_int const* ldx,
double* rcond, double* rcond,
@ -8005,7 +8005,7 @@ void LAPACK_cporfsx(
lapack_int const* n, lapack_int const* nrhs, lapack_int const* n, lapack_int const* nrhs,
lapack_complex_float const* A, lapack_int const* lda, lapack_complex_float const* A, lapack_int const* lda,
lapack_complex_float const* AF, lapack_int const* ldaf, lapack_complex_float const* AF, lapack_int const* ldaf,
float* S, const float* S,
lapack_complex_float const* B, lapack_int const* ldb, lapack_complex_float const* B, lapack_int const* ldb,
lapack_complex_float* X, lapack_int const* ldx, lapack_complex_float* X, lapack_int const* ldx,
float* rcond, float* rcond,
@ -8023,7 +8023,7 @@ void LAPACK_dporfsx(
lapack_int const* n, lapack_int const* nrhs, lapack_int const* n, lapack_int const* nrhs,
double const* A, lapack_int const* lda, double const* A, lapack_int const* lda,
double const* AF, lapack_int const* ldaf, double const* AF, lapack_int const* ldaf,
double* S, const double* S,
double const* B, lapack_int const* ldb, double const* B, lapack_int const* ldb,
double* X, lapack_int const* ldx, double* X, lapack_int const* ldx,
double* rcond, double* rcond,
@ -8041,7 +8041,7 @@ void LAPACK_sporfsx(
lapack_int const* n, lapack_int const* nrhs, lapack_int const* n, lapack_int const* nrhs,
float const* A, lapack_int const* lda, float const* A, lapack_int const* lda,
float const* AF, lapack_int const* ldaf, float const* AF, lapack_int const* ldaf,
float* S, const float* S,
float const* B, lapack_int const* ldb, float const* B, lapack_int const* ldb,
float* X, lapack_int const* ldx, float* X, lapack_int const* ldx,
float* rcond, float* rcond,
@ -8059,7 +8059,7 @@ void LAPACK_zporfsx(
lapack_int const* n, lapack_int const* nrhs, lapack_int const* n, lapack_int const* nrhs,
lapack_complex_double const* A, lapack_int const* lda, lapack_complex_double const* A, lapack_int const* lda,
lapack_complex_double const* AF, lapack_int const* ldaf, lapack_complex_double const* AF, lapack_int const* ldaf,
double* S, const double* S,
lapack_complex_double const* B, lapack_int const* ldb, lapack_complex_double const* B, lapack_int const* ldb,
lapack_complex_double* X, lapack_int const* ldx, lapack_complex_double* X, lapack_int const* ldx,
double* rcond, double* rcond,
@ -10756,7 +10756,7 @@ void LAPACK_csyrfsx(
lapack_int const* n, lapack_int const* nrhs, lapack_int const* n, lapack_int const* nrhs,
lapack_complex_float const* A, lapack_int const* lda, lapack_complex_float const* A, lapack_int const* lda,
lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv,
float* S, const float* S,
lapack_complex_float const* B, lapack_int const* ldb, lapack_complex_float const* B, lapack_int const* ldb,
lapack_complex_float* X, lapack_int const* ldx, lapack_complex_float* X, lapack_int const* ldx,
float* rcond, float* rcond,
@ -10774,7 +10774,7 @@ void LAPACK_dsyrfsx(
lapack_int const* n, lapack_int const* nrhs, lapack_int const* n, lapack_int const* nrhs,
double const* A, lapack_int const* lda, double const* A, lapack_int const* lda,
double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, double const* AF, lapack_int const* ldaf, lapack_int const* ipiv,
double* S, const double* S,
double const* B, lapack_int const* ldb, double const* B, lapack_int const* ldb,
double* X, lapack_int const* ldx, double* X, lapack_int const* ldx,
double* rcond, double* rcond,
@ -10792,7 +10792,7 @@ void LAPACK_ssyrfsx(
lapack_int const* n, lapack_int const* nrhs, lapack_int const* n, lapack_int const* nrhs,
float const* A, lapack_int const* lda, float const* A, lapack_int const* lda,
float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, float const* AF, lapack_int const* ldaf, lapack_int const* ipiv,
float* S, const float* S,
float const* B, lapack_int const* ldb, float const* B, lapack_int const* ldb,
float* X, lapack_int const* ldx, float* X, lapack_int const* ldx,
float* rcond, float* rcond,
@ -10810,7 +10810,7 @@ void LAPACK_zsyrfsx(
lapack_int const* n, lapack_int const* nrhs, lapack_int const* n, lapack_int const* nrhs,
lapack_complex_double const* A, lapack_int const* lda, lapack_complex_double const* A, lapack_int const* lda,
lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv,
double* S, const double* S,
lapack_complex_double const* B, lapack_int const* ldb, lapack_complex_double const* B, lapack_int const* ldb,
lapack_complex_double* X, lapack_int const* ldx, lapack_complex_double* X, lapack_int const* ldx,
double* rcond, double* rcond,

View File

@ -83,6 +83,7 @@ lapack_int LAPACKE_clascl( int matrix_layout, char type, lapack_int kl,
LAPACKE_cgb_nancheck( LAPACK_COL_MAJOR, n, m, n-1, 1, a-1, lda+1 ) ) { LAPACKE_cgb_nancheck( LAPACK_COL_MAJOR, n, m, n-1, 1, a-1, lda+1 ) ) {
return -9; return -9;
} }
break;
case 'B': case 'B':
// TYPE = 'B' - lower part of symmetric band matrix (assume m==n) // TYPE = 'B' - lower part of symmetric band matrix (assume m==n)
if( LAPACKE_chb_nancheck( matrix_layout, 'L', n, kl, a, lda ) ) { if( LAPACKE_chb_nancheck( matrix_layout, 'L', n, kl, a, lda ) ) {

View File

@ -83,6 +83,7 @@ lapack_int LAPACKE_dlascl( int matrix_layout, char type, lapack_int kl,
LAPACKE_dgb_nancheck( LAPACK_COL_MAJOR, n, m, n-1, 1, a-1, lda+1 ) ) { LAPACKE_dgb_nancheck( LAPACK_COL_MAJOR, n, m, n-1, 1, a-1, lda+1 ) ) {
return -9; return -9;
} }
break;
case 'B': case 'B':
// TYPE = 'B' - lower part of symmetric band matrix (assume m==n) // TYPE = 'B' - lower part of symmetric band matrix (assume m==n)
if( LAPACKE_dsb_nancheck( matrix_layout, 'L', n, kl, a, lda ) ) { if( LAPACKE_dsb_nancheck( matrix_layout, 'L', n, kl, a, lda ) ) {

View File

@ -83,6 +83,7 @@ lapack_int LAPACKE_slascl( int matrix_layout, char type, lapack_int kl,
LAPACKE_sgb_nancheck( LAPACK_COL_MAJOR, n, m, n-1, 1, a-1, lda+1 ) ) { LAPACKE_sgb_nancheck( LAPACK_COL_MAJOR, n, m, n-1, 1, a-1, lda+1 ) ) {
return -9; return -9;
} }
break;
case 'B': case 'B':
// TYPE = 'B' - lower part of symmetric band matrix (assume m==n) // TYPE = 'B' - lower part of symmetric band matrix (assume m==n)
if( LAPACKE_ssb_nancheck( matrix_layout, 'L', n, kl, a, lda ) ) { if( LAPACKE_ssb_nancheck( matrix_layout, 'L', n, kl, a, lda ) ) {

View File

@ -83,6 +83,7 @@ lapack_int LAPACKE_zlascl( int matrix_layout, char type, lapack_int kl,
LAPACKE_zgb_nancheck( LAPACK_COL_MAJOR, n, m, n-1, 1, a-1, lda+1 ) ) { LAPACKE_zgb_nancheck( LAPACK_COL_MAJOR, n, m, n-1, 1, a-1, lda+1 ) ) {
return -9; return -9;
} }
break;
case 'B': case 'B':
// TYPE = 'B' - lower part of symmetric band matrix (assume m==n) // TYPE = 'B' - lower part of symmetric band matrix (assume m==n)
if( LAPACKE_zhb_nancheck( matrix_layout, 'L', n, kl, a, lda ) ) { if( LAPACKE_zhb_nancheck( matrix_layout, 'L', n, kl, a, lda ) ) {

View File

@ -222,8 +222,8 @@
CALL CUNGQR( M, N, K, A, LDA, TAU, WORK, -1, IINFO ) CALL CUNGQR( M, N, K, A, LDA, TAU, WORK, -1, IINFO )
ELSE ELSE
IF( M.GT.1 ) THEN IF( M.GT.1 ) THEN
CALL CUNGQR( M-1, M-1, M-1, A( 2, 2 ), LDA, TAU, WORK, CALL CUNGQR( M-1, M-1, M-1, A, LDA, TAU, WORK, -1,
$ -1, IINFO ) $ IINFO )
END IF END IF
END IF END IF
ELSE ELSE
@ -231,8 +231,8 @@
CALL CUNGLQ( M, N, K, A, LDA, TAU, WORK, -1, IINFO ) CALL CUNGLQ( M, N, K, A, LDA, TAU, WORK, -1, IINFO )
ELSE ELSE
IF( N.GT.1 ) THEN IF( N.GT.1 ) THEN
CALL CUNGLQ( N-1, N-1, N-1, A( 2, 2 ), LDA, TAU, WORK, CALL CUNGLQ( N-1, N-1, N-1, A, LDA, TAU, WORK, -1,
$ -1, IINFO ) $ IINFO )
END IF END IF
END IF END IF
END IF END IF

View File

@ -184,10 +184,18 @@
* *
* 2-by-2 case. * 2-by-2 case.
* *
IF( Z( 2 ).LT.ZERO .OR. Z( 3 ).LT.ZERO ) THEN IF( Z( 1 ).LT.ZERO ) THEN
INFO = -2 INFO = -201
CALL XERBLA( 'DLASQ2', 2 ) CALL XERBLA( 'DLASQ2', 2 )
RETURN RETURN
ELSE IF( Z( 2 ).LT.ZERO ) THEN
INFO = -202
CALL XERBLA( 'DLASQ2', 2 )
RETURN
ELSE IF( Z( 3 ).LT.ZERO ) THEN
INFO = -203
CALL XERBLA( 'DLASQ2', 2 )
RETURN
ELSE IF( Z( 3 ).GT.Z( 1 ) ) THEN ELSE IF( Z( 3 ).GT.Z( 1 ) ) THEN
D = Z( 3 ) D = Z( 3 )
Z( 3 ) = Z( 1 ) Z( 3 ) = Z( 1 )

View File

@ -221,8 +221,8 @@
CALL DORGQR( M, N, K, A, LDA, TAU, WORK, -1, IINFO ) CALL DORGQR( M, N, K, A, LDA, TAU, WORK, -1, IINFO )
ELSE ELSE
IF( M.GT.1 ) THEN IF( M.GT.1 ) THEN
CALL DORGQR( M-1, M-1, M-1, A( 2, 2 ), LDA, TAU, WORK, CALL DORGQR( M-1, M-1, M-1, A, LDA, TAU, WORK, -1,
$ -1, IINFO ) $ IINFO )
END IF END IF
END IF END IF
ELSE ELSE
@ -230,8 +230,8 @@
CALL DORGLQ( M, N, K, A, LDA, TAU, WORK, -1, IINFO ) CALL DORGLQ( M, N, K, A, LDA, TAU, WORK, -1, IINFO )
ELSE ELSE
IF( N.GT.1 ) THEN IF( N.GT.1 ) THEN
CALL DORGLQ( N-1, N-1, N-1, A( 2, 2 ), LDA, TAU, WORK, CALL DORGLQ( N-1, N-1, N-1, A, LDA, TAU, WORK, -1,
$ -1, IINFO ) $ IINFO )
END IF END IF
END IF END IF
END IF END IF

View File

@ -183,10 +183,18 @@
* *
* 2-by-2 case. * 2-by-2 case.
* *
IF( Z( 2 ).LT.ZERO .OR. Z( 3 ).LT.ZERO ) THEN IF( Z( 1 ).LT.ZERO ) THEN
INFO = -2 INFO = -201
CALL XERBLA( 'DLASQ2', 2 )
RETURN
ELSE IF( Z( 2 ).LT.ZERO ) THEN
INFO = -202
CALL XERBLA( 'SLASQ2', 2 ) CALL XERBLA( 'SLASQ2', 2 )
RETURN RETURN
ELSE IF( Z( 3 ).LT.ZERO ) THEN
INFO = -203
CALL XERBLA( 'SLASQ2', 2 )
RETURN
ELSE IF( Z( 3 ).GT.Z( 1 ) ) THEN ELSE IF( Z( 3 ).GT.Z( 1 ) ) THEN
D = Z( 3 ) D = Z( 3 )
Z( 3 ) = Z( 1 ) Z( 3 ) = Z( 1 )

View File

@ -221,8 +221,8 @@
CALL SORGQR( M, N, K, A, LDA, TAU, WORK, -1, IINFO ) CALL SORGQR( M, N, K, A, LDA, TAU, WORK, -1, IINFO )
ELSE ELSE
IF( M.GT.1 ) THEN IF( M.GT.1 ) THEN
CALL SORGQR( M-1, M-1, M-1, A( 2, 2 ), LDA, TAU, WORK, CALL SORGQR( M-1, M-1, M-1, A, LDA, TAU, WORK, -1,
$ -1, IINFO ) $ IINFO )
END IF END IF
END IF END IF
ELSE ELSE
@ -230,8 +230,8 @@
CALL SORGLQ( M, N, K, A, LDA, TAU, WORK, -1, IINFO ) CALL SORGLQ( M, N, K, A, LDA, TAU, WORK, -1, IINFO )
ELSE ELSE
IF( N.GT.1 ) THEN IF( N.GT.1 ) THEN
CALL SORGLQ( N-1, N-1, N-1, A( 2, 2 ), LDA, TAU, WORK, CALL SORGLQ( N-1, N-1, N-1, A, LDA, TAU, WORK, -1,
$ -1, IINFO ) $ IINFO )
END IF END IF
END IF END IF
END IF END IF

View File

@ -222,8 +222,8 @@
CALL ZUNGQR( M, N, K, A, LDA, TAU, WORK, -1, IINFO ) CALL ZUNGQR( M, N, K, A, LDA, TAU, WORK, -1, IINFO )
ELSE ELSE
IF( M.GT.1 ) THEN IF( M.GT.1 ) THEN
CALL ZUNGQR( M-1, M-1, M-1, A( 2, 2 ), LDA, TAU, WORK, CALL ZUNGQR( M-1, M-1, M-1, A, LDA, TAU, WORK, -1,
$ -1, IINFO ) $ IINFO )
END IF END IF
END IF END IF
ELSE ELSE
@ -231,8 +231,8 @@
CALL ZUNGLQ( M, N, K, A, LDA, TAU, WORK, -1, IINFO ) CALL ZUNGLQ( M, N, K, A, LDA, TAU, WORK, -1, IINFO )
ELSE ELSE
IF( N.GT.1 ) THEN IF( N.GT.1 ) THEN
CALL ZUNGLQ( N-1, N-1, N-1, A( 2, 2 ), LDA, TAU, WORK, CALL ZUNGLQ( N-1, N-1, N-1, A, LDA, TAU, WORK, -1,
$ -1, IINFO ) $ IINFO )
END IF END IF
END IF END IF
END IF END IF

View File

@ -1871,7 +1871,7 @@
CALL XLAENV( 9, 25 ) CALL XLAENV( 9, 25 )
IF( TSTERR ) THEN IF( TSTERR ) THEN
#if defined(_OPENMP) #if defined(_OPENMP)
N_THREADS = OMP_GET_NUM_THREADS() N_THREADS = OMP_GET_MAX_THREADS()
CALL OMP_SET_NUM_THREADS(1) CALL OMP_SET_NUM_THREADS(1)
#endif #endif
CALL CERRST( 'CST', NOUT ) CALL CERRST( 'CST', NOUT )
@ -2338,7 +2338,7 @@
CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
IF( TSTERR ) THEN IF( TSTERR ) THEN
#if defined(_OPENMP) #if defined(_OPENMP)
N_THREADS = OMP_GET_NUM_THREADS() N_THREADS = OMP_GET_MAX_THREADS()
CALL OMP_SET_NUM_THREADS(1) CALL OMP_SET_NUM_THREADS(1)
#endif #endif
CALL CERRST( 'CHB', NOUT ) CALL CERRST( 'CHB', NOUT )

View File

@ -1876,7 +1876,7 @@
CALL XLAENV( 9, 25 ) CALL XLAENV( 9, 25 )
IF( TSTERR ) THEN IF( TSTERR ) THEN
#if defined(_OPENMP) #if defined(_OPENMP)
N_THREADS = OMP_GET_NUM_THREADS() N_THREADS = OMP_GET_MAX_THREADS()
CALL OMP_SET_NUM_THREADS(1) CALL OMP_SET_NUM_THREADS(1)
#endif #endif
CALL DERRST( 'DST', NOUT ) CALL DERRST( 'DST', NOUT )

View File

@ -1877,7 +1877,7 @@
CALL XLAENV( 9, 25 ) CALL XLAENV( 9, 25 )
IF( TSTERR ) THEN IF( TSTERR ) THEN
#if defined(_OPENMP) #if defined(_OPENMP)
N_THREADS = OMP_GET_NUM_THREADS() N_THREADS = OMP_GET_MAX_THREADS()
CALL OMP_SET_NUM_THREADS(1) CALL OMP_SET_NUM_THREADS(1)
#endif #endif
CALL SERRST( 'SST', NOUT ) CALL SERRST( 'SST', NOUT )

View File

@ -1871,7 +1871,7 @@
CALL XLAENV( 9, 25 ) CALL XLAENV( 9, 25 )
IF( TSTERR ) THEN IF( TSTERR ) THEN
#if defined(_OPENMP) #if defined(_OPENMP)
N_THREADS = OMP_GET_NUM_THREADS() N_THREADS = OMP_GET_MAX_THREADS()
CALL OMP_SET_NUM_THREADS(1) CALL OMP_SET_NUM_THREADS(1)
#endif #endif
CALL ZERRST( 'ZST', NOUT ) CALL ZERRST( 'ZST', NOUT )
@ -2336,7 +2336,7 @@
CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
IF( TSTERR ) THEN IF( TSTERR ) THEN
#if defined(_OPENMP) #if defined(_OPENMP)
N_THREADS = OMP_GET_NUM_THREADS() N_THREADS = OMP_GET_MAX_THREADS()
CALL OMP_SET_NUM_THREADS(1) CALL OMP_SET_NUM_THREADS(1)
#endif #endif
CALL ZERRST( 'ZHB', NOUT ) CALL ZERRST( 'ZHB', NOUT )

View File

@ -707,9 +707,10 @@
CALL CLACPY( 'Full', N, NRHS, BSAV, LDA, B, LDA ) CALL CLACPY( 'Full', N, NRHS, BSAV, LDA, B, LDA )
IF( .NOT.PREFAC ) IF( .NOT.PREFAC )
$ CALL CLASET( 'Full', N, N, ZERO, ZERO, AFAC, $ CALL CLASET( 'Full', N, N, CMPLX( ZERO ),
$ LDA ) $ CMPLX( ZERO ), AFAC, LDA )
CALL CLASET( 'Full', N, NRHS, ZERO, ZERO, X, LDA ) CALL CLASET( 'Full', N, NRHS, CMPLX( ZERO ),
$ CMPLX( ZERO ), X, LDA )
IF( IEQUED.GT.1 .AND. N.GT.0 ) THEN IF( IEQUED.GT.1 .AND. N.GT.0 ) THEN
* *
* Equilibrate the matrix if FACT = 'F' and * Equilibrate the matrix if FACT = 'F' and

View File

@ -449,11 +449,11 @@
* Reconstruct matrix from factors and compute * Reconstruct matrix from factors and compute
* residual. * residual.
* *
c CALL CHET01_AA( UPLO, N, A, LDA, AFAC, LDA, c CALL CHET01_AA( UPLO, N, A, LDA, AFAC, LDA,
c $ IWORK, AINV, LDA, RWORK, c $ IWORK, AINV, LDA, RWORK,
c $ RESULT( 2 ) ) c $ RESULT( 2 ) )
c NT = 2 c NT = 2
NT = 1 NT = 1
* *
* Print information about the tests that did not pass * Print information about the tests that did not pass
* the threshold. * the threshold.

View File

@ -449,19 +449,19 @@
* Form the inverse of A. * Form the inverse of A.
* *
CALL CPOTRI( UPLO, N, A, LDA, INFO ) CALL CPOTRI( UPLO, N, A, LDA, INFO )
IF ( N .NE. 0 ) THEN
* *
* Compute the 1-norm condition number of A. * Compute the 1-norm condition number of A.
* *
IF ( N .NE. 0 ) THEN
AINVNM = CLANHE( '1', UPLO, N, A, LDA, AINVNM = CLANHE( '1', UPLO, N, A, LDA,
+ S_WORK_CLANHE ) + S_WORK_CLANHE )
RCONDC = ( ONE / ANORM ) / AINVNM RCONDC = ( ONE / ANORM ) / AINVNM
* *
* Restore the matrix A. * Restore the matrix A.
* *
CALL CLACPY( UPLO, N, N, ASAV, LDA, A, LDA ) CALL CLACPY( UPLO, N, N, ASAV, LDA, A, LDA )
END IF END IF
* *
END IF END IF
* *

View File

@ -443,8 +443,7 @@
* *
CALL DPOTRI( UPLO, N, A, LDA, INFO ) CALL DPOTRI( UPLO, N, A, LDA, INFO )
IF ( N .NE. 0 ) THEN IF ( N .NE. 0 ) THEN
* *
* Compute the 1-norm condition number of A. * Compute the 1-norm condition number of A.
* *

View File

@ -443,7 +443,7 @@
* *
CALL SPOTRI( UPLO, N, A, LDA, INFO ) CALL SPOTRI( UPLO, N, A, LDA, INFO )
IF ( N .NE. 0 ) THEN IF ( N .NE. 0 ) THEN
* *
* Compute the 1-norm condition number of A. * Compute the 1-norm condition number of A.
* *

View File

@ -707,9 +707,10 @@
CALL ZLACPY( 'Full', N, NRHS, BSAV, LDA, B, LDA ) CALL ZLACPY( 'Full', N, NRHS, BSAV, LDA, B, LDA )
IF( .NOT.PREFAC ) IF( .NOT.PREFAC )
$ CALL ZLASET( 'Full', N, N, ZERO, ZERO, AFAC, $ CALL ZLASET( 'Full', N, N, DCMPLX( ZERO ),
$ LDA ) $ DCMPLX( ZERO ), AFAC, LDA )
CALL ZLASET( 'Full', N, NRHS, ZERO, ZERO, X, LDA ) CALL ZLASET( 'Full', N, NRHS, DCMPLX( ZERO ),
$ DCMPLX( ZERO ), X, LDA )
IF( IEQUED.GT.1 .AND. N.GT.0 ) THEN IF( IEQUED.GT.1 .AND. N.GT.0 ) THEN
* *
* Equilibrate the matrix if FACT = 'F' and * Equilibrate the matrix if FACT = 'F' and

View File

@ -599,10 +599,10 @@
* Restore the matrices A and B. * Restore the matrices A and B.
* *
IF( IFACT.EQ.2 ) IF( IFACT.EQ.2 )
$ CALL ZLASET( UPLO, N, N, CMPLX( ZERO ), $ CALL ZLASET( UPLO, N, N, DCMPLX( ZERO ),
$ CMPLX( ZERO ), AFAC, LDA ) $ DCMPLX( ZERO ), AFAC, LDA )
CALL ZLASET( 'Full', N, NRHS, CMPLX( ZERO ), CALL ZLASET( 'Full', N, NRHS, DCMPLX( ZERO ),
$ CMPLX( ZERO ), X, LDA ) $ DCMPLX( ZERO ), X, LDA )
* *
* Solve the system and compute the condition number * Solve the system and compute the condition number
* and error bounds using ZHESVXX. * and error bounds using ZHESVXX.

View File

@ -611,10 +611,10 @@
CALL ZLACPY( 'Full', N, NRHS, BSAV, LDA, B, LDA ) CALL ZLACPY( 'Full', N, NRHS, BSAV, LDA, B, LDA )
IF( .NOT.PREFAC ) IF( .NOT.PREFAC )
$ CALL ZLASET( UPLO, N, N, CMPLX( ZERO ), $ CALL ZLASET( UPLO, N, N, DCMPLX( ZERO ),
$ CMPLX( ZERO ), AFAC, LDA ) $ DCMPLX( ZERO ), AFAC, LDA )
CALL ZLASET( 'Full', N, NRHS, CMPLX( ZERO ), CALL ZLASET( 'Full', N, NRHS, DCMPLX( ZERO ),
$ CMPLX( ZERO ), X, LDA ) $ DCMPLX( ZERO ), X, LDA )
IF( IEQUED.GT.1 .AND. N.GT.0 ) THEN IF( IEQUED.GT.1 .AND. N.GT.0 ) THEN
* *
* Equilibrate the matrix if FACT='F' and * Equilibrate the matrix if FACT='F' and

View File

@ -450,7 +450,7 @@
* *
CALL ZPOTRI( UPLO, N, A, LDA, INFO ) CALL ZPOTRI( UPLO, N, A, LDA, INFO )
IF ( N .NE. 0 ) THEN IF ( N .NE. 0 ) THEN
* *
* Compute the 1-norm condition number of A. * Compute the 1-norm condition number of A.
* *

View File

@ -605,10 +605,10 @@
* Restore the matrices A and B. * Restore the matrices A and B.
* *
IF( IFACT.EQ.2 ) IF( IFACT.EQ.2 )
$ CALL ZLASET( UPLO, N, N, CMPLX( ZERO ), $ CALL ZLASET( UPLO, N, N, DCMPLX( ZERO ),
$ CMPLX( ZERO ), AFAC, LDA ) $ DCMPLX( ZERO ), AFAC, LDA )
CALL ZLASET( 'Full', N, NRHS, CMPLX( ZERO ), CALL ZLASET( 'Full', N, NRHS, DCMPLX( ZERO ),
$ CMPLX( ZERO ), X, LDA ) $ DCMPLX( ZERO ), X, LDA )
* *
* Solve the system and compute the condition number * Solve the system and compute the condition number
* and error bounds using ZSYSVXX. * and error bounds using ZSYSVXX.

View File

@ -1166,7 +1166,7 @@
$ 2, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_N, $ 2, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_N,
$ ERR_BNDS_C, NPARAMS, PARAMS, W, RW, INFO ) $ ERR_BNDS_C, NPARAMS, PARAMS, W, RW, INFO )
CALL CHKXER( 'ZSYSVXX', INFOT, NOUT, LERR, OK ) CALL CHKXER( 'ZSYSVXX', INFOT, NOUT, LERR, OK )
INFOT = 13 INFOT = 13
EQ = 'N' EQ = 'N'
CALL ZSYSVXX( 'N', 'U', 2, 0, A, 2, AF, 2, IP, EQ, R, B, 1, X, CALL ZSYSVXX( 'N', 'U', 2, 0, A, 2, AF, 2, IP, EQ, R, B, 1, X,
$ 2, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_N, $ 2, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_N,