Skip to content

Commit f039b8c

Browse files
authored
Merge branch 'master' into master
2 parents 9551a31 + 08de166 commit f039b8c

File tree

15 files changed

+349
-240
lines changed

15 files changed

+349
-240
lines changed

CMAKE/CheckLAPACKCompilerFlags.cmake

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ if ( FORTRAN_ILP )
2525
elseif( (CMAKE_Fortran_COMPILER_ID STREQUAL "VisualAge" ) OR # CMake 2.6
2626
(CMAKE_Fortran_COMPILER_ID STREQUAL "XL" ) ) # CMake 2.8
2727
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qintsize=8")
28+
elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NAG" )
29+
if ( WIN32 )
30+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} /i8")
31+
else ()
32+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -i8")
33+
endif()
2834
else()
2935
set(CPE_ENV $ENV{PE_ENV})
3036
if(CPE_ENV STREQUAL "CRAY")
@@ -88,6 +94,48 @@ elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "HP" )
8894
CACHE STRING "Flags used by the compiler during release builds" FORCE )
8995
set( CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_RELWITHDEBINFO} +O2 -g"
9096
CACHE STRING "Flags used by the compiler during release with debug info builds" FORCE )
97+
98+
# NAG Fortran
99+
elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NAG" )
100+
if( "${CMAKE_Fortran_FLAGS}" MATCHES "[-/]ieee=(stop|nonstd)" )
101+
set( FPE_EXIT TRUE )
102+
endif()
103+
104+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]ieee=full") )
105+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ieee=full")
106+
endif()
107+
108+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]dcfuns") )
109+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -dcfuns")
110+
endif()
111+
112+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]thread_safe") )
113+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -thread_safe")
114+
endif()
115+
116+
# Disable warnings
117+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]w=obs") )
118+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -w=obs")
119+
endif()
120+
121+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]w=x77") )
122+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -w=x77")
123+
endif()
124+
125+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]w=ques") )
126+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -w=ques")
127+
endif()
128+
129+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]w=unused") )
130+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -w=unused")
131+
endif()
132+
133+
# Suppress compiler banner and summary
134+
check_fortran_compiler_flag("-quiet" _quiet)
135+
if( _quiet AND NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]quiet") )
136+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -quiet")
137+
endif()
138+
91139
else()
92140
endif()
93141

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ elseif(CMAKE_Fortran_COMPILER_ID STREQUAL Intel)
133133
check_fortran_compiler_flag("-recursive" _recursiveFlag)
134134
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL XL)
135135
check_fortran_compiler_flag("-qrecur" _qrecurFlag)
136+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL NAG)
137+
check_fortran_compiler_flag("-recursive" _recursiveFlag)
136138
else()
137139
message(WARNING "Fortran local arrays should be allocated on the stack."
138140
" Please use a compiler which guarantees that feature."

SRC/cgelss.f

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -266,11 +266,11 @@ SUBROUTINE CGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
266266
*
267267
* Compute space needed for CGEQRF
268268
CALL CGEQRF( M, N, A, LDA, DUM(1), DUM(1), -1, INFO )
269-
LWORK_CGEQRF = REAL( DUM(1) )
269+
LWORK_CGEQRF = INT( DUM(1) )
270270
* Compute space needed for CUNMQR
271271
CALL CUNMQR( 'L', 'C', M, NRHS, N, A, LDA, DUM(1), B,
272272
$ LDB, DUM(1), -1, INFO )
273-
LWORK_CUNMQR = REAL( DUM(1) )
273+
LWORK_CUNMQR = INT( DUM(1) )
274274
MM = N
275275
MAXWRK = MAX( MAXWRK, N + N*ILAENV( 1, 'CGEQRF', ' ', M,
276276
$ N, -1, -1 ) )
@@ -284,15 +284,15 @@ SUBROUTINE CGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
284284
* Compute space needed for CGEBRD
285285
CALL CGEBRD( MM, N, A, LDA, S, S, DUM(1), DUM(1), DUM(1),
286286
$ -1, INFO )
287-
LWORK_CGEBRD = REAL( DUM(1) )
287+
LWORK_CGEBRD = INT( DUM(1) )
288288
* Compute space needed for CUNMBR
289289
CALL CUNMBR( 'Q', 'L', 'C', MM, NRHS, N, A, LDA, DUM(1),
290290
$ B, LDB, DUM(1), -1, INFO )
291-
LWORK_CUNMBR = REAL( DUM(1) )
291+
LWORK_CUNMBR = INT( DUM(1) )
292292
* Compute space needed for CUNGBR
293293
CALL CUNGBR( 'P', N, N, N, A, LDA, DUM(1),
294294
$ DUM(1), -1, INFO )
295-
LWORK_CUNGBR = REAL( DUM(1) )
295+
LWORK_CUNGBR = INT( DUM(1) )
296296
* Compute total workspace needed
297297
MAXWRK = MAX( MAXWRK, 2*N + LWORK_CGEBRD )
298298
MAXWRK = MAX( MAXWRK, 2*N + LWORK_CUNMBR )
@@ -310,23 +310,23 @@ SUBROUTINE CGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
310310
* Compute space needed for CGELQF
311311
CALL CGELQF( M, N, A, LDA, DUM(1), DUM(1),
312312
$ -1, INFO )
313-
LWORK_CGELQF = REAL( DUM(1) )
313+
LWORK_CGELQF = INT( DUM(1) )
314314
* Compute space needed for CGEBRD
315315
CALL CGEBRD( M, M, A, LDA, S, S, DUM(1), DUM(1),
316316
$ DUM(1), -1, INFO )
317-
LWORK_CGEBRD = REAL( DUM(1) )
317+
LWORK_CGEBRD = INT( DUM(1) )
318318
* Compute space needed for CUNMBR
319319
CALL CUNMBR( 'Q', 'L', 'C', M, NRHS, N, A, LDA,
320320
$ DUM(1), B, LDB, DUM(1), -1, INFO )
321-
LWORK_CUNMBR = REAL( DUM(1) )
321+
LWORK_CUNMBR = INT( DUM(1) )
322322
* Compute space needed for CUNGBR
323323
CALL CUNGBR( 'P', M, M, M, A, LDA, DUM(1),
324324
$ DUM(1), -1, INFO )
325-
LWORK_CUNGBR = REAL( DUM(1) )
325+
LWORK_CUNGBR = INT( DUM(1) )
326326
* Compute space needed for CUNMLQ
327327
CALL CUNMLQ( 'L', 'C', N, NRHS, M, A, LDA, DUM(1),
328328
$ B, LDB, DUM(1), -1, INFO )
329-
LWORK_CUNMLQ = REAL( DUM(1) )
329+
LWORK_CUNMLQ = INT( DUM(1) )
330330
* Compute total workspace needed
331331
MAXWRK = M + LWORK_CGELQF
332332
MAXWRK = MAX( MAXWRK, 3*M + M*M + LWORK_CGEBRD )
@@ -345,15 +345,15 @@ SUBROUTINE CGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
345345
* Compute space needed for CGEBRD
346346
CALL CGEBRD( M, N, A, LDA, S, S, DUM(1), DUM(1),
347347
$ DUM(1), -1, INFO )
348-
LWORK_CGEBRD = REAL( DUM(1) )
348+
LWORK_CGEBRD = INT( DUM(1) )
349349
* Compute space needed for CUNMBR
350350
CALL CUNMBR( 'Q', 'L', 'C', M, NRHS, M, A, LDA,
351351
$ DUM(1), B, LDB, DUM(1), -1, INFO )
352-
LWORK_CUNMBR = REAL( DUM(1) )
352+
LWORK_CUNMBR = INT( DUM(1) )
353353
* Compute space needed for CUNGBR
354354
CALL CUNGBR( 'P', M, N, M, A, LDA, DUM(1),
355355
$ DUM(1), -1, INFO )
356-
LWORK_CUNGBR = REAL( DUM(1) )
356+
LWORK_CUNGBR = INT( DUM(1) )
357357
MAXWRK = 2*M + LWORK_CGEBRD
358358
MAXWRK = MAX( MAXWRK, 2*M + LWORK_CUNMBR )
359359
MAXWRK = MAX( MAXWRK, 2*M + LWORK_CUNGBR )

SRC/claqr5.f

Lines changed: 52 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ SUBROUTINE CLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S,
279279
PARAMETER ( RZERO = 0.0e0, RONE = 1.0e0 )
280280
* ..
281281
* .. Local Scalars ..
282-
COMPLEX ALPHA, BETA, CDUM, REFSUM
282+
COMPLEX ALPHA, BETA, CDUM, REFSUM, T1, T2, T3
283283
REAL H11, H12, H21, H22, SAFMAX, SAFMIN, SCL,
284284
$ SMLNUM, TST1, TST2, ULP
285285
INTEGER I2, I4, INCOL, J, JBOT, JCOL, JLEN,
@@ -424,12 +424,12 @@ SUBROUTINE CLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S,
424424
* ==== Perform update from right within
425425
* . computational window. ====
426426
*
427+
T1 = V( 1, M22 )
428+
T2 = T1*CONJG( V( 2, M22 ) )
427429
DO 30 J = JTOP, MIN( KBOT, K+3 )
428-
REFSUM = V( 1, M22 )*( H( J, K+1 )+V( 2, M22 )*
429-
$ H( J, K+2 ) )
430-
H( J, K+1 ) = H( J, K+1 ) - REFSUM
431-
H( J, K+2 ) = H( J, K+2 ) -
432-
$ REFSUM*CONJG( V( 2, M22 ) )
430+
REFSUM = H( J, K+1 ) + V( 2, M22 )*H( J, K+2 )
431+
H( J, K+1 ) = H( J, K+1 ) - REFSUM*T1
432+
H( J, K+2 ) = H( J, K+2 ) - REFSUM*T2
433433
30 CONTINUE
434434
*
435435
* ==== Perform update from left within
@@ -442,12 +442,13 @@ SUBROUTINE CLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S,
442442
ELSE
443443
JBOT = KBOT
444444
END IF
445+
T1 = CONJG( V( 1, M22 ) )
446+
T2 = T1*V( 2, M22 )
445447
DO 40 J = K+1, JBOT
446-
REFSUM = CONJG( V( 1, M22 ) )*
447-
$ ( H( K+1, J )+CONJG( V( 2, M22 ) )*
448-
$ H( K+2, J ) )
449-
H( K+1, J ) = H( K+1, J ) - REFSUM
450-
H( K+2, J ) = H( K+2, J ) - REFSUM*V( 2, M22 )
448+
REFSUM = H( K+1, J ) +
449+
$ CONJG( V( 2, M22 ) )*H( K+2, J )
450+
H( K+1, J ) = H( K+1, J ) - REFSUM*T1
451+
H( K+2, J ) = H( K+2, J ) - REFSUM*T2
451452
40 CONTINUE
452453
*
453454
* ==== The following convergence test requires that
@@ -610,25 +611,28 @@ SUBROUTINE CLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S,
610611
* . deflation check. We still delay most of the
611612
* . updates from the left for efficiency. ====
612613
*
614+
T1 = V( 1, M )
615+
T2 = T1*CONJG( V( 2, M ) )
616+
T3 = T1*CONJG( V( 3, M ) )
613617
DO 70 J = JTOP, MIN( KBOT, K+3 )
614-
REFSUM = V( 1, M )*( H( J, K+1 )+V( 2, M )*
615-
$ H( J, K+2 )+V( 3, M )*H( J, K+3 ) )
616-
H( J, K+1 ) = H( J, K+1 ) - REFSUM
617-
H( J, K+2 ) = H( J, K+2 ) -
618-
$ REFSUM*CONJG( V( 2, M ) )
619-
H( J, K+3 ) = H( J, K+3 ) -
620-
$ REFSUM*CONJG( V( 3, M ) )
618+
REFSUM = H( J, K+1 ) + V( 2, M )*H( J, K+2 )
619+
$ + V( 3, M )*H( J, K+3 )
620+
H( J, K+1 ) = H( J, K+1 ) - REFSUM*T1
621+
H( J, K+2 ) = H( J, K+2 ) - REFSUM*T2
622+
H( J, K+3 ) = H( J, K+3 ) - REFSUM*T3
621623
70 CONTINUE
622624
*
623625
* ==== Perform update from left for subsequent
624626
* . column. ====
625627
*
626-
REFSUM = CONJG( V( 1, M ) )*( H( K+1, K+1 )
627-
$ +CONJG( V( 2, M ) )*H( K+2, K+1 )
628-
$ +CONJG( V( 3, M ) )*H( K+3, K+1 ) )
629-
H( K+1, K+1 ) = H( K+1, K+1 ) - REFSUM
630-
H( K+2, K+1 ) = H( K+2, K+1 ) - REFSUM*V( 2, M )
631-
H( K+3, K+1 ) = H( K+3, K+1 ) - REFSUM*V( 3, M )
628+
T1 = CONJG( V( 1, M ) )
629+
T2 = T1*V( 2, M )
630+
T3 = T1*V( 3, M )
631+
REFSUM = H( K+1, K+1 ) + CONJG( V( 2, M ) )*H( K+2, K+1 )
632+
$ + CONJG( V( 3, M ) )*H( K+3, K+1 )
633+
H( K+1, K+1 ) = H( K+1, K+1 ) - REFSUM*T1
634+
H( K+2, K+1 ) = H( K+2, K+1 ) - REFSUM*T2
635+
H( K+3, K+1 ) = H( K+3, K+1 ) - REFSUM*T3
632636
*
633637
* ==== The following convergence test requires that
634638
* . the tradition small-compared-to-nearby-diagonals
@@ -688,13 +692,15 @@ SUBROUTINE CLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S,
688692
*
689693
DO 100 M = MBOT, MTOP, -1
690694
K = KRCOL + 2*( M-1 )
695+
T1 = CONJG( V( 1, M ) )
696+
T2 = T1*V( 2, M )
697+
T3 = T1*V( 3, M )
691698
DO 90 J = MAX( KTOP, KRCOL + 2*M ), JBOT
692-
REFSUM = CONJG( V( 1, M ) )*
693-
$ ( H( K+1, J )+CONJG( V( 2, M ) )*
694-
$ H( K+2, J )+CONJG( V( 3, M ) )*H( K+3, J ) )
695-
H( K+1, J ) = H( K+1, J ) - REFSUM
696-
H( K+2, J ) = H( K+2, J ) - REFSUM*V( 2, M )
697-
H( K+3, J ) = H( K+3, J ) - REFSUM*V( 3, M )
699+
REFSUM = H( K+1, J ) + CONJG( V( 2, M ) )*
700+
$ H( K+2, J ) + CONJG( V( 3, M ) )*H( K+3, J )
701+
H( K+1, J ) = H( K+1, J ) - REFSUM*T1
702+
H( K+2, J ) = H( K+2, J ) - REFSUM*T2
703+
H( K+3, J ) = H( K+3, J ) - REFSUM*T3
698704
90 CONTINUE
699705
100 CONTINUE
700706
*
@@ -712,14 +718,15 @@ SUBROUTINE CLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S,
712718
I2 = MAX( 1, KTOP-INCOL )
713719
I2 = MAX( I2, KMS-(KRCOL-INCOL)+1 )
714720
I4 = MIN( KDU, KRCOL + 2*( MBOT-1 ) - INCOL + 5 )
721+
T1 = V( 1, M )
722+
T2 = T1*CONJG( V( 2, M ) )
723+
T3 = T1*CONJG( V( 3, M ) )
715724
DO 110 J = I2, I4
716-
REFSUM = V( 1, M )*( U( J, KMS+1 )+V( 2, M )*
717-
$ U( J, KMS+2 )+V( 3, M )*U( J, KMS+3 ) )
718-
U( J, KMS+1 ) = U( J, KMS+1 ) - REFSUM
719-
U( J, KMS+2 ) = U( J, KMS+2 ) -
720-
$ REFSUM*CONJG( V( 2, M ) )
721-
U( J, KMS+3 ) = U( J, KMS+3 ) -
722-
$ REFSUM*CONJG( V( 3, M ) )
725+
REFSUM = U( J, KMS+1 ) + V( 2, M )*U( J, KMS+2 )
726+
$ + V( 3, M )*U( J, KMS+3 )
727+
U( J, KMS+1 ) = U( J, KMS+1 ) - REFSUM*T1
728+
U( J, KMS+2 ) = U( J, KMS+2 ) - REFSUM*T2
729+
U( J, KMS+3 ) = U( J, KMS+3 ) - REFSUM*T3
723730
110 CONTINUE
724731
120 CONTINUE
725732
ELSE IF( WANTZ ) THEN
@@ -730,14 +737,15 @@ SUBROUTINE CLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S,
730737
*
731738
DO 140 M = MBOT, MTOP, -1
732739
K = KRCOL + 2*( M-1 )
740+
T1 = V( 1, M )
741+
T2 = T1*CONJG( V( 2, M ) )
742+
T3 = T1*CONJG( V( 3, M ) )
733743
DO 130 J = ILOZ, IHIZ
734-
REFSUM = V( 1, M )*( Z( J, K+1 )+V( 2, M )*
735-
$ Z( J, K+2 )+V( 3, M )*Z( J, K+3 ) )
736-
Z( J, K+1 ) = Z( J, K+1 ) - REFSUM
737-
Z( J, K+2 ) = Z( J, K+2 ) -
738-
$ REFSUM*CONJG( V( 2, M ) )
739-
Z( J, K+3 ) = Z( J, K+3 ) -
740-
$ REFSUM*CONJG( V( 3, M ) )
744+
REFSUM = Z( J, K+1 ) + V( 2, M )*Z( J, K+2 )
745+
$ + V( 3, M )*Z( J, K+3 )
746+
Z( J, K+1 ) = Z( J, K+1 ) - REFSUM*T1
747+
Z( J, K+2 ) = Z( J, K+2 ) - REFSUM*T2
748+
Z( J, K+3 ) = Z( J, K+3 ) - REFSUM*T3
741749
130 CONTINUE
742750
140 CONTINUE
743751
END IF

SRC/dgelss.f

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -254,11 +254,11 @@ SUBROUTINE DGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
254254
*
255255
* Compute space needed for DGEQRF
256256
CALL DGEQRF( M, N, A, LDA, DUM(1), DUM(1), -1, INFO )
257-
LWORK_DGEQRF=DUM(1)
257+
LWORK_DGEQRF = INT( DUM(1) )
258258
* Compute space needed for DORMQR
259259
CALL DORMQR( 'L', 'T', M, NRHS, N, A, LDA, DUM(1), B,
260260
$ LDB, DUM(1), -1, INFO )
261-
LWORK_DORMQR=DUM(1)
261+
LWORK_DORMQR = INT( DUM(1) )
262262
MM = N
263263
MAXWRK = MAX( MAXWRK, N + LWORK_DGEQRF )
264264
MAXWRK = MAX( MAXWRK, N + LWORK_DORMQR )
@@ -273,15 +273,15 @@ SUBROUTINE DGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
273273
* Compute space needed for DGEBRD
274274
CALL DGEBRD( MM, N, A, LDA, S, DUM(1), DUM(1),
275275
$ DUM(1), DUM(1), -1, INFO )
276-
LWORK_DGEBRD=DUM(1)
276+
LWORK_DGEBRD = INT( DUM(1) )
277277
* Compute space needed for DORMBR
278278
CALL DORMBR( 'Q', 'L', 'T', MM, NRHS, N, A, LDA, DUM(1),
279279
$ B, LDB, DUM(1), -1, INFO )
280-
LWORK_DORMBR=DUM(1)
280+
LWORK_DORMBR = INT( DUM(1) )
281281
* Compute space needed for DORGBR
282282
CALL DORGBR( 'P', N, N, N, A, LDA, DUM(1),
283283
$ DUM(1), -1, INFO )
284-
LWORK_DORGBR=DUM(1)
284+
LWORK_DORGBR = INT( DUM(1) )
285285
* Compute total workspace needed
286286
MAXWRK = MAX( MAXWRK, 3*N + LWORK_DGEBRD )
287287
MAXWRK = MAX( MAXWRK, 3*N + LWORK_DORMBR )
@@ -309,19 +309,19 @@ SUBROUTINE DGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
309309
* Compute space needed for DGEBRD
310310
CALL DGEBRD( M, M, A, LDA, S, DUM(1), DUM(1),
311311
$ DUM(1), DUM(1), -1, INFO )
312-
LWORK_DGEBRD=DUM(1)
312+
LWORK_DGEBRD = INT( DUM(1) )
313313
* Compute space needed for DORMBR
314314
CALL DORMBR( 'Q', 'L', 'T', M, NRHS, N, A, LDA,
315315
$ DUM(1), B, LDB, DUM(1), -1, INFO )
316-
LWORK_DORMBR=DUM(1)
316+
LWORK_DORMBR = INT( DUM(1) )
317317
* Compute space needed for DORGBR
318318
CALL DORGBR( 'P', M, M, M, A, LDA, DUM(1),
319319
$ DUM(1), -1, INFO )
320-
LWORK_DORGBR=DUM(1)
320+
LWORK_DORGBR = INT( DUM(1) )
321321
* Compute space needed for DORMLQ
322322
CALL DORMLQ( 'L', 'T', N, NRHS, M, A, LDA, DUM(1),
323323
$ B, LDB, DUM(1), -1, INFO )
324-
LWORK_DORMLQ=DUM(1)
324+
LWORK_DORMLQ = INT( DUM(1) )
325325
* Compute total workspace needed
326326
MAXWRK = M + LWORK_DGELQF
327327
MAXWRK = MAX( MAXWRK, M*M + 4*M + LWORK_DGEBRD )
@@ -341,15 +341,15 @@ SUBROUTINE DGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
341341
* Compute space needed for DGEBRD
342342
CALL DGEBRD( M, N, A, LDA, S, DUM(1), DUM(1),
343343
$ DUM(1), DUM(1), -1, INFO )
344-
LWORK_DGEBRD=DUM(1)
344+
LWORK_DGEBRD = INT( DUM(1) )
345345
* Compute space needed for DORMBR
346346
CALL DORMBR( 'Q', 'L', 'T', M, NRHS, M, A, LDA,
347347
$ DUM(1), B, LDB, DUM(1), -1, INFO )
348-
LWORK_DORMBR=DUM(1)
348+
LWORK_DORMBR = INT( DUM(1) )
349349
* Compute space needed for DORGBR
350350
CALL DORGBR( 'P', M, N, M, A, LDA, DUM(1),
351351
$ DUM(1), -1, INFO )
352-
LWORK_DORGBR=DUM(1)
352+
LWORK_DORGBR = INT( DUM(1) )
353353
MAXWRK = 3*M + LWORK_DGEBRD
354354
MAXWRK = MAX( MAXWRK, 3*M + LWORK_DORMBR )
355355
MAXWRK = MAX( MAXWRK, 3*M + LWORK_DORGBR )

0 commit comments

Comments
 (0)