72bef3563116f52d19532e71cfb42bd105024c46
[scilab.git] / scilab / modules / linear_algebra / includes / svd.h
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2009 - DIGITEO - Bernard HUGUENEY
4  *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  * === LICENSE_END ===
14  *
15  */
16 #ifndef __SVD_H__
17 #define __SVD_H__
18 #include "dynlib_linear_algebra.h"
19 /*
20  * perform singular value decomposition (cf. http://www.scilab.org/product/man/svd.html ), MALLOCating temporary buffers as needed.
21  *
22  * in  :
23  *
24  * @param pData double* (doublecomplex*) in / scratch data of the argument matrix
25  * @param iRows int in  nb of rows of the argument matrix
26  * @param iCols int in  nb of cols of the argument matrix
27  * @param complexArg int (bool semantics) in  if argument matrix is complex
28  * @param economy int (bool semantics) in  if economy mode
29  * @param tol double in  treshold for computing rank
30  *
31  * out :
32  *
33  * @param pSV double* out  result matrix s for lhs==1, NULL for lhs >1
34  * @param pU double* out  result matrix U for lhs>1, NULL for lhs ==1
35  * @param pS double* out  result matrix S for lhs>1, NULL for lhs ==1
36  * @param pV double* out  result matrix V for lhs>1, NULL for lhs ==1
37  * @param pRk double* out  result rank for lhs==4, NULL for lhs !=4
38  *
39  * @return 0 success, -1 MALLOC failure >0 Lapack convergence problems
40  *
41  */
42 LINEAR_ALGEBRA_IMPEXP int iSvdM(double* pData, int iRows, int iCols, int complexArg, int economy, double tol, double* pSV, double* pU, double* pS, double* pV, double* pRk);
43 #endif /* !__SVD_H__ */