---
title: ?gerc
description: "一般复数矩阵秩1更新。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0623.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0623.html
indexId: feed56f3cde6f7edc086a0113dbd7bc3e8630345c220b384ba75e4c4e18d65e761
---
# ?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中是单精度复数类型。 在zgerc中是双精度复数类型。 | 乘法系数。 | 输入 |
| X | 在cgerc中是单精度复数类型。 在zgerc中是双精度复数类型。 | 矩阵X，向量规模至少1+(m\-1)\*abs(incX)。 | 输入 |
| incX | 整型数 | 向量X的增长步长，不能为零。 | 输入 |
| Y | 在cgerc中是单精度复数类型。 在zgerc中是双精度复数类型。 | 矩阵Y，向量规模至少1+(n\-1)\*abs(incY)。 | 输入 |
| incY | 整型数 | 向量Y的增长步长，不能为零。 | 输入 |
| A | 在cgerc中是单精度复数类型。 在zgerc中是双精度复数类型。 | 矩阵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)
```
