发送矩阵作为教堂中的proc参数

  • 本文关键字:proc 参数 教堂 chapel
  • 更新时间 :
  • 英文 :


当我尝试将矩阵发送到进程中时,我遇到错误。 我很确定我做错了什么,想不通。

use LinearAlgebra;    
proc main() {
var A = Matrix(
[0.0, 0.8, 1.1, 0.0, 2.0]
,[0.8, 0.0, 1.3, 1.0, 0.0]
,[1.1, 1.3, 0.0, 0.5, 1.7]
,[0.0, 1.0, 0.5, 0.0, 1.5]
,[2.0, 0.0, 1.7, 1.5, 0.0]
);
check_dims(A);
}
proc check_dims(A: Matrix) { 
var t: bool  = false;
if (A.domain.dim(1) == A.domain.dim(2)){
t = true;
}
return t;
}

给我

mad.chpl:3: In function 'main':
mad.chpl:14: error: unresolved call 'check_dims([domain(2,int(64),false)] real(64))'
mad.chpl:17: note: candidates are: check_dims(A: Matrix)

我正在使用chpl Version 1.15.0

线性代数对象(如矩阵和向量(在教堂中表示为数组。因此,将Matrix(不存在的类型(更改为[](数组类型的语法(应按预期工作:

use LinearAlgebra;    
proc main() {
var A = Matrix(
[0.0, 0.8, 1.1, 0.0, 2.0]
,[0.8, 0.0, 1.3, 1.0, 0.0]
,[1.1, 1.3, 0.0, 0.5, 1.7]
,[0.0, 1.0, 0.5, 0.0, 1.5]
,[2.0, 0.0, 1.7, 1.5, 0.0]
);
check_dims(A);
}
proc check_dims(A: []) { 
var t: bool  = false;
// method is dim()
if (A.domain.dim(1) == A.domain.dim(2)){
t = true;
}
return t;
}

最新更新