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

?lacpy

拷贝矩阵A的所有元素或部分元素到矩阵B。

接口定义

C Interface:

slacpy_(const char *uplo, const int *m, const int *n, const float *a, const int *lda, float *b, const int *ldb);

dlacpy_(const char *uplo, const int *m, const int *n, const double *a, const int *lda, double *b, const int *ldb);

clacpy_(const char *uplo, const int *m, const int *n, const float _Complex *a, const int *lda, float _Complex *b, const int *ldb);

zlacpy_(const char *uplo, const int *m, const int *n, const double _Complex *a, const int *lda, double _Complex *b, const int *ldb);

Fortran Interface:

SLACPY(UPLO, M, N, A, LDA, B, LDB);

DLACPY(UPLO, M, N, A, LDA, B, LDB);

CLACPY(UPLO, M, N, A, LDA, B, LDB);

ZLACPY(UPLO, M, N, A, LDA, B, LDB);

参数

参数

类型

说明

输入/输出

uplo

字符型

  • 'U',只拷贝矩阵A的上三角部分。
  • 'L',只拷贝矩阵A的下三角部分。
  • 其他值,拷贝矩阵A的所有元素。

输入

m

整数型

矩阵A的行数,m≥0。

输入

n

整数型

矩阵A的列数,n≥0。

输入

a

  • 在slacpy中为单精度浮点型数组。
  • 在dlacpy中为双精度浮点型数组。
  • 在clacpy中为单精度复数型数组。
  • 在zlacpy中为双精度复数型数组。

大小为lda*n。

  • 若uplo='U'时,只有上三角或梯形部分元素可以访问。
  • 若uplo='L'时,只有下三角或梯形部分元素可以访问。

输入

lda

整数型

矩阵A的主维,lda≥max(1,m)。

输入

b

  • 在slacpy中为单精度浮点型数组。
  • 在dlacpy中为双精度浮点型数组。
  • 在clacpy中为单精度复数型数组。
  • 在zlacpy中为双精度复数型数组。

大小为ldb*n。

退出时,在指定的uplo范围内,矩阵b=矩阵a。

输出

ldb

整数型

矩阵b的主维,ldb≥max(1, m)。

输入

依赖

#include "klapack.h"

示例

C Interface:

const char uplo = 'F';
const int m = 4;
const int n = 4;
const int lda = 4;
const int ldb = 4;

double a[] = { 1.0, 1.0, 1.0, 1.0,
               2.0, 2.0, 2.0, 2.0,
               8.0, 3.0, 3.0, 3.0,
               4.0, 4.0, 4.0, 4.0};
double *b = (double*)malloc(lda * n * sizeof(double));

dlacpy_(&uplo, &m, &n, a, &lda, b, &ldb);

/* output */
* b
* 1.000000        2.000000        8.000000        4.000000
* 1.000000        2.000000        3.000000        4.000000
* 1.000000        2.000000        3.000000        4.000000
* 1.000000        2.000000        3.000000        4.000000

Fortran Interface:

CHARACTER :: uplo = "F"
PARAMETER (n = 4) 
PARAMETER (m = 4) 
PARAMETER (lda = 4)
PARAMETER (ldb = 4)
REAL(8) :: a(lda, n)  
REAL(8) :: b(ldb, n)
  
DATA a / 1.0, 1.0, 1.0, 1.0,
$        2.0, 2.0, 2.0, 2.0,
$        8.0, 3.0, 3.0, 3.0,
$        4.0, 4.0, 4.0, 4.0 /
 EXTERNAL DLACPY
 CALL DLACPY(uplo, m, n, a, lda, b, ldb);
* 
* Output: 
* a output (stored in column-major)
* 1.000000        2.000000        8.000000        4.000000
* 1.000000        2.000000        3.000000        4.000000
* 1.000000        2.000000        3.000000        4.000000
* 1.000000        2.000000        3.000000        4.000000