---
title: ?hptrf
description: "C Interface："
url: https://www.hikunpeng.com/document/detail/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_kml_0682.html
sourcePath: /source/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_kml_0682.html
indexId: ab2aceae67d5b3c235aaa65b4cefb73ad9183ef9e68521969696e7fc6da5b89468
---
# ?hptrf

#### 接口定义

C Interface：

void chptrf_(const char *uplo, const int *n, float _Complex *ap, int *ipiv, int *info);

void zhptrf_(const char *uplo, const int *n, double _Complex *ap, int *ipiv, int *info);

Fortran Interface：

CHPTRF(UPLO, N, AP, IPIV, INFO);

ZHPTRF(UPLO, N, AP, IPIV, INFO);


#### 参数

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| UPLO | 字符数 | 'U'：保存A的上三角矩阵。 'L'：保存A的下三角矩阵。 | 输入 |
| N | 整数型 | 矩阵A的维数，N≥0。 | 输入 |
| AP | 在chptrf中为单精度复数型数组。 在zhptrf中为双精度复数型数组。 | 输入时，为压缩对称矩阵A，大小为N\*(N+1)/2。 输出时，块对角矩阵D，和用于获得因子U或L的乘法器，存储为上或下三角矩阵覆盖A。 | 输入、输出 |
| IPIV | 整数型 | 转置数组，大小为N，表示对角矩阵D的块结构和交换细节。 若IPIV(k) > 0，第k与IPIV(k)的行列交换，且D(k,k)是1\*1的对角线块。 若UPLO='U'且IPIV(k)=IPIV(k\-1) < 0，则第k\-1与\-IPIV(k)的行列交换，且D(k\-1:k, k\-1:k)是2\*2的对角线块。 若UPLO='L'且IPIV(k)=IPIV(k+1) < 0，则第k+1与\-IPIV(k)的行列交换，且D(k:k+1;k:k+1)是2\*2的对角线块。 | 输出 |
| INFO | 整数型 | 等于0：成功退出。 小于0：第\-info个参数值不合法。 大于0：表示U(INFO, INFO)为零，分解失败。 | 输出 |


#### 依赖

#include "klapack.h"


#### 示例

C Interface：

```
const char uplo = 'U';
const int n = 4;
double ap[] = {0.521739, 0.043478, 0.304348, 0.130435, 0.304348, 0.043478, 0.652174, 0.086957, 0.521739, 0.086957};
double ipiv[4];
int info = 0;
zhptrf_(&uplo, &n, ap, ipiv, &info);
if (info != 0) {
printf("ERROR, info = %d\n", info);
}
/*
* Output:
*   ap: -0.129534   1.024339   0.302185   -0.492537   -0.044777   -0.728261   1.250000   0.083333  0.250000  0.521739
*   ipiv: 1       2       1       1
*/
```

Fortran Interface：

```
CHARACTER::uplo = "U"
PARAMETER (n = 4)
INTEGER :: info = 0
REAL(8) :: ap(n*(n+1)/2)
INTEGER :: ipiv(n)
DATA ap / 0.521739, 0.043478, 0.304348, 0.130435, 0.304348, 0.043478, 0.652174, 0.086957, 0.521739, 0.086957 /
EXTERNAL ZHPTRF
CALL ZHPTRF(uplo, n, ap, ipiv, info);
*
* Output:
*   ap: -0.129534   1.024339   0.302185   -0.492537   -0.044777   -0.728261   1.250000   0.083333  0.250000  0.521739
*   ipiv: 1       2       1       1
```
