*
* $Id: traat.s,v 1.1.1.1 1996/02/15 17:51:23 mclareni Exp $
*
* $Log: traat.s,v $
* Revision 1.1.1.1  1996/02/15 17:51:23  mclareni
* Kernlib
*
*
          IDENT TRAAT
*
* CERN PROGLIB# F112    TRAAT           .VERSION KERNCDC  0.1   761001
*
          ENTRY TRAAT
*     SUBROUTINE TRAAT(A,S,M,N)
*     S=A*AT       S: SYMETRIC MXM,  A: MXN
*         WRITTEN BY   ST. MEEN   6-JULY-76-
          VFD   30/5HTRAAT,30/TRAAT
 TRAAT    BSS   1
          SB7   1
          SA2   A1+B7
          SA3   A2+B7
          SA4   A3+B7
          SA3   X3
          SA4   X4
          SX7   B7             X7= 1
          SB6   X3             B6= M
          SB7   X4             B7= N
          SB3   B0
          SB4   B0
          SX0   B0
*               B1: INDEX OF A
*               B2:  INDEX OF AT
*               B3:  INDEX OF S
*               B4:  COUNTS ROWS
*               B5:  SUMMING INDEX
*               B6:  M
*               B7:  N
*               X0:   A(X0) IS THE FIRST )LEMENT IN ROW B4
*               X3:  COUNTS COLUMNS
*               X7:  1
*
*                              NEWROW-LOOP: B4=0,1,...,M-1
 NEWROW   SB2   B0
          SX3   B4
*                              NEWCOL-LOOP: X3=B4,B4-1,...,0
 NEWCOL   SB1   X0
          IX3   X3-X7
          SB5   B0
          MX6   0
*
*                              SUMUP-LOOP: B5=0,...,M-1
*                              MULTIPLIES ROW B4  BY ROW X3
 SUMUP    SA4   X1+B1
          SA5   X1+B2
          RX5   X4*X5
          RX6   X6+X5
          NX6   B0,X6          X6= X6+S(B1+1)*A(B2+1)
*
          SB1   B1+X7
          SB2   B2+X7
          SB5   B5+X7
          LT    B5,B7,SUMUP
          SA6   X2+B3              S(B3)=X6
          SB3   B3+X7
          PL    X3,NEWCOL
          SB4   B4+X7
          SX0   X0+B7          X0= X0+N
          LT    B4,B6,NEWROW
          JP    TRAAT
          END
#ifdef CERNLIB_TCGEN_TRAAT
#undef CERNLIB_TCGEN_TRAAT
#endif