@@ -226,7 +226,7 @@ SUBROUTINE CCKGSV( NM, MVAL, PVAL, NVAL, NMATS, ISEED, THRESH,
226226 CHARACTER * 3 PATH
227227 INTEGER I, IINFO, IM, IMAT, KLA, KLB, KUA, KUB, LDA,
228228 $ LDB, LDQ, LDR, LDU, LDV, LWORK, M, MODEA,
229- $ MODEB, N, NFAIL, NRUN, NT, P
229+ $ MODEB, N, NFAIL, NRUN, NT, P, K, L
230230 REAL ANORM, BNORM, CNDNMA, CNDNMB
231231* ..
232232* .. Local Arrays ..
@@ -257,6 +257,43 @@ SUBROUTINE CCKGSV( NM, MVAL, PVAL, NVAL, NMATS, ISEED, THRESH,
257257 LDR = NMAX
258258 LWORK = NMAX* NMAX
259259*
260+ * Specific cases
261+ *
262+ * Test: https://github.com/Reference-LAPACK/lapack/issues/411#issue-608776973
263+ *
264+ M = 6
265+ P = 6
266+ N = 6
267+ A(1 :M* N) = CMPLX (1.E0 , 0.E0 )
268+ B(1 :M* N) = CMPLX (0.E0 , 0.E0 )
269+ B(1+0 * M) = CMPLX (9.E19 , 0.E0 )
270+ B(2+1 * M) = CMPLX (9.E18 , 0.E0 )
271+ B(3+2 * M) = CMPLX (9.E17 , 0.E0 )
272+ B(4+3 * M) = CMPLX (9.E16 , 0.E0 )
273+ B(5+4 * M) = CMPLX (9.E15 , 0.E0 )
274+ B(6+5 * M) = CMPLX (9.E14 , 0.E0 )
275+ CALL CGGSVD3(' N' ,' N' ,' N' , M, P, N, K, L, A, M, B, M,
276+ $ ALPHA, BETA, U, 1 , V, 1 , Q, 1 ,
277+ $ WORK, M* N, RWORK, IWORK, INFO)
278+ *
279+ * Print information there is a NAN in BETA
280+ DO 40 I = 1 , L
281+ IF ( BETA(I).NE. BETA(I) ) THEN
282+ INFO = - I
283+ EXIT
284+ END IF
285+ 40 CONTINUE
286+ IF ( INFO.LT. 0 ) THEN
287+ IF ( NFAIL.EQ. 0 .AND. FIRSTT ) THEN
288+ FIRSTT = .FALSE.
289+ CALL ALAHDG( NOUT, PATH )
290+ END IF
291+ WRITE ( NOUT, FMT = 9997 ) - INFO
292+ NFAIL = NFAIL + 1
293+ END IF
294+ NRUN = NRUN + 1
295+ INFO = 0
296+ *
260297* Do for each value of M in MVAL.
261298*
262299 DO 30 IM = 1 , NM
@@ -332,6 +369,7 @@ SUBROUTINE CCKGSV( NM, MVAL, PVAL, NVAL, NMATS, ISEED, THRESH,
332369 9999 FORMAT ( ' CLATMS in CCKGSV INFO = ' , I5 )
333370 9998 FORMAT ( ' M=' , I4, ' P=' , I4, ' , N=' , I4, ' , type ' , I2,
334371 $ ' , test ' , I2, ' , ratio=' , G13.6 )
372+ 9997 FORMAT ( ' FOUND NaN in BETA(' , I4,' )' )
335373 RETURN
336374*
337375* End of CCKGSV
0 commit comments