From 44948e7c8e4cff62a9a944030e22ef7a93903c37 Mon Sep 17 00:00:00 2001 From: julie Date: Fri, 21 Sep 2012 02:21:29 +0000 Subject: --- SRC/ztprfb.f | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'SRC/ztprfb.f') diff --git a/SRC/ztprfb.f b/SRC/ztprfb.f index 9110f494..d3d84505 100644 --- a/SRC/ztprfb.f +++ b/SRC/ztprfb.f @@ -184,6 +184,11 @@ *> The leading dimension of the array WORK. *> If SIDE = 'L', LDWORK >= K; *> if SIDE = 'R', LDWORK >= M. +*> +*> If LDWORK = -1, then a workspace query is assumed; the routine +*> only calculates the optimal size of 2nd dimension of the WORK array, +*> returns this value as the first entry of the WORK array, and no +*> error message related to LDWORK is issued by XERBLA. *> \endverbatim * * Authors: @@ -273,7 +278,7 @@ * .. * .. Local Scalars .. INTEGER I, J, MP, NP, KP - LOGICAL LEFT, FORWARD, COLUMN, RIGHT, BACKWARD, ROW + LOGICAL LEFT, LQUERY, FORWARD, COLUMN, RIGHT, BACKWARD, ROW * .. * .. External Functions .. LOGICAL LSAME @@ -287,6 +292,7 @@ * .. * .. Executable Statements .. * + LQUERY = ( LDWORK.EQ.-1 ) * Quick return if possible * IF( M.LE.0 .OR. N.LE.0 .OR. K.LE.0 .OR. L.LT.0 ) RETURN @@ -323,6 +329,19 @@ FORWARD = .FALSE. BACKWARD = .FALSE. END IF +* --------------------------------------------------------------------------- +* +* Workspace Query +* + IF( LQUERY .AND. LEFT ) THEN + LDWORK=MAX(1,K) + ELSE IF ( LQUERY .AND. RIGHT ) THEN + LDWORK=MAX(1,M) + END IF + + IF( LQUERY ) THEN + RETURN + END IF * * --------------------------------------------------------------------------- * -- cgit v1.2.3