1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2002-2004 - INRIA - Vincent COUVERT
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution. The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10 function [tree]=sci_eig(tree)
12 // Conversion function for Matlab eig()
13 // Input: tree = Matlab funcall tree
14 // Ouput: tree = Scilab equivalent for tree
18 // Because %c_spec and %b_spec are not defined
27 tree.lhs(1).dims=list(A.dims(1),1)
28 tree.lhs(1).type=Type(Double,Unknown)
31 tree.lhs(1).dims=list(A.dims(1),A.dims(1))
32 tree.lhs(1).type=Type(Double,Unknown)
33 tree.lhs(2).dims=list(A.dims(1),A.dims(1))
34 tree.lhs(2).type=Type(Double,Unknown)
36 // eig(A,B) or eig(A,'nobalance')
41 if B.vtype==String then
42 no_equiv(gettext("''nobalance'' option, IGNORED."))
43 tree.rhs=Rhs_tlist(tree.rhs(1))
46 tree.lhs(1).dims=list(A.dims(1),1)
47 tree.lhs(1).type=Type(Double,Unknown)
49 tree.rhs(1)=Operation("+",list(tree.rhs(1),Variable("%i",Infer()),list()))
50 rhs2=Operation("+",list(Cste(1),Variable("%eps",Infer()),list()))
51 tree.rhs=Rhs_tlist(tree.rhs(1),rhs2)
53 tree.lhs(1).dims=list(A.dims(1),A.dims(1))
54 tree.lhs(1).type=Type(Double,Unknown)
55 tree.lhs(2).dims=list(A.dims(1),A.dims(1))
56 tree.lhs(2).type=Type(Double,Unknown)
61 if B.vtype<>Double then
62 set_infos(gettext("eig() with 2 inputs: consider generalized eigen. Check."),2)
69 insert(Equal(list(al,be),Funcall("spec",1,tree.rhs,list(al,be))))
70 tree=Operation("./",list(al,be),tree.lhs)
72 tree.out(1).dims=list(m,1)
73 tree.out(1).type=Type(Double,Unknown)
78 insert(Equal(list(al,be,tree.lhs(1)),Funcall("eig",1,tree.rhs,list(al,be,tree.lhs(1)))))
80 tree=Operation("./",list(al,be),list(tree.lhs(1)))
81 tree=Funcall("diag",1,list(tree),tree.out)
83 tree.lhs(1).dims=list(A.dims(1),A.dims(1))
84 tree.lhs(1).type=Type(Double,Unknown)
85 tree.lhs(2).dims=list(A.dims(1),A.dims(1))
86 tree.lhs(2).type=Type(Double,Unknown)
90 no_equiv(msprintf(gettext("%s, flag IGNORED."),expression2code(tree)))
94 tree.lhs(1).dims=list(A.dims(1),A.dims(1))
95 tree.lhs(1).type=Type(Double,Unknown)
97 tree.lhs(2).dims=list(A.dims(1),A.dims(1))
98 tree.lhs(2).type=Type(Double,Unknown)