kml_sparse_?gthrz
将full-storage格式的稀疏向量y中指定的元素加载到compressed格式的向量中。
即x[i]=y[indx[i]],i=0,1,…nz-1,并将y中对应元素清零。
接口定义
C interface:
kml_sparse_status_t kml_sparse_sgthrz(const KML_INT nz, float *y, float *x, const KML_INT *indx);
kml_sparse_status_t kml_sparse_dgthrz(const KML_INT nz, double *y, double *x, const KML_INT *indx);
kml_sparse_status_t kml_sparse_cgthrz(const KML_INT nz, KML_Complex8 *y, KML_Complex8 *x, const KML_INT *indx);
kml_sparse_status_t kml_sparse_zgthrz(const KML_INT nz, KML_Complex16 *y, KML_Complex16 *x, const KML_INT *indx);
Fortran interface:
RES = KML_SPARSE_SGTHRZ(NZ, Y, X, INDX);
RES = KML_SPARSE_DGTHRZ(NZ, Y, X, INDX);
RES = KML_SPARSE_CGTHRZ(NZ, Y, X, INDX);
RES = KML_SPARSE_ZGTHRZ(NZ, Y, X, INDX);
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
nz |
整型数 |
x及indx数组中元素的个数。 |
输入 |
y |
|
数组y,大于或等于max(indx[i])。 |
输入/输出 |
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_sgthrz(nz, y, x, indx); /* * Output x: * 5.000000 -2.000000 * Output y: * -1.000000 0.000000 0.000000 3.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_SGTHRZ(NZ,Y,X,INDX); ! ! OUTPUT X: ! 5.000000 -2.000000 ! OUTPUT Y: ! -1.000000 0.000000 0.000000 3.000000 !