summaryrefslogtreecommitdiff
path: root/modules/overloading/macros/%r_diag.sci
blob: 134c9cb3f9999b598a2bf89f684632d9fe4b312f (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
27
28
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) 1995-2010 - INRIA - Serge Steer
//
// 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 d=%r_diag(a,k)
    // %r_diag - implement diag function for  rational matrix ,..
    if argn(2)<2 then
        k=0,
    else
        if type(k)<>1 then error(53,2);end
        if size(k,"*")<>1 then error(89,2);end
        if ~isreal(k) then error(52,2);end
    end
    [m,n]=size(a.num)
    if m<>1&n<>1 then
        d=rlist(diag(a.num,k),diag(a.den,k),a.dt)
    else
        mn=max(m,n)
        den=ones(mn,mn)
        den=den-diag(diag(den,k))+diag(a.den,k)
        d=rlist(diag(a.num,k),den,a.dt)
    end
endfunction