kml_sparse_?axpyi
标量-向量乘,并加到另一向量上:y = a * x + y。
其中,a是缩放系数,x是稀疏向量,y是稠密向量。
接口定义
C interface:
kml_sparse_status_t kml_sparse_saxpyi(const KML_INT nz, const float a, const float *x, const KML_INT *indx, float *y);
kml_sparse_status_t kml_sparse_daxpyi(const KML_INT nz, const double a, const double *x, const KML_INT *indx, double *y);
kml_sparse_status_t kml_sparse_caxpyi(const KML_INT nz, const KML_Complex8 a, const KML_Complex8 *x, const KML_INT *indx, KML_Complex8 *y);
kml_sparse_status_t kml_sparse_zaxpyi(const KML_INT nz, const KML_Complex16 a, const KML_Complex16 *x, const KML_INT *indx, KML_Complex16 *y);
Fortran interface:
RES = KML_SPARSE_SAXPYI(NZ, A, X, INDX, Y);
RES = KML_SPARSE_DAXPYI(NZ, A, X, INDX, Y);
RES = KML_SPARSE_CAXPYI(NZ, A, X, INDX, Y);
RES = KML_SPARSE_ZAXPYI(NZ, A, X, INDX, Y);
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
nz |
整型数 |
x及indx数组中元素的个数。 |
输入 |
a |
|
标量a。 |
输入 |
x |
|
存储非零元素的数组x,大于或等于nz。 |
输入 |
indx |
整型数组 |
indx[i]表示x数组中第i个元素在稠密向量中的序列号,大于或等于nz。 |
输入 |
y |
|
数组y,大于或等于max(indx[i])。 |
输入/输出 |
返回值
函数执行状态,枚举类型kml_sparse_status_t。
依赖
C: "kspblas.h"
Fortran: "kspblas.f03"
示例
C interface:
KML_INT nz = 2; float alpha = 1; KML_INT indx[2] = {1, 2}; float x[2] = {1, 3}; float y[4] = {-1, 1, 5, 3}; kml_sparse_status_t status = kml_sparse_saxpyi(nz, alpha, x, indx, y); /* * Output Y: * -1.000000 2.000000 8.000000 3.000000 * */
Fortran interface:
INTEGER(C_INT) :: NZ = 2 REAL(C_FLOAT) :: ALPHA = 1 INTEGER(C_INT) :: INDX(2) REAL(C_FLOAT) :: X(2), Y(4) DATA INDX/1, 2/ DATA X/1, 3/ DATA Y/-1, 1, 5, 3/ INTEGER :: STATUS STATUS = KML_SPARSE_SAXPYI(NZ, ALPHA, X, INDX, Y) ! ! OUTPUT Y: ! -1.000000 2.000000 8.000000 3.000000 ! !