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
|