?HERK_

List

cherk_単精度複素数エルミート行列の階数nの更新
zherk_倍精度複素数エルミート行列の階数nの更新

概略

任意の大きさの行列(正方行列でなくてもよい)とその共役転置をした行列をかけ算します。結果を別途渡したエルミート行列にスカラ倍したものを加算します(詳しくは計算式参照)これによってランクnの更新になります。
計算上、返ってくるのは必ずエルミート行列になることに注意してください。

計算式

C := alpha * A conjg(A) + beta * C
特に、trans="C"とすると
C := alpha * conjg(A) A + beta * C

プロトタイプ宣言

void cherk_(char *uplo, char *trans, int *n, int *k, float *alpha, complex *A, int *ldA,
float *beta , complex *C, int *ldC);

void zherk_(char *uplo, char *trans, int *n, int *k, double *aplha, doublecomplex *A, int *ldA,
double *beta , doublecomplex *C, int *ldC);

引数/戻り値

変数名概要
uplo char* 行列Aのどの部分を使うか指定 ("L"(下三角),"U"(上三角)から選択)
trans char* 行列Aの転置を指定 ("N"(そのまま),"C"(共役転置)から選択)
n int* 行列Cの行数・列数
k int* 行列Aの列数
alpha double*スカラーalpha
A doublecomplex*行列Aの先頭ポインタ
ldA int* Aのleading dimension (通常は行数を指定すれば良い)
beta double*スカラーbeta
C doublecomplex*行列Cの先頭ポインタ
ldC int* Cのleading dimension (通常は行数を指定すれば良い)
戻り値void