---
title: ?lascl
description: "对矩阵做scalar操作。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC1/accel/kunpengaccel_kml_16_0616.html
sourcePath: /source/zh/kunpengboostkithistory/240RC1/accel/kunpengaccel_kml_16_0616.html
indexId: e0b9121fe348217f07146b5183ecd2bbe1060c870767c13d065b7372a91443ba76
---
# ?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 | 字符型 | 'G'：矩阵A是全矩阵。 'L'：矩阵A是下三角矩阵。 'U'：矩阵A是上三角矩阵。 'H'：矩阵A是上Hessenberg矩阵。 'B'：矩阵A是对称带状矩阵，下带宽为KL，上带宽为KU，且只存对角线下部分。 'Q'：矩阵A是对称带状矩阵，下带宽为KL，上带宽为KU，且只存对角线上部分。 'Z'：矩阵A是带状矩阵，下带宽为KL，上带宽为KU。 | 输入 |
| KL | 整数型 | 矩阵A的下带宽，当TYPE='B'，'Q'或'Z'时，有效。 | 输入 |
| KU | 整数型 | 矩阵A的上带宽，当TYPE='B'，'Q'或'Z'时，有效。 | 输入 |
| CFROM | 在slascl中为单精度浮点型。 在dlascl中为双精度浮点型。 在clascl中为单精度浮点型。 在zlascl中为双精度浮点型。 | 非零值，为scalar值的分母部分，即：scalar=CTO/CFROM。 | 输入 |
| CTO | 在slascl中为单精度浮点型。 在dlascl中为双精度浮点型。 在clascl中为单精度浮点型。 在zlascl中为双精度浮点型。 | scalar值的分子部分，即：scalar=CTO/CFROM。 | 输入 |
| M | 整数型 | 矩阵A的行数，M≥0。 | 输入 |
| N | 整数型 | 矩阵A的列数，N≥0。 | 输入 |
| A | 在slascl中为单精度浮点型数组。 在dlascl中为双精度浮点型数组。 在clascl中为单精度复数型数组。 在zlascl中为双精度复数型数组。 | 矩阵A，维度为（LDA, N）。 | 输入，输出 |
| LDA | 整数型 | 矩阵A的主维。 TYPE='G'，'L'，'U'，'H'时，LDA>=max(1, M)。 TYPE='B'时，LDA>=KL+1。 TYPE='Q'时，LDA>=KU+1。 TYPE='Z'时，LDA>=2\*KL+KU+1。 | 输入 |
| INFO | 整数型 | 等于0：运行成功。 小于0：第\-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
```
