?SYRK_
List
| ssyrk_ | 単精度実 数対称行列の階数nの更新 |
| dsyrk_ | 倍精度実 数対称行列の階数nの更新 |
| csyrk_ | 単精度複素数対称行列の階数nの更新 |
| zsyrk_ | 倍精度複素数対称行列の階数nの更新 |
概略
任意の大きさの行列(正方行列でなくてもよい)とその共役転置をした行列をかけ算します。結果を別途渡した対称行列にスカラ倍したものを加算します(詳しくは計算式参照)これによってランクnの更新になります。計算上、返ってくるのは必ず対称行列になることに注意してください。
計算式
C := alpha * A A^T + beta * C特に、trans="T"とすると
C := alpha * A^T A + beta * C
プロトタイプ宣言
void ssyrk_(char *uplo, char *trans, int *n, int *k, float *alpha, float *A, int *ldA,float *beta , float *C, int *ldC);
void dsyrk_(char *uplo, char *trans, int *n, int *k, double *alpha, double *A, int *ldA,
double *beta , double *C, int *ldC);
void csyrk_(char *uplo, char *trans, int *n, int *k, float *alpha, complex *A, int *ldA,
float *beta , complex *C, int *ldC);
void zsyrk_(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"(そのまま),"T"(転置),"C"(共役転置)から選択) |
| n | int* | 行列Cの行数・列数 |
| k | int* | 行列Aの列数 |
| alpha | double* | スカラーalpha |
| A | double* | 行列Aの先頭ポインタ |
| ldA | int* | Aのleading dimension (通常は行数を指定すれば良い) |
| beta | double* | スカラーbeta |
| C | double* | 行列Cの先頭ポインタ |
| ldC | int* | Cのleading dimension (通常は行数を指定すれば良い) |
| 戻り値 | void |