---
title: ?gerc
description: "一般矩阵秩1更新，。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200/accel/kunpengaccel_kml_16_0035.html
sourcePath: /source/zh/kunpengboostkithistory/2200/accel/kunpengaccel_kml_16_0035.html
indexId: 736d0833ffbdfff80bf76b2f0996165d546bfe5b4efd9b37a69db4fd24ab2c4174
---
# ?gerc

一般矩阵秩1更新，。

alpha是乘法系数，A是m*n的一般矩阵，x是含有m个元素的向量，y是含有n个元素的向量。

#### 接口定义

C interface：

void cblas_cgerc(const enum CBLAS_ORDER order, const BLASINT M, const BLASINT N, const void *alpha, const void *X, const BLASINT incX, const void *Y, const BLASINT incY, void *A, const BLASINT lda);

void cblas_zgerc(const enum CBLAS_ORDER order, const BLASINT M, const BLASINT N, const void *alpha, const void *X, const BLASINT incX, const void *Y, const BLASINT incY, void *A, const BLASINT lda);

Fortran interface：

CALL CGERC(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)

CALL ZGERC(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)


#### 参数

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| order | 枚举类型CBLAS\_ORDER | 表示矩阵是行主序或列主序。 | 输入 |
| M | 整型数 | 矩阵A的行数。 | 输入 |
| N | 整型数 | 矩阵A的列数。 | 输入 |
| alpha | 在cgerc中，alpha为单精度复数类型。 在zgerc中，alpha为双精度复数类型。 | 乘法系数。 | 输入 |
| X | 在cgerc中，X为单精度复数类型。 在zgerc中，X为双精度复数类型。 | 矩阵X，向量规模至少1+(m\-1)\*abs(incX)。 | 输入 |
| incX | 整型数 | 向量X的增长步长，不能为零。 | 输入 |
| Y | 在cgerc中，Y为单精度复数类型。 在zgerc中，Y为双精度复数类型。 | 矩阵Y，向量规模至少1+(n\-1)\*abs(incY)。 | 输入 |
| incY | 整型数 | 向量Y的增长步长，不能为零。 | 输入 |
| A | 在cgerc中，A为单精度复数类型。 在zgerc中，A为双精度复数类型。 | 矩阵A(lda, n)。 | 输出 |
| lda | 整型数 | 矩阵A中主维度长度，如果矩阵A为列存，要求lda大于或等于max(1, m)，否则要求大于或等于max(1,n)。 | 输入 |


#### 依赖

#include "kblas.h"


#### 示例

C interface：

```
int m = 2, n = 2, lda = 2;
float alpha[2] = {1.0, 2.0};
int incx = 1, incy = 1;
float x[4] = {1.0, 2.0, 3.0, 4.0};
float y[4] = {2.0, 3.0, 4.0, 2.0};
float a[8] = {-1.0, 2.0, 2.0, 2.0, 3.0, 4.0, 5.0, 6.0};
cblas_cgerc(CblasColMajor, m, n, alpha, x, incx, y, incy, a, lda);
/**
*  Output A:
*            (5.000000, 19.000000), (-1.000000, 26.000000)
*            (22.000000, 37.000000), (5.000000, 56.000000)
*/
```

Fortran interface：

```
INTEGER :: M=2
INTEGER :: N=2
INTEGER :: LDA=2
INTEGER :: INCX=1
INTEGER :: INCY=1
COMPLEX(4) :: ALPHA=(1.0, 2.0)
COMPLEX(4) :: A(2, 2)
DATA A/(-1.0, 2.0), (2.0, 2.0),
$       (3.0, 4.0), (5.0, 6.0)/
COMPLEX(4) :: X(2)
DATA X/(1.0, 2.0), (3.0, 4.0)/
COMPLEX(4) :: Y(2)
DATA Y/(2.0, 3.0), (4.0, 2.0)/
EXTERNAL CGERC
CALL CGERC(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
*     Output A:
*             (5.000000, 19.000000), (-1.000000, 26.000000)
*             (22.000000, 37.000000), (5.000000, 56.000000)
```
