EN
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

?her2k

复数矩阵乘矩阵秩2更新,矩阵C为复数埃尔米特矩阵。

即:

alpha,beta为乘法系数,C为n*n的埃尔米特矩阵;第一种情况矩阵A,B为n*k,第二种情况矩阵A,B为k*n。

接口定义

C interface:

void cblas_cher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const BLASINT N, const BLASINT K, const void *alpha, const void *A, const BLASINT lda, const void *B, const BLASINT ldb, const float beta, void *C, const BLASINT ldc);

void cblas_zher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const BLASINT N, const BLASINT K, const void *alpha, const void *A, const BLASINT lda, const void *B, const BLASINT ldb, const double beta, void *C, const BLASINT ldc);

Fortran interface:

CALL CHER2K(UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)

CALL ZHER2K(UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)

参数

参数名

类型

描述

输入/输出

order

枚举类型CBLAS_ORDER

表示矩阵是行主序或列主序。

输入

Uplo

枚举类型CBLAS_UPLO

矩阵C存储方式。

输入

Trans

枚举类型CBLAS_TRANSPOSE

矩阵A和B为常规矩阵,转置矩阵或共轭矩阵。

  • 当Trans = CblasNoTrans,

  • 当Trans = CblasConjTrans,

输入

N

整型数

矩阵C的行。

输入

K

整型数

当Trans = CblasNoTrans,表示矩阵A、B的列。

当Trans = CblasConjTrans,表示矩阵A、B的行。

输入

alpha

  • 在cher2k中是单精度复数类型。
  • 在zher2k中是双精度复数类型。

乘法系数。

输入

A

  • 在cher2k中是单精度复数类型。
  • 在zher2k中是双精度复数类型。

矩阵A(lda, ka)。

如果Trans = CblasNoTrans,ka = k,否则ka = n。

输入

lda

整型数

  • 矩阵为列存,如果Trans = CblasNoTrans,lda至少max(1, n), 否则至少max(1, k)。
  • 矩阵为列存,如果Trans = CblasNoTrans,lda至少max(1, k), 否则至少max(1, n)。

输入

B

  • 在cher2k中是单精度复数类型。
  • 在zher2k中是双精度复数类型。

矩阵B(ldb, kb)。

Trans = CblasNoTrans,kb = k,否则kb = n。

输入

ldb

整型数

  • 矩阵为列存,如果Trans = CblasNoTrans,ldb至少max(1, n),否则至少max(1, k)。
  • 矩阵为列存,如果Trans = CblasNoTrans,ldb至少max(1, k),否则至少max(1, n)。

输入

beta

  • 在cher2k中是单精度复数类型。
  • 在zher2k中是双精度复数类型。

乘法系数。

输入

C

  • 在cher2k中是单精度复数类型。
  • 在zher2k中是双精度复数类型。

矩阵C(ldc, n)。

输入/输出

ldc

整型数

ldc至少max(1, n)。

输入

依赖

#include "kblas.h"

示例

C interface:

    int n = 2, lda = 2, k = 2, ldb =3, ldc = 3; 
    float alpha[2] = {2.0, 1.0}, beta = 2.0; 
    /** 
     *                    | 4.0 1.0   1.0 2.0 | 
     *     A(2 * 2)    =  | 3.0 2.0   4.0 1.0 | 
     * 
     *     B(2 * 2)    =  | 2.0 1.0   3.0  2.0 | 
     *                    | 11.0 2.0 -2.0  1.0 | 
     * 
     *                    |  3.0 1.0  2.0  1.0 | 
     *     C(3 * 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 b[8] = {2.0, 1.0, 11.0, 2.0, 3.0, 2.0, -2.0, 1.0}; 
    float c[12] = {3.0, 1.0, -1.0, 1.0, 0, 0, 2.0, 1.0, -6.0, 2.0, 0, 0}; 
 
    cblas_cher2k(CblasColMajor, CblasUpper, CblasConjTrans, n, k, alpha, a, lda, b, ldb, beta, c, ldc); 
    /** 
     * Output C 
     *                   | (218.0, 0.0)  (123.0, -27.0) | 
     *    C(3 * 2)    =  | (-1.0 1.0)    (46.0, 0.0)    | 
     *                   |   .                 .        | 
     * 
     */

Fortran interface:

      INTEGER :: N=2, K=2 
      INTEGER :: LDA=2, LDB=3, LDC=3 
      COMPLEX(4) :: ALPHA=(2.0, 1.0) 
      REAL(4) :: BETA=2.0 
      COMPLEX(4) :: A(2, 2), B(2, 2), C(3, 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), (0, 0), (2.0, 1.0), (-6.0, 2.0), 
     $       (0, 0)/ 
      EXTERNAL CHER2K 
      CALL CHER2K('U', 'C', N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC) 
 
*     Output C 
*                        | (218.0, 0.0)  (123.0, -27.0) | 
*         C(3 * 2)    =  | (-1.0 1.0)    (46.0, 0.0)    | 
*                        |   .                 .        | 
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词