cblas_saxpyi (const MKL_INT nz, const float a, const float *x, const MKL_INT *indx, float *y);
cblas_daxpyi (const MKL_INT nz, const double a, const double *x, const MKL_INT *indx, double *y);
cblas_caxpyi (const MKL_INT nz, const void *a, const void *x, const MKL_INT *indx, void *y);
cblas_zaxpyi (const MKL_INT nz, const void *a, const void *x, const MKL_INT *indx, void *y);
cblas_?axpyi函数执行向量-向量操作,定义为 y := a * x + y,a是标量,x是压缩形式存储的稀疏向量,y是全存储形式存储的向量。
单精度实数为cblas_saxpyi,双精度实数cblas_daxpyi,单精度复数cblas_caxpyi, 双精度复数cblas_zaxpyi
nz | 整数。x和indx中的元素数量 |
---|---|
a | 指定标量a |
x | 数组,大小至少nz |
indx | 整数。指定x元素的索引,数组,大小至少nz。 |
y | 数组,大小至少max(indx(i))。 |
y: 包含更新后的向量y
float res = cblas_sdoti (const MKL_INT nz, const float *x, const MKL_INT *indx, const float *y);
double res = cblas_ddoti (const MKL_INT nz, const double *x, const MKL_INT *indx, const double *y);
cblas_?doti函数返回定义的x和y的点积,定义为res = x(1) * y(indx(1)) + x(2) * y(indx(2)) +…+ x(nz) * y(indx(nz)),其中三元组(nz, x, indx)定义了以压缩形式存储的稀疏实向量,而y是以完整存储形式存储的实向量。这些函数只引用索引在数组indx中列出的y元素。indx中的值必须是不同的。
单精度实数为cblas_sdoti,双精度实数cblas_ddoti
nz | 整数。x和indx中的元素数量。 |
---|---|
x | 数组,大小至少nz |
indx | 整数。指定x元素的索引,数组,大小至少nz。 |
y | 数组,大小至少max(indx(i))。 |
res: 包含x和y的点积,如果nz是正的。否则,res包含0。
cblas_cdotci_sub (const MKL_INT nz, const void *x, const MKL_INT *indx, const void *y, void *dotui);
cblas_zdotci_sub (const MKL_INT nz, const void *x, const MKL_INT *indx, const void *y, void *dotui);
cblas_?dotci函数返回定义的x和y的点积,定义为conjg(x(1)) * y(indx(1)) + … + conjg(x(nz)) * y(indx(nz)),其中三元组(nz、x、indx)定义了以压缩形式存储的稀疏复向量,而y是以完整存储形式存储的真实向量。这些函数只引用索引在数组indx中列出的y元素。indx中的值必须是不同的。
单精度复数为cblas_cdotci_sub,双精度复数cblas_zdotci_sub
nz | 整数。x和indx中的元素数量。 |
---|---|
x | 数组,大小至少nz |
indx | 整数。指定x元素的索引,数组,大小至少nz。 |
y | 数组,大小至少max(indx(i))。 |
dotui | 浮点数, |
dotui: 包含x和y的共轭点积,如果nz是正的。否则,它包含0。
cblas_cdotui_sub (const MKL_INT nz, const void *x, const MKL_INT *indx, const void *y, void *dotui);
cblas_zdotui_sub (const MKL_INT nz, const void *x, const MKL_INT *indx, const void *y, void *dotui);
cblas_?dotci函数返回定义为res = x(1) * y(indx(1)) + x(2) * y(indx(2)) +…其中三元组(nz, x, indx)定义了以压缩形式存储的稀疏复向量,而y是以完整存储形式存储的实向量。这些函数只引用索引在数组indx中列出的y元素。indx中的值必须是不同的。
单精度复数为cblas_cdotui_sub,双精度复数cblas_zdotui_sub
nz | 整数。x和indx中的元素数量。 |
---|---|
x | 数组,大小至少nz |
indx | 整数。指定x元素的索引,数组,大小至少nz。 |
y | 数组,大小至少max(indx(i))。 |
dotui | 浮点数, |
dotui: 包含x和y的共轭点积,如果nz是正的。否则,它包含0。
cblas_sgthr (const MKL_INT nz, const float *y, float *x, const MKL_INT *indx);
cblas_dgthr (const MKL_INT nz, const double *y, double *x, const MKL_INT *indx);
cblas_cgthr (const MKL_INT nz, const void *y, void *x, const MKL_INT *indx);
cblas_zgthr (const MKL_INT nz, const void *y, void *x, const MKL_INT *indx);
cblas_?gthr函数将一个全存储稀疏向量y的指定元素收集为压缩形式(nz, x, indx)。函数只引用索引在数组indx: x(i) = y(indx(i))中的元素,因为i=1,2,…,nz。
单精度实数为cblas_sgthr,双精度实数cblas_dgthr; 单精度复数为cblas_cgthr,双精度复数cblas_zgthr
nz | 整数。y中需要收集的元素数 |
---|---|
y | 数组,大小至少nz |
x | 数组,大小至少nz |
indx | 整数。指定要收集的元素的索引。数组,大小至少nz。 |
x: 数组,大小至少nz。包含转换为压缩形式的向量。
cblas_sgthrz (const MKL_INT nz, float *y, float *x, const MKL_INT *indx);
cblas_dgthrz (const MKL_INT nz, double *y, double *x, const MKL_INT *indx);
cblas_cgthrz (const MKL_INT nz, void *y, void *x, const MKL_INT *indx);
cblas_zgthrz (const MKL_INT nz, void *y, void *x, const MKL_INT *indx);
cblas_?gthrz函数将一个全存储稀疏向量y的指定元素收集为压缩形式(nz, x, indx)。函数只引用索引在数组indx: x(i) = y(indx(i))中的元素,因为i=1,2,…,nz。
单精度实数为cblas_sgthrz,双精度实数cblas_dgthrz; 单精度复数为cblas_cgthrz,双精度复数cblas_zgthrz
nz | 整数。y中需要收集的元素数 |
---|---|
y | 数组,大小至少nz |
x | 数组,大小至少nz |
indx | 整数。指定要收集的元素的索引。数组,大小至少nz。 |
x: 数组,大小至少nz。包含转换为压缩形式的向量。
y: 更新后的向量
cblas_sroti (const MKL_INT nz, float *x, const MKL_INT *indx, float *y, const float c, const float s);
cblas_droti (const MKL_INT nz, double *x, const MKL_INT *indx, double *y, const double c, const double s);
cblas_?roti函数执对两个实向量的元素x(压缩形式nz, x, indx)和y(全存储形式)应用Givens旋转:x(i) = c * x(i) + s * y(indx(i)) ; y(indx(i)) = c * y(indx(i))- s * x(i) 函数只引用索引在数组indx中列出的y元素。indx中的值必须是不同的。
单精度实数为cblas_sroti,双精度实cblas_droti
nz | 整数。x和indx中的元素数量 |
---|---|
x | 数组,大小至少新西兰。 |
indx | 整数。指定x元素的索引。 数组,大小至少nz。 |
y | 数组,大小至少max(indx(i)) |
c | 一个标量 |
s | 一个标量 |
x和y: 更新后的数组
cblas_ssctr (const MKL_INT nz, const float *x, const MKL_INT *indx, float *y);
cblas_dsctr (const MKL_INT nz, const double *x, const MKL_INT *indx, double *y);
cblas_csctr (const MKL_INT nz, const void *x, const MKL_INT *indx, void *y);
cblas_zsctr (const MKL_INT nz, const void *x, const MKL_INT *indx, void *y);
cblas_?sctr函数将压缩稀疏向量(nz, x, indx)的元素分散到一个全存储向量y中。函数只修改索引在数组indx中列出的y元素:y(indx(i)) = x(i), for i=1,2,… ,nz.
单精度实数为cblas_ssctr,双精度实数cblas_dsctr; 单精度复数为cblas_csctr,双精度复数cblas_zsctr
nz | 整数。x中要分散的元素的数量 |
---|---|
x | 数组,大小至少nz 包含要转换为全存储形式的向量 |
indx | 整数。指定要分散的元素的索引。数组,大小至少nz |
y | 数组,大小至少nz。 包含带有已更新元素的向量y。 |
y: 数组,大小至少max(indx(i))。包含带有已更新元素的向量y。