Skip to content

Commit 934313c

Browse files
authored
Merge pull request #852 from angsch/clean-no-guard-digit
Remove legacy warning for non IEEE 754 compliant machines
2 parents ccdc1a5 + e186ae4 commit 934313c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+206
-681
lines changed

SRC/cgelsd.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,6 @@
6060
*> singular values which are less than RCOND times the largest singular
6161
*> value.
6262
*>
63-
*> The divide and conquer algorithm makes very mild assumptions about
64-
*> floating point arithmetic. It will work on machines with a guard
65-
*> digit in add/subtract, or on those binary machines without guard
66-
*> digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
67-
*> Cray-2. It could conceivably fail on hexadecimal or decimal machines
68-
*> without guard digits, but we know of none.
6963
*> \endverbatim
7064
*
7165
* Arguments:

SRC/cgesdd.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,6 @@
5353
*>
5454
*> Note that the routine returns VT = V**H, not V.
5555
*>
56-
*> The divide and conquer algorithm makes very mild assumptions about
57-
*> floating point arithmetic. It will work on machines with a guard
58-
*> digit in add/subtract, or on those binary machines without guard
59-
*> digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
60-
*> Cray-2. It could conceivably fail on hexadecimal or decimal machines
61-
*> without guard digits, but we know of none.
6256
*> \endverbatim
6357
*
6458
* Arguments:

SRC/chbevd.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,6 @@
4141
*> a complex Hermitian band matrix A. If eigenvectors are desired, it
4242
*> uses a divide and conquer algorithm.
4343
*>
44-
*> The divide and conquer algorithm makes very mild assumptions about
45-
*> floating point arithmetic. It will work on machines with a guard
46-
*> digit in add/subtract, or on those binary machines without guard
47-
*> digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
48-
*> Cray-2. It could conceivably fail on hexadecimal or decimal machines
49-
*> without guard digits, but we know of none.
5044
*> \endverbatim
5145
*
5246
* Arguments:

SRC/chbevd_2stage.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,6 @@
4747
*> the reduction to tridiagonal. If eigenvectors are desired, it
4848
*> uses a divide and conquer algorithm.
4949
*>
50-
*> The divide and conquer algorithm makes very mild assumptions about
51-
*> floating point arithmetic. It will work on machines with a guard
52-
*> digit in add/subtract, or on those binary machines without guard
53-
*> digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
54-
*> Cray-2. It could conceivably fail on hexadecimal or decimal machines
55-
*> without guard digits, but we know of none.
5650
*> \endverbatim
5751
*
5852
* Arguments:

SRC/chbgvd.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,6 @@
4646
*> and banded, and B is also positive definite. If eigenvectors are
4747
*> desired, it uses a divide and conquer algorithm.
4848
*>
49-
*> The divide and conquer algorithm makes very mild assumptions about
50-
*> floating point arithmetic. It will work on machines with a guard
51-
*> digit in add/subtract, or on those binary machines without guard
52-
*> digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
53-
*> Cray-2. It could conceivably fail on hexadecimal or decimal machines
54-
*> without guard digits, but we know of none.
5549
*> \endverbatim
5650
*
5751
* Arguments:

SRC/cheevd.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,6 @@
4141
*> complex Hermitian matrix A. If eigenvectors are desired, it uses a
4242
*> divide and conquer algorithm.
4343
*>
44-
*> The divide and conquer algorithm makes very mild assumptions about
45-
*> floating point arithmetic. It will work on machines with a guard
46-
*> digit in add/subtract, or on those binary machines without guard
47-
*> digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
48-
*> Cray-2. It could conceivably fail on hexadecimal or decimal machines
49-
*> without guard digits, but we know of none.
5044
*> \endverbatim
5145
*
5246
* Arguments:

SRC/cheevd_2stage.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,6 @@
4646
*> the reduction to tridiagonal. If eigenvectors are desired, it uses a
4747
*> divide and conquer algorithm.
4848
*>
49-
*> The divide and conquer algorithm makes very mild assumptions about
50-
*> floating point arithmetic. It will work on machines with a guard
51-
*> digit in add/subtract, or on those binary machines without guard
52-
*> digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
53-
*> Cray-2. It could conceivably fail on hexadecimal or decimal machines
54-
*> without guard digits, but we know of none.
5549
*> \endverbatim
5650
*
5751
* Arguments:

SRC/chegvd.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,6 @@
4343
*> B are assumed to be Hermitian and B is also positive definite.
4444
*> If eigenvectors are desired, it uses a divide and conquer algorithm.
4545
*>
46-
*> The divide and conquer algorithm makes very mild assumptions about
47-
*> floating point arithmetic. It will work on machines with a guard
48-
*> digit in add/subtract, or on those binary machines without guard
49-
*> digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
50-
*> Cray-2. It could conceivably fail on hexadecimal or decimal machines
51-
*> without guard digits, but we know of none.
5246
*> \endverbatim
5347
*
5448
* Arguments:

SRC/chpevd.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,6 @@
4141
*> a complex Hermitian matrix A in packed storage. If eigenvectors are
4242
*> desired, it uses a divide and conquer algorithm.
4343
*>
44-
*> The divide and conquer algorithm makes very mild assumptions about
45-
*> floating point arithmetic. It will work on machines with a guard
46-
*> digit in add/subtract, or on those binary machines without guard
47-
*> digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
48-
*> Cray-2. It could conceivably fail on hexadecimal or decimal machines
49-
*> without guard digits, but we know of none.
5044
*> \endverbatim
5145
*
5246
* Arguments:

SRC/chpgvd.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,6 @@
4444
*> positive definite.
4545
*> If eigenvectors are desired, it uses a divide and conquer algorithm.
4646
*>
47-
*> The divide and conquer algorithm makes very mild assumptions about
48-
*> floating point arithmetic. It will work on machines with a guard
49-
*> digit in add/subtract, or on those binary machines without guard
50-
*> digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
51-
*> Cray-2. It could conceivably fail on hexadecimal or decimal machines
52-
*> without guard digits, but we know of none.
5347
*> \endverbatim
5448
*
5549
* Arguments:

SRC/claed8.f

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
* Definition:
1919
* ===========
2020
*
21-
* SUBROUTINE CLAED8( K, N, QSIZ, Q, LDQ, D, RHO, CUTPNT, Z, DLAMDA,
21+
* SUBROUTINE CLAED8( K, N, QSIZ, Q, LDQ, D, RHO, CUTPNT, Z, DLAMBDA,
2222
* Q2, LDQ2, W, INDXP, INDX, INDXQ, PERM, GIVPTR,
2323
* GIVCOL, GIVNUM, INFO )
2424
*
@@ -29,7 +29,7 @@
2929
* .. Array Arguments ..
3030
* INTEGER GIVCOL( 2, * ), INDX( * ), INDXP( * ),
3131
* $ INDXQ( * ), PERM( * )
32-
* REAL D( * ), DLAMDA( * ), GIVNUM( 2, * ), W( * ),
32+
* REAL D( * ), DLAMBDA( * ), GIVNUM( 2, * ), W( * ),
3333
* $ Z( * )
3434
* COMPLEX Q( LDQ, * ), Q2( LDQ2, * )
3535
* ..
@@ -122,9 +122,9 @@
122122
*> destroyed during the updating process.
123123
*> \endverbatim
124124
*>
125-
*> \param[out] DLAMDA
125+
*> \param[out] DLAMBDA
126126
*> \verbatim
127-
*> DLAMDA is REAL array, dimension (N)
127+
*> DLAMBDA is REAL array, dimension (N)
128128
*> Contains a copy of the first K eigenvalues which will be used
129129
*> by SLAED3 to form the secular equation.
130130
*> \endverbatim
@@ -222,7 +222,7 @@
222222
*> \ingroup complexOTHERcomputational
223223
*
224224
* =====================================================================
225-
SUBROUTINE CLAED8( K, N, QSIZ, Q, LDQ, D, RHO, CUTPNT, Z, DLAMDA,
225+
SUBROUTINE CLAED8( K, N, QSIZ, Q, LDQ, D, RHO, CUTPNT, Z, DLAMBDA,
226226
$ Q2, LDQ2, W, INDXP, INDX, INDXQ, PERM, GIVPTR,
227227
$ GIVCOL, GIVNUM, INFO )
228228
*
@@ -237,7 +237,7 @@ SUBROUTINE CLAED8( K, N, QSIZ, Q, LDQ, D, RHO, CUTPNT, Z, DLAMDA,
237237
* .. Array Arguments ..
238238
INTEGER GIVCOL( 2, * ), INDX( * ), INDXP( * ),
239239
$ INDXQ( * ), PERM( * )
240-
REAL D( * ), DLAMDA( * ), GIVNUM( 2, * ), W( * ),
240+
REAL D( * ), DLAMBDA( * ), GIVNUM( 2, * ), W( * ),
241241
$ Z( * )
242242
COMPLEX Q( LDQ, * ), Q2( LDQ2, * )
243243
* ..
@@ -322,14 +322,14 @@ SUBROUTINE CLAED8( K, N, QSIZ, Q, LDQ, D, RHO, CUTPNT, Z, DLAMDA,
322322
INDXQ( I ) = INDXQ( I ) + CUTPNT
323323
20 CONTINUE
324324
DO 30 I = 1, N
325-
DLAMDA( I ) = D( INDXQ( I ) )
325+
DLAMBDA( I ) = D( INDXQ( I ) )
326326
W( I ) = Z( INDXQ( I ) )
327327
30 CONTINUE
328328
I = 1
329329
J = CUTPNT + 1
330-
CALL SLAMRG( N1, N2, DLAMDA, 1, 1, INDX )
330+
CALL SLAMRG( N1, N2, DLAMBDA, 1, 1, INDX )
331331
DO 40 I = 1, N
332-
D( I ) = DLAMDA( INDX( I ) )
332+
D( I ) = DLAMBDA( INDX( I ) )
333333
Z( I ) = W( INDX( I ) )
334334
40 CONTINUE
335335
*
@@ -438,7 +438,7 @@ SUBROUTINE CLAED8( K, N, QSIZ, Q, LDQ, D, RHO, CUTPNT, Z, DLAMDA,
438438
ELSE
439439
K = K + 1
440440
W( K ) = Z( JLAM )
441-
DLAMDA( K ) = D( JLAM )
441+
DLAMBDA( K ) = D( JLAM )
442442
INDXP( K ) = JLAM
443443
JLAM = J
444444
END IF
@@ -450,19 +450,19 @@ SUBROUTINE CLAED8( K, N, QSIZ, Q, LDQ, D, RHO, CUTPNT, Z, DLAMDA,
450450
*
451451
K = K + 1
452452
W( K ) = Z( JLAM )
453-
DLAMDA( K ) = D( JLAM )
453+
DLAMBDA( K ) = D( JLAM )
454454
INDXP( K ) = JLAM
455455
*
456456
100 CONTINUE
457457
*
458-
* Sort the eigenvalues and corresponding eigenvectors into DLAMDA
458+
* Sort the eigenvalues and corresponding eigenvectors into DLAMBDA
459459
* and Q2 respectively. The eigenvalues/vectors which were not
460-
* deflated go into the first K slots of DLAMDA and Q2 respectively,
460+
* deflated go into the first K slots of DLAMBDA and Q2 respectively,
461461
* while those which were deflated go into the last N - K slots.
462462
*
463463
DO 110 J = 1, N
464464
JP = INDXP( J )
465-
DLAMDA( J ) = D( JP )
465+
DLAMBDA( J ) = D( JP )
466466
PERM( J ) = INDXQ( INDX( JP ) )
467467
CALL CCOPY( QSIZ, Q( 1, PERM( J ) ), 1, Q2( 1, J ), 1 )
468468
110 CONTINUE
@@ -471,7 +471,7 @@ SUBROUTINE CLAED8( K, N, QSIZ, Q, LDQ, D, RHO, CUTPNT, Z, DLAMDA,
471471
* into the last N - K slots of D and Q respectively.
472472
*
473473
IF( K.LT.N ) THEN
474-
CALL SCOPY( N-K, DLAMDA( K+1 ), 1, D( K+1 ), 1 )
474+
CALL SCOPY( N-K, DLAMBDA( K+1 ), 1, D( K+1 ), 1 )
475475
CALL CLACPY( 'A', QSIZ, N-K, Q2( 1, K+1 ), LDQ2, Q( 1, K+1 ),
476476
$ LDQ )
477477
END IF

SRC/clals0.f

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,11 @@ SUBROUTINE CLALS0( ICOMPQ, NL, NR, SQRE, NRHS, B, LDB, BX, LDBX,
392392
$ ( POLES( I, 2 ).EQ.ZERO ) ) THEN
393393
RWORK( I ) = ZERO
394394
ELSE
395+
*
396+
* Use calls to the subroutine SLAMC3 to enforce the
397+
* parentheses (x+y)+z. The goal is to prevent
398+
* optimizing compilers from doing x+(y+z).
399+
*
395400
RWORK( I ) = POLES( I, 2 )*Z( I ) /
396401
$ ( SLAMC3( POLES( I, 2 ), DSIGJ )-
397402
$ DIFLJ ) / ( POLES( I, 2 )+DJ )
@@ -470,6 +475,11 @@ SUBROUTINE CLALS0( ICOMPQ, NL, NR, SQRE, NRHS, B, LDB, BX, LDBX,
470475
IF( Z( J ).EQ.ZERO ) THEN
471476
RWORK( I ) = ZERO
472477
ELSE
478+
*
479+
* Use calls to the subroutine SLAMC3 to enforce the
480+
* parentheses (x+y)+z. The goal is to prevent optimizing
481+
* compilers from doing x+(y+z).
482+
*
473483
RWORK( I ) = Z( J ) / ( SLAMC3( DSIGJ, -POLES( I+1,
474484
$ 2 ) )-DIFR( I, 1 ) ) /
475485
$ ( DSIGJ+POLES( I, 1 ) ) / DIFR( I, 2 )

SRC/clalsd.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,6 @@
4848
*> problem; in this case a minimum norm solution is returned.
4949
*> The actual singular values are returned in D in ascending order.
5050
*>
51-
*> This code makes very mild assumptions about floating point
52-
*> arithmetic. It will work on machines with a guard digit in
53-
*> add/subtract, or on those binary machines without guard digits
54-
*> which subtract like the Cray XMP, Cray YMP, Cray C 90, or Cray 2.
55-
*> It could conceivably fail on hexadecimal or decimal machines
56-
*> without guard digits, but we know of none.
5751
*> \endverbatim
5852
*
5953
* Arguments:

SRC/cstedc.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,6 @@
4343
*> be found if CHETRD or CHPTRD or CHBTRD has been used to reduce this
4444
*> matrix to tridiagonal form.
4545
*>
46-
*> This code makes very mild assumptions about floating point
47-
*> arithmetic. It will work on machines with a guard digit in
48-
*> add/subtract, or on those binary machines without guard digits
49-
*> which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2.
50-
*> It could conceivably fail on hexadecimal or decimal machines
51-
*> without guard digits, but we know of none. See SLAED3 for details.
5246
*> \endverbatim
5347
*
5448
* Arguments:

SRC/dbdsdc.f

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,6 @@
4545
*> respectively. DBDSDC can be used to compute all singular values,
4646
*> and optionally, singular vectors or singular vectors in compact form.
4747
*>
48-
*> This code makes very mild assumptions about floating point
49-
*> arithmetic. It will work on machines with a guard digit in
50-
*> add/subtract, or on those binary machines without guard digits
51-
*> which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2.
52-
*> It could conceivably fail on hexadecimal or decimal machines
53-
*> without guard digits, but we know of none. See DLASD3 for details.
54-
*>
5548
*> The code currently calls DLASDQ if singular values only are desired.
5649
*> However, it can be slightly modified to compute singular values
5750
*> using the divide and conquer method.

SRC/dgelsd.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,6 @@
5959
*> singular values which are less than RCOND times the largest singular
6060
*> value.
6161
*>
62-
*> The divide and conquer algorithm makes very mild assumptions about
63-
*> floating point arithmetic. It will work on machines with a guard
64-
*> digit in add/subtract, or on those binary machines without guard
65-
*> digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
66-
*> Cray-2. It could conceivably fail on hexadecimal or decimal machines
67-
*> without guard digits, but we know of none.
6862
*> \endverbatim
6963
*
7064
* Arguments:

SRC/dgesdd.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,6 @@
5555
*>
5656
*> Note that the routine returns VT = V**T, not V.
5757
*>
58-
*> The divide and conquer algorithm makes very mild assumptions about
59-
*> floating point arithmetic. It will work on machines with a guard
60-
*> digit in add/subtract, or on those binary machines without guard
61-
*> digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
62-
*> Cray-2. It could conceivably fail on hexadecimal or decimal machines
63-
*> without guard digits, but we know of none.
6458
*> \endverbatim
6559
*
6660
* Arguments:

0 commit comments

Comments
 (0)