File: mpyl.f

package info (click to toggle)
nastran 0.1.95-2
  • links: PTS, VCS
  • area: non-free
  • in suites: bookworm, bullseye, sid
  • size: 122,540 kB
  • sloc: fortran: 284,409; sh: 771; makefile: 324
file content (53 lines) | stat: -rw-r--r-- 1,280 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
      SUBROUTINE MPYL (A,B,NCOLA,NROWA,NCOLB,C)
C
C     SINCE CDC FORTRAN 5 IMPOSES NO LONGER EXACT NO. OF DUMMY ARGUMENT
C     LIST FOR SUBROUTINE AND ENTRY POINTS, THIS ROUTINE IS NOW MACHINE
C     INDEPENDENT.
C
      DIMENSION A(NCOLA,NROWA),B(NCOLB,NCOLA),C(NCOLB,NROWA)
      DIMENSION D(NROWA,NCOLA),X(3),Y(3),VECT(3)
C
C     SIMPLE MATRIX MULTIPLICATION
C
      DO 10 N= 1,NCOLB
      DO 10 L= 1,NROWA
      C(N,L) = 0.0
      DO 10 M= 1,NCOLA
   10 C(N,L) = C(N,L)+B(N,M)*A(M,L)
      RETURN
C
      ENTRY NORM (X,Y)
C     ================
C
C     NORMALIZE X VECTOR
C
      Y(1) = X(1)*X(1)+X(2)*X(2)+X(3)*X(3)
      IF (Y(1) .EQ. 0.0)  GO TO 15
      W    = 1./SQRT(Y(1))
      X(1) = X(1)*W
      X(2) = X(2)*W
      X(3) = X(3)*W
   15 RETURN
C
      ENTRY CROSS (X,Y,VECT)
C     ======================
C
C     CROSS PRODUCT
C
      VECT(1) = X(2)*Y(3)-X(3)*Y(2)
      VECT(2) = Y(1)*X(3)-X(1)*Y(3)
      VECT(3) = X(1)*Y(2)-Y(1)*X(2)
      RETURN
C
      ENTRY MPYLT (D,B,NCOLA,NROWA,NCOLB,C)
C     =====================================
C
C     TRANSPOSE MULTIPLY
C
      DO 20 N= 1,NCOLB
      DO 20 L= 1,NROWA
      C(N,L) = 0.0
      DO 20 M= 1,NCOLA
   20 C(N,L) = C(N,L)+D(L,M)*B(N,M)
      RETURN
      END