---
title: kml_sparse_?gthr
description: "将full-storage格式的稀疏向量y中指定的元素加载到compressed格式的向量中。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0025.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0025.html
indexId: 0fcf428ddeef0ec4757d3785afc1c1949e0905baeaab422e5f5be0e1576171a561
---
# kml_sparse_?gthr

将full-storage格式的稀疏向量y中指定的元素加载到compressed格式的向量中。

即x[i]=y[indx[i]]，i=0,1,…nz-1。

#### 接口定义

C interface：

kml_sparse_status_t kml_sparse_sgthr(const KML_INT nz, const float *y, float *x, const KML_INT *indx);

kml_sparse_status_t kml_sparse_dgthr(const KML_INT nz, const double *y, double *x,const KML_INT *indx);

kml_sparse_status_t kml_sparse_cgthr(const KML_INT nz, const KML_Complex8 *y, KML_Complex16 *x, const KML_INT *indx);

kml_sparse_status_t kml_sparse_zgthr(const KML_INT nz, const KML_Complex16 *y, KML_Complex16 *x, const KML_INT *indx);

Fortran interface：

RES = KML_SPARSE_SGTHR(NZ, Y, X, INDX);

RES = KML_SPARSE_DGTHR(NZ, Y, X, INDX);

RES = KML_SPARSE_CGTHR(NZ, Y, X, INDX);

RES = KML_SPARSE_ZGTHR(NZ, Y, X, INDX);


#### 参数

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| nz | 整型数 | x及indx数组中元素的个数。 | 输入 |
| y | 在sgthr中，y是单精度浮点类型数组。 在dgthr中，y是双精度浮点类型数组。 在cgthr中，y是单精度复数数组。 在zgthr中，y是双精度复数数组。 | 数组y，大于或等于max(indx[i])。 | 输入 |
| x | 在sgthr中，x是单精度浮点类型数组。 在dgthr中，x是双精度浮点类型数组。 在cgthr中，x是单精度复数数组。 在zgthr中，x是双精度复数数组。 | 存储非零元素的数组x，长度等于nz。 | 输入/输出 |
| indx | 整型数组 | indx[i]表示x数组中第i个元素在稠密向量中的序列号，数组长度等于nz。 | 输入 |


#### 返回值

函数执行状态，枚举类型kml_sparse_status_t。


#### 依赖

C: "kspblas.h"

Fortran: "kspblas.f03"


#### 示例

C interface：

```
KML_INT nz = 2; 
    KML_INT indx[2] = {1,2}; 
    float x[2] = {0,0}; 
    float y[4] = {-1, 5, -2 ,3}; 
    kml_sparse_status_t status = kml_sparse_sgthr(nz,y,x,indx); 
 
    /* 
     *  Output x: 
     *     5.000000    -2.000000 
     */
```

Fortran interface：

```
INTEGER(C_INT) :: NZ = 2
INTEGER(C_INT) :: INDX(2)
INTEGER(C_INT) :: STATUS
REAL(C_FLOAT) :: X(2), Y(4)
DATA INDX/1,2/
DATA X/0,0/
DATA Y/-1, 5, -2 ,3/
STATUS = KML_SPARSE_SGTHR(NZ,Y,X,INDX);
!
!  OUTPUT X:
!     5.000000    -2.000000
!
```
