?GEMM_

List

sgemm_単精度実 数一般行列と一般行列の積
dgemm_倍精度実 数一般行列と一般行列の積
cgemm_単精度複素数一般行列と一般行列の積
zgemm_倍精度複素数一般行列と一般行列の積

概略

一般行列と一般行列の積を計算します。結果を別途渡した行列にスカラ倍したものを加算します(詳しくは計算式参照)

計算式

C := alpha * AB + beta * C

プロトタイプ宣言

void sgemm_(char *transa, char *transb, int *m, int *n, int *k,
float *alpha, float *A, int *ldA, float *B, int *ldB,
float *beta , float *C, int *ldC);

void dgemm_(char *transa, char *transb, int *m, int *n, int *k,
double *alpha, double *A, int *ldA, double *B, int *ldB,
double *beta , double *C, int *ldC);

void cgemm_(char *transa, char *transb, int *m, int *n, int *k,
complex *alpha, complex *A, int *ldA, complex *B, int *ldB,
complex *beta , complex *C, int *ldC);

void zgemm_(char *transa, char *transb, int *m, int *n, int *k,
doublecomplex *alpha, doublecomplex *A, int *ldA, doublecomplex *B, int *ldB,
doublecomplex *beta , doublecomplex *C, int *ldC);

引数/戻り値

変数名概要
transachar* 行列Aの転置を指定 ("N"(そのまま),"T"(転置),"C"(共役転置)から選択)
transbchar* 行列Bの転置を指定 ("N"(そのまま),"T"(転置),"C"(共役転置)から選択)
m int* 行列Aの行数
n int* 行列Bの列数
k int* 行列Aの列数、行列Bの行数
alpha double*スカラーalpha
A double*行列Aの先頭ポインタ
ldA int* Aのleading dimension (通常は行数を指定すれば良い)
B double*行列Bの先頭ポインタ
ldB int* Bのleading dimension (通常は行数を指定すれば良い)
beta double*スカラーbeta
C double*行列Cの先頭ポインタ
ldC int* Cのleading dimension (通常は行数を指定すれば良い)
戻り値void