julie [Wed, 11 Nov 2015 05:13:21 +0000 (05:13 +0000)]
Fix cast for lwork in complex [cz]uncsd2by1 routines
julie [Wed, 11 Nov 2015 03:35:02 +0000 (03:35 +0000)]
Incorporating DBDSVDX tests in dchkbd
Disabling temporarily some [SD]BDSVDX tests - those generate some numerical errors
See email from Osni on Nov 10th 2015
julie [Mon, 9 Nov 2015 00:13:42 +0000 (00:13 +0000)]
Adding routines to Makefile / CMakefile.txt
julie [Mon, 9 Nov 2015 00:10:27 +0000 (00:10 +0000)]
Committing Zlatko Drmac Contribution
julie [Sun, 8 Nov 2015 23:42:08 +0000 (23:42 +0000)]
First commit for Zlatko Drmac Contribution - Fixing z precisions issues + modif sent by Zlatko
julie [Sun, 8 Nov 2015 23:24:14 +0000 (23:24 +0000)]
First commit for Zlatko Drmac Contribution
Contains only source code with Doxygen format and Makefile modifications for
CGESVJ (Jacobi SVD) with its dependencies: CGSVJ0 and CGSVJ1.
TO DO:
- Include Testing
- LAPACKE interface
julie [Fri, 6 Nov 2015 01:16:19 +0000 (01:16 +0000)]
Change DBLE cast by REAL - confirmed with Osni
langou [Wed, 4 Nov 2015 19:54:31 +0000 (19:54 +0000)]
Thanks to Lawrence Mulholland (NAG) for reporting the problem. While the array
E should really be of size N-1, xSYCONV() is not ready for this and so, in the
comment at the header level, we now require E to be of size N. Also xSYTRS2()
is using E(N) = ZERO, so if we make E of size N-1 in xSYCONV(), then we need to
see the impact on xSYTRS2(). This is long term cleaning, so for now, we revert
back to requesting an array E of size N. Thanks Lawrence for noticing this.
julie [Wed, 4 Nov 2015 06:22:56 +0000 (06:22 +0000)]
Commit svdx files sent by Osni on Oct 31st 2015
Updated Makefile
Updated file format (Oxygen)
Small Fix: sdrvbd / cdrvbd has a lot of double / double complex in comments
From Osni:
Files for LAPACK/SRC (all new, additions to Makefile are needed):
- dbdsvdx.f, sbdsvdx.f: full or partial (subset) SVD of a bidiagonal matrix through an associated eigenvalue problem
- dgesvdx.f, sgesvdx.f, zgesvdx.f, cgesvdx.f: full or partial (subset) SVD of a general matrix by invoking bdsvdx
Files for LAPACK/TESTING/EIG :
- dchkbd.f, schkbd.f: added tests 20-34 for bdsvdx
- dbdt04.f, sbdt04.f (new): needed for tests 25 and 30 in chkbd
- dlahd2.f, slahd2.f: added information about tests 20-34 in chkbd
- derrbd.f, serrbd.f: added tests for the values of INFO returned by bdsvdx
- ddrvbd.f, sdrvbd.f, zdrvbd.f, cdrvbd.f: added tests 23-35 (real case) and 15-27 (complex case) for gesvdx.
- dbdt05.f, sbdt05.f, zbdt05.f, cbdt05.f (new): needed for tests 30,33 (real case) and 22,25 (complex case) for gesvdx
- derred.f, serred.f, zerred.f, cerred.f: added tests for the values of INFO returned by gesvdx
Current Issues:
- 16 real tests do not pass the threshold ( ssvd.out) - but seems to go through in debug
- serrbd.f has some DOUBLE PRECISION calculation inside - Is that ok or shall we change it to REAL?
Line 113-119
* Set the variables to innocuous values.
*
DO 20 J = 1, NMAX
DO 10 I = 1, NMAX
A( I, J ) = 1.D0 / DBLE( I+J )
10 CONTINUE
20 CONTINUE
TODO:
- corresponding LAPACKE routines
- Test Doxygen format
julie [Wed, 4 Nov 2015 05:34:49 +0000 (05:34 +0000)]
Fix some typos..
julie [Sun, 1 Nov 2015 16:21:47 +0000 (16:21 +0000)]
remove extra tabs - Thank you Matyas A Sustik
langou [Thu, 29 Oct 2015 05:06:14 +0000 (05:06 +0000)]
In ?syconv, replace the variable name WORK by the variable name E. E is the
standard way to name the supdiagonal/subdiagonal of a symmetric tridiagonal
matrix. Also, E (previously WORK) is of size N-1, not N. So correct this in
the comment.
langou [Thu, 29 Oct 2015 04:58:50 +0000 (04:58 +0000)]
The subroutine DSYCONV stores the supdiagonal of the symmetric 1-by-1 or 2-by-2
block matrix in the array WORK. (Or the subdiagonal, same array.) Before
commit, only the nonzero elements of WORK were initialized to their correct
nonzero values. The zero entries were not initialized and not referenced and
assumed to be zero in subsequent subroutines. This is fine, but I think a
better behavior for the subroutine is to initialize these zero entries to zero.
So the commit is initializing these entries to zero.
Also a (double precision) ZERO in the D routine should have been an (integer)
0.
Also fix some formatting to have C, D, and S consistent.
Note: the indentations, comments of the Z routine is not consistent with C, D and
S. I did not have time to fix this.
langou [Thu, 29 Oct 2015 04:41:20 +0000 (04:41 +0000)]
minor: (1) eliminate trailing spaces in comments and (2) comment indicators
along the left margin of the commented fragment, in order to show explicitly
that the fragment is a comment rather than a code between two comments.
Thanks Dmitry.
langou [Wed, 28 Oct 2015 02:35:58 +0000 (02:35 +0000)]
Remove NaN check from LAPACKE_?laswp and add a comment on why the NaN check is removed.
This might not be the best fix but this will do for now.
Current behavior: LAPACKE_?laswp does not check for NaNs.
See: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=4827 for more information.
Thanks to Dmitry Baksheev from Intel.
julie [Tue, 27 Oct 2015 14:10:26 +0000 (14:10 +0000)]
Apply Christoph Conrads Doxygen patch for xyycsd2by1.f - comment modification only
julie [Tue, 27 Oct 2015 03:16:53 +0000 (03:16 +0000)]
Committing temporary fix for bug 113
Submitted by Osni Marques on Oct 22nd 2015
we just need to set the variable NOFAIL to .false. in _larrf.f (line 260).
As it is now, dsyevr may enter into an infinite loop in some rare cases.
With NOFAIL=.false. the code will return an error message.
julie [Thu, 22 Oct 2015 05:29:34 +0000 (05:29 +0000)]
Fix bug 137 and 138 submitted by Dan Kortschak
Applied patch submitted by Dan Kortschak
julie [Thu, 22 Oct 2015 04:39:19 +0000 (04:39 +0000)]
Fix bug 139 submitted by Christoph Conrads on Oct 6th 2015
"according to the LAPACK documentation, xSTEDC guarantees to
return the eigenvalues in ascending order (parameter D on exit). To
this end, it sorts the eigenvalues if necessary.
If there is only a single subproblem of size n, no sorting algorithm is
called (cf. {s,d}tedc.f, line 450). Furthermore, xLAED0
({s,d}tedc.f:400) does not guarantee to return eigenvalues in ascending
order. Thus, xSTEDC may return eigenvalues that are not in ascending
order."
Applied patch provided by Christoph Conrads: "always sorting the eigenvalues"
lawrence.mulholland [Tue, 13 Oct 2015 12:10:47 +0000 (12:10 +0000)]
bugs in ?GGHD3 : B,LDA-->B,LDB and zeroing of too large a submatrix
langou [Tue, 6 Oct 2015 02:11:30 +0000 (02:11 +0000)]
Quick and dirty bug fix.
Bug report and bug fix from Dan Kortschak.
See:
http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=4810
https://github.com/xianyi/OpenBLAS/issues/642
This is a quick bug fix, this only checks the triangular part of the trapezoid,
the rectangular part is not checked. Another commit should follow up soon.
julie [Mon, 5 Oct 2015 01:26:04 +0000 (01:26 +0000)]
Adding [un/or]csd2by1 routines to LAPACKE
julie [Mon, 5 Oct 2015 00:04:38 +0000 (00:04 +0000)]
Adding xlascl to LAPACKE
julie [Sun, 4 Oct 2015 18:57:19 +0000 (18:57 +0000)]
Updating Copyright with current year
julie [Fri, 25 Sep 2015 05:15:44 +0000 (05:15 +0000)]
Adding xsytrf_rook, xsytrs_rook, xhetrf_rook and xhetrs_rook to LAPACKE
julie [Sat, 19 Sep 2015 19:22:02 +0000 (19:22 +0000)]
Adding xlahrd to DEPRECATED (problem reported by zerothi)
julie [Sat, 19 Sep 2015 16:46:16 +0000 (16:46 +0000)]
Fixing comments in [sd]lasd6
Issue : Parameter IDXQ of function SLASD6 is described as [out], should be described as [in,out].
Reported by dbakshee from INTEL on the forum on Sep 18th 2015
Link: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=13&t=4799
julie [Wed, 16 Sep 2015 05:12:31 +0000 (05:12 +0000)]
Handle Deprecated routines in LAPACKE Makefile
julie [Tue, 15 Sep 2015 07:12:59 +0000 (07:12 +0000)]
Issues and fixes submitted by Christoph Conrads on Sept 14th by email
(1st commit)
-> File modified: DOCS/Doxyfile --
- Doxygen documentation
The Doxygen "project version" is still 3.4.2. The attached patch bumps
this to 3.6.0.
-> let's be ready!
- Doxygen documentation
The Doxygen configuration file uses multiple obsolete tags and warnings
are shown right after starting Doxygen. The warnings are easy to see if
you set "QUIET = YES" in DOCS/Doxyfile.
-> set "QUIET = YES"
-> File modified: SRC/*larfgp.f
It says "non-negatibe" in the documentation of xLARFGP.
-> Fixed typo
-> File modified: SRC/*orcsd2by1.f SRC/*uncsd2by1.f
The parameter M in the xORCSD2BY1 is not the number of columns of X and
there is no X12 (parameter P).
-> Fixed
-> File modified: LAPACKE/src/CMakeLists.txt
The C interfaces for the deprecated GSVD routines are still built with
cmake -DBUILD_DEPRECATED=OFF. This causes a linker error with cmake
-DBUILD_TESTING=ON as soon as the Fortran functions are not found in
liblapack.so.
-> Add a if(BUILD_DEPRECATED)
-> File modified: trunk/LAPACKE/include/lapacke.h
The C declaration (lapacke.h:11840-11843) for xGGSVD3 is in a block
of #defines for LAPACK 3.2.X (see lapacke.h:12089,12122).
-> moved them down
julie [Thu, 10 Sep 2015 07:11:18 +0000 (07:11 +0000)]
Bug Fix for bug0135
Bug reported by kortschak on Sep 10th
Link: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=13&t=4793
Fix typo substituting O with 0
julie [Thu, 3 Sep 2015 06:07:59 +0000 (06:07 +0000)]
Fixing bug 133
Bug reported by the GONUM team member: btracey on LAPACK forum
Link: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=13&t=4771
Description: the number of columns of A depends on the Side, so the test should compare against m or n.
Fix by Julie.
langou [Thu, 3 Sep 2015 03:05:54 +0000 (03:05 +0000)]
Minor edits in the BLAS header to better describe the functionality.
See: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=4786
julie [Wed, 2 Sep 2015 05:32:19 +0000 (05:32 +0000)]
Committing Nico's change about build system improvements for LAPACK
"One of the improvements with the patches is that SOVERSION and VERSION are now properly set and the proper symlinks are created:
```
liblapack.so -> liblapack.so.3
liblapack.so.3 -> liblapack.so.3.5.0
liblapack.so.3.5.0
```
Since BLAS is shipped with LAPACK and no separate version number is given for BLAS, I applied the same there, too."
Tested on Julie's Mac
TO DO: To test under Windows
====
Updated OSX RPATH settings
In response to CMake 3.0 generating warnings regarding policy CMP0042,
the OSX RPATH settings have been updated per recommendations found
in the CMake Wiki:
http://www.cmake.org/Wiki/CMake_RPATH_handling#Mac_OS_X_and_the_RPATH
langou [Wed, 26 Aug 2015 04:47:36 +0000 (04:47 +0000)]
A is input/output for the subroutines ?sytrs2.f
julie [Wed, 26 Aug 2015 04:46:55 +0000 (04:46 +0000)]
Correcting Bug 129
See http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=13&t=4747
Modify LAPACK_?syconv interface - Work is used to return values
(1) Remove the local work variable and its allocation and deallocation
(2) Add work in LAPACK_?syconv interface
(3) Update lapacke.h
langou [Wed, 26 Aug 2015 04:42:47 +0000 (04:42 +0000)]
correcting bug 128
See: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=4746
When LAPACK_NAN_CHECK is enabled, in input of xLASET, we now allow if the matrix A contains NaN.
Since the goal of xLASET is to set values in A, we consider it OK if A contains NaN in input.
In other words, the rationale is that we do not consider A has an input/output. We consider A as an output only.
Note: We allow neither alpha nor beta to be a NaN.
(So we do check for NaN in alpha and in beta and return error if NaN.)
So this commit
(1) removes the NaN check on matrix A in LAPACKE wrappers: lapacke_?laset.c
(2) declares that A is OUTPUT in LAPACK subroutines: ?laset.f
(3) adds a thanks to Victor Kostin from Intel
julie [Wed, 26 Aug 2015 01:43:34 +0000 (01:43 +0000)]
Propagate comment added in rev 1568 to make.inc with gfortran compiler
igor175 [Wed, 19 Aug 2015 21:17:27 +0000 (21:17 +0000)]
changed variable names from LAM_MAX to SING_MAX and from LAM_MIN to SING_MIN to reflect the chnage in the algorithm for TEST4 for rook pivotig routines, since we now use singular values instead of eigenvalues in TEST4 to compute the norm for 2-by-2 marices in TEST 4. Also corrected the bug in for Hermitian case in TEST4, where during the constraction of Hermitian 2-by-2 matrices the operation of complex conjugation was missing. Changes made to: cchkhe_rook.f cchksy_rook.f dchksy_rook.f schksy_rook.f zchkhe_rook.f zchksy_rook.f
philippe.theveny [Mon, 17 Aug 2015 22:58:57 +0000 (22:58 +0000)]
Moved deprecated SGVD routines into DEPRECATED directory.
Added a BUILD_DEPRECATED option for make and cmake, which build
deprecated routines into the LAPACK library (OFF by default).
This completes r1563.
TODO: document the BUILD_DEPRECATED option (i.e. update documentation).
philippe.theveny [Mon, 17 Aug 2015 21:37:47 +0000 (21:37 +0000)]
Removed unused and obsolete statement functions.
philippe.theveny [Mon, 17 Aug 2015 21:17:37 +0000 (21:17 +0000)]
Added LAPACKE wrappers for GSVD (complements r1572).
philippe.theveny [Fri, 14 Aug 2015 22:54:14 +0000 (22:54 +0000)]
Added BLAS3 routines for generalised SVD.
TODO: LAPACKE wrappers.
igor175 [Tue, 11 Aug 2015 22:27:27 +0000 (22:27 +0000)]
Fixed BUG number 123, that is testing of 'rook' routines, specifically TEST 4 for UPLO='U' case that test bounds of block diagonal matrices. TEST 4 wasfailing for UPLO='U', since 2-by-2 was passed incorrectly to the -EVX routine. Also, during the fix the TEST 4 for both UPLO='U' and 'L' was modified. Instead of computing the ratio of eigenvalues for 2-by-2 matrices, using the -EVX routines, now we compute the ratio of singular values using *GESVD routines. Affected test routines: TESTING/LIN/schksy_rook.f TESTING/LIN/dchksy_rook.f TESTING/LIN/cchksy_rook.f TESTING/LIN/zchksy_rook.f TESTING/LIN/cchkhe_rook.f TESTING/LIN/zchkhe_rook.f
philippe.theveny [Tue, 11 Aug 2015 21:52:11 +0000 (21:52 +0000)]
Removed declaration of unused variables.
philippe.theveny [Tue, 11 Aug 2015 20:44:38 +0000 (20:44 +0000)]
Replaced archaic intrinsics AMIN1, DMIN1, MIN0, AMAX1, DMAX1, MAX0 by MIN/MAX.
langou [Tue, 11 Aug 2015 16:59:56 +0000 (16:59 +0000)]
adding a comment in make.inc.example saying the following:
#
# Note: During a regular execution, LAPACK might create NaN and Inf
# and handle these quantities appropriately. As a consequence, one
# should not compile LAPACK with flags such as -ffpe-trap=overflow.
#
Julien.
philippe.theveny [Tue, 11 Aug 2015 16:23:45 +0000 (16:23 +0000)]
Fix bugs reported by Vitorrio Zecca on August 10, 2015.
philippe.theveny [Tue, 11 Aug 2015 16:03:54 +0000 (16:03 +0000)]
Fix bug reported by Vittorio Zecca.
philippe.theveny [Mon, 10 Aug 2015 17:33:47 +0000 (17:33 +0000)]
Bux fix from Rodney James about implicit typing.
Some variables were undeclared, some were mistyped, and others were unused.
philippe.theveny [Thu, 6 Aug 2015 23:01:56 +0000 (23:01 +0000)]
Move all but one deprecated routines to a new separate directory.
They are compiled and included in the liblapack.a archive when
the MAKEDEPRECATED option in the make.inc file is set.
TODO: Add the corresponding behavior to the cmake files.
NOTE: The xGEQPF routines are deprecated but still used by some
non-deprecated routines. They have not been moved to the DEPRECATED
directory.
philippe.theveny [Thu, 6 Aug 2015 20:57:14 +0000 (20:57 +0000)]
Remove deprecated xGEQPF from the test suite.
WARNING: xGEQPF is still used in xGGSVP routines.
philippe.theveny [Thu, 6 Aug 2015 17:56:35 +0000 (17:56 +0000)]
Remove all but one deprecated routines from the test suite.
NOTE: The tests are renumbered in xDRVLS and xCHKTZ.
TODO: remove deprecated xGEQPF, when it is replaced by xGEQP3 in xGGSVP.
langou [Wed, 5 Aug 2015 21:24:32 +0000 (21:24 +0000)]
missing EXTERNAL
julie [Sat, 18 Jul 2015 23:53:25 +0000 (23:53 +0000)]
Commit bug reported by Alexander Kobotov (INTEL) on LAPACK Forum
Link: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=13&t=4762&p=11439#p11439
Recent commit r1533 introduced out of bound access which could lead to a crash.
It results scaling of a vector instead of a single number.
Fix is simple:
zhgeqz.f:669
- CALL ZSCAL( ILAST, SIGNBC, H( ILAST, ILAST ), 1 )
+ CALL ZSCAL( 1, SIGNBC, H( ILAST, ILAST ), 1 )
Similar for chgeqz on line 668
langou [Tue, 30 Jun 2015 10:27:18 +0000 (10:27 +0000)]
Revert commit 1474: files ?lansy.f are back as they were in revision 1473.
langou [Thu, 25 Jun 2015 13:20:58 +0000 (13:20 +0000)]
(minor) Consistency of comments between the four precisions.
julie [Thu, 25 Jun 2015 06:00:59 +0000 (06:00 +0000)]
Adding error test to each element of S must be positive. - Thank you Elena (Oracle)
julie [Thu, 25 Jun 2015 05:09:58 +0000 (05:09 +0000)]
Finish removing unnecessary code - TMP = DBLE(M) - see 1547 - Thank you Elena
langou [Mon, 22 Jun 2015 14:04:46 +0000 (14:04 +0000)]
Fix [CDSZ]QRT17.
This is a routine to test DGELS which solves solves full rank overdetermined ( linear least squares ) or underdetermined (minimum norm) linear systems.
The check is, as follows,
(1) If the system is consistent, (smallresidual,) we check that
|| A^T ( b – A * x ) || / (||A||*||b||*max(M,N,NRHS)*eps)
is small (say less than 30).
(2) If the system is not consistent, (large residual,) we check that
|| A^T ( b – A * x ) || / (||A||*|| b - A*x ||*max(M,N,NRHS)*eps)
is small (say less than 30).
DQRT17 was checking in the not consistent case (large residual) that
|| A^T ( b – A * x ) || / (||A||*||x||*max(M,N,NRHS)*eps)
is small. It is a mistake and we need to change the ||x|| by a ||r||.
This fix is consistent with what the documentation says and makes more sense.
langou [Fri, 19 Jun 2015 02:59:06 +0000 (02:59 +0000)]
Typo in the comments of [S,C,D,Z]LATM1.
The matrix D needs to be of size N.
langou [Fri, 19 Jun 2015 02:56:27 +0000 (02:56 +0000)]
These are two fixes in [S,C,D,Z]-LAGGE.
(1) The routine was writing ZEROs out of bound in some specific cases. This is
corrected. Thanks to Yi Meng (CU Denver) for finding the bug.
(2) Quick exit when KL=KU=0 in this case, the user wants a diagonal matrix,
there is probably no reason to call this routine if one simply wants a diagonal
matrix, but that said we still ought to return a correct answer. A quick exit
makes the trick. The routine was not working otherwise.
langou [Wed, 17 Jun 2015 14:44:54 +0000 (14:44 +0000)]
bug in [c,d,s,z]get02.f when calling the norm computation for A
langou [Tue, 16 Jun 2015 14:34:40 +0000 (14:34 +0000)]
typos
langou [Mon, 15 Jun 2015 15:30:10 +0000 (15:30 +0000)]
typos in these testing functions
langou [Wed, 10 Jun 2015 21:41:42 +0000 (21:41 +0000)]
IDIST is an INTEGER, change the comment
langou [Wed, 10 Jun 2015 17:30:19 +0000 (17:30 +0000)]
remove the COMPLEX*16 TMP from DLAHILB
this has nothing to do here, probably a bad copy-paste from Z to D
langou [Mon, 8 Jun 2015 14:31:13 +0000 (14:31 +0000)]
typos in the comment
philippe.theveny [Thu, 14 May 2015 18:50:57 +0000 (18:50 +0000)]
This partially fixes bug 061 reported by Victor Liu.
Some compilers allocate local arrays on the heap when their size is
above a particular threshold.
This leads to wrong results when multiple threads call the same routine.
The bug fix consists in using a larger workspace, as proposed by Victor Liu
(Tue Nov 13, 2012).
Some routines still have large local arrays and cannot be fixed that way
because they have no workspace parameter: xGBTRF, xBPTRF, and xHSEQR.
julie [Wed, 6 May 2015 04:54:45 +0000 (04:54 +0000)]
Applying patch provided by Julien Schueller (Phimeca) on March 20th 2015 via Lapack mailing list to fix some warnings
julie [Wed, 6 May 2015 04:44:20 +0000 (04:44 +0000)]
Update version number and release date on rook routines - those routines were part of the 3.5.0 release - reported by Elena (Oracle)
julie [Wed, 6 May 2015 04:30:24 +0000 (04:30 +0000)]
Correct typo in variable name - reported by Elena (Oracle)
julie [Wed, 6 May 2015 04:21:45 +0000 (04:21 +0000)]
Propagate fix to bug111 to lapacke - minimum work space - Issue reported by Andrew James on LAPACK mailing list on April 30th 2015
langou [Tue, 5 May 2015 01:00:18 +0000 (01:00 +0000)]
Bug fix from Osni Marques, Beresford Parlett and Jim Demmel.
This fixes bugs 032 and 056.
Edits in cstein.f, dstein.f, sstein.f and zstein.f
From Osni on Monday, May 4:
As we discussed in our last conference call, I am attaching a new version of
_STEIN, which fixes bugs 032 and 056. (The bugs were reported for DSTEIN, but
I have propagated the fix to the other versions.) Also, in the process of
testing the fix for those two bugs with more difficult cases, we stumbled upon
a matrix that led SSTEIN to return NaNs in the eigenvectors ... We fixed that
too and, in summary, these are the changes in _STEIN:
1) The assignment after the GO TO 60 needs to be GPIND = J1 (instead of GPIND =
B1).
2) In 'Normalize and scale the righthand side vector Pb' (after GO TO 100 or GO
TO 120) we have replaced _ASUM with I_AMAX.
julie [Thu, 23 Apr 2015 03:25:41 +0000 (03:25 +0000)]
Correct info testing for SYSVXX routines
in ?SYSVXX
INFO = -10 needs to be changed to INFO = -11
The code in this section of the files is about to check and make sure all S
elements are positive. And S is argument 11 not 10.
in ?ERRVXX
Add info testing for input parameter 10 and 11
julie [Wed, 1 Apr 2015 14:56:02 +0000 (14:56 +0000)]
Problem reported by Elena (Oracle)
Some arguments return the wrong Info number
For example LDX is not the 14th argument, but 15th.
Correct corresponding testing routines
langou [Wed, 25 Mar 2015 22:45:19 +0000 (22:45 +0000)]
**** Correct bug 125 ****
Change the maximum number of QR iterations (ITMAX) for xLAHQR from ITMAX=30 to
ITMAX = 30 * MAX( 10, NH ).
Bug reported by Yoshihide Okimi on July 16, 2014
https://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=13&t=4566
and, independently, by Marco Caliari (Università di Verona) on February 11,
2015.
Involved in bug fix: Yoshihide Okimi, Marco Caliari (Università di Verona),
Meiyue Shao (LBL), Julien Langou, and Daniel Kressner (EPFL).
** Bug **
xLAHQR v3.5 does not converge on some matrices while xLAHQR v2 converges
** Note **
xLAHQR v2 is available through ARPACK so xLAHQR v2 is still in "wide" use
** Description **
xLAQR0 v3.5 and xLAQR4 v3.5 have ITMAX set to:
ITMAX = MAX( 30, 2*KEXSH )*MAX( 10, ( IHI-ILO+1 ) )
xLAHQR v2 has ITMAX set to:
ITMAX = 30 * NH
xLAHQR v3.5 has ITMAX set to:
ITMAX = 30
Yoshihide Okimi reports that, in his application, (1) xLAHQR v3.5 does not
converge, (2) xLAHQR v2 converges, (3) changing ITMAX to 30*NH in xLAHQR v3.5
enables convergence.
Marco Caliari reports that, in his application, using xLAHQR v2.0 converges,
while xLAHQR v3.5 does not converge.
** Bug fix **
Set ITMAX in xLAHQR to
ITMAX = 30 * MAX( 10, NH )
Email from Meiyue: I feel that setting ITMAX proportional to NH makes sense.
Perhaps we can change ITMAX to ITMAX*MAX( 10, NH ) so that it is also safe for
ill-conditioned tiny matrices.
langou [Wed, 25 Mar 2015 17:28:33 +0000 (17:28 +0000)]
**** Fix bug 124 ****
**** (I also fixed the documentation of the six subroutines ****
Bug reported by Victor_K on the forum.
See forum http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=13&t=4643
Bug fix by Julien Langou. Involved as well Nick Higham, Sven Hammarling and Craig Lucas.
** Bug **
xPSTF2 and xPSTRF returns NaNs when the matrix in input has N negative diagonal entries.
** Note **
A matrix with N negative diagonal entries is a highly non valid input, but, yet no reason to create some NaNs, better to have a cleaner solution.
** Description **
xPSTF2 and xPSTRF first scan the diagonal of the matrix to find the greatest element on the diagonal.
During this pass on the diagonal, xPSTF2/xPSTRF checks as well for ZERO or NAN on the diagonal and aborts if it finds a ZERO or a NAN on the diagonal.
*
* Compute stopping value
*
PVT = 1
AJJ = A( PVT, PVT )
DO I = 2, N
IF( A( I, I ).GT.AJJ ) THEN
PVT = I
AJJ = A( PVT, PVT )
END IF
END DO
IF( AJJ.EQ.ZERO.OR.DISNAN( AJJ ) ) THEN
RANK = 0
INFO = 1
GO TO 170
END IF
Since the input matrix is filled with a negative diagonal (and no ZERO and no NAN), xPSTF2/xPSTRF finds a maximum element (which is the largest negative elements on the diagonal), and then this (negative) element is used to compute DSTOP, the stopping value. But then we get a negative DSTOP,
IF( TOL.LT.ZERO ) THEN
DSTOP = N * DLAMCH( 'Epsilon' ) * AJJ
ELSE
DSTOP = TOL
END IF
and then I stop even thinking on what would happen next. It seems that the code continues and does produce NAN in the first column. Why not. But I think we should catch this case and try to handle it in a different way. Maybe.
** Bug fix **
Replace
IF( AJJ.EQ.ZERO.OR.DISNAN( AJJ ) ) THEN
With
IF( AJJ.LE.ZERO.OR.DISNAN( AJJ ) ) THEN
So that if there is any nonpositive element or any NAN on the diagonal of A, we return right away with RANK=0 and INFO=1.
** Email from Nick Higham **
[ Julien wrote ] So that if there is any nonpositive element or any NAN on the diagonal of A, we return right away with RANK=0 and INFO=1?
[ Nick wrote ]
I think so.
This is justified by the documentation, which says
INFO is INTEGER
If INFO = -K, the K-th argument had an illegal value,
= 0: algorithm completed successfully, and
> 0: the matrix A is either rank deficient with computed rank
as returned in RANK, or is indefinite.
We are in the indefinite case if any diagonal element is negative.
Actually, that is not quite true: we are in the "not positive definite"
case. We can only say "indefinite" if there are both positive *and* negative
diagonal entries! However, if that is going to be said then it would be
necessary to check that all other LAPACK routines are similarly precise in
their wording, so it's simplest, and not too misleading,
to stay with "indefinite".
julie [Wed, 18 Mar 2015 05:09:27 +0000 (05:09 +0000)]
Correcting Bug111 reported by Kevin Squire on LAPACK Mailing - August 15th 2013
From Kevin: We were following the recommendation for RWORK size calculation from
the ZGESDD header here ( http://netlib.org/lapack/complex16/zgesdd.f), and were
finding that when INFO=N, the size was insufficient, and generally led to a segmentation fault.
The current definition says that "If JOBZ = N, LRWORK >= 5*min(M,N)", but we found
that the minimum size needed to be at least 7*min(M,N). This was through experimentation
and comparison with code from Numpy and Octave, so you may wish to verify this through the code.
JL: bug confirmed and reproduced - correction in comments
If JOBZ = N, LRWORK >= 7*min(M,N)
julie [Tue, 17 Mar 2015 14:53:16 +0000 (14:53 +0000)]
Correct issue reported by Elena (Oracle)
Add SIGMA and EPS in a list of arguments and describe them in the "Arguments" section
julie [Fri, 6 Mar 2015 04:31:28 +0000 (04:31 +0000)]
Correction reported by Elena (Oracle)
LAPACK 3.5.0 [cz]hgeqz.f compute eigenvalues differently depending on whether
eigenvectors are requested or not. Since the computation is different, eigenvalues
are not bit-by-bit identical whether eigenvectors are requested or not.
This fix enables to have [cz]hgeqz.f behaving more of the same whether eigenvectors
are requested or not.
Note: The fact that eigenvalues are bit-by-bit identical whether eigenvectors are
requested or not is checked in the LAPACK test suite.
langou [Mon, 2 Mar 2015 16:04:35 +0000 (16:04 +0000)]
Correct two ". GT." to " .GT.". Bug reported by email ny Willem Vermin "Minor
issue in dorbdb.f and sorbdb.f" on Friday, February 27, 2015 at 4:03 AM.
philippe.theveny [Wed, 25 Feb 2015 23:40:47 +0000 (23:40 +0000)]
Fix wrong update when the right Schur vector is not computed.
julie [Wed, 25 Feb 2015 03:55:26 +0000 (03:55 +0000)]
Add back cggglm to Makefile...build goes fine
philippe.theveny [Tue, 24 Feb 2015 23:50:54 +0000 (23:50 +0000)]
Add xGGHD3: blocked Hessenberg reduction, code from Daniel Kressner.
Add xGGES3 and xGGEV3: computation of the Schur form, the Schur vectors, and
the generalized eigenvalues using the blocked Hessenberg reduction.
philippe.theveny [Tue, 24 Feb 2015 19:26:59 +0000 (19:26 +0000)]
Fix typo in comments.
philippe.theveny [Mon, 23 Feb 2015 18:06:06 +0000 (18:06 +0000)]
Fix typo in comments.
philippe.theveny [Fri, 6 Feb 2015 20:42:31 +0000 (20:42 +0000)]
Fix typo.
philippe.theveny [Fri, 6 Feb 2015 20:31:47 +0000 (20:31 +0000)]
Systematically return with INFO=1 when the root finder failed.
This corresponds to the documentation of [d/s]lasdx routines and fixes bug121
reported Justin Si.
julie [Fri, 30 Jan 2015 20:03:11 +0000 (20:03 +0000)]
Ed Anderson Bug Fix - Jan 26 2015
related to 1522
Correct call to [SD]chkhs to add new arguments.
julie [Fri, 30 Jan 2015 19:50:52 +0000 (19:50 +0000)]
Ed Anderson Improvement - Jan 26 2015
STGEX2 can call Level 3 BLAS and I did this in LAPACK3E.
I replaced STGEX2 with the LAPACK3E version (when I say STGEX2, I mean DTGEX2 too)
and also fixed an incorrect leading dimension in DTGEX2.
julie [Fri, 30 Jan 2015 19:24:26 +0000 (19:24 +0000)]
Ed Anderson Bug Fix - Jan 26 2015
Also in TESTING/EIG, I fixed two bugs in s/d chkhs; the diff of schkhs is:
790c790
< CALL SLACPY( ' ', N, N, U, LDU, UZ, LDU )
---
> CALL SLACPY( ' ', N, N, U, LDU, UZ, LDA )
831c831
< $ ABS( WI1( J )-WI3( J ) ) )
---
> $ ABS( WR1( J )-WR3( J ) ) )
In further testing, I was able to produce a test case where Test 8 fails comparing
the eigenvalues from xHSEQR(‘E’,’N’) with the eigenvalues from xHSEQR(‘S’,’V’).
The eigenvalues were the same, but in a different order. It appears that xHSEQR
does some rearrangement of the Schur matrix and so we should not expect the
eigenvalues to be in the same order, although I am trying to confirm this
with the authors. In the meantime, I have modified xCHKEE and xCHKHS to
compute the eigenvalues from xHSEQR(‘S’,’N’) in a separate array W2 (or
WR2 and WI2) so that test 8 can compare the eigenvalues from xHSEQR(‘S’,’N’)
with the eigenvalues from xHSEQR(‘S’,’V’).
julie [Fri, 30 Jan 2015 07:29:56 +0000 (07:29 +0000)]
Ed Anderson Bug Fix - Jan 26 2015
In TESTING/LIN/schkrq.f and schklq.f (only those, not the other precisions), the loop to look for test failures runs from 1 to NTESTS, it should be 1 to NT.
julie [Fri, 30 Jan 2015 07:26:22 +0000 (07:26 +0000)]
Ed Anderson Bug Fix - Jan 26 2015
In TESTING/LIN, the test routines xchkqr kept track of the number of tests performed in the variable NT, which could be 2, 6, or 7. Recently another test was added at the end and the loop that checks for failing tests was changed to run from 1 to NT to 1 to NTESTS, including tests that were never performed. As a result, with THRESH = 0., the number of tests failing exceeds the number of tests performed (for example, with n = 1 as the only N value and THRESH = 0.0 you get “604 out of 514 tests failed to pass the threshold”.) The right way to fix this would be to renumber the tests so that the new test is test #3 and the loop can run from 1 to NT again, but I just changed the count of tests performed from NT to NTESTS. For consistency between schkqr and schkrq and other test routines in the QR family, it would have been better for the new tests to go in a separate test module.
julie [Fri, 30 Jan 2015 07:22:01 +0000 (07:22 +0000)]
Ed Anderson Bug Fix - Jan 26 2015 - I fixed an old bug in the count of the number of tests in xdrvge and xdrvgb
julie [Sat, 10 Jan 2015 05:57:14 +0000 (05:57 +0000)]
Applied Jakub's CBLAS patch sent on Jan 9th
Netlib CBLAS can be put on top of BLAS with 64-bit integers.
It can be accomplished using the flag "WeirdNEC" :)
It basically redefines int to long, but at the same time, it had multiple bugs.
langou [Mon, 1 Dec 2014 05:07:52 +0000 (05:07 +0000)]
Apply patch from Pavel Holoborodko.
See http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=13&t=4624
Please thanks to
Pavel Holoborodko. Multiprecision Computing Toolbox for MATLAB. Advanpix LLC.
Below is a copy-paste from Pavel's post on the forum.
ZLARFT:
ZGEMM is not listed in EXTERNAL section (but extensively used in the code).
DLADIV:
This file has three different routines - DLADIV, DLADIV1, DLADIV2.
DLADIV2 has "if" in lower case:
if( BR.NE.ZERO ) THEN
DGGBAL/BAK, ZGGBAL/BAK:
There are few places in these routines where DOUBLE PRECISION variables are implicitly converted to INTEGER.
For example:
IR = LSCALE( I ) + SIGN( HALF, LSCALE( I ) )
JC=RSCALE(I)+SIGN(HALF,RSCALE(I))
K=RSCALE(I)
K=LSCALE(I)
R/LSCALE(I) is double precision, IR, JC and K are integers. For the sake of
correct semantic and F77 rules we have to use INT to show conversion
explicitly. Also this would make conversion to other languages much easier.
Interestingly, only those routines are missing the INT.
julie [Sat, 15 Nov 2014 05:06:16 +0000 (05:06 +0000)]
Fix typo reported by Elena (Oracle)
julie [Sat, 15 Nov 2014 05:01:47 +0000 (05:01 +0000)]
Bug Fix form Elena (Oracle) - Correct test of error exits
julie [Sat, 15 Nov 2014 04:52:36 +0000 (04:52 +0000)]
Bux fix from elena Ivanova (Oracle) Rearrange If statements for not overwriting info value
julie [Fri, 31 Oct 2014 15:51:06 +0000 (15:51 +0000)]
Change INFO value when testing N - N is first parameter - INFO should be -1 - bug reported by Elena Ivanova (oracle)