slaqr2 man page on Scientific

Man page or keyword search:  
man Server   26626 pages
apropos Keyword Search (all sections)
Output format
Scientific logo
[printable version]

SLAQR2(1)	    LAPACK auxiliary routine (version 3.2)	     SLAQR2(1)

NAME
SYNOPSIS
       SUBROUTINE SLAQR2( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, IHIZ,
			  Z, LDZ, NS, ND, SR, SI, V, LDV, NH, T, LDT, NV,  WV,
			  LDWV, WORK, LWORK )

	   INTEGER	  IHIZ,	 ILOZ,	KBOT,  KTOP, LDH, LDT, LDV, LDWV, LDZ,
			  LWORK, N, ND, NH, NS, NV, NW

	   LOGICAL	  WANTT, WANTZ

	   REAL		  H( LDH, * ), SI( * ), SR( * ), T( LDT, * ), V(  LDV,
			  * ), WORK( * ), WV( LDWV, * ), Z( LDZ, * )

	   REAL		  ZERO, ONE

	   PARAMETER	  ( ZERO = 0.0e0, ONE = 1.0e0 )

	   REAL		  AA,  BB, BETA, CC, CS, DD, EVI, EVK, FOO, S, SAFMAX,
			  SAFMIN, SMLNUM, SN, TAU, ULP

	   INTEGER	  I, IFST, ILST, INFO, INFQR, J, JW,  K,  KCOL,	 KEND,
			  KLN, KROW, KWTOP, LTOP, LWK1, LWK2, LWKOPT

	   LOGICAL	  BULGE, SORTED

	   REAL		  SLAMCH

	   EXTERNAL	  SLAMCH

	   EXTERNAL	  SCOPY,   SGEHRD,   SGEMM,  SLABAD,  SLACPY,  SLAHQR,
			  SLANV2, SLARF, SLARFG, SLASET, SORMHR, STREXC

	   INTRINSIC	  ABS, INT, MAX, MIN, REAL, SQRT

	   JW		  = MIN( NW, KBOT-KTOP+1 )

	   IF(		  JW.LE.2 ) THEN

	   LWKOPT	  = 1

	   ELSE

	   CALL		  SGEHRD( JW, 1, JW-1, T, LDT, WORK, WORK, -1, INFO )

	   LWK1		  = INT( WORK( 1 ) )

	   CALL		  SORMHR( 'R', 'N', JW, JW, 1, JW-1, T, LDT, WORK,  V,
			  LDV, WORK, -1, INFO )

	   LWK2		  = INT( WORK( 1 ) )

	   LWKOPT	  = JW + MAX( LWK1, LWK2 )

	   END		  IF

	   IF(		  LWORK.EQ.-1 ) THEN

	   WORK(	  1 ) = REAL( LWKOPT )

	   RETURN

	   END		  IF

	   NS		  = 0

	   ND		  = 0

	   WORK(	  1 ) = ONE

	   IF(		  KTOP.GT.KBOT ) RETURN

	   IF(		  NW.LT.1 ) RETURN

	   SAFMIN	  = SLAMCH( 'SAFE MINIMUM' )

	   SAFMAX	  = ONE / SAFMIN

	   CALL		  SLABAD( SAFMIN, SAFMAX )

	   ULP		  = SLAMCH( 'PRECISION' )

	   SMLNUM	  = SAFMIN*( REAL( N ) / ULP )

	   JW		  = MIN( NW, KBOT-KTOP+1 )

	   KWTOP	  = KBOT - JW + 1

	   IF(		  KWTOP.EQ.KTOP ) THEN

	   S		  = ZERO

	   ELSE

	   S		  = H( KWTOP, KWTOP-1 )

	   END		  IF

	   IF(		  KBOT.EQ.KWTOP ) THEN

	   SR(		  KWTOP ) = H( KWTOP, KWTOP )

	   SI(		  KWTOP ) = ZERO

	   NS		  = 1

	   ND		  = 0

	   IF(		  ABS(	S ).LE.MAX( SMLNUM, ULP*ABS( H( KWTOP, KWTOP )
			  ) ) ) THEN

	   NS		  = 0

	   ND		  = 1

	   IF(		  KWTOP.GT.KTOP ) H( KWTOP, KWTOP-1 ) = ZERO

	   END		  IF

	   WORK(	  1 ) = ONE

	   RETURN

	   END		  IF

	   CALL		  SLACPY( 'U', JW, JW, H( KWTOP, KWTOP ), LDH, T,  LDT
			  )

	   CALL		  SCOPY(  JW-1, H( KWTOP+1, KWTOP ), LDH+1, T( 2, 1 ),
			  LDT+1 )

	   CALL		  SLASET( 'A', JW, JW, ZERO, ONE, V, LDV )

	   CALL		  SLAHQR( .true., .true., JW, 1, JW, T, LDT, SR( KWTOP
			  ), SI( KWTOP ), 1, JW, V, LDV, INFQR )

	   DO		  10 J = 1, JW - 3

	   T(		  J+2, J ) = ZERO

	   T(		  J+3, J ) = ZERO

	   10		  CONTINUE

	   IF(		  JW.GT.2 ) T( JW, JW-2 ) = ZERO

	   NS		  = JW

	   ILST		  = INFQR + 1

	   20		  CONTINUE

	   IF(		  ILST.LE.NS ) THEN

	   IF(		  NS.EQ.1 ) THEN

	   BULGE	  = .FALSE.

	   ELSE

	   BULGE	  = T( NS, NS-1 ).NE.ZERO

	   END		  IF

	   IF(

	   FOO		  = ABS( T( NS, NS ) )

	   IF(		  FOO.EQ.ZERO ) FOO = ABS( S )

	   IF(		  ABS( S*V( 1, NS ) ).LE.MAX( SMLNUM, ULP*FOO ) ) THEN

	   NS		  = NS - 1

	   ELSE

	   IFST		  = NS

	   CALL		  STREXC(  'V',	 JW, T, LDT, V, LDV, IFST, ILST, WORK,
			  INFO )

	   ILST		  = ILST + 1

	   END		  IF

	   ELSE

	   FOO		  = ABS( T( NS, NS ) ) + SQRT( ABS( T( NS, NS-1 ) ) )*
			  SQRT( ABS( T( NS-1, NS ) ) )

	   IF(		  FOO.EQ.ZERO ) FOO = ABS( S )

	   IF(		  MAX(	ABS(  S*V(  1,	NS  ) ), ABS( S*V( 1, NS-1 ) )
			  ).LE.	 MAX( SMLNUM, ULP*FOO ) ) THEN

	   NS		  = NS - 2

	   ELSE

	   IFST		  = NS

	   CALL		  STREXC( 'V', JW, T, LDT, V, LDV, IFST,  ILST,	 WORK,
			  INFO )

	   ILST		  = ILST + 2

	   END		  IF

	   END		  IF

	   GO		  TO 20

	   END		  IF

	   IF(		  NS.EQ.0 ) S = ZERO

	   IF(		  NS.LT.JW ) THEN

	   SORTED	  = .false.

	   I		  = NS + 1

	   30		  CONTINUE

	   IF(		  SORTED ) GO TO 50

	   SORTED	  = .true.

	   KEND		  = I - 1

	   I		  = INFQR + 1

	   IF(		  I.EQ.NS ) THEN

	   K		  = I + 1

	   ELSE		  IF( T( I+1, I ).EQ.ZERO ) THEN

	   K		  = I + 1

	   ELSE

	   K		  = I + 2

	   END		  IF

	   40		  CONTINUE

	   IF(		  K.LE.KEND ) THEN

	   IF(		  K.EQ.I+1 ) THEN

	   EVI		  = ABS( T( I, I ) )

	   ELSE

	   EVI		  =  ABS(  T(  I,  I ) ) + SQRT( ABS( T( I+1, I ) ) )*
			  SQRT( ABS( T( I, I+1 ) ) )

	   END		  IF

	   IF(		  K.EQ.KEND ) THEN

	   EVK		  = ABS( T( K, K ) )

	   ELSE		  IF( T( K+1, K ).EQ.ZERO ) THEN

	   EVK		  = ABS( T( K, K ) )

	   ELSE

	   EVK		  = ABS( T( K, K ) ) + SQRT( ABS( T( K+1,  K  )	 )  )*
			  SQRT( ABS( T( K, K+1 ) ) )

	   END		  IF

	   IF(		  EVI.GE.EVK ) THEN

	   I		  = K

	   ELSE

	   SORTED	  = .false.

	   IFST		  = I

	   ILST		  = K

	   CALL		  STREXC(  'V',	 JW, T, LDT, V, LDV, IFST, ILST, WORK,
			  INFO )

	   IF(		  INFO.EQ.0 ) THEN

	   I		  = ILST

	   ELSE

	   I		  = K

	   END		  IF

	   END		  IF

	   IF(		  I.EQ.KEND ) THEN

	   K		  = I + 1

	   ELSE		  IF( T( I+1, I ).EQ.ZERO ) THEN

	   K		  = I + 1

	   ELSE

	   K		  = I + 2

	   END		  IF

	   GO		  TO 40

	   END		  IF

	   GO		  TO 30

	   50		  CONTINUE

	   END		  IF

	   I		  = JW

	   60		  CONTINUE

	   IF(		  I.GE.INFQR+1 ) THEN

	   IF(		  I.EQ.INFQR+1 ) THEN

	   SR(		  KWTOP+I-1 ) = T( I, I )

	   SI(		  KWTOP+I-1 ) = ZERO

	   I		  = I - 1

	   ELSE		  IF( T( I, I-1 ).EQ.ZERO ) THEN

	   SR(		  KWTOP+I-1 ) = T( I, I )

	   SI(		  KWTOP+I-1 ) = ZERO

	   I		  = I - 1

	   ELSE

	   AA		  = T( I-1, I-1 )

	   CC		  = T( I, I-1 )

	   BB		  = T( I-1, I )

	   DD		  = T( I, I )

	   CALL		  SLANV2(  AA,	BB,  CC,  DD,  SR(  KWTOP+I-2  ),  SI(
			  KWTOP+I-2  ),	 SR( KWTOP+I-1 ), SI( KWTOP+I-1 ), CS,
			  SN )

	   I		  = I - 2

	   END		  IF

	   GO		  TO 60

	   END		  IF

	   IF(		  NS.LT.JW .OR. S.EQ.ZERO ) THEN

	   IF(		  NS.GT.1 .AND. S.NE.ZERO ) THEN

	   CALL		  SCOPY( NS, V, LDV, WORK, 1 )

	   BETA		  = WORK( 1 )

	   CALL		  SLARFG( NS, BETA, WORK( 2 ), 1, TAU )

	   WORK(	  1 ) = ONE

	   CALL		  SLASET( 'L', JW-2, JW-2, ZERO, ZERO, T( 3, 1 ),  LDT
			  )

	   CALL		  SLARF( 'L', NS, JW, WORK, 1, TAU, T, LDT, WORK( JW+1
			  ) )

	   CALL		  SLARF( 'R', NS, NS, WORK, 1, TAU, T, LDT, WORK( JW+1
			  ) )

	   CALL		  SLARF( 'R', JW, NS, WORK, 1, TAU, V, LDV, WORK( JW+1
			  ) )

	   CALL		  SGEHRD( JW, 1, NS,  T,  LDT,	WORK,  WORK(  JW+1  ),
			  LWORK-JW, INFO )

	   END		  IF

	   IF(		  KWTOP.GT.1 ) H( KWTOP, KWTOP-1 ) = S*V( 1, 1 )

	   CALL		  SLACPY(  'U', JW, JW, T, LDT, H( KWTOP, KWTOP ), LDH
			  )

	   CALL		  SCOPY( JW-1, T( 2, 1 ), LDT+1, H( KWTOP+1, KWTOP  ),
			  LDH+1 )

	   IF(		  NS.GT.1 .AND. S.NE.ZERO ) CALL SORMHR( 'R', 'N', JW,
			  NS, 1, NS, T, LDT,  WORK,  V,	 LDV,  WORK(  JW+1  ),
			  LWORK-JW, INFO )

	   IF(		  WANTT ) THEN

	   LTOP		  = 1

	   ELSE

	   LTOP		  = KTOP

	   END		  IF

	   DO		  70 KROW = LTOP, KWTOP - 1, NV

	   KLN		  = MIN( NV, KWTOP-KROW )

	   CALL		  SGEMM( 'N', 'N', KLN, JW, JW, ONE, H( KROW, KWTOP ),
			  LDH, V, LDV, ZERO, WV, LDWV )

	   CALL		  SLACPY( 'A', KLN, JW, WV, LDWV, H(  KROW,  KWTOP  ),
			  LDH )

	   70		  CONTINUE

	   IF(		  WANTT ) THEN

	   DO		  80 KCOL = KBOT + 1, N, NH

	   KLN		  = MIN( NH, N-KCOL+1 )

	   CALL		  SGEMM( 'C', 'N', JW, KLN, JW, ONE, V, LDV, H( KWTOP,
			  KCOL ), LDH, ZERO, T, LDT )

	   CALL		  SLACPY( 'A', JW, KLN, T, LDT, H( KWTOP, KCOL ),  LDH
			  )

	   80		  CONTINUE

	   END		  IF

	   IF(		  WANTZ ) THEN

	   DO		  90 KROW = ILOZ, IHIZ, NV

	   KLN		  = MIN( NV, IHIZ-KROW+1 )

	   CALL		  SGEMM( 'N', 'N', KLN, JW, JW, ONE, Z( KROW, KWTOP ),
			  LDZ, V, LDV, ZERO, WV, LDWV )

	   CALL		  SLACPY( 'A', KLN, JW, WV, LDWV, Z(  KROW,  KWTOP  ),
			  LDZ )

	   90		  CONTINUE

	   END		  IF

	   END		  IF

	   ND		  = JW - NS

	   NS		  = NS - INFQR

	   WORK(	  1 ) = REAL( LWKOPT )

	   END

PURPOSE
 LAPACK auxiliary routine (versioNovember 2008			     SLAQR2(1)
[top]

List of man pages available for Scientific

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net