?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