@@ -743,9 +743,8 @@ module la_lapack_c
743743 rowcnd = max( rcmin, smlnum ) / min( rcmax, bignum )
744744 end if
745745 ! compute column scale factors.
746- do j = 1, n
747- c( j ) = zero
748- end do
746+ c(1:n) = zero
747+
749748 ! find the maximum element in each column,
750749 ! assuming the row scaling computed above.
751750 do j = 1, n
@@ -1620,60 +1619,61 @@ module la_lapack_c
16201619 if( n==0 )return
16211620 if( m==0 )return
16221621 if( la_lsame( job, 'N' ) )return
1623- if( ilo==ihi )go to 30
1624- ! backward balance
1625- if( la_lsame( job, 'S' ) .or. la_lsame( job, 'B' ) ) then
1626- ! backward transformation on right eigenvectors
1627- if( rightv ) then
1628- do i = ilo, ihi
1629- call la_csscal( m, rscale( i ), v( i, 1 ), ldv )
1630- end do
1631- end if
1632- ! backward transformation on left eigenvectors
1633- if( leftv ) then
1634- do i = ilo, ihi
1635- call la_csscal( m, lscale( i ), v( i, 1 ), ldv )
1636- end do
1637- end if
1638- end if
1622+
1623+ backward_balance: if( ilo/=ihi ) then
1624+ ! backward balance
1625+ if( la_lsame( job, 'S' ) .or. la_lsame( job, 'B' ) ) then
1626+ ! backward transformation on right eigenvectors
1627+ if( rightv ) then
1628+ do i = ilo, ihi
1629+ call la_csscal( m, rscale( i ), v( i, 1 ), ldv )
1630+ end do
1631+ end if
1632+ ! backward transformation on left eigenvectors
1633+ if( leftv ) then
1634+ do i = ilo, ihi
1635+ call la_csscal( m, lscale( i ), v( i, 1 ), ldv )
1636+ end do
1637+ end if
1638+ end if
1639+ endif backward_balance
1640+
16391641 ! backward permutation
1640- 30 continue
16411642 if( la_lsame( job, 'P' ) .or. la_lsame( job, 'B' ) ) then
16421643 ! backward permutation on right eigenvectors
16431644 if( rightv ) then
1644- if( ilo==1 )go to 50
1645+
16451646 loop_40: do i = ilo - 1, 1, -1
16461647 k = rscale( i )
16471648 if( k==i )cycle loop_40
16481649 call la_cswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
16491650 end do loop_40
1650- 50 continue
1651- if( ihi==n )go to 70
1651+
16521652 loop_60: do i = ihi + 1, n
16531653 k = rscale( i )
16541654 if( k==i )cycle loop_60
16551655 call la_cswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
16561656 end do loop_60
1657+
16571658 end if
1659+
16581660 ! backward permutation on left eigenvectors
1659- 70 continue
16601661 if( leftv ) then
1661- if( ilo==1 )go to 90
1662+
16621663 loop_80: do i = ilo - 1, 1, -1
16631664 k = lscale( i )
16641665 if( k==i )cycle loop_80
16651666 call la_cswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
16661667 end do loop_80
1667- 90 continue
1668- if( ihi==n )go to 110
1668+
16691669 loop_100: do i = ihi + 1, n
16701670 k = lscale( i )
16711671 if( k==i )cycle loop_100
16721672 call la_cswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
16731673 end do loop_100
16741674 end if
16751675 end if
1676- 110 continue
1676+
16771677 return
16781678 end subroutine la_cggbak
16791679
0 commit comments