C=A*BのCプログラムNO.2

    2007/05/30 東京工芸大学 後 保範 ( Ushiro Yasunori )
--------------------------------------------------------------

1. 概要

 実密行列を係数とする行列乗算C=A*Bを計算する。連続アクセス版である。
行列A,B,CのサイズはそれぞれNxL,LxM,NxMである。

2. プログラム

#include <stdio.h>
#include <math.h>
// Global Define
#define ND  1000
extern double A[ND][ND], B[ND][ND], C[ND][ND] ;
//=================================================================C
void MULT2(int N, int M, int L)
//=================================================================C
//  Real-Dense Matrix Multiplication                               C
//   C = A*B  with IKJ-Type                                        C
//-----------------------------------------------------------------C
//    A,B,C     Global define Matrix                               C
//    N         I*4, In,  Matrix Size of A(Column), C(Column)      C
//    M         I*4, In,  Matrix Size of B(Row), C(Row)            C
//    L         I*4, In,  Matrix Size of A(Row), B(Column)         C
//-----------------------------------------------------------------C
//    Written by Yasunori Ushiro ,  2007/05/30                     C
//        ( Tokyo Polytechnic University )                         C
//=================================================================C
{ int     i, j, k ;
  double  AW ;
//   Clear C
  for (i=0; i<N; i++) {
    for (j=0; j<M; j++) {
      C[i][j] = 0.0 ; }
   }
//   C=C+A*B
  for (i=0; i<N; i++) {
    for (k=0; k<L; k++) {
      AW = A[i][k] ;
      for (j=0; j<M; j++) {
        C[i][j] = C[i][j]  + AW*B[k][j] ; }
   }  }
 }