?SYRK_

List

ssyr2k_単精度実 数対称行列の階数2kの更新
dsyr2k_倍精度実 数対称行列の階数2kの更新
csyr2k_単精度複素数対称行列の階数2kの更新
zsyr2k_倍精度複素数対称行列の階数2kの更新

概略

計算式で挙げた計算を行います。結果を別途渡した行列にスカラ倍したものを加算します(詳しくは計算式参照)ここでtransの指定をCにすると、計算する方向が異なります。

計算式

C := alpha * A B^T + alpha B A^T + beta * C
特に、trans="T"とすると
C := alpha * B^T A + alpha A^T B + beta * C

プロトタイプ宣言

void ssyr2k_(char *uplo, char *trans, int *n, int *k, float *alpha, float *A, int *ldA, float *B, int *ldB,
float *beta , float *C, int *ldC);

void dsyr2k_(char *uplo, char *trans, int *n, int *k, double *alpha, double *A, int *ldA, double *B, int *ldB,
double *beta , double *C, int *ldC);

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

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

引数/戻り値

変数名概要
uplo char* 行列Aのどの部分を使うか指定 ("L"(下三角),"U"(上三角)から選択)
trans char* 行列A,Bの転置を指定 ("N"(そのまま),"C"(共役転置)から選択)
n int* 行列Cの行数・列数 行列Aの行数
k int* 行列Aの列数
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