BLAS 関数構文

sgemv 関数および dgemv 関数のプロトタイプを以下に示します。
void sgemv(const char *trans, int *m, int *n, float *alpha,
					void *a, int *lda, void *x, int *incx, 
					float *beta, void *y, int *incy);
void dgemv(const char *trans, int *m, int *n, double *alpha,
					void *a, int *lda, void *x, int *incx,
				  double *beta, void *y, int *incy);
パラメーターを以下に示します。
trans
これは単一文字で入力行列の書式 a を示します。ここで、
  • 'N' または 'n' は、a が計算に使用されることを示しています。
  • 'T' または 't'a の転置 (transpose) が計算に使用されることを示しています。
m
以下を表しています。
  • 入力行列 a 内の行数
  • ベクトル y の長さ、もし 'N' または 'n'trans パラメーターに使用されている場合。
  • ベクトル x の長さ、もし 'T' または 't'trans パラメーターに使用されている場合。
行数はゼロ以上で、行列 a (lda に指定済み) の先導ディメンション (leading dimension) より小でなければならない。
n
以下を表しています。
  • 入力行列 a 内の列数
  • ベクトル x の長さ、もし 'N' または 'n'trans パラメーターに使用されている場合。
  • ベクトル y の長さ、もし 'T' または 't'trans パラメーターに使用されている場合。
列数はゼロ以上でなければならない。
alpha
これは行列 a のスケーリング定数です。
a
これは float (sgemv 用) または double (dgemv 用) 値の入力行列です。
lda
これは、a で指定される配列の先導ディメンション (leading dimension) です。先導ディメンション (leading dimension) はゼロより大でなければなりません。 先導ディメンションは (leading dimension) 1 以上で、m で指定された値以上でなければなりません。
x
これは、float (sgemv 用) の入力ベクトル、または double (dgemv 用) 値です。
incx
これはベクトル x のストライド。任意の値を持てる。
beta
これはベクトル y のスケーリング定数です。
y
これは、float (sgemv 用) の出力ベクトル、または double (dgemv 用) 値です。
incy
これはベクトル y のストライド。ゼロであってはならない。
注: ベクトル y は、行列 a、またはベクトル x と共通エレメントを持ってはならない。 そうでない場合、結果は予測不能です。
sgemm および dgemm 関数のプロトタイプを以下に示します。
void sgemm(const char *transa, const char *transb,
   int *l, int *n, int *m, float *alpha,
   const void *a, int *lda, void *b, int *ldb,
   float *beta, void *c, int *ldc);
void dgemm(const char *transa, const char *transb,
   int *l, int *n, int *m, double *alpha, 
   const void *a, int *lda, void *b, int *ldb, 
   double *beta, void *c, int *ldc);
パラメーターを以下に示します。
transa
これは単一文字で入力行列の書式 a を示します。ここで、
  • 'N' または 'n' は、a が計算に使用されることを示しています。
  • 'T' または 't'a の転置 (transpose) が計算に使用されることを示しています。
transb
これは単一文字で入力行列の書式 b を示します。ここで、
  • 'N' または 'n' は、b が計算に使用されることを示しています。
  • 'T' または 't'b の転置 (transpose) が計算に使用されることを示しています。
l
出力行列 c の行数を表します。行数はゼロ以上で、c の先導ディメンション (leading dimension) より小でなければならない。
n
出力行列 c の列数を表します。列数はゼロ以上でなければならない。
m
以下を表しています。
  • 行列 a の列数。'N' または 'n'transa パラメーターに対して使用されている場合
  • 行列 a の行数。'T' または 't'transa パラメーターに対して使用されている場合
そして、
  • 行列 b の行数。'N' または 'n'transb パラメーターに対して使用されている場合
  • 行列 b の列数。'T' または 't'transb パラメーターに対して使用されている場合
m はゼロ以上でなければなりません。
alpha
これは行列 a のスケーリング定数です。
a
これは float (sgemm 用) または double (dgemm 用) 値の入力行列 a です。
lda
これは、a で指定される配列の先導ディメンション (leading dimension) です。先導ディメンション (leading dimension) はゼロより大でなければなりません。 もし transa'N' または 'n' として指定されると、先導ディメンション (leading dimension) は 1 以上でなければなりません。 もし transa'T' または 't' として指定されると、先導ディメンション (leading dimension) は m で指定された値以上でなければなりません。
b
これは float (sgemm 用) または double (dgemm 用) 値の入力行列 b です。
ldb
これは、b で指定される配列の先導ディメンション (leading dimension) です。先導ディメンション (leading dimension) はゼロより大でなければなりません。 もし transb'N' または 'n' として指定されると、先導ディメンション (leading dimension) は m で指定された値以上でなければなりません。 もし transa'T' または 't' として指定されると、先導ディメンション (leading dimension) は n で指定された値以上でなければなりません。
beta
これは行列 c のスケーリング定数です。
c
これは float (sgemm 用) または double (dgemm 用) 値の出力行列 c です。
ldc
これは、c で指定される配列の先導ディメンション (leading dimension) です。先導ディメンション (leading dimension) はゼロより大でなければなりません。 もし transb'N' または 'n' として指定されると、先導ディメンション (leading dimension) は 0 以上で、 l で指定された値以上でなければなりません。
注: 行列 c は、行列 a または b と共通エレメントを持ってはならない。 そうでない場合、結果は予測不能です。