在Chapel中将矩阵作为proc参数发送

时间:2017-08-18 00:35:23

标签: chapel

当我尝试将矩阵发送到proc时,我收到错误。我非常确定我做错了什么,无法弄明白。

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

我正在使用{{1}}

1 个答案:

答案 0 :(得分:1)

线性代数对象(如矩阵和向量)在Chapel中是represented as arrays。因此,将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;
}