?herk
复数矩阵乘矩阵秩k更新,矩阵C为复数埃尔米特矩阵。
即: 或 。
alpha,beta为实乘法系数,C为n*n的埃尔米特矩阵;第一种情况矩阵A为n*k,第二种情况矩阵A为k*n。
接口定义
C interface:
void cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const BLASINT N, const BLASINT K, const float alpha, const void *A, const BLASINT lda, const float beta, void *C, const BLASINT ldc);
void cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const BLASINT N, const BLASINT K, const double alpha, const void *A, const BLASINT lda, const double beta, void *C, const BLASINT ldc);
Fortran interface:
CALL CHERK(UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
CALL ZHERK(UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
order |
枚举类型CBLAS_ORDER |
表示矩阵是行主序或列主序。 |
输入 |
Uplo |
枚举类型CBLAS_UPLO |
矩阵C存储方式。 |
输入 |
Trans |
枚举类型CBLAS_TRANSPOSE |
矩阵A为常规矩阵或共轭矩阵。 |
输入 |
N |
整型数 |
矩阵C的阶数。 |
输入 |
K |
整型数 |
|
输入 |
alpha |
|
乘法系数。 |
输入 |
A |
|
矩阵A(lda, ka)。 如果Trans = CblasNoTrans,ka = k,否则ka = n。 |
输入 |
lda |
整型数 |
|
输入 |
beta |
|
乘法系数。 |
输入 |
C |
|
矩阵C(ldc, n)。 |
输入/输出 |
ldc |
整型数 |
ldc至少max(1, n)。 |
输入 |
依赖
#include "kblas.h"
示例
C interface:
int n = 2, lda = 2, k = 2, ldc = 2; float alpha = 2.0, beta = 2.0; /** * | 4.0 1.0 1.0 2.0 | * A(2 * 2) = | 3.0 2.0 4.0 1.0 | * * | 3.0 1.0 2.0 1.0 | * C(2 * 2) = | -1.0 1.0 -6.0 2.0 | */ float a[8] = {4.0, 1.0, 3.0, 2.0, 1.0, 2.0, 4.0, 1.0}; float c[8] = {3.0, 1.0, -1.0, 1.0, 2.0, 1.0, -6.0, 2.0}; cblas_cherk(CblasColMajor, CblasUpper, CblasConjTrans, n, k, alpha, a, lda, beta, c, ldc); /** * Output C * | (66.0, 0.0) (44.0, 6.0) | * C(2 * 2) = | (-1.0, 1.0) (32.0, 0.0) | * */
Fortran interface:
INTEGER :: N=2, K=2 INTEGER :: LDA=2, LDC=2 REAL(4) :: ALPHA=2.0 REAL(4) :: BETA=2.0 COMPLEX(4) :: A(2, 2), C(2, 2) DATA A/(4.0, 1.0), (3.0, 2.0), (1.0, 2.0), (4.0, 1.0)/ DATA B/(2.0, 1.0), (11.0, 2.0), (3.0, 2.0), (-2.0, 1.0)/ DATA C/(3.0, 1.0), (-1.0, 1.0), (2.0, 1.0), (-6.0, 2.0)/ EXTERNAL CHERK CALL CHERK('U', 'C', N, K, ALPHA, A, LDA, BETA, C, LDC) * Output C * | (66.0, 0.0) (44.0, 6.0) | * C(2 * 2) = | (-1.0, 1.0) (32.0, 0.0) | *