Skip to content

Commit 1714d64

Browse files
authored
Merge pull request #3829 from martin-frbg/lapack684+739
Cast workspace sizes for ?GELSS and add new ?GELST functions (Reference-LAPACK PRs 684+739)
2 parents 3a38dad + 88cd91c commit 1714d64

File tree

22 files changed

+7838
-407
lines changed

22 files changed

+7838
-407
lines changed

cmake/lapack.cmake

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ set(SLASRC
124124
ssbev_2stage.f ssbevx_2stage.f ssbevd_2stage.f ssygv_2stage.f
125125
sgesvdq.f slaorhr_col_getrfnp.f
126126
slaorhr_col_getrfnp2.f sorgtsqr.f sorgtsqr_row.f sorhr_col.f
127-
slarmm.f slatrs3.f strsyl3.f)
127+
slarmm.f slatrs3.f strsyl3.f sgelst.f)
128128

129129
set(SXLASRC sgesvxx.f sgerfsx.f sla_gerfsx_extended.f sla_geamv.f
130130
sla_gercond.f sla_gerpvgrw.f ssysvxx.f ssyrfsx.f
@@ -223,7 +223,7 @@ set(CLASRC
223223
chbev_2stage.f chbevx_2stage.f chbevd_2stage.f chegv_2stage.f
224224
cgesvdq.f claunhr_col_getrfnp.f claunhr_col_getrfnp2.f
225225
cungtsqr.f cungtsqr_row.f cunhr_col.f
226-
clatrs3.f ctrsyl3.f )
226+
clatrs3.f ctrsyl3.f cgelst.f)
227227

228228
set(CXLASRC cgesvxx.f cgerfsx.f cla_gerfsx_extended.f cla_geamv.f
229229
cla_gercond_c.f cla_gercond_x.f cla_gerpvgrw.f
@@ -316,7 +316,7 @@ set(DLASRC
316316
dsbev_2stage.f dsbevx_2stage.f dsbevd_2stage.f dsygv_2stage.f
317317
dcombssq.f dgesvdq.f dlaorhr_col_getrfnp.f
318318
dlaorhr_col_getrfnp2.f dorgtsqr.f dorgtsqr_row.f dorhr_col.f
319-
dlarmm.f dlatrs3.f dtrsyl3.f)
319+
dlarmm.f dlatrs3.f dtrsyl3.f dgelst.f)
320320

321321
set(DXLASRC dgesvxx.f dgerfsx.f dla_gerfsx_extended.f dla_geamv.f
322322
dla_gercond.f dla_gerpvgrw.f dsysvxx.f dsyrfsx.f
@@ -419,7 +419,7 @@ set(ZLASRC
419419
zhbev_2stage.f zhbevx_2stage.f zhbevd_2stage.f zhegv_2stage.f
420420
zgesvdq.f zlaunhr_col_getrfnp.f zlaunhr_col_getrfnp2.f
421421
zungtsqr.f zungtsqr_row.f zunhr_col.f
422-
zlatrs3.f ztrsyl3.f)
422+
zlatrs3.f ztrsyl3.f zgelst.f)
423423

424424
set(ZXLASRC zgesvxx.f zgerfsx.f zla_gerfsx_extended.f zla_geamv.f
425425
zla_gercond_c.f zla_gercond_x.f zla_gerpvgrw.f zsysvxx.f zsyrfsx.f
@@ -622,7 +622,7 @@ set(SLASRC
622622
ssbev_2stage.c ssbevx_2stage.c ssbevd_2stage.c ssygv_2stage.c
623623
sgesvdq.c slaorhr_col_getrfnp.c
624624
slaorhr_col_getrfnp2.c sorgtsqr.c sorgtsqr_row.c sorhr_col.c
625-
slarmm.c slatrs3.c strsyl3.c)
625+
slarmm.c slatrs3.c strsyl3.c sgelst.c)
626626

627627
set(SXLASRC sgesvxx.c sgerfsx.c sla_gerfsx_extended.c sla_geamv.c
628628
sla_gercond.c sla_gerpvgrw.c ssysvxx.c ssyrfsx.c
@@ -720,7 +720,7 @@ set(CLASRC
720720
chbev_2stage.c chbevx_2stage.c chbevd_2stage.c chegv_2stage.c
721721
cgesvdq.c claunhr_col_getrfnp.c claunhr_col_getrfnp2.c
722722
cungtsqr.c cungtsqr_row.c cunhr_col.c
723-
clatrs3.c ctrsyl3.c)
723+
clatrs3.c ctrsyl3.c cgelst.c)
724724

725725
set(CXLASRC cgesvxx.c cgerfsx.c cla_gerfsx_extended.c cla_geamv.c
726726
cla_gercond_c.c cla_gercond_x.c cla_gerpvgrw.c
@@ -812,7 +812,7 @@ set(DLASRC
812812
dsbev_2stage.c dsbevx_2stage.c dsbevd_2stage.c dsygv_2stage.c
813813
dcombssq.c dgesvdq.c dlaorhr_col_getrfnp.c
814814
dlaorhr_col_getrfnp2.c dorgtsqr.c dorgtsqr_row.c dorhr_col.c
815-
dlarmm.c dlatrs3.c dtrsyl3.c)
815+
dlarmm.c dlatrs3.c dtrsyl3.c dgelst.c)
816816

817817
set(DXLASRC dgesvxx.c dgerfsx.c dla_gerfsx_extended.c dla_geamv.c
818818
dla_gercond.c dla_gerpvgrw.c dsysvxx.c dsyrfsx.c
@@ -913,7 +913,7 @@ set(ZLASRC
913913
zheevd_2stage.c zheev_2stage.c zheevx_2stage.c zheevr_2stage.c
914914
zhbev_2stage.c zhbevx_2stage.c zhbevd_2stage.c zhegv_2stage.c
915915
zgesvdq.c zlaunhr_col_getrfnp.c zlaunhr_col_getrfnp2.c
916-
zungtsqr.c zungtsqr_row.c zunhr_col.c zlatrs3.c ztrsyl3.c)
916+
zungtsqr.c zungtsqr_row.c zunhr_col.c zlatrs3.c ztrsyl3.c zgelst.c)
917917

918918
set(ZXLASRC zgesvxx.c zgerfsx.c zla_gerfsx_extended.c zla_geamv.c
919919
zla_gercond_c.c zla_gercond_x.c zla_gerpvgrw.c zsysvxx.c zsyrfsx.c

lapack-netlib/SRC/Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ SLASRC_O = \
207207
ssytrd_2stage.o ssytrd_sy2sb.o ssytrd_sb2st.o ssb2st_kernels.o \
208208
ssyevd_2stage.o ssyev_2stage.o ssyevx_2stage.o ssyevr_2stage.o \
209209
ssbev_2stage.o ssbevx_2stage.o ssbevd_2stage.o ssygv_2stage.o \
210-
sgesvdq.o slarmm.o slatrs3.o strsyl3.o
210+
sgesvdq.o slarmm.o slatrs3.o strsyl3.o sgelst.o
211211

212212
endif
213213

@@ -316,7 +316,7 @@ CLASRC_O = \
316316
chetrd_2stage.o chetrd_he2hb.o chetrd_hb2st.o chb2st_kernels.o \
317317
cheevd_2stage.o cheev_2stage.o cheevx_2stage.o cheevr_2stage.o \
318318
chbev_2stage.o chbevx_2stage.o chbevd_2stage.o chegv_2stage.o \
319-
cgesvdq.o clatrs3.o ctrsyl3.o
319+
cgesvdq.o clatrs3.o ctrsyl3.o cgelst.o
320320
endif
321321

322322
ifdef USEXBLAS
@@ -417,7 +417,7 @@ DLASRC_O = \
417417
dsytrd_2stage.o dsytrd_sy2sb.o dsytrd_sb2st.o dsb2st_kernels.o \
418418
dsyevd_2stage.o dsyev_2stage.o dsyevx_2stage.o dsyevr_2stage.o \
419419
dsbev_2stage.o dsbevx_2stage.o dsbevd_2stage.o dsygv_2stage.o \
420-
dgesvdq.o dlarmm.o dlatrs3.o dtrsyl3.o
420+
dgesvdq.o dlarmm.o dlatrs3.o dtrsyl3.o dgelst.o
421421
endif
422422

423423
ifdef USEXBLAS
@@ -526,7 +526,7 @@ ZLASRC_O = \
526526
zhetrd_2stage.o zhetrd_he2hb.o zhetrd_hb2st.o zhb2st_kernels.o \
527527
zheevd_2stage.o zheev_2stage.o zheevx_2stage.o zheevr_2stage.o \
528528
zhbev_2stage.o zhbevx_2stage.o zhbevd_2stage.o zhegv_2stage.o \
529-
zgesvdq.o zlatrs3.o ztrsyl3.o
529+
zgesvdq.o zlatrs3.o ztrsyl3.o zgelst.o
530530
endif
531531

532532
ifdef USEXBLAS

lapack-netlib/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 )

0 commit comments

Comments
 (0)