Je reçois une erreur lorsque j'essaie d'envoyer une matrice dans un proc. Je suis sûr que je fais quelque chose de très mal, je ne peux pas le comprendre.Envoi d'une matrice en tant qu'argument proc dans la colonne
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;
}
Ça me donne
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)
J'utilise chpl Version 1.15.0
Side note: [ 'isSquare()'] (http: // chapelle. cray.com/docs/1.15/modules/packages/LinearAlgebra.html#LinearAlgebra.isSquare) pourrait accomplir ce que vous essayez de faire avec 'check_dims()' – bencray
vous rentrez à la maison, bencray –
@bencray: Est-ce clair pour vous pourquoi le compilateur accepte même Matrix comme type formel? Existe-t-il un alias de type ou de type avec le nom 'Matrix'? Est-ce un cas où le compilateur est trop permissif (par exemple, autoriser l'utilisation d'un nom de fonction autre que le type comme identificateur de type?) – Brad