225 10 CONTINUE
DO 20 JR = IKA + 2, N + 1 - JC
J = J + 1
WORK( J ) = ZERO
20 CONTINUE
ELSE
DO 30 JR = IKA + 2, JC
J = J + 1
WORK( J ) = ZERO
30 CONTINUE
DO 40 JR = MIN( IKA, JC-1 ), 0, -1
J = J + 1
WORK( J ) = A( IKA+1-JR, JC )
40 CONTINUE
END IF
50 CONTINUE
*
DO 60 J = 1, N
CALL SSPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
60 CONTINUE
*
IF( N.GT.1 .AND. KS.EQ.1 ) THEN
DO 70 J = 1, N - 1
CALL SSPR2( CUPLO, N, -E( J ), U( 1, J ), 1, U( 1, J+1 ), 1,
$ WORK )
70 CONTINUE
END IF
WNORM = SLANSP( '1', CUPLO, N, WORK, WORK( LW+1 ) )
*
IF( ANORM.GT.WNORM ) THEN
RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
ELSE
IF( ANORM.LT.ONE ) THEN
RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
ELSE
RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
END IF
END IF
*
* Do Test 2
*
* Compute U U**T - I
*
CALL SGEMM( 'N', 'C', N, N, N, ONE, U, LDU, U, LDU, ZERO, WORK,
$ N )
*
DO 80 J = 1, N
WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - ONE
80 CONTINUE
*
RESULT( 2 ) = MIN( SLANGE( '1', N, N, WORK, N, WORK( N**2+1 ) ),
$ REAL( N ) ) / ( N*ULP )
*
RETURN
*
* End of SSBT21
*
END
CONTINUE
DO 20 JR = IKA + 2, N + 1 - JC
J = J + 1
WORK( J ) = ZERO
20 CONTINUE
ELSE
DO 30 JR = IKA + 2, JC
J = J + 1
WORK( J ) = ZERO
30 CONTINUE
DO 40 JR = MIN( IKA, JC-1 ), 0, -1
J = J + 1
WORK( J ) = A( IKA+1-JR, JC )
40 CONTINUE
END IF
50 CONTINUE
*
DO 60 J = 1, N
CALL SSPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
60 CONTINUE
*
IF( N.GT.1 .AND. KS.EQ.1 ) THEN
DO 70 J = 1, N - 1
CALL SSPR2( CUPLO, N, -E( J ), U( 1, J ), 1, U( 1, J+1 ), 1,
$ WORK )
70 CONTINUE
END IF
WNORM = SLANSP( '1', CUPLO, N, WORK, WORK( LW+1 ) )
*
IF( ANORM.GT.WNORM ) THEN
RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
ELSE
IF( ANORM.LT.ONE ) THEN
RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
ELSE
RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
END IF
END IF
*
* Do Test 2
*
* Compute U U**T - I
*
CALL SGEMM( 'N', 'C', N, N, N, ONE, U, LDU, U, LDU, ZERO, WORK,
$ N )
*
DO 80 J = 1, N
WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - ONE
80 CONTINUE
*
RESULT( 2 ) = MIN( SLANGE( '1', N, N, WORK, N, WORK( N**2+1 ) ),
$ REAL( N ) ) / ( N*ULP )
*
RETURN
*
* End of SSBT21
*
END
CONTINUE
DO 20 JR = IKA + 2, N + 1 - JC
J = J + 1
WORK( J ) = ZERO
20 CONTINUE
ELSE
DO 30 JR = IKA + 2, JC
J = J + 1
WORK( J ) = ZERO
30 CONTINUE
DO 40 JR = MIN( IKA, JC-1 ), 0, -1
J = J + 1
WORK( J ) = A( IKA+1-JR, JC )
40 CONTINUE
END IF
50 CONTINUE
*
DO 60 J = 1, N
CALL SSPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
60 CONTINUE
*
IF( N.GT.1 .AND. KS.EQ.1 ) THEN
DO 70 J = 1, N - 1
CALL SSPR2( CUPLO, N, -E( J ), U( 1, J ), 1, U( 1, J+1 ), 1,
$ WORK )
70 CONTINUE
END IF
WNORM = SLANSP( '1', CUPLO, N, WORK, WORK( LW+1 ) )
*
IF( ANORM.GT.WNORM ) THEN
RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
ELSE
IF( ANORM.LT.ONE ) THEN
RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
ELSE
RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
END IF
END IF
*
* Do Test 2
*
* Compute U U**T - I
*
CALL SGEMM( 'N', 'C', N, N, N, ONE, U, LDU, U, LDU, ZERO, WORK,
$ N )
*
DO 80 J = 1, N
WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - ONE
80 CONTINUE
*
RESULT( 2 ) = MIN( SLANGE( '1', N, N, WORK, N, WORK( N**2+1 ) ),
$ REAL( N ) ) / ( N*ULP )
*
RETURN
*
* End of SSBT21
*
END
CONTINUE
DO 20 JR = IKA + 2, N + 1 - JC
J = J + 1
WORK( J ) = ZERO
20 CONTINUE
ELSE
DO 30 JR = IKA + 2, JC
J = J + 1
WORK( J ) = ZERO
30 CONTINUE
DO 40 JR = MIN( IKA, JC-1 ), 0, -1
J = J + 1
WORK( J ) = A( IKA+1-JR, JC )
40 CONTINUE
END IF
50 CONTINUE
*
DO 60 J = 1, N
CALL SSPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
60 CONTINUE
*
IF( N.GT.1 .AND. KS.EQ.1 ) THEN
DO 70 J = 1, N - 1
CALL SSPR2( CUPLO, N, -E( J ), U( 1, J ), 1, U( 1, J+1 ), 1,
$ WORK )
70 CONTINUE
END IF
WNORM = SLANSP( '1', CUPLO, N, WORK, WORK( LW+1 ) )
*
IF( ANORM.GT.WNORM ) THEN
RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
ELSE
IF( ANORM.LT.ONE ) THEN
RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
ELSE
RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
END IF
END IF
*
* Do Test 2
*
* Compute U U**T - I
*
CALL SGEMM( 'N', 'C', N, N, N, ONE, U, LDU, U, LDU, ZERO, WORK,
$ N )
*
DO 80 J = 1, N
WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - ONE
80 CONTINUE
*
RESULT( 2 ) = MIN( SLANGE( '1', N, N, WORK, N, WORK( N**2+1 ) ),
$ REAL( N ) ) / ( N*ULP )
*
RETURN
*
* End of SSBT21
*
END
CONTINUE
DO 20 JR = IKA + 2, N + 1 - JC
J = J + 1
WORK( J ) = ZERO
20 CONTINUE
ELSE
DO 30 JR = IKA + 2, JC
J = J + 1
WORK( J ) = ZERO
30 CONTINUE
DO 40 JR = MIN( IKA, JC-1 ), 0, -1
J = J + 1
WORK( J ) = A( IKA+1-JR, JC )
40 CONTINUE
END IF
50 CONTINUE
*
DO 60 J = 1, N
CALL SSPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
60 CONTINUE
*
IF( N.GT.1 .AND. KS.EQ.1 ) THEN
DO 70 J = 1, N - 1
CALL SSPR2( CUPLO, N, -E( J ), U( 1, J ), 1, U( 1, J+1 ), 1,
$ WORK )
70 CONTINUE
END IF
WNORM = SLANSP( '1', CUPLO, N, WORK, WORK( LW+1 ) )
*
IF( ANORM.GT.WNORM ) THEN
RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
ELSE
IF( ANORM.LT.ONE ) THEN
RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
ELSE
RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
END IF
END IF
*
* Do Test 2
*
* Compute U U**T - I
*
CALL SGEMM( 'N', 'C', N, N, N, ONE, U, LDU, U, LDU, ZERO, WORK,
$ N )
*
DO 80 J = 1, N
WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - ONE
80 CONTINUE
*
RESULT( 2 ) = MIN( SLANGE( '1', N, N, WORK, N, WORK( N**2+1 ) ),
$ REAL( N ) ) / ( N*ULP )
*
RETURN
*
* End of SSBT21
*
END
CONTINUE
DO 20 JR = IKA + 2, N + 1 - JC
J = J + 1
WORK( J ) = ZERO
20 CONTINUE
ELSE
DO 30 JR = IKA + 2, JC
J = J + 1
WORK( J ) = ZERO
30 CONTINUE
DO 40 JR = MIN( IKA, JC-1 ), 0, -1
J = J + 1
WORK( J ) = A( IKA+1-JR, JC )
40 CONTINUE
END IF
50 CONTINUE
*
DO 60 J = 1, N
CALL SSPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
60 CONTINUE
*
IF( N.GT.1 .AND. KS.EQ.1 ) THEN
DO 70 J = 1, N - 1
CALL SSPR2( CUPLO, N, -E( J ), U( 1, J ), 1, U( 1, J+1 ), 1,
$ WORK )
70 CONTINUE
END IF
WNORM = SLANSP( '1', CUPLO, N, WORK, WORK( LW+1 ) )
*
IF( ANORM.GT.WNORM ) THEN
RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
ELSE
IF( ANORM.LT.ONE ) THEN
RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
ELSE
RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
END IF
END IF
*
* Do Test 2
*
* Compute U U**T - I
*
CALL SGEMM( 'N', 'C', N, N, N, ONE, U, LDU, U, LDU, ZERO, WORK,
$ N )
*
DO 80 J = 1, N
WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - ONE
80 CONTINUE
*
RESULT( 2 ) = MIN( SLANGE( '1', N, N, WORK, N, WORK( N**2+1 ) ),
$ REAL( N ) ) / ( N*ULP )
*
RETURN
*
* End of SSBT21
*
END
CONTINUE
DO 20 JR = IKA + 2, N + 1 - JC
J = J + 1
WORK( J ) = ZERO
20 CONTINUE
ELSE
DO 30 JR = IKA + 2, JC
J = J + 1
WORK( J ) = ZERO
30 CONTINUE
DO 40 JR = MIN( IKA, JC-1 ), 0, -1
J = J + 1
WORK( J ) = A( IKA+1-JR, JC )
40 CONTINUE
END IF
50 CONTINUE
*
DO 60 J = 1, N
CALL SSPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
60 CONTINUE
*
IF( N.GT.1 .AND. KS.EQ.1 ) THEN
DO 70 J = 1, N - 1
CALL SSPR2( CUPLO, N, -E( J ), U( 1, J ), 1, U( 1, J+1 ), 1,
$ WORK )
70 CONTINUE
END IF
WNORM = SLANSP( '1', CUPLO, N, WORK, WORK( LW+1 ) )
*
IF( ANORM.GT.WNORM ) THEN
RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
ELSE
IF( ANORM.LT.ONE ) THEN
RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
ELSE
RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
END IF
END IF
*
* Do Test 2
*
* Compute U U**T - I
*
CALL SGEMM( 'N', 'C', N, N, N, ONE, U, LDU, U, LDU, ZERO, WORK,
$ N )
*
DO 80 J = 1, N
WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - ONE
80 CONTINUE
*
RESULT( 2 ) = MIN( SLANGE( '1', N, N, WORK, N, WORK( N**2+1 ) ),
$ REAL( N ) ) / ( N*ULP )
*
RETURN
*
* End of SSBT21
*
END
CONTINUE
DO 20 JR = IKA + 2, N + 1 - JC
J = J + 1
WORK( J ) = ZERO
20 CONTINUE
ELSE
DO 30 JR = IKA + 2, JC
J = J + 1
WORK( J ) = ZERO
30 CONTINUE
DO 40 JR = MIN( IKA, JC-1 ), 0, -1
J = J + 1
WORK( J ) = A( IKA+1-JR, JC )
40 CONTINUE
END IF
50 CONTINUE
*
DO 60 J = 1, N
CALL SSPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
60 CONTINUE
*
IF( N.GT.1 .AND. KS.EQ.1 ) THEN
DO 70 J = 1, N - 1
CALL SSPR2( CUPLO, N, -E( J ), U( 1, J ), 1, U( 1, J+1 ), 1,
$ WORK )
70 CONTINUE
END IF
WNORM = SLANSP( '1', CUPLO, N, WORK, WORK( LW+1 ) )
*
IF( ANORM.GT.WNORM ) THEN
RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
ELSE
IF( ANORM.LT.ONE ) THEN
RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
ELSE
RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
END IF
END IF
*
* Do Test 2
*
* Compute U U**T - I
*
CALL SGEMM( 'N', 'C', N, N, N, ONE, U, LDU, U, LDU, ZERO, WORK,
$ N )
*
DO 80 J = 1, N
WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - ONE
80 CONTINUE
*
RESULT( 2 ) = MIN( SLANGE( '1', N, N, WORK, N, WORK( N**2+1 ) ),
$ REAL( N ) ) / ( N*ULP )
*
RETURN
*
* End of SSBT21
*
END
CONTINUE
DO 20 JR = IKA + 2, N + 1 - JC
J = J + 1
WORK( J ) = ZERO
20 CONTINUE
ELSE
DO 30 JR = IKA + 2, JC
J = J + 1
WORK( J ) = ZERO
30 CONTINUE
DO 40 JR = MIN( IKA, JC-1 ), 0, -1
J = J + 1
WORK( J ) = A( IKA+1-JR, JC )
40 CONTINUE
END IF
50 CONTINUE
*
DO 60 J = 1, N
CALL SSPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
60 CONTINUE
*
IF( N.GT.1 .AND. KS.EQ.1 ) THEN
DO 70 J = 1, N - 1
CALL SSPR2( CUPLO, N, -E( J ), U( 1, J ), 1, U( 1, J+1 ), 1,
$ WORK )
70 CONTINUE
END IF
WNORM = SLANSP( '1', CUPLO, N, WORK, WORK( LW+1 ) )
*
IF( ANORM.GT.WNORM ) THEN
RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
ELSE
IF( ANORM.LT.ONE ) THEN
RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
ELSE
RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
END IF
END IF
*
* Do Test 2
*
* Compute U U**T - I
*
CALL SGEMM( 'N', 'C', N, N, N, ONE, U, LDU, U, LDU, ZERO, WORK,
$ N )
*
DO 80 J = 1, N
WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - ONE
80 CONTINUE
*
RESULT( 2 ) = MIN( SLANGE( '1', N, N, WORK, N, WORK( N**2+1 ) ),
$ REAL( N ) ) / ( N*ULP )
*
RETURN
*
* End of SSBT21
*
END
CONTINUE
DO 20 JR = IKA + 2, N + 1 - JC
J = J + 1
WORK( J ) = ZERO
20 CONTINUE
ELSE
DO 30 JR = IKA + 2, JC
J = J + 1
WORK( J ) = ZERO
30 CONTINUE
DO 40 JR = MIN( IKA, JC-1 ), 0, -1
J = J + 1
WORK( J ) = A( IKA+1-JR, JC )
40 CONTINUE
END IF
50 CONTINUE
*
DO 60 J = 1, N
CALL SSPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
60 CONTINUE
*
IF( N.GT.1 .AND. KS.EQ.1 ) THEN
DO 70 J = 1, N - 1
CALL SSPR2( CUPLO, N, -E( J ), U( 1, J ), 1, U( 1, J+1 ), 1,
$ WORK )
70 CONTINUE
END IF
WNORM = SLANSP( '1', CUPLO, N, WORK, WORK( LW+1 ) )
*
IF( ANORM.GT.WNORM ) THEN
RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
ELSE
IF( ANORM.LT.ONE ) THEN
RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
ELSE
RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
END IF
END IF
*
* Do Test 2
*
* Compute U U**T - I
*
CALL SGEMM( 'N', 'C', N, N, N, ONE, U, LDU, U, LDU, ZERO, WORK,
$ N )
*
DO 80 J = 1, N
WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - ONE
80 CONTINUE
*
RESULT( 2 ) = MIN( SLANGE( '1', N, N, WORK, N, WORK( N**2+1 ) ),
$ REAL( N ) ) / ( N*ULP )
*
RETURN
*
* End of SSBT21
*
END
CONTINUE
DO 20 JR = IKA + 2, N + 1 - JC
J = J + 1
WORK( J ) = ZERO
20 CONTINUE
ELSE
DO 30 JR = IKA + 2, JC
J = J + 1
WORK( J ) = ZERO
30 CONTINUE
DO 40 JR = MIN( IKA, JC-1 ), 0, -1
J = J + 1
WORK( J ) = A( IKA+1-JR, JC )
40 CONTINUE
END IF
50 CONTINUE
*
DO 60 J = 1, N
CALL SSPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
60 CONTINUE
*
IF( N.GT.1 .AND. KS.EQ.1 ) THEN
DO 70 J = 1, N - 1
CALL SSPR2( CUPLO, N, -E( J ), U( 1, J ), 1, U( 1, J+1 ), 1,
$ WORK )
70 CONTINUE
END IF
WNORM = SLANSP( '1', CUPLO, N, WORK, WORK( LW+1 ) )
*
IF( ANORM.GT.WNORM ) THEN
RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
ELSE
IF( ANORM.LT.ONE ) THEN
RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
ELSE
RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
END IF
END IF
*
* Do Test 2
*
* Compute U U**T - I
*
CALL SGEMM( 'N', 'C', N, N, N, ONE, U, LDU, U, LDU, ZERO, WORK,
$ N )
*
DO 80 J = 1, N
WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - ONE
80 CONTINUE
*
RESULT( 2 ) = MIN( SLANGE( '1', N, N, WORK, N, WORK( N**2+1 ) ),
$ REAL( N ) ) / ( N*ULP )
*
RETURN
*
* End of SSBT21
*
END
CONTINUE
DO 20 JR = IKA + 2, N + 1 - JC
J = J + 1
WORK( J ) = ZERO
20 CONTINUE
ELSE
DO 30 JR = IKA + 2, JC
J = J + 1
WORK( J ) = ZERO
30 CONTINUE
DO 40 JR = MIN( IKA, JC-1 ), 0, -1
J = J + 1
WORK( J ) = A( IKA+1-JR, JC )
40 CONTINUE
END IF
50 CONTINUE
*
DO 60 J = 1, N
CALL SSPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
60 CONTINUE
*
IF( N.GT.1 .AND. KS.EQ.1 ) THEN
DO 70 J = 1, N - 1
CALL SSPR2( CUPLO, N, -E( J ), U( 1, J ), 1, U( 1, J+1 ), 1,
$ WORK )
70 CONTINUE
END IF
WNORM = SLANSP( '1', CUPLO, N, WORK, WORK( LW+1 ) )
*
IF( ANORM.GT.WNORM ) THEN
RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
ELSE
IF( ANORM.LT.ONE ) THEN
RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
ELSE
RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
END IF
END IF
*
* Do Test 2
*
* Compute U U**T - I
*
CALL SGEMM( 'N', 'C', N, N, N, ONE, U, LDU, U, LDU, ZERO, WORK,
$ N )
*
DO 80 J = 1, N
WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - ONE
80 CONTINUE
*
RESULT( 2 ) = MIN( SLANGE( '1', N, N, WORK, N, WORK( N**2+1 ) ),
$ REAL( N ) ) / ( N*ULP )
*
RETURN
*
* End of SSBT21
*
END
CONTINUE