summaryrefslogtreecommitdiff
path: root/modules/compatibility_functions/macros/mtlb_qz.sci
blob: 69f7412fcfe9c6c09fe4819a97f0c9abcba326e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) ???? - INRIA - Scilab
//
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution.  The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt

function [AA, BB, Q, Z, V]=mtlb_qz(A,B)
    [lhs,rhs]=argn(0)
    [AA, BB, Q, Z]=gschur(A,B)
    if lhs==5 then
        n=size(A,1)
        LA=diag(AA)
        LB=diag(BB)
        V=zeros(n,n)
        for k=1:n
            K=kernel(A*LB(k)-B*LA(k))
            if size(K,2)<>1 then
                error(msprintf(gettext("%s: pencil is not diagonalizable.\n"),"mtlb_qz"))
            end
            V(:,k)=K
        end
    end
endfunction