中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

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

  • 在saxpyi中,a是单精度浮点类型。
  • 在daxpyi中,a是双精度浮点类型。
  • 在caxpyi中,a是单精度复数。
  • 在zaxpyi中,a是双精度复数。

标量a。

输入

x

  • 在saxpyi中,x是单精度浮点类型数组。
  • 在daxpyi中,x是双精度浮点类型数组。
  • 在caxpyi中,x是单精度复数数组。
  • 在zaxpyi中,x是双精度复数数组。

存储非零元素的数组x,大于或等于nz。

输入

indx

整型数组

indx[i]表示x数组中第i个元素在稠密向量中的序列号,大于或等于nz。

输入

y

  • 在saxpyi中,y是单精度浮点类型数组。
  • 在daxpyi中,y是双精度浮点类型数组。
  • 在caxpyi中,y是单精度复数数组。
  • 在zaxpyi中,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 
    ! 
    !