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
15 // Emulation function: mtlb_eig()
19 // 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 set_infos(msprintf(gettext("mtlb_eig() called because Scilab and Matlab value do not always match for %s."),tree.lhs(1).name),0)
33 tree.lhs(1).dims=list(A.dims(1),A.dims(1))
34 tree.lhs(1).type=Type(Double,Unknown)
35 tree.lhs(2).dims=list(A.dims(1),A.dims(1))
36 tree.lhs(2).type=Type(Double,Unknown)
38 // eig(A,B) or eig(A,'nobalance')
43 if B.vtype==String then
44 no_equiv(gettext("''nobalance'' option, IGNORED."))
45 tree.rhs=Rhs_tlist(tree.rhs(1))
48 tree.lhs(1).dims=list(A.dims(1),1)
49 tree.lhs(1).type=Type(Double,Unknown)
51 tree.rhs(1)=Operation("+",list(tree.rhs(1),Variable("%i",Infer()),list()))
52 rhs2=Operation("+",list(Cste(1),Variable("%eps",Infer()),list()))
53 tree.rhs=Rhs_tlist(tree.rhs(1),rhs2)
55 tree.lhs(1).dims=list(A.dims(1),A.dims(1))
56 tree.lhs(1).type=Type(Double,Unknown)
57 tree.lhs(2).dims=list(A.dims(1),A.dims(1))
58 tree.lhs(2).type=Type(Double,Unknown)
63 if B.vtype<>Double then
64 set_infos(gettext("eig() with 2 inputs: consider generalized eigen. Check."),2)
71 insert(Equal(list(al,be),Funcall("spec",1,tree.rhs,list(al,be))))
72 tree=Operation("./",list(al,be),tree.lhs)
74 tree.out(1).dims=list(m,1)
75 tree.out(1).type=Type(Double,Unknown)
80 insert(Equal(list(al,be,tree.lhs(1)),Funcall("eig",1,tree.rhs,list(al,be,tree.lhs(1)))))
82 tree=Operation("./",list(al,be),list(tree.lhs(1)))
83 tree=Funcall("diag",1,list(tree),tree.out)
85 tree.lhs(1).dims=list(A.dims(1),A.dims(1))
86 tree.lhs(1).type=Type(Double,Unknown)
87 tree.lhs(2).dims=list(A.dims(1),A.dims(1))
88 tree.lhs(2).type=Type(Double,Unknown)
92 no_equiv(msprintf(gettext("%s, flag IGNORED."),expression2code(tree)))
96 tree.lhs(1).dims=list(A.dims(1),A.dims(1))
97 tree.lhs(1).type=Type(Double,Unknown)
99 tree.lhs(2).dims=list(A.dims(1),A.dims(1))
100 tree.lhs(2).type=Type(Double,Unknown)