SUBROUTINE MULB(NA,NB,N,M,L,A,B,WORK) C C PARAMETERS: INTEGER NA,NB,N,M,L DOUBLE PRECISION A(NA,M),B(NB,L),WORK(N) C C *****LOCAL VARIABLES: INTEGER I,J,K C C *****FORTRAN FUNCTIONS: C NONE. C C *****SUBROUTINES CALLED: C NONE. C C ------------------------------------------------------------------ C C *****PURPOSE: C THIS SUBROUTINE COMPUTES THE MATRIX PRODUCT A * B AND OVERWRITES C IT INTO THE ARRAY B. WHERE A IS N BY M AND B IS M BY L AND NB IS C GREATER THAN OR EQUAL TO N. C C *****PARAMETER DESCRIPTION: C C ON INPUT: C C NA,NB INTEGER C ROW DIMENSIONS OF THE ARRAYS CONTAINING A AND B, C RESPECTIVELY, AS DECLARED IN THE MAIN CALLING PROGRAM C DIMENSION STATEMENT; C C N INTEGER C ROW DIMENSION OF THE MATRIX A; C C M INTEGER C COLUMN DIMENSION OF THE MATRIX A AND ROW DIMENSION OF C THE MATRIX B; C C L INTEGER C COLUMN DIMENSION OF THE MATRIX B; C C A REAL(NA,M) C AN N BY M MATRIX; C C B REAL(NB,L) C AN M BY L MATRIX. C C ON OUTPUT: C C B CONTAINS THE N BY L MATRIX PRODUCT A * B. C C *****ALGORITHM NOTES: C NONE. C C *****HISTORY: C THIS SUBROUTINE WAS WRITTEN BY W.F. ARNOLD, NAVAL WEAPONS CENTER, C CODE 35104, CHINA LAKE, CA 93555, AS PART OF THE SOFTWARE PACKAGE C RICPACK, SEPTEMBER 1983. C C ------------------------------------------------------------------ C DO 50 J=1,L DO 10 I=1,N WORK(I) = 0.0D0 10 CONTINUE DO 30 K=1,M DO 20 I=1,N WORK(I) = WORK(I) + A(I,K)*B(K,J) 20 CONTINUE 30 CONTINUE DO 40 I=1,N B(I,J) = WORK(I) 40 CONTINUE 50 CONTINUE RETURN C C LAST LINE OF MULB C END