大和田/日誌/2009-08-31
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[大和田/日誌]]
-Cの行列積が動く。
--元のソース
int main(void) {
static int mat1[4][4] = {
{ 0, 0, 1, 0 },
{ 0, 0, 0, 2 },
{ 3, 0, 0, 0 },
{ 0, 4, 0, 0 },
};
static int mat2[4][4] = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 },
{ 13, 14, 15, 16 },
};
static int result[4][4];
int i, j, k, s, cnt, mask, m1, m2;
for( i = 0; i < 4; i++ )
for( j = 0; j < 4; j++ ) {
s = 0;
for( k = 0; k < 4; k++ ) {
mask = 1;
m1 = mat1[i][k];
m2 = mat2[k][j];
for( cnt = 0; cnt < 5; cnt++ ) {
if( m2 & mask )
s += m1;
mask <<= 1;
m1 <<= 1;
}
}
result[i][j] = s;
}
while(1) { }
}
--動作の様子
CENTER:&ref(大和田/日誌/2009-08-31/mips_sim_rev0831.png,60%);
終了行:
[[大和田/日誌]]
-Cの行列積が動く。
--元のソース
int main(void) {
static int mat1[4][4] = {
{ 0, 0, 1, 0 },
{ 0, 0, 0, 2 },
{ 3, 0, 0, 0 },
{ 0, 4, 0, 0 },
};
static int mat2[4][4] = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 },
{ 13, 14, 15, 16 },
};
static int result[4][4];
int i, j, k, s, cnt, mask, m1, m2;
for( i = 0; i < 4; i++ )
for( j = 0; j < 4; j++ ) {
s = 0;
for( k = 0; k < 4; k++ ) {
mask = 1;
m1 = mat1[i][k];
m2 = mat2[k][j];
for( cnt = 0; cnt < 5; cnt++ ) {
if( m2 & mask )
s += m1;
mask <<= 1;
m1 <<= 1;
}
}
result[i][j] = s;
}
while(1) { }
}
--動作の様子
CENTER:&ref(大和田/日誌/2009-08-31/mips_sim_rev0831.png,60%);
ページ名: