next up previous contents
: 列ベクトルの基本演算 : 行ベクトルの基本演算 : 行ベクトルの基本演算   目次

実装

行ベクトルの各種演算を関数として以下のように実装する。

/* スカラーの行ベクトルへの代入(初期化) */
void WH_Matrix__assign_s_OUT_whRv
(double a,
 int nColumns_b, double OUT__whRv_b[])
/*
  入力引数:
    a はスカラー
    nColumns_b は行ベクトル OUT__whRv_b の列数
  出力引数:
    OUT__whRv_b は行ベクトル
*/
{
  int i;

  for (i = 0; i < nColumns_b; i++) {
    OUT__whRv_b[i] = a;
  }
}

/* 行ベクトルの行ベクトルへの代入 */
void WH_Matrix__assign_whRv_OUT_whRv
(int nColumns_a, double whRv_a[],
 int nColumns_b, double OUT__whRv_b[])
/*
  入力引数:
    nColumns_a は行ベクトル whRv_a の列数
    whRv_a は行ベクトル
    nColumns_b は行ベクトル OUT__whRv_b の列数
  出力引数:
    OUT__whRv_b は行ベクトルで、whRv_a と同じもの
*/
{
  int i;

  assert(nColumns_a == nColumns_b);

  for (i = 0; i < nColumns_b; i++) {
    OUT__whRv_b[i] = whRv_a[i];
  }
}

/* 行ベクトルと行ベクトルとの和 */
void WH_Matrix__whRv_add_whRv_OUT_whRv
(int nColumns_a, double whRv_a[],
 int nColumns_b, double whRv_b[],
 int nColumns_c, double OUT__whRv_c[])
/*
  入力引数:
    nColumns_a は行ベクトル whRv_a の列数
    whRv_a は行ベクトル
    nColumns_b は行ベクトル whRv_b の列数
    whRv_b は行ベクトル
    nColumns_c は行ベクトル OUT__whRv_c の列数
  出力引数:
    OUT__whRv_c は行ベクトルで、whRv_a + whRv_b
*/
{
  int i;

  assert(nColumns_a == nColumns_c);
  assert(nColumns_b == nColumns_c);

  for (i = 0; i < nColumns_c; i++) {
    OUT__whRv_c[i] = whRv_a[i] + whRv_b[i];
  }
}

/* 行ベクトルと行ベクトルとの差 */
void WH_Matrix__whRv_sub_whRv_OUT_whRv
(int nColumns_a, double whRv_a[],
 int nColumns_b, double whRv_b[],
 int nColumns_c, double OUT__whRv_c[])
/*
  入力引数:
    nColumns_a は行ベクトル whRv_a の列数
    whRv_a は行ベクトル
    nColumns_b は行ベクトル whRv_b の列数
    whRv_b は行ベクトル
    nColumns_c は行ベクトル OUT__whRv_c の列数
  出力引数:
    OUT__whRv_c は行ベクトルで、whRv_a - whRv_b
*/
{
  int i;

  assert(nColumns_a == nColumns_c);
  assert(nColumns_b == nColumns_c);

  for (i = 0; i < nColumns_c; i++) {
    OUT__whRv_c[i] = whRv_a[i] - whRv_b[i];
  }
}

/* 行ベクトルとスカラーとの積 */
void WH_Matrix__whRv_mul_s_OUT_whRv
(int nColumns_a, double whRv_a[],
 double b,
 int nColumns_c, double OUT__whRv_c[])
/*
  入力引数:
    nColumns_a は行ベクトル whRv_a の列数
    whRv_a は行ベクトル
    b はスカラー
    nColumns_c は行ベクトル OUT__whRv_c の列数
  出力引数:
    OUT__whRv_c は行ベクトルで、whRv_a * b
*/
{
  int i;

  assert(nColumns_a == nColumns_c);

  for (i = 0; i < nColumns_c; i++) {
    OUT__whRv_c[i] = whRv_a[i] * b;
  }
}

/* スカラーと行ベクトルとの積 */
void WH_Matrix__s_mul_whRv_OUT_whRv
(double a,
 int nColumns_b, double whRv_b[],
 int nColumns_c, double OUT__whRv_c[])
/*
  入力引数:
    a はスカラー
    nColumns_b は行ベクトル whRv_b の列数
    whRv_b は行ベクトル
    nColumns_c は行ベクトル OUT__whRv_c の列数
  出力引数:
    OUT__whRv_c は行ベクトルで、a * whRv_b
*/
{
  int i;

  assert(nColumns_b == nColumns_c);

  for (i = 0; i < nColumns_c; i++) {
    OUT__whRv_c[i] = a * whRv_b[i];
  }
}

/* 行ベクトルをスカラーで割る */
void WH_Matrix__whRv_div_s_OUT_whRv
(int nColumns_a, double whRv_a[],
 double b,
 int nColumns_c, double OUT__whRv_c[])
/*
  入力引数:
    nColumns_a は行ベクトル whRv_a の列数
    whRv_a は行ベクトル
    b はスカラーで、0であってはならない
    nColumns_c は行ベクトル OUT__whRv_c の列数
  出力引数:
    OUT__whRv_c は行ベクトルで、whRv_a / b
*/
{
  int i;

  assert(nColumns_a == nColumns_c);

  for (i = 0; i < nColumns_c; i++) {
    OUT__whRv_c[i] = whRv_a[i] / b;
  }
}



Hiroshi KAWAI 平成15年8月11日