列ベクトルと行ベクトルの積演算を関数として以下のように実装する。
/* 列ベクトルと行ベクトルの積 */
void WH_Matrix__whRv_mul_whCv_OUT_whM
(int nRows_a, double whCv_a[],
int nColumns_b, double whRv_b[],
int nRows_C, int nColumns_C, void *OUT__whM_C)
/*
入力引数:
nRows_a は列ベクトル whCv_a の行数
whCv_a は列ベクトル
nColumns_b は行ベクトル whRv_b の列数
whRv_b は行ベクトル
nRows_C は行列 whM_C の行数
nColumns_C は行列 whM_C の列数
出力引数:
OUT__whM_Cは行列で、whCv_a と whRv_b の積
*/
{
int i, j;
assert(nRows_C == nRows_a);
assert(nColumns_C == nColumns_b);
for (i = 0; i < nRows_C; i++) {
for (j = 0; j < nColumns_C; j++) {
WH_MATRIX__AT(OUT__whM_C, nRows_C, nColumns_C, i, j)
= whCv_a[i] * whRv_b[j];
}
}
}