Skip to content

Commit b9d53f4

Browse files
author
Johnathan Rhyne
committed
adding nx behavior to *larft
1 parent 2475f7b commit b9d53f4

File tree

12 files changed

+83
-35
lines changed

12 files changed

+83
-35
lines changed

SRC/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ set(SLASRC
106106
slaqgb.f slaqge.f slaqp2.f slaqps.f slaqp2rk.f slaqp3rk.f slaqsb.f slaqsp.f slaqsy.f
107107
slaqr0.f slaqr1.f slaqr2.f slaqr3.f slaqr4.f slaqr5.f
108108
slaqtr.f slar1v.f slar2v.f ilaslr.f ilaslc.f
109-
slarf.f slarf1f.f slarf1l.f slarfb.f slarfb_gett.f slarfg.f slarfgp.f slarft.f slarfx.f slarfy.f
109+
slarf.f slarf1f.f slarf1l.f slarfb.f slarfb_gett.f slarfg.f slarfgp.f slarft.f slarft_lvl2.f slarfx.f slarfy.f
110110
slargv.f slarmm.f slarrv.f slartv.f
111111
slarz.f slarzb.f slarzt.f slasy2.f
112112
slasyf.f slasyf_rook.f slasyf_rk.f slasyf_aa.f
@@ -218,7 +218,7 @@ set(CLASRC
218218
claqhb.f claqhe.f claqhp.f claqp2.f claqps.f claqp2rk.f claqp3rk.f claqsb.f
219219
claqr0.f claqr1.f claqr2.f claqr3.f claqr4.f claqr5.f
220220
claqsp.f claqsy.f clar1v.f clar2v.f ilaclr.f ilaclc.f
221-
clarf.f clarf1f.f clarf1l.f clarfb.f clarfb_gett.f clarfg.f clarfgp.f clarft.f
221+
clarf.f clarf1f.f clarf1l.f clarfb.f clarfb_gett.f clarfg.f clarfgp.f clarft.f clarft_lvl2.f
222222
clarfx.f clarfy.f clargv.f clarnv.f clarrv.f clartg.f90 clartv.f
223223
clarz.f clarzb.f clarzt.f clascl.f claset.f clasr.f classq.f90
224224
claswp.f clasyf.f clasyf_rook.f clasyf_rk.f clasyf_aa.f
@@ -307,7 +307,7 @@ set(DLASRC
307307
dlaqgb.f dlaqge.f dlaqp2.f dlaqps.f dlaqp2rk.f dlaqp3rk.f dlaqsb.f dlaqsp.f dlaqsy.f
308308
dlaqr0.f dlaqr1.f dlaqr2.f dlaqr3.f dlaqr4.f dlaqr5.f
309309
dlaqtr.f dlar1v.f dlar2v.f iladlr.f iladlc.f
310-
dlarf.f dlarfb.f dlarfb_gett.f dlarfg.f dlarfgp.f dlarft.f dlarfx.f dlarfy.f dlarf1f.f dlarf1l.f
310+
dlarf.f dlarfb.f dlarfb_gett.f dlarfg.f dlarfgp.f dlarft.f dlarft_lvl2.f dlarfx.f dlarfy.f dlarf1f.f dlarf1l.f
311311
dlargv.f dlarmm.f dlarrv.f dlartv.f
312312
dlarz.f dlarzb.f dlarzt.f dlaswp.f dlasy2.f
313313
dlasyf.f dlasyf_rook.f dlasyf_rk.f dlasyf_aa.f
@@ -419,7 +419,7 @@ set(ZLASRC
419419
zlaqr0.f zlaqr1.f zlaqr2.f zlaqr3.f zlaqr4.f zlaqr5.f
420420
zlaqsp.f zlaqsy.f zlar1v.f zlar2v.f ilazlr.f ilazlc.f
421421
zlarcm.f zlarf.f zlarfb.f zlarfb_gett.f zlarf1f.f zlarf1l.f
422-
zlarfg.f zlarfgp.f zlarft.f
422+
zlarfg.f zlarfgp.f zlarft.f zlarft_lvl2.f
423423
zlarfx.f zlarfy.f zlargv.f zlarnv.f zlarrv.f zlartg.f90 zlartv.f
424424
zlarz.f zlarzb.f zlarzt.f zlascl.f zlaset.f zlasr.f
425425
zlassq.f90 zlaswp.f zlasyf.f zlasyf_rook.f zlasyf_rk.f zlasyf_aa.f

SRC/Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ SLASRC = \
137137
slaqgb.o slaqge.o slaqp2.o slaqps.o slaqp2rk.o slaqp3rk.o slaqsb.o slaqsp.o slaqsy.o \
138138
slaqr0.o slaqr1.o slaqr2.o slaqr3.o slaqr4.o slaqr5.o \
139139
slaqtr.o slar1v.o slar2v.o ilaslr.o ilaslc.o \
140-
slarf.o slarf1f.o slarf1l.o slarfb.o slarfb_gett.o slarfg.o slarfgp.o slarft.o slarfx.o slarfy.o \
140+
slarf.o slarf1f.o slarf1l.o slarfb.o slarfb_gett.o slarfg.o slarfgp.o slarft.o slarft_lvl2.o slarfx.o slarfy.o \
141141
slargv.o slarmm.o slarrv.o slartv.o \
142142
slarz.o slarzb.o slarzt.o slaswp.o slasy2.o slasyf.o slasyf_rook.o \
143143
slasyf_rk.o \
@@ -249,7 +249,7 @@ CLASRC = \
249249
claqhb.o claqhe.o claqhp.o claqp2.o claqps.o claqp2rk.o claqp3rk.o claqsb.o \
250250
claqr0.o claqr1.o claqr2.o claqr3.o claqr4.o claqr5.o \
251251
claqsp.o claqsy.o clar1v.o clar2v.o ilaclr.o ilaclc.o \
252-
clarf.o clarf1f.o clarf1l.o clarfb.o clarfb_gett.o clarfg.o clarft.o clarfgp.o \
252+
clarf.o clarf1f.o clarf1l.o clarfb.o clarfb_gett.o clarfg.o clarft.o clarft_lvl2.o clarfgp.o \
253253
clarfx.o clarfy.o clargv.o clarnv.o clarrv.o clartg.o clartv.o \
254254
clarz.o clarzb.o clarzt.o clascl.o claset.o clasr.o classq.o \
255255
claswp.o clasyf.o clasyf_rook.o clasyf_rk.o clasyf_aa.o \
@@ -339,7 +339,7 @@ DLASRC = \
339339
dlaqgb.o dlaqge.o dlaqp2.o dlaqps.o dlaqp2rk.o dlaqp3rk.o dlaqsb.o dlaqsp.o dlaqsy.o \
340340
dlaqr0.o dlaqr1.o dlaqr2.o dlaqr3.o dlaqr4.o dlaqr5.o \
341341
dlaqtr.o dlar1v.o dlar2v.o iladlr.o iladlc.o \
342-
dlarf.o dlarfb.o dlarfb_gett.o dlarfg.o dlarfgp.o dlarft.o dlarfx.o dlarfy.o dlarf1f.o dlarf1l.o\
342+
dlarf.o dlarfb.o dlarfb_gett.o dlarfg.o dlarfgp.o dlarft.o dlarft_lvl2.o dlarfx.o dlarfy.o dlarf1f.o dlarf1l.o\
343343
dlargv.o dlarmm.o dlarrv.o dlartv.o \
344344
dlarz.o dlarzb.o dlarzt.o dlaswp.o dlasy2.o \
345345
dlasyf.o dlasyf_rook.o dlasyf_rk.o \
@@ -454,7 +454,7 @@ ZLASRC = \
454454
zlaqr0.o zlaqr1.o zlaqr2.o zlaqr3.o zlaqr4.o zlaqr5.o \
455455
zlaqsp.o zlaqsy.o zlar1v.o zlar2v.o ilazlr.o ilazlc.o \
456456
zlarcm.o zlarf.o zlarfb.o zlarfb_gett.o zlarf1f.o zlarf1l.o \
457-
zlarfg.o zlarft.o zlarfgp.o \
457+
zlarfg.o zlarft.o zlarft_lvl2.o zlarfgp.o \
458458
zlarfx.o zlarfy.o zlargv.o zlarnv.o zlarrv.o zlartg.o zlartv.o \
459459
zlarz.o zlarzb.o zlarzt.o zlascl.o zlaset.o zlasr.o \
460460
zlassq.o zlaswp.o zlasyf.o zlasyf_rook.o zlasyf_rk.o zlasyf_aa.o \

SRC/clarft.f

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,14 @@ RECURSIVE SUBROUTINE CLARFT( DIRECT, STOREV, N, K, V, LDV,
217217
RETURN
218218
END IF
219219
*
220+
* Determine when to cross over into the level 2 based implementation
221+
*
222+
NX = ILAENV(3, "CLARFT", DIRECT // STOREV, N, K, -1, -1)
223+
IF(K.LT.NX) THEN
224+
CALL CLARFT_LVL2(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT)
225+
RETURN
226+
END IF
227+
*
220228
* Beginning of executable statements
221229
*
222230
L = K / 2

SRC/VARIANTS/larft/LL-LVL2/clarft.f renamed to SRC/clarft_lvl2.f

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
*> \brief \b CLARFT VARIANT: left-looking Level 2 BLAS version of the algorithm
1+
*> \brief \b CLARFT_LVL2: Level 2 BLAS version for terminating case of CLARFT
22
*
33
* =========== DOCUMENTATION ===========
44
*
55
* Online html documentation available at
66
* http://www.netlib.org/lapack/explore-html/
77
*
8-
*> Download CLARFT + dependencies
8+
*> Download CLARFT_LVL2 + dependencies
99
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/clarft.f">
1010
*> [TGZ]</a>
1111
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/clarft.f">
@@ -16,7 +16,8 @@
1616
* Definition:
1717
* ===========
1818
*
19-
* SUBROUTINE CLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
19+
* SUBROUTINE CLARFT_LVL2( DIRECT, STOREV, N, K, V, LDV, TAU,
20+
* T, LDT )
2021
*
2122
* .. Scalar Arguments ..
2223
* CHARACTER DIRECT, STOREV
@@ -32,7 +33,7 @@
3233
*>
3334
*> \verbatim
3435
*>
35-
*> CLARFT forms the triangular factor T of a complex block reflector H
36+
*> CLARFT_LVL2 forms the triangular factor T of a complex block reflector H
3637
*> of order n, which is defined as a product of k elementary reflectors.
3738
*>
3839
*> If DIRECT = 'F', H = H(1) H(2) . . . H(k) and T is upper triangular;
@@ -157,7 +158,8 @@
157158
*> \endverbatim
158159
*>
159160
* =====================================================================
160-
SUBROUTINE CLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
161+
SUBROUTINE CLARFT_LVL2( DIRECT, STOREV, N, K, V, LDV, TAU,
162+
$ T, LDT )
161163
*
162164
* -- LAPACK auxiliary routine --
163165
* -- LAPACK is a software package provided by Univ. of Tennessee, --
@@ -321,6 +323,6 @@ SUBROUTINE CLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
321323
END IF
322324
RETURN
323325
*
324-
* End of CLARFT
326+
* End of CLARFT_LVL2
325327
*
326328
END

SRC/dlarft.f

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ RECURSIVE SUBROUTINE DLARFT( DIRECT, STOREV, N, K, V, LDV,
181181
*
182182
* .. Local Scalars ..
183183
*
184-
INTEGER I,J,L
184+
INTEGER I,J,L,NX
185185
LOGICAL QR,LQ,QL,DIRF,COLV
186186
*
187187
* .. External Subroutines ..
@@ -213,6 +213,14 @@ RECURSIVE SUBROUTINE DLARFT( DIRECT, STOREV, N, K, V, LDV,
213213
RETURN
214214
END IF
215215
*
216+
* Determine when to cross over into the level 2 based implementation
217+
*
218+
NX = ILAENV(3, "DLARFT", DIRECT // STOREV, N, K, -1, -1)
219+
IF(K.LT.NX) THEN
220+
CALL DLARFT_LVL2(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT)
221+
RETURN
222+
END IF
223+
*
216224
* Beginning of executable statements
217225
*
218226
L = K / 2

SRC/VARIANTS/larft/LL-LVL2/dlarft.f renamed to SRC/dlarft_lvl2.f

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
*> \brief \b DLARFT VARIANT: left-looking Level 2 BLAS version of the algorithm
1+
*> \brief \b DLARFT_LVL2: Level 2 BLAS version for terminating case of DLARFT.
22
*
33
* =========== DOCUMENTATION ===========
44
*
55
* Online html documentation available at
66
* http://www.netlib.org/lapack/explore-html/
77
*
8-
*> Download DLARFT + dependencies
8+
*> Download DLARFT_LVL2 + dependencies
99
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlarft.f">
1010
*> [TGZ]</a>
1111
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlarft.f">
@@ -16,7 +16,8 @@
1616
* Definition:
1717
* ===========
1818
*
19-
* SUBROUTINE DLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
19+
* SUBROUTINE DLARFT_LVL2( DIRECT, STOREV, N, K, V, LDV, TAU,
20+
* T, LDT )
2021
*
2122
* .. Scalar Arguments ..
2223
* CHARACTER DIRECT, STOREV
@@ -32,7 +33,7 @@
3233
*>
3334
*> \verbatim
3435
*>
35-
*> DLARFT forms the triangular factor T of a real block reflector H
36+
*> DLARFT_LVL2 forms the triangular factor T of a real block reflector H
3637
*> of order n, which is defined as a product of k elementary reflectors.
3738
*>
3839
*> If DIRECT = 'F', H = H(1) H(2) . . . H(k) and T is upper triangular;
@@ -157,7 +158,8 @@
157158
*> \endverbatim
158159
*>
159160
* =====================================================================
160-
SUBROUTINE DLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
161+
SUBROUTINE DLARFT_LVL2( DIRECT, STOREV, N, K, V, LDV, TAU,
162+
$ T, LDT )
161163
*
162164
* -- LAPACK auxiliary routine --
163165
* -- LAPACK is a software package provided by Univ. of Tennessee, --
@@ -319,6 +321,6 @@ SUBROUTINE DLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
319321
END IF
320322
RETURN
321323
*
322-
* End of DLARFT
324+
* End of DLARFT_LVL2
323325
*
324326
END

SRC/ilaenv.f

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,10 @@ INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 )
665665
IF( C3.EQ.'HD3' ) THEN
666666
NX = 128
667667
END IF
668+
ELSE IF( C2.EQ.'LA' ) THEN
669+
IF( C3.EQ.'RFT' ) THEN
670+
NX = 64
671+
END IF
668672
END IF
669673
ILAENV = NX
670674
RETURN

SRC/lapack_64.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,7 @@
335335
#define CLARFG CLARFG_64
336336
#define CLARFGP CLARFGP_64
337337
#define CLARFT CLARFT_64
338+
#define CLARFT_LVL2 CLARFT_LVL2_64
338339
#define CLARFX CLARFX_64
339340
#define CLARFY CLARFY_64
340341
#define CLARGV CLARGV_64
@@ -809,6 +810,7 @@
809810
#define DLARFG DLARFG_64
810811
#define DLARFGP DLARFGP_64
811812
#define DLARFT DLARFT_64
813+
#define DLARFT_LVL2 DLARFT_LVL2_64
812814
#define DLARFX DLARFX_64
813815
#define DLARFY DLARFY_64
814816
#define DLARGV DLARGV_64
@@ -1404,6 +1406,7 @@
14041406
#define SLARFG SLARFG_64
14051407
#define SLARFGP SLARFGP_64
14061408
#define SLARFT SLARFT_64
1409+
#define SLARFT_LVL2 SLARFT_LVL2_64
14071410
#define SLARFX SLARFX_64
14081411
#define SLARFY SLARFY_64
14091412
#define SLARGV SLARGV_64
@@ -2050,6 +2053,7 @@
20502053
#define ZLARFG ZLARFG_64
20512054
#define ZLARFGP ZLARFGP_64
20522055
#define ZLARFT ZLARFT_64
2056+
#define ZLARFT_LVL2 ZLARFT_LVL2_64
20532057
#define ZLARFX ZLARFX_64
20542058
#define ZLARFY ZLARFY_64
20552059
#define ZLARGV ZLARGV_64

SRC/slarft.f

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ RECURSIVE SUBROUTINE SLARFT( DIRECT, STOREV, N, K, V, LDV,
181181
*
182182
* .. Local Scalars ..
183183
*
184-
INTEGER I,J,L
184+
INTEGER I,J,L,NX
185185
LOGICAL QR,LQ,QL,DIRF,COLV
186186
*
187187
* .. External Subroutines ..
@@ -213,6 +213,14 @@ RECURSIVE SUBROUTINE SLARFT( DIRECT, STOREV, N, K, V, LDV,
213213
RETURN
214214
END IF
215215
*
216+
* Determine when to cross over into the level 2 based implementation
217+
*
218+
NX = ILAENV(3, "SLARFT", DIRECT // STOREV, N, K, -1, -1)
219+
IF(K.LT.NX) THEN
220+
CALL SLARFT_LVL2(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT)
221+
RETURN
222+
END IF
223+
*
216224
* Beginning of executable statements
217225
*
218226
L = K / 2

SRC/VARIANTS/larft/LL-LVL2/slarft.f renamed to SRC/slarft_lvl2.f

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
*> \brief \b SLARFT VARIANT: left-looking Level 2 BLAS version of the algorithm.
1+
*> \brief \b SLARFT_LVL2: Level 2 BLAS version for terminating case of SLARFT.
22
*
33
* =========== DOCUMENTATION ===========
44
*
55
* Online html documentation available at
66
* http://www.netlib.org/lapack/explore-html/
77
*
8-
*> Download SLARFT + dependencies
8+
*> Download SLARFT_LVL2 + dependencies
99
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/slarft.f">
1010
*> [TGZ]</a>
1111
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/slarft.f">
@@ -16,7 +16,8 @@
1616
* Definition:
1717
* ===========
1818
*
19-
* SUBROUTINE SLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
19+
* SUBROUTINE SLARFT_LVL2( DIRECT, STOREV, N, K, V, LDV, TAU,
20+
* T, LDT )
2021
*
2122
* .. Scalar Arguments ..
2223
* CHARACTER DIRECT, STOREV
@@ -32,7 +33,7 @@
3233
*>
3334
*> \verbatim
3435
*>
35-
*> SLARFT forms the triangular factor T of a real block reflector H
36+
*> SLARFT_LVL2 forms the triangular factor T of a real block reflector H
3637
*> of order n, which is defined as a product of k elementary reflectors.
3738
*>
3839
*> If DIRECT = 'F', H = H(1) H(2) . . . H(k) and T is upper triangular;
@@ -157,7 +158,8 @@
157158
*> \endverbatim
158159
*>
159160
* =====================================================================
160-
SUBROUTINE SLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
161+
SUBROUTINE SLARFT_LVL2( DIRECT, STOREV, N, K, V, LDV, TAU,
162+
$ T, LDT )
161163
*
162164
* -- LAPACK auxiliary routine --
163165
* -- LAPACK is a software package provided by Univ. of Tennessee, --
@@ -319,6 +321,6 @@ SUBROUTINE SLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
319321
END IF
320322
RETURN
321323
*
322-
* End of SLARFT
324+
* End of SLARFT_LVL2
323325
*
324326
END

0 commit comments

Comments
 (0)