Commit Graph
31 Commits
Author SHA1 Message Date
Mark Gates 4c76e9deb6 implicit none in SRC/z 2025-08-26 23:00:36 -04:00
Julie 59f136760f Update Source code to fix issue with links in Doxygen
Removed \htmlonly and \endhtmlonly (causing links to not work)
Increase DOT_GRAPH_MAX_NODES   to 200
2025-01-20 17:34:06 -08:00
Maria Kraynyuk 40ca7a2713 Include lapack_64.h only during the build 2024-02-05 10:54:04 -08:00
Maria Kraynyuk a1e8cb4845 LAPACK SRC long lines updated by script 2024-02-05 10:28:25 -08:00
Maria Kraynyuk b891145899 Add extended API with _64 suffix to LAPACK with lapack_64.h 2024-02-05 10:28:08 -08:00
Mark Gates 62b19990a2 doxygen: new group structure 2023-07-04 01:29:12 -04:00
Weslley da Silva Pereira 0b9757db86 Explicit all conversions in the Fortran code 2022-08-10 17:26:53 -06:00
Matthew Badin a5fd876c8b This change adds explicit casts to many of the complex routines. This is done because if the fortran is translated to a different language, the rules in that language for mixed types may not be the same. This change aids compilation in the translated language. 2021-04-15 18:11:50 -07:00
Julie e18d437924 Making LAPACK's code eternal... no more version and date in source files.
GitHub is now enabling us to track accurately version and date.
No need for this anymore.
2021-03-25 10:16:58 -07:00
Julie bc6a755be4 Updating version number on source file modified since 3.6.1
This is really old school, but a lot of times we have users sending us
copy pasting of codes, and that is the only way to know the version of
the code.
2016-12-23 15:01:32 -08:00
Hans Johnson 9dafba6d41 STYLE: Remove trailing whitespace in Fortran files
This is mostly a long term maintenance improvement.

Many coding styles require elimination of trailing whitespace, and
many editors and source code management configurations automatically
gobble up whitespace. When these tools gobble up whitespace, it
complicates reviewing the meaningful code changes.

By removing whitespace on one patch, it makes future
code reviews much easier.

=SCRIPT====================================================================

if which tempfile &>/dev/null; then
  TEMPMAKER=tempfile
elif which mktemp &>/dev/null; then
  TEMPMAKER=mktemp
else
  echo "Cannot find tempfile program." 2>&1
  exit 1
fi

MYTEMP=$($TEMPMAKER)
trap 'rm -f $MYTEMP' SIGINT SIGTERM

stripit() {
  echo "stripping $1"
  sed 's/[ \t]*$//' "$1" > $MYTEMP
  cp $MYTEMP "$1"
}

if [ $# -gt 0 ]; then
  while [ "$1" != "" ]; do
    stripit $1
    shift
  done
else
  while read -t 2; do
    stripit $REPLY
  done
fi

rm $MYTEMP
=================================================
2016-07-09 11:19:34 -05:00
julie 84118d4efb Update version number to 3.4.0 2011-11-11 19:34:11 +00:00
julie 1c3ba60067 Cosmetic changes in Doxygen presentation.
Use \par instead of \details for section.

add a Contributors Section and a Reference Section.
Remove (some) verbatim section when not needed.
Those changes have been done by hand so I am not sure I manage to catch them all.
2011-11-03 20:32:56 +00:00
julie d5c30c90bd Never say never... 2011-11-01 22:02:31 +00:00
julie 04670a6876 Last commit related to Doxygen integration following Albert's comment 2011-11-01 18:25:33 +00:00
julie 2210bef7af adding link to individual download, the links will appear directly in Doxygen html documentation 2011-10-13 08:53:21 +00:00
julie e1d39294ae Integrating Doxygen in comments 2011-10-06 06:53:11 +00:00
julie 46e1b19474 Commit patch sent by Sven.
Patch was based on 3.3.0, so required a little bit of merging.
Thank you Sven for the corrections.
Julie



JL
TESTING/EIG
zerrgg.f
Declare ILO, IHI

SRC
---
I have corrected all the following warnings and errors:

c/d/s/zsysv.f, Unused external reference ILAENV
>JL OK
c/d/s/zsysv.f, Unused local variable NB
>JL  ALREADY CORRECTED

sgsvj0.f, Unused intrinsic AMIN1
> JL OK

d/sorbdb.f, Unused intrinsic MIN
> JL OK

sorcsd.f, Unused intrinsic SIN
sorcsd.f, Unused intrinsic COS
> JL OK MERGE

cpoequb.f, Unused intrinsic AIMAG
cpoequb.f, Unused intrinsic REAL
cpoequb.f, Unused local variable ZDUM

zgeequb.f, REAL --> DBLE
> JL OK

sorcsd.f, line 330: Inconsistent data type REAL (previously INTEGER) for argument 14 in reference to SORBDB
sorcsd.f, line 340: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGQR
sorcsd.f, line 345: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGQR
sorcsd.f, line 356: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGLQ
sorcsd.f, line 363: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGLQ
sorcsd.f, line 369: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGLQ
sorcsd.f, line 374: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGLQ
sorcsd.f, line 385: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGQR
sorcsd.f, line 392: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGQR
sorcsd.f, line 399: Inconsistent data type REAL (previously INTEGER) for argument 9 in reference to SBBCSD
> JL OK MERGE


ila(s/d/c/z)lr.f
In the WHILE loop, at about line 59 I inserted
IF (I.EQ.0) THEN
   EXIT
END IF
since, otherwise when I = 0, A(0,J) is referenced.
> JL OK

TESTING/MATGEN
--------------
s/dlatm7.f
line 187: I replaced
IF( N.GT.1 ) THEN
by
IF( N.GT.1 .AND. RANK.GT.1 ) THEN
Otherwise I get a division by zero.
> JL OK

s/dlaror.f
I moved:
INFO = 0
from line 125 to line 121 in front of
 IF( N.EQ.0 .OR. M.EQ.0 )
$   RETURN
otherwise INFO is not defined on return when N or M are zero.
Similar change for
c/zlaror.f
> JL OK

TESTING/LIN
-----------
s/derrsy.f
In calls to S/DSYTRI2: I replaced IW by IW(1) since the dummy argument
(LWORK) is a scalar.
> JL OK

c/zerrrfp.f
I made ALPHA and BETA REAL/DOUBLE and introduced COMPLEX/COMPLEX*16
CALPHA since calls to C/ZHFRK need real alpha and beta.  In calls to
CTFSM, I then replaced ALPHA with CALPHA.
In cerrrfp.f, I replaced 1.0D0 with 1.0E0 (not strictly necessary, but
cleaner).
> JL OK

dpot06.f
Removed the unused declaration of LSAME
> JL OK

d/zdrvac.f
Removed the unused declaration of LSAME
> JL OK MERGE

s/d/c/z/ckcsd.f
Removed the unused declarations of S/D/C/ZLANGE, SIN and COS
> JL OK

c/zgennd.f
Removed the unused variable OUT
> JL already DONE

Corrected the following warnings and errors:

dchksy.f, Unused local variable MYWORK
> JL already DONE

ddrvgbx.f, line 792: Different number of arguments from the first call of DGBT02
> JL OK

cdrvgbx.f, line 726: Inconsistent data type REAL (previously COMPLEX) for argument 4 in reference to CLASET
cdrvgbx.f, line 728: Inconsistent data type REAL (previously COMPLEX) for argument 4 in reference to CLASET
cdrvgbx.f, line 780: Inconsistent data type REAL (previously COMPLEX) for argument 10 in reference to CGBT01
cdrvgbx.f, line 794: Different number of arguments from the first call of CGBT02
> JL OK

zdrvgbx.f, line 726: Inconsistent data type DOUBLE PRECISION (previously COMPLEX(KIND(0d0))) for argument 4 in reference to ZLASET
zdrvgbx.f, line 728: Inconsistent data type DOUBLE PRECISION (previously COMPLEX(KIND(0d0))) for argument 4 in reference to ZLASET
zdrvgbx.f, line 780: Inconsistent data type DOUBLE PRECISION (previously COMPLEX(KIND(0d0))) for argument 10 in reference to ZGBT01
zdrvgbx.f, line 794: Different number of arguments from the first call of ZGBT02
> JL OK

TESTING/EIG
-----------
s/d/c/zchkee.f
I inserted
CALL XLAENV( 12, 1 )
at line 1208, since IPARMS(ISPEC) with ISPEC = 12 needs to be set.
(I think I had to do this with them all, certainly with zchkee.f)
> JL OK zchkee.f cchkee.f

c/zchkee.f
In line 2316, the 15th argument of C/ZCKCSD should be real, not complex,
so I replaced A(1,7) by RWORK.
> JL OK

c/zcsdts.f
In calls to C/ZHERK I have replaced ONE by REALONE as arguments 5 and 8
should be real.
> JL OK

s/d/c/zcsdts.f
Division by zero occurs at line 155 in computing EPS when M = 0, so I
have modified
 EPS2 = MAX( ULP, CLANGE( '1', M, M, WORK, LDX, RWORK ) / REAL( M ) )
to
 IF (M.GT.0) THEN
    EPS2 = MAX( ULP, 
$               CLANGE( '1', M, M, WORK, LDX, RWORK ) / REAL( M ) )
 ELSE
    EPS2 = ULP
 END IF
> JL OK

SRC/VARIANTS/lu/CR
------------------
s/d/c/zgetrf
Removed the unused intrinsic MOD
> JL OK
2011-09-23 15:26:46 +00:00
julie 0d0b443c69 Summer cleanup
Cleanup some codes, like unused variables.
Used -Walls to detect problems.
2011-06-22 09:45:40 +00:00
julie dd795d2903 Upadte header for the modified routine for the 3.3.1 release 2011-04-13 16:30:39 +00:00
julie f2953573ed First pass to homgenize notation for transpose (**T) and conjugate transpose (**H)
Corresponds to bug0024
2011-04-02 11:08:56 +00:00
julie b860077bc7 Correct bug 0076 reported by Intel Team on lapack forum
Problem in ?(sy/he)tri2 was found.

For matrices with small N subroutine pass parameter NBMAX to ?(sy/he)tri2x which could be large than N.
In test for this functionality this is hide. Local test subroutine ilaenv.f pass proper values of NB. But if use ordinary ilaenv we will get mistake.

If we implemented

IF ( NBMAX .GE. N ) THEN
MINSIZE = N
ELSE
MINSIZE = (N+NBMAX+1)*(NBMAX+3)
END IF

and will call 

IF( NBMAX .GE. N ) THEN
CALL SSYTRI( UPLO, N, A, LDA, IPIV, WORK, INFO )
ELSE
CALL SSYTRI2X( UPLO, N, A, LDA, IPIV, WORK, NBMAX, INFO )
END IF

the problem will be solved.


Some other minor changes on workspace query.
2011-03-04 20:44:21 +00:00
julie 1653528c2b Fix bug 0074
Post from Alexander Kobotov (INTEL)
In LAPACK 3.3 ?(SY/HE)SV are updated to use TRS2.
The TRS2 requires WORK(N) to operate, whereas in SV requirements for LWORK just to be >=1.
There is no any check in SV if LWORK>=N, the array WORK just passed as it is to TRS2.
So if LWORK<N a crash could occur while executing TRS2 due to overuse of allocated workspace.

I guess for the case of LWORK<N just previsous Level2 based ?(SY/HE)TRS should be used.
2011-02-09 19:45:09 +00:00
julie 1237a0d5b7 Commiting the 3 other precisions (single, complex, dcomplex) for sytri using Level BLAS 3.
Update testing accordingly
2010-11-03 17:55:43 +00:00
julie 9205713fbc [xSYTRS/xSYSV] Hide the call to syconv inside trs2 to avoid changing the SYTRS interface.
Update the testing accordingly

 [DSYTRI2]      Comit dsytri2 to get some feedback
                Update the testing accordingly
                
DSYTRI2 is the Level 3 blas Version of DSYTRI
The actual routine that does the work is DSYTRI2X (name can be changed)
DSYTRI2 is just a wrapper to allow to hide the 2D Workspace required by the routine.
The interface had to be changed to integrate the possibility of doing a workspace query.
DSYTRI2x implementation will be documented in a LAWN. This algorithm was inspired by the following paper:
"Families of Algorithms Related to the Inversion of a Symmetric Positive Definite Matrix"
PAOLO BIENTINESI Duke University and BRIAN GUNTER Delft University of Technology and ROBERT A. VAN DE GEIJN The University of Texas at Austin
2010-11-02 18:53:38 +00:00
julie ef920e099d Update date and version for 3.2.2 release 2010-06-23 17:25:30 +00:00
julie 7eff241536 Missing local variable declaration (IINFO) 2010-06-15 17:09:03 +00:00
julie 1d9dfd8139 Add SYTRS2 routine - A BLAS 3 version of SYTRS
Add SYCONV routine: convert back and forth the factorization returned by SYTRF to be able to call SYTRS2.
Modify SYSV that now is calling SYTRS2 instead of SYTRS (and also SYCONV to convert and revert the factorization returned by SYTRF).
Modify testing to have TRS but also TRS2 tested in the LIN testing for SY.
2010-06-01 23:12:18 +00:00
julie be91086043 Big commit before 3.2.1 release.
Those are just cosmetic changes to update version number and various other minor change.
2009-04-16 18:10:16 +00:00
julie ff981f106b 2008-12-16 17:06:58 +00:00
jason baba851215 Move LAPACK trunk into position. 2008-10-28 01:38:50 +00:00