sci_files - Comment écrire des fonctions de conversion
Pour convertir les appels à des fonctions Matlab, mfile2sci utilise une fonctions appelée sci_<nom_de_la_fonction_Matlab> . Toutes ces fonctions sont définies dans des sci_files dans le répertoire SCI/macros/m2sci/sci_files/. La palette de sci_files fournie dans Scilab ne permet pas encore de convertir les appels à toutes les fonctions Matlab. Cependant, un utilisateur Scilab peut ajouter des sci_files (pour des fonctions Matlab ou pour ses propres fonctions) en utilisant les conseils suivants.
Dans M2SCI, un appel à une fonction est considéré comme un "arbre" (c'est aussi le cas des instructions du fichier à convertir), représenté dans Scilab par une tlist avec les champs suivants :
Une sci_function a un paramètre d'entrée tree qui est aussi la sortie de cette fonction. Une sci_function doit convertir cet arbre pour qu'il soit compatible avec Scilab en changeant name, lhsnb, lhs et/ou rhs. L'autre rôle de cette fonction est de gérer l'inférence. L'arbre d'entrée contient des données d'inférence dans ses rhs qui devront être mises à jour avec ce que l'on peut inférer pour les lhs de cette fonction.
Plusieurs fonctions ont été écrites pour aider à la rédaction de fonctions de conversion :
Quelques fonctions ont été écrites pour récupérer les propriétés des opérandes/entrées. En considérant A comme une tlist utilisée dans l'arbre, vous pouvez utiliser les fonctions suivantes :
La fonction | renvoie %T si... |
is_empty(A) | toutes les dimensions de A sont égales à 0 |
not_empty(A) | toutes les dimensions de A sont connues et au moins une dimension de A est différente de 0 |
is_a_scalar(A) | toutes les dimensions de A sont égales 1 |
not_a_scalar(A) | toutes les dimensions de A sont connues et au moins une dimension de A est différente de 1 |
is_a_vector(A) | toutes les dimensions de A sotn connues et toutes les dimensions de A sauf une sont égales à 1 |
not_a_vector(A) | toutes les dimensions de A sotn connues et au moins deux dimensions de A sont supérieures à 1 |
is_real(A) | A est réel |
is_complex(A) | A est complexe |
isdefinedvar(A) | A est une variable déjà définie dans le M-file en cours de conversion |
allunknown(A) | Toutes les dimensions de A sont inconnues |
D'autres fonctions ont été écrites pour des besoins spécifiques lors de l'écriture de fonctions de conversion :
Pour plus d'informations sur la fçon d'écrire ces fichiers, consulter le répertoire SCI/macros/m2sci/sci_files/ qui donne de nombreux exemples, des plus simples (e.g. sci_abs.sci) aux plus compliqués (e.g. sci_zeros.sci).
m2scideclare , Funcall , Operation , Variable , Cste , Infer , Type , Equal ,