* Bug #10180 fixed - det was not defined for sparse matrices.
[scilab.git] / scilab / modules / overloading / macros / %sp_det.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
3 // 
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
9
10 function [res1, res2]=%sp_det(A)
11     [lhs, rhs]=argn(0);
12     hand = umf_lufact(A); //umfpack is used for complex sparse matrix
13     [L,U,P,Q,r] = umf_luget(hand);
14     res1=prod(r)*prod(diag(U));
15     res2=res1;
16     if (lhs == 2) then
17         res1=0;
18         while abs(res2) >= 10
19             if abs(res2) < 1 then
20                 break;
21             end
22             res2 = res2 / 10;
23             res1 = res1 + 1;
24         end
25     end
26     umf_ludel(hand);
27 endfunction