---
title: ?hbmv
description: "向量与埃尔米特带状矩阵乘积。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC1/accel/kunpengaccel_kml_16_0037.html
sourcePath: /source/zh/kunpengboostkithistory/240RC1/accel/kunpengaccel_kml_16_0037.html
indexId: 4be5e30c5d3eb6dde53937ff74993d3acd05d7ec5e302d832ec5959c278d538d76
---
# ?hbmv

向量与埃尔米特带状矩阵乘积。

即：。alpha和beta是乘法系数，x和y是含有n个元素的向量，A是n阶埃尔米特带状矩阵。

#### 接口定义

C interface：

void cblas_chbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const BLASINT N, const BLASINT K, const void *alpha, const void *A, const BLASINT lda, const void *X, const BLASINT incX, const void *beta, void *Y, const BLASINT incY);

void cblas_zhbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const BLASINT N, const BLASINT K, const void *alpha, const void *A, const BLASINT lda, const void *X, const BLASINT incX, const void *beta, void *Y, const BLASINT incY);

Fortran interface：

CALL CHBMV(UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)

CALL ZHBMV(UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)


#### 参数

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| order | 枚举类型CBLAS\_ORDER | 表示矩阵是行主序或列主序。 | 输入 |
| Uplo | 枚举类型CBLAS\_UPLO | 表示使用矩阵A展开方式（上三角或下三角） 如果Uplo=CblasUpper，则使用A的上三角展开。 如果Uplo=CblasLower，则使用A的下三角展开。 | 输入 |
| N | 整型数 | 表示矩阵A的阶数，要求N大于或等于零。 | 输入 |
| K | 整型数 | 表示矩阵A的超对角阶数，要求K大于或等于零。 | 输入 |
| alpha | 在chbmv中是单精度复数类型。 在zhbmv中是双精度复数类型。 | 表示系数。 | 输入 |
| A | 在chbmv中是单精度复数类型。 在zhbmv中是双精度复数类型。 | 埃尔米特带状矩阵A(lda, n)。 | 输入 |
| lda | 整型数 | 矩阵A中主维度长度，要求lda大于或等于(k+1)。 | 输入 |
| X | 在chbmv中是单精度复数类型。 在zhbmv中是双精度复数类型。 | 向量X，向量规模至少是(1+(N\-1)\*abs(incX))。 | 输入 |
| incX | 整型数 | 表示X中向量增长步长，不能为零。 | 输入 |
| beta | 在chbmv中是单精度复数类型。 在zhbmv中是双精度复数类型。 | 乘法系数。 | 输入 |
| Y | 在chbmv中是单精度复数类型。 在zhbmv中是双精度复数类型。 | 向量Y，向量规模至少是(1+(N\-1)\*abs(incY))。 | 输入/输出 |
| incY | 整型数 | 表示Y中向量增长步长，不能为零。 | 输入 |


#### 依赖

#include "kblas.h"


#### 示例

C interface：

```
int n = 3, k = 1, lda = 3;
float alpha[2] = {1.0, 0}, beta[2] = {1.0, 0};
int incx = 1, incy = 1;
/*
*            | 1.0, 0.0  7.0, 0.0, 6.0, 0 |
*      ap =  | 3.0,-5.0  4.0, 8.0     *   |
*            |    *         *         *   |
*/
float ap[18] = {1.0, 0, 3.0, -5.0, 0, 0, 7.0, 0, 4.0, 8.0, 0.0, 0.0, 6.0, 0, 0, 0, 0, 0};
float x[6] = {3.0, 0.0, 2.0, 0.0, 1.0, 0.0};
float y[6] = {1.0, 0.0, 2.0, 0.0, 3.0, 0.0};
cblas_chbmv(CblasColMajor,CblasLower, n, k, alpha, ap, lda, x, incx, beta, y, incy);
/*
* Output y = | 10.0, 10.0, 29.0, -23.0, 17.0, 16.0|
*/
```

Fortran interface：

```
INTEGER :: N=3
INTEGER :: K=1
INTEGER :: LDA=3
COMPLEX(4) :: ALPHA=(1.0, 0.0)
COMPLEX(4) :: BETA=(1.0, 0.0)
INTEGER :: INCX=1
INTEGER :: INCY=1
COMPLEX(4) :: A(3, 3)
DATA A/(1.0, 0), (3.0, -5.0), (0, 0),
$       (7.0, 0), (4.0, 8.0), (0.0, 0.0),
$       (6.0, 0), (0, 0), (0, 0)/
COMPLEX(4) :: X(3), Y(3)
DATA X/(3.0, 0.0), (2.0, 0.0), (1.0, 0.0)/
DATA Y/(1.0, 0.0), (2.0, 0.0), (3.0, 0.0)/
EXTERNAL CHBMV
CALL CHBMV('L', N, K, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
*     Output Y = | (10.0000000, 10.0000000) (29.0000000, -23.0000000) (17.0000000, 16.0000000)|
```
