?lascl
对矩阵做scalar操作。
接口定义
C Interface:
void slascl_(const char *type, const int *kl, const int *ku, const float *cfrom, const float *cto, const int *m, const int *n, float *a, const int *lda, int *info);
void dlascl_(const char *type, const int *kl, const int *ku, const double *cfrom, const double *cto, const int *m, const int *n, double *a, const int *lda, int *info);
void clascl_(const char *type, const int *kl, const int *ku, const float *cfrom, const float *cto, const int *m, const int *n, float _Complex *a, const int *lda, int *info);
void zlascl_(const char *type, const int *kl, const int *ku, const double *cfrom, const double *cto, const int *m, const int *n, double _Complex *a, const int *lda, int *info);
Fortran Interface:
SLASCL(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO);
DLASCL(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO);
CLASCL(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO);
ZLASCL(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO);
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
TYPE |
字符型 |
|
输入 |
KL |
整数型 |
矩阵A的下带宽,当TYPE='B','Q'或'Z'时,有效。 |
输入 |
KU |
整数型 |
矩阵A的上带宽,当TYPE='B','Q'或'Z'时,有效。 |
输入 |
CFROM |
|
非零值,为scalar值的分母部分,即:scalar=CTO/CFROM。 |
输入 |
CTO |
|
scalar值的分子部分,即:scalar=CTO/CFROM。 |
输入 |
M |
整数型 |
矩阵A的行数,M≥0。 |
输入 |
N |
整数型 |
矩阵A的列数,N≥0。 |
输入 |
A |
|
矩阵A,维度为(LDA, N)。 |
输入,输出 |
LDA |
整数型 |
矩阵A的主维。
|
输入 |
INFO |
整数型 |
|
输出 |
依赖
#include "klapack.h"
示例
C Interface:
const char type = 'G'; const int n = 4; const int m = 4; const int kl = 2; const int ku = 2; const double cfrom = 2.0; const double cto = 1.0; const int lda = m; int info = 0; double a[] = {1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, 4.0}; dlascl_(&type, &kl, &ku, &cfrom, &cto, &m, &n, a, &lda, &info); /* * Output: * a output * * 0.500000 0.500000 0.500000 0.500000 * 1.000000 1.000000 1.000000 1.000000 * 1.500000 1.500000 1.500000 1.500000 * 2.000000 2.000000 2.000000 2.000000
Fortran Interface:
CHARACTER :: type = "G" PARAMETER (m = 4) PARAMETER (n = 4) PARAMETER (kl = 2) PARAMETER (ku = 2) PARAMETER (lda = 4) REAL(8) :: cfrom REAL(8) :: cto REAL(8) :: a(lda, n) DATA cfrom / 2.0 / DATA cto / 1.0 / DATA a / 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, 4.0 / EXTERNAL DLASCL CALL DLASCL(type, kl, ku, cfrom, cto, m, n, a, lda, info); * * Output: * a output * * 0.500000 0.500000 0.500000 0.500000 * 1.000000 1.000000 1.000000 1.000000 * 1.500000 1.500000 1.500000 1.500000 * 2.000000 2.000000 2.000000 2.000000