summaryrefslogtreecommitdiff
path: root/modules/overloading/macros/%sp_det.sci
blob: 78fd7e79083aceb614c2af974c6ae03335073749 (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
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
// 
// 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 [res1, res2]=%sp_det(A)
    [lhs, rhs]=argn(0);
    hand = umf_lufact(A); //umfpack is used for complex sparse matrix
    [L,U,P,Q,r] = umf_luget(hand);
    res1=prod(r)*prod(diag(U));
    res2=res1;
    if (lhs == 2) then
        res1=0;
        while abs(res2) >= 10
            if abs(res2) < 1 then
                break;
            end
            res2 = res2 / 10;
            res1 = res1 + 1;
        end
    end
    umf_ludel(hand);
endfunction