-
Notifications
You must be signed in to change notification settings - Fork 480
Closed
Description
Hi
When I worked on the GGSVD3 code with some simple case, I found a dead lock in SLARTG which is called by CTGSJA.
The dead-lock occurs between line 161 and 167 when the input argument F equals to INF. But I think the real problem is in CTGSJA line 615-634. There is a check for A1 .NE. ZERO. But when we get GAMMA = B1/A1, we may get an overflow and then calls SLARTG with F=INF at line 623.
Here is a simplified case
PROGRAM tcggsvd3
IMPLICIT NONE
COMPLEX*8 A(6,6), B(6,6)
COMPLEX*8 U(6,6), V(6,6), Q(6,6)
COMPLEX*8 WORK(1024)
REAL*4 ALPHA(6), BETA(6)
REAL*4 RWORK(12)
INTEGER K,L,IWORK(6), INFO
A=CMPLX(1.E0, 0.E0)
B=CMPLX(0.E0, 0.E0)
B(1,1) = CMPLX(9.E19, 0.E0)
B(2,2) = CMPLX(9.E18, 0.E0)
B(3,3) = CMPLX(9.E17, 0.E0)
B(4,4) = CMPLX(9.E16, 0.E0)
B(5,5) = CMPLX(9.E15, 0.E0)
B(6,6) = CMPLX(9.E14, 0.E0)
CALL CGGSVD3('N','N','N', 6,6,6, K,L, A,6,B,6,
& ALPHA,BETA,U,1,V,1,Q,1,WORK,1024,RWORK,IWORK,INFO)
WRITE(6,*)'INFO = ',INFO
WRITE(6,*)'ALPHA: ',ALPHA(1:6)
WRITE(6,*)'BETA: ',BETA(1:6)
END PROGRAM tcggsvd3
Metadata
Metadata
Assignees
Labels
No labels