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] ; }
} }
}