1      SUBROUTINE STIMB3( LINE, NM, MVAL, NN, NVAL, NK, KVAL, NLDA,
2     $                   LDAVAL, TIMMIN, A, B, C, RESLTS, LDR1, LDR2,
3     $                   NOUT )
4*
5*  -- LAPACK timing routine (version 3.0) --
6*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
7*     Courant Institute, Argonne National Lab, and Rice University
8*     March 31, 1993
9*
10*     .. Scalar Arguments ..
11      CHARACTER*( * )    LINE
12      INTEGER            LDR1, LDR2, NK, NLDA, NM, NN, NOUT
13      REAL               TIMMIN
14*     ..
15*     .. Array Arguments ..
16      INTEGER            KVAL( * ), LDAVAL( * ), MVAL( * ), NVAL( * )
17      REAL               A( * ), B( * ), C( * ), RESLTS( LDR1, LDR2, * )
18*     ..
19*
20*  Purpose
21*  =======
22*
23*  STIMB3 times the Level 3 BLAS routines.
24*
25*  Arguments
26*  =========
27*
28*  LINE    (input) CHARACTER*80
29*          The input line that requested this routine.  The first six
30*          characters contain either the name of a subroutine or a
31*          generic path name.  The remaining characters may be used to
32*          specify the individual routines to be timed.  See ATIMIN for
33*          a full description of the format of the input line.
34*
35*  NM      (input) INTEGER
36*          The number of values of M contained in the vector MVAL.
37*
38*  MVAL    (input) INTEGER array, dimension (NM)
39*          The values of the matrix row dimension M.
40*
41*  NN      (input) INTEGER
42*          The number of values of N contained in the vector NVAL.
43*
44*  NVAL    (input) INTEGER array, dimension (NN)
45*          The values of the matrix column dimension N.
46*
47*  NK      (input) INTEGER
48*          The number of values of K contained in the vector KVAL.
49*
50*  KVAL    (input) INTEGER array, dimension (NK)
51*          The values of K.  K is used as the intermediate matrix
52*          dimension for SGEMM (the product of an M x K matrix and a
53*          K x N matrix) and as the dimension of the rank-K update in
54*          SSYRK and SSYR2K.
55*
56*  NLDA    (input) INTEGER
57*          The number of values of LDA contained in the vector LDAVAL.
58*
59*  LDAVAL  (input) INTEGER array, dimension (NLDA)
60*          The values of the leading dimension of the array A.
61*
62*  TIMMIN  (input) REAL
63*          The minimum time a subroutine will be timed.
64*
65*  A       (workspace) REAL array, dimension (LDAMAX*NMAX)
66*             where LDAMAX and NMAX are the maximum values permitted
67*             for LDA and N.
68*
69*  B       (workspace) REAL array, dimension (LDAMAX*NMAX)
70*
71*  C       (workspace) REAL array, dimension (LDAMAX*NMAX)
72*
73*  RESLTS  (output) REAL array, dimension (LDR1,LDR2,NLDA)
74*          The timing results for each subroutine over the relevant
75*          values of M, N, K, and LDA.
76*
77*  LDR1    (input) INTEGER
78*          The first dimension of RESLTS.  LDR1 >= max(1,NM,NK).
79*
80*  LDR2    (input) INTEGER
81*          The second dimension of RESLTS.  LDR2 >= max(1,NN).
82*
83*  NOUT    (input) INTEGER
84*          The unit number for output.
85*
86*  =====================================================================
87*
88*     .. Parameters ..
89      INTEGER            NSUBS
90      PARAMETER          ( NSUBS = 6 )
91      INTEGER            NTRANS, NSIDES, NUPLOS
92      PARAMETER          ( NTRANS = 2, NSIDES = 2, NUPLOS = 2 )
93      REAL               ALPHA, BETA
94      PARAMETER          ( ALPHA = 1.0E0, BETA = 1.0E0 )
95*     ..
96*     .. Local Scalars ..
97      CHARACTER          SIDE, TRANSA, TRANSB, UPLO
98      CHARACTER*3        PATH
99      CHARACTER*6        CNAME
100      INTEGER            I, IC, ICL, IK, ILDA, IM, IMAT, IN, INFO,
101     $                   ISIDE, ISUB, ITA, ITB, IUPLO, K, LDA, M, N
102      REAL               OPS, S1, S2, TIME, UNTIME
103*     ..
104*     .. Local Arrays ..
105      LOGICAL            TIMSUB( NSUBS )
106      CHARACTER          SIDES( NSIDES ), TRANS( NTRANS ),
107     $                   UPLOS( NUPLOS )
108      CHARACTER*6        NAMES( NSUBS )
109*     ..
110*     .. External Functions ..
111      LOGICAL            LSAME
112      REAL               SECOND, SMFLOP, SOPBL3
113      EXTERNAL           LSAME, SECOND, SMFLOP, SOPBL3
114*     ..
115*     .. External Subroutines ..
116      EXTERNAL           ATIMCK, ATIMIN, SGEMM, SPRTBL, SSYMM, SSYR2K,
117     $                   SSYRK, STIMMG, STRMM, STRSM
118*     ..
119*     .. Intrinsic Functions ..
120      INTRINSIC          REAL
121*     ..
122*     .. Data statements ..
123      DATA               NAMES / 'SGEMM ', 'SSYMM ', 'SSYRK ', 'SSYR2K',
124     $                   'STRMM ', 'STRSM ' /
125      DATA               TRANS / 'N', 'T' /
126      DATA               SIDES / 'L', 'R' /
127      DATA               UPLOS / 'U', 'L' /
128*     ..
129*     .. Executable Statements ..
130*
131*     Extract the timing request from the input line.
132*
133      PATH( 1: 1 ) = 'Single precision'
134      PATH( 2: 3 ) = 'B3'
135      CALL ATIMIN( PATH, LINE, NSUBS, NAMES, TIMSUB, NOUT, INFO )
136      IF( INFO.NE.0 )
137     $   GO TO 480
138*
139*     Check that M <= LDA.
140*
141      CNAME = LINE( 1: 6 )
142      CALL ATIMCK( 1, CNAME, NM, MVAL, NLDA, LDAVAL, NOUT, INFO )
143      IF( INFO.GT.0 ) THEN
144         WRITE( NOUT, FMT = 9999 )CNAME
145         GO TO 480
146      END IF
147*
148*     Time each routine.
149*
150      DO 470 ISUB = 1, NSUBS
151         IF( .NOT.TIMSUB( ISUB ) )
152     $      GO TO 470
153*
154*        Print header.
155*
156         CNAME = NAMES( ISUB )
157         WRITE( NOUT, FMT = 9998 )CNAME
158         IF( NLDA.EQ.1 ) THEN
159            WRITE( NOUT, FMT = 9997 )LDAVAL( 1 )
160         ELSE
161            DO 10 I = 1, NLDA
162               WRITE( NOUT, FMT = 9996 )I, LDAVAL( I )
163   10       CONTINUE
164         END IF
165*
166*        Time SGEMM
167*
168         IF( CNAME.EQ.'SGEMM ' ) THEN
169            DO 90 ITA = 1, NTRANS
170               TRANSA = TRANS( ITA )
171               DO 80 ITB = 1, NTRANS
172                  TRANSB = TRANS( ITB )
173                  DO 70 IK = 1, NK
174                     K = KVAL( IK )
175                     DO 60 ILDA = 1, NLDA
176                        LDA = LDAVAL( ILDA )
177                        DO 50 IM = 1, NM
178                           M = MVAL( IM )
179                           DO 40 IN = 1, NN
180                              N = NVAL( IN )
181                              IF( TRANSA.EQ.'N' ) THEN
182                                 CALL STIMMG( 1, M, K, A, LDA, 0, 0 )
183                              ELSE
184                                 CALL STIMMG( 1, K, M, A, LDA, 0, 0 )
185                              END IF
186                              IF( TRANSB.EQ.'N' ) THEN
187                                 CALL STIMMG( 0, K, N, B, LDA, 0, 0 )
188                              ELSE
189                                 CALL STIMMG( 0, N, K, B, LDA, 0, 0 )
190                              END IF
191                              CALL STIMMG( 1, M, N, C, LDA, 0, 0 )
192                              IC = 0
193                              S1 = SECOND( )
194   20                         CONTINUE
195                              CALL SGEMM( TRANSA, TRANSB, M, N, K,
196     $                                    ALPHA, A, LDA, B, LDA, BETA,
197     $                                    C, LDA )
198                              S2 = SECOND( )
199                              TIME = S2 - S1
200                              IC = IC + 1
201                              IF( TIME.LT.TIMMIN ) THEN
202                                 CALL STIMMG( 1, M, N, C, LDA, 0, 0 )
203                                 GO TO 20
204                              END IF
205*
206*                             Subtract the time used in STIMMG.
207*
208                              ICL = 1
209                              S1 = SECOND( )
210   30                         CONTINUE
211                              S2 = SECOND( )
212                              UNTIME = S2 - S1
213                              ICL = ICL + 1
214                              IF( ICL.LE.IC ) THEN
215                                 CALL STIMMG( 1, M, N, C, LDA, 0, 0 )
216                                 GO TO 30
217                              END IF
218*
219                              TIME = ( TIME-UNTIME ) / REAL( IC )
220                              OPS = SOPBL3( CNAME, M, N, K )
221                              RESLTS( IM, IN, ILDA ) = SMFLOP( OPS,
222     $                           TIME, 0 )
223   40                      CONTINUE
224   50                   CONTINUE
225   60                CONTINUE
226                     IF( IK.EQ.1 )
227     $                  WRITE( NOUT, FMT = 9995 )TRANSA, TRANSB
228                     WRITE( NOUT, FMT = 9994 )KVAL( IK )
229                     CALL SPRTBL( 'M', 'N', NM, MVAL, NN, NVAL, NLDA,
230     $                            RESLTS, LDR1, LDR2, NOUT )
231   70             CONTINUE
232   80          CONTINUE
233   90       CONTINUE
234*
235         ELSE IF( CNAME.EQ.'SSYMM ' ) THEN
236*
237*           Time SSYMM
238*
239            DO 160 ISIDE = 1, NSIDES
240               SIDE = SIDES( ISIDE )
241               DO 150 IUPLO = 1, NUPLOS
242                  UPLO = UPLOS( IUPLO )
243                  IF( LSAME( UPLO, 'U' ) ) THEN
244                     IMAT = 6
245                  ELSE
246                     IMAT = -6
247                  END IF
248                  DO 140 ILDA = 1, NLDA
249                     LDA = LDAVAL( ILDA )
250                     DO 130 IM = 1, NM
251                        M = MVAL( IM )
252                        DO 120 IN = 1, NN
253                           N = NVAL( IN )
254                           IF( ISIDE.EQ.1 ) THEN
255                              CALL STIMMG( IMAT, M, M, A, LDA, 0, 0 )
256                              CALL STIMMG( 0, M, N, B, LDA, 0, 0 )
257                           ELSE
258                              CALL STIMMG( 0, M, N, B, LDA, 0, 0 )
259                              CALL STIMMG( IMAT, N, N, A, LDA, 0, 0 )
260                           END IF
261                           CALL STIMMG( 1, M, N, C, LDA, 0, 0 )
262                           IC = 0
263                           S1 = SECOND( )
264  100                      CONTINUE
265                           CALL SSYMM( SIDE, UPLO, M, N, ALPHA, A, LDA,
266     $                                 B, LDA, BETA, C, LDA )
267                           S2 = SECOND( )
268                           TIME = S2 - S1
269                           IC = IC + 1
270                           IF( TIME.LT.TIMMIN ) THEN
271                              CALL STIMMG( 1, M, N, C, LDA, 0, 0 )
272                              GO TO 100
273                           END IF
274*
275*                          Subtract the time used in STIMMG.
276*
277                           ICL = 1
278                           S1 = SECOND( )
279  110                      CONTINUE
280                           S2 = SECOND( )
281                           UNTIME = S2 - S1
282                           ICL = ICL + 1
283                           IF( ICL.LE.IC ) THEN
284                              CALL STIMMG( 1, M, N, C, LDA, 0, 0 )
285                              GO TO 110
286                           END IF
287*
288                           TIME = ( TIME-UNTIME ) / REAL( IC )
289                           OPS = SOPBL3( CNAME, M, N, ISIDE-1 )
290                           RESLTS( IM, IN, ILDA ) = SMFLOP( OPS, TIME,
291     $                        0 )
292  120                   CONTINUE
293  130                CONTINUE
294  140             CONTINUE
295                  WRITE( NOUT, FMT = 9993 )SIDE, UPLO
296                  CALL SPRTBL( 'M', 'N', NM, MVAL, NN, NVAL, NLDA,
297     $                         RESLTS, LDR1, LDR2, NOUT )
298  150          CONTINUE
299  160       CONTINUE
300*
301         ELSE IF( CNAME.EQ.'SSYRK ' ) THEN
302*
303*           Time SSYRK
304*
305            DO 230 IUPLO = 1, NUPLOS
306               UPLO = UPLOS( IUPLO )
307               IF( LSAME( UPLO, 'U' ) ) THEN
308                  IMAT = 6
309               ELSE
310                  IMAT = -6
311               END IF
312               DO 220 ITA = 1, NTRANS
313                  TRANSA = TRANS( ITA )
314                  DO 210 ILDA = 1, NLDA
315                     LDA = LDAVAL( ILDA )
316                     DO 200 IK = 1, NK
317                        K = KVAL( IK )
318                        IF( TRANSA.EQ.'N' ) THEN
319                           CALL STIMMG( 1, N, K, A, LDA, 0, 0 )
320                        ELSE
321                           CALL STIMMG( 1, K, N, A, LDA, 0, 0 )
322                        END IF
323                        DO 190 IN = 1, NN
324                           N = NVAL( IN )
325                           CALL STIMMG( IMAT, N, N, C, LDA, 0, 0 )
326                           IC = 0
327                           S1 = SECOND( )
328  170                      CONTINUE
329                           CALL SSYRK( UPLO, TRANSA, N, K, ALPHA, A,
330     $                                 LDA, BETA, C, LDA )
331                           S2 = SECOND( )
332                           TIME = S2 - S1
333                           IC = IC + 1
334                           IF( TIME.LT.TIMMIN ) THEN
335                              CALL STIMMG( IMAT, N, N, C, LDA, 0, 0 )
336                              GO TO 170
337                           END IF
338*
339*                          Subtract the time used in STIMMG.
340*
341                           ICL = 1
342                           S1 = SECOND( )
343  180                      CONTINUE
344                           S2 = SECOND( )
345                           UNTIME = S2 - S1
346                           ICL = ICL + 1
347                           IF( ICL.LE.IC ) THEN
348                              CALL STIMMG( IMAT, N, N, C, LDA, 0, 0 )
349                              GO TO 180
350                           END IF
351*
352                           TIME = ( TIME-UNTIME ) / REAL( IC )
353                           OPS = SOPBL3( CNAME, N, N, K )
354                           RESLTS( IK, IN, ILDA ) = SMFLOP( OPS, TIME,
355     $                        0 )
356  190                   CONTINUE
357  200                CONTINUE
358  210             CONTINUE
359                  WRITE( NOUT, FMT = 9992 )CNAME, UPLO, TRANSA
360                  CALL SPRTBL( 'K', 'N', NK, KVAL, NN, NVAL, NLDA,
361     $                         RESLTS, LDR1, LDR2, NOUT )
362  220          CONTINUE
363  230       CONTINUE
364*
365         ELSE IF( CNAME.EQ.'SSYR2K' ) THEN
366*
367*           Time SSYR2K
368*
369            DO 300 IUPLO = 1, NUPLOS
370               UPLO = UPLOS( IUPLO )
371               IF( LSAME( UPLO, 'U' ) ) THEN
372                  IMAT = 6
373               ELSE
374                  IMAT = -6
375               END IF
376               DO 290 ITB = 1, NTRANS
377                  TRANSB = TRANS( ITB )
378                  DO 280 ILDA = 1, NLDA
379                     LDA = LDAVAL( ILDA )
380                     DO 270 IK = 1, NK
381                        K = KVAL( IK )
382                        IF( TRANSB.EQ.'N' ) THEN
383                           CALL STIMMG( 1, N, K, A, LDA, 0, 0 )
384                           CALL STIMMG( 0, N, K, B, LDA, 0, 0 )
385                        ELSE
386                           CALL STIMMG( 1, K, N, A, LDA, 0, 0 )
387                           CALL STIMMG( 0, K, N, B, LDA, 0, 0 )
388                        END IF
389                        DO 260 IN = 1, NN
390                           N = NVAL( IN )
391                           CALL STIMMG( IMAT, N, N, C, LDA, 0, 0 )
392                           IC = 0
393                           S1 = SECOND( )
394  240                      CONTINUE
395                           CALL SSYR2K( UPLO, TRANSB, N, K, ALPHA, A,
396     $                                  LDA, B, LDA, BETA, C, LDA )
397                           S2 = SECOND( )
398                           TIME = S2 - S1
399                           IC = IC + 1
400                           IF( TIME.LT.TIMMIN ) THEN
401                              CALL STIMMG( IMAT, N, N, C, LDA, 0, 0 )
402                              GO TO 240
403                           END IF
404*
405*                          Subtract the time used in STIMMG.
406*
407                           ICL = 1
408                           S1 = SECOND( )
409  250                      CONTINUE
410                           S2 = SECOND( )
411                           UNTIME = S2 - S1
412                           ICL = ICL + 1
413                           IF( ICL.LE.IC ) THEN
414                              CALL STIMMG( IMAT, N, N, C, LDA, 0, 0 )
415                              GO TO 250
416                           END IF
417*
418                           TIME = ( TIME-UNTIME ) / REAL( IC )
419                           OPS = SOPBL3( CNAME, N, N, K )
420                           RESLTS( IK, IN, ILDA ) = SMFLOP( OPS, TIME,
421     $                        0 )
422  260                   CONTINUE
423  270                CONTINUE
424  280             CONTINUE
425                  WRITE( NOUT, FMT = 9992 )CNAME, UPLO, TRANSB
426                  CALL SPRTBL( 'K', 'N', NK, KVAL, NN, NVAL, NLDA,
427     $                         RESLTS, LDR1, LDR2, NOUT )
428  290          CONTINUE
429  300       CONTINUE
430*
431         ELSE IF( CNAME.EQ.'STRMM ' ) THEN
432*
433*           Time STRMM
434*
435            DO 380 ISIDE = 1, NSIDES
436               SIDE = SIDES( ISIDE )
437               DO 370 IUPLO = 1, NUPLOS
438                  UPLO = UPLOS( IUPLO )
439                  IF( LSAME( UPLO, 'U' ) ) THEN
440                     IMAT = 9
441                  ELSE
442                     IMAT = -9
443                  END IF
444                  DO 360 ITA = 1, NTRANS
445                     TRANSA = TRANS( ITA )
446                     DO 350 ILDA = 1, NLDA
447                        LDA = LDAVAL( ILDA )
448                        DO 340 IM = 1, NM
449                           M = MVAL( IM )
450                           DO 330 IN = 1, NN
451                              N = NVAL( IN )
452                              IF( ISIDE.EQ.1 ) THEN
453                                 CALL STIMMG( IMAT, M, M, A, LDA, 0, 0 )
454                              ELSE
455                                 CALL STIMMG( IMAT, N, N, A, LDA, 0, 0 )
456                              END IF
457                              CALL STIMMG( 0, M, N, B, LDA, 0, 0 )
458                              IC = 0
459                              S1 = SECOND( )
460  310                         CONTINUE
461                              CALL STRMM( SIDE, UPLO, TRANSA,
462     $                                    'Non-unit', M, N, ALPHA, A,
463     $                                    LDA, B, LDA )
464                              S2 = SECOND( )
465                              TIME = S2 - S1
466                              IC = IC + 1
467                              IF( TIME.LT.TIMMIN ) THEN
468                                 CALL STIMMG( 0, M, N, B, LDA, 0, 0 )
469                                 GO TO 310
470                              END IF
471*
472*                             Subtract the time used in STIMMG.
473*
474                              ICL = 1
475                              S1 = SECOND( )
476  320                         CONTINUE
477                              S2 = SECOND( )
478                              UNTIME = S2 - S1
479                              ICL = ICL + 1
480                              IF( ICL.LE.IC ) THEN
481                                 CALL STIMMG( 0, M, N, B, LDA, 0, 0 )
482                                 GO TO 320
483                              END IF
484*
485                              TIME = ( TIME-UNTIME ) / REAL( IC )
486                              OPS = SOPBL3( CNAME, M, N, ISIDE-1 )
487                              RESLTS( IM, IN, ILDA ) = SMFLOP( OPS,
488     $                           TIME, 0 )
489  330                      CONTINUE
490  340                   CONTINUE
491  350                CONTINUE
492                     WRITE( NOUT, FMT = 9991 )CNAME, SIDE, UPLO, TRANSA
493                     CALL SPRTBL( 'M', 'N', NM, MVAL, NN, NVAL, NLDA,
494     $                            RESLTS, LDR1, LDR2, NOUT )
495  360             CONTINUE
496  370          CONTINUE
497  380       CONTINUE
498*
499         ELSE IF( CNAME.EQ.'STRSM ' ) THEN
500*
501*           Time STRSM
502*
503            DO 460 ISIDE = 1, NSIDES
504               SIDE = SIDES( ISIDE )
505               DO 450 IUPLO = 1, NUPLOS
506                  UPLO = UPLOS( IUPLO )
507                  IF( LSAME( UPLO, 'U' ) ) THEN
508                     IMAT = 9
509                  ELSE
510                     IMAT = -9
511                  END IF
512                  DO 440 ITA = 1, NTRANS
513                     TRANSA = TRANS( ITA )
514                     DO 430 ILDA = 1, NLDA
515                        LDA = LDAVAL( ILDA )
516                        DO 420 IM = 1, NM
517                           M = MVAL( IM )
518                           DO 410 IN = 1, NN
519                              N = NVAL( IN )
520                              IF( ISIDE.EQ.1 ) THEN
521                                 CALL STIMMG( IMAT, M, M, A, LDA, 0, 0 )
522                              ELSE
523                                 CALL STIMMG( IMAT, N, N, A, LDA, 0, 0 )
524                              END IF
525                              CALL STIMMG( 0, M, N, B, LDA, 0, 0 )
526                              IC = 0
527                              S1 = SECOND( )
528  390                         CONTINUE
529                              CALL STRSM( SIDE, UPLO, TRANSA,
530     $                                    'Non-unit', M, N, ALPHA, A,
531     $                                    LDA, B, LDA )
532                              S2 = SECOND( )
533                              TIME = S2 - S1
534                              IC = IC + 1
535                              IF( TIME.LT.TIMMIN ) THEN
536                                 CALL STIMMG( 0, M, N, B, LDA, 0, 0 )
537                                 GO TO 390
538                              END IF
539*
540*                             Subtract the time used in STIMMG.
541*
542                              ICL = 1
543                              S1 = SECOND( )
544  400                         CONTINUE
545                              S2 = SECOND( )
546                              UNTIME = S2 - S1
547                              ICL = ICL + 1
548                              IF( ICL.LE.IC ) THEN
549                                 CALL STIMMG( 0, M, N, B, LDA, 0, 0 )
550                                 GO TO 400
551                              END IF
552*
553                              TIME = ( TIME-UNTIME ) / REAL( IC )
554                              OPS = SOPBL3( CNAME, M, N, ISIDE-1 )
555                              RESLTS( IM, IN, ILDA ) = SMFLOP( OPS,
556     $                           TIME, 0 )
557  410                      CONTINUE
558  420                   CONTINUE
559  430                CONTINUE
560                     WRITE( NOUT, FMT = 9991 )CNAME, SIDE, UPLO, TRANSA
561                     CALL SPRTBL( 'M', 'N', NM, MVAL, NN, NVAL, NLDA,
562     $                            RESLTS, LDR1, LDR2, NOUT )
563  440             CONTINUE
564  450          CONTINUE
565  460       CONTINUE
566         END IF
567         WRITE( NOUT, FMT = 9990 )
568  470 CONTINUE
569  480 CONTINUE
570*
571 9999 FORMAT( 1X, A6, ' timing run not attempted', / )
572 9998 FORMAT( / ' *** Speed of ', A6, ' in megaflops ***' )
573 9997 FORMAT( 5X, 'with LDA = ', I5 )
574 9996 FORMAT( 5X, 'line ', I2, ' with LDA = ', I5 )
575 9995 FORMAT( / 1X, 'SGEMM  with TRANSA = ''', A1, ''', TRANSB = ''',
576     $      A1, '''' )
577 9994 FORMAT( / 1X, 'K = ', I4, / )
578 9993 FORMAT( / 1X, 'SSYMM  with SIDE = ''', A1, ''', UPLO = ''', A1,
579     $      '''', / )
580 9992 FORMAT( / 1X, A6, ' with UPLO = ''', A1, ''', TRANS = ''', A1,
581     $      '''', / )
582 9991 FORMAT( / 1X, A6, ' with SIDE = ''', A1, ''', UPLO = ''', A1,
583     $      ''',', ' TRANS = ''', A1, '''', / )
584 9990 FORMAT( / / / / / )
585      RETURN
586*
587*     End of STIMB3
588*
589      END
590