Skip to content

dead-lock in SLARTG called by CTGSJA #411

Description

@winice-test

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions