summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/lapack.h7
-rw-r--r--includes/sci2clib.h23
-rw-r--r--jar/scilab_en_US_help.jarbin90519 -> 90519 bytes
-rw-r--r--macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci353
-rw-r--r--macros/findDeps/getAllHeaders.sci16
-rw-r--r--macros/findDeps/getAllInterfaces.sci12
-rw-r--r--macros/findDeps/getAllSources.sci24
-rw-r--r--tests/unit_tests/testLinearAlgebra/testsvd/testsvd.sci6
-rw-r--r--tests/unit_tests/testLinearAlgebra/testsvd/testsvdeconomy.sci11
-rw-r--r--tests/unit_tests/testLinearAlgebra/testsvd/testsvdim.sci6
-rw-r--r--tests/unit_tests/testLinearAlgebra/testsvd/testsvdrank.sci13
-rw-r--r--tests/unit_tests/testLinearAlgebra/testsvd/testsvdreal.sci11
12 files changed, 454 insertions, 28 deletions
diff --git a/includes/lapack.h b/includes/lapack.h
index 5f12bc2..d3f6cb3 100644
--- a/includes/lapack.h
+++ b/includes/lapack.h
@@ -195,6 +195,13 @@ extern doubleComplex zgesvd_( char* , char* , int* , int* ,doubleComplex *,\
int* , double* ,doubleComplex* , int* ,doubleComplex* , int* ,\
doubleComplex* , int* , double* , int* );
+/*USed in QR decompsition*/
+extern double dgeqrf_(int *,int *,double *,int *,double *,double *,int *,int *);
+extern double dgeqpf_(int *,int *,double *,int *,int *,double *,double *,int *);
+extern double dorgqr_(int *,int *,int *,double *,int *,double *,double *,int *,int *);
+extern void dlaset_(char *,int *,int *,double *,double *,double *,int *);
+
+
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/includes/sci2clib.h b/includes/sci2clib.h
index 1a8b557..1a66273 100644
--- a/includes/sci2clib.h
+++ b/includes/sci2clib.h
@@ -660,8 +660,27 @@ extern "C" {
#include "hess.h" /* Linear Algebra - Hess function */
#include "int_hess.h"
-#include "sva.h"
-#include "int_sva.h" /*Linear Algebra - SVA function */
+#include "sva.h" /* Linear Algebra - SVA function */
+#include "int_sva.h"
+
+#include "sqroot.h" /* Linear Algebra - Sqroot function */
+#include "int_sqroot.h"
+
+#include "givens.h" /* Linear Algebra - Givens Function */
+#include "int_givens.h"
+
+#include "householder.h" /* Linear Algebra - Householder function */
+#include "int_householder.h"
+
+#include "fullrf.h" /* Linear Algebra - Full rank factoziation */
+#include "int_fullrf.h"
+
+#include "rowcomp.h" /* Linear Algebra - row compression, range */
+#include "int_rowcomp.h"
+
+
+#include "qr.h" /* Linear Algebra - QR decomposition */
+#include "int_qr.h"
/*Functions related to opencv*/
/*#include "cvcore.hpp"
diff --git a/jar/scilab_en_US_help.jar b/jar/scilab_en_US_help.jar
index e68463f..665fdd3 100644
--- a/jar/scilab_en_US_help.jar
+++ b/jar/scilab_en_US_help.jar
Binary files differ
diff --git a/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci b/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
index 325f4d5..8387bb1 100644
--- a/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
+++ b/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
@@ -7756,6 +7756,315 @@ PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file',
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class SQROOT ---------------------
+//------------------------------------
+ClassName = 'SQROOT';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'sqroot';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class GIVENS ---------------------
+//------------------------------------
+ClassName = 'GIVENS';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''2''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''2''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''2''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''2''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''2''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''1''',ClassFileName,'file','y');
+
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''2''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''2''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''2''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''2''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''2''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''1''',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'givens';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class HOUSEHOLDER---------------------
+//------------------------------------
+ClassName = 'HOUSEHOLDER';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'householder';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class FULLRF---------------------
+//------------------------------------
+ClassName = 'FULLRF';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 3',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= ''1''',ClassFileName,'file','y');
+
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 3',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2d2d0',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2d2d0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'fullrf';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class ROWCOMP ---------------------
+//------------------------------------
+ClassName = 'ROWCOMP';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2d0',ClassFileName,'file','y');
+PrintStringInfo('d2g2'+ArgSeparator+'d2d0',ClassFileName,'file','y');
+PrintStringInfo('d2g2d0'+ArgSeparator+'d2d0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'rowcomp';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class QR---------------------
+//------------------------------------
+ClassName = 'QR';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 3',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 3',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');;
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 4',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');;
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(1)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 4',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');;
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(1)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2d2d2',ClassFileName,'file','y');
+PrintStringInfo('d2g2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('d2g2'+ArgSeparator+'d2d2d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2d2d0d2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2d2d0d2',ClassFileName,'file','y');
+
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'qr';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
//------------------------------------
//---- Class svd ---------------------
//------------------------------------
@@ -7789,8 +8098,8 @@ PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
-PrintStringInfo('OUT(2).SZ(1)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
-PrintStringInfo('OUT(2).SZ(2)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
PrintStringInfo('OUT(3).SZ(1)= IN(1).SZ(2)',ClassFileName,'file','y');
PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
@@ -7819,12 +8128,42 @@ PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
-PrintStringInfo('OUT(2).SZ(1)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
-PrintStringInfo('OUT(2).SZ(2)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
PrintStringInfo('OUT(3).SZ(1)= IN(1).SZ(2)',ClassFileName,'file','y');
PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 4',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 4',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(2)= ''1''',ClassFileName,'file','y');
+
ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
PrintStringInfo('d2g2'+ArgSeparator+'d2d2d2',ClassFileName,'file','y');
@@ -7832,6 +8171,8 @@ PrintStringInfo('d2'+ArgSeparator+'d2d2d2',ClassFileName,'file','y');
PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
PrintStringInfo('z2g2'+ArgSeparator+'z2z2z2',ClassFileName,'file','y');
PrintStringInfo('z2'+ArgSeparator+'z2z2z2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2d2d2d0',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2d2d2d0',ClassFileName,'file','y');
// --- Annotation Function And Function List Function. ---
FunctionName = 'svd';
@@ -7875,7 +8216,6 @@ INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,E
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
-
//------------------------------------
//---- Class SVA ---------------------
//------------------------------------
@@ -7901,7 +8241,7 @@ PrintStringInfo('NIN= 2',ClassFileName,'file','y');
PrintStringInfo('NOUT= 3',ClassFileName,'file','y');
PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
-PrintStringInfo('OUT(1).SZ(2)= FA_SZ_U_SVA(IN(1),IN(2).VAL)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
PrintStringInfo('OUT(2).SZ(1)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
PrintStringInfo('OUT(2).SZ(2)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
@@ -7919,6 +8259,7 @@ PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file',
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
//------------------------------------
//---- Class balanc ------------------
//------------------------------------
diff --git a/macros/findDeps/getAllHeaders.sci b/macros/findDeps/getAllHeaders.sci
index 0435976..a09c0b3 100644
--- a/macros/findDeps/getAllHeaders.sci
+++ b/macros/findDeps/getAllHeaders.sci
@@ -60,7 +60,6 @@ function allHeaders = getAllHeaders(SharedInfo)
"src/c/matrixOperations/includes/logm.h"
"src/c/matrixOperations/includes/ones.h"
"src/c/matrixOperations/includes/matrixSquaredMagnitude.h"
- "src/c/linearAlgebra/includes/spec.h"
"src/c/matrixOperations/includes/matrixTranspose.h"
"src/c/matrixOperations/includes/determ.h"
"src/c/matrixOperations/includes/matrixMultiplication.h"
@@ -220,14 +219,19 @@ function allHeaders = getAllHeaders(SharedInfo)
"src/c/CACSD/includes/lqr.h"
"src/c/CACSD/includes/lqe.h"
"src/c/CACSD/includes/obscont.h"
- "src/c/linearAlgebra/includes/sva.h"
- "src/c/linearAlgebra/includes/svd.h"
"src/c/linearAlgebra/includes/schur.h"
"src/c/linearAlgebra/includes/balanc.h"
"src/c/linearAlgebra/includes/svd.h"
- "src/c/linearAlgebra/includes/hess.h"
- "src/c/linearAlgebra/includes/sva.h"
- "src/c/linearAlgebra/includes/rcond.h"];
+ "src/c/linearAlgebra/includes/hess.h"
+ "src/c/linearAlgebra/includes/sva.h"
+ "src/c/linearAlgebra/includes/sqroot.h"
+ "src/c/linearAlgebra/includes/givens.h"
+ "src/c/linearAlgebra/includes/householder.h"
+ "src/c/linearAlgebra/includes/fullrf.h"
+ "src/c/linearAlgebra/includes/rowcomp.h"
+ "src/c/linearAlgebra/includes/rcond.h"
+ "src/c/linearAlgebra/includes/qr.h"
+ "src/c/linearAlgebra/includes/spec.h"];
//Header files required for "Arduino" output
diff --git a/macros/findDeps/getAllInterfaces.sci b/macros/findDeps/getAllInterfaces.sci
index e629779..6020822 100644
--- a/macros/findDeps/getAllInterfaces.sci
+++ b/macros/findDeps/getAllInterfaces.sci
@@ -32,7 +32,6 @@ function allInterfaces = getAllInterfaces(SharedInfo)
"src/c/type/int_real.h"
"src/c/matrixOperations/interfaces/int_vmagn.h"
"src/c/matrixOperations/interfaces/int_ones.h"
- "src/c/linearAlgebra/interfaces/int_spec.h"
"src/c/matrixOperations/interfaces/int_cat.h"
"src/c/matrixOperations/interfaces/int_zeros.h"
"src/c/matrixOperations/interfaces/int_OpBackSlash.h"
@@ -215,13 +214,18 @@ function allInterfaces = getAllInterfaces(SharedInfo)
"src/c/CACSD/interfaces/int_lqr.h"
"src/c/CACSD/interfaces/int_lqe.h"
"src/c/CACSD/interfaces/int_obscont.h"
- "src/c/linearAlgebra/interfaces/int_sva.h"
- "src/c/linearAlgebra/interfaces/int_svd.h"
+ "src/c/linearAlgebra/interfaces/int_spec.h"
"src/c/linearAlgebra/interfaces/int_schur.h"
"src/c/linearAlgebra/interfaces/int_balanc.h"
"src/c/linearAlgebra/interfaces/int_svd.h"
+ "src/c/linearAlgebra/interfaces/int_sqroot.h"
"src/c/linearAlgebra/interfaces/int_hess.h"
- "src/c/linearAlgebra/interfaces/int_sva.h"
+ "src/c/linearAlgebra/interfaces/int_sva.h"
+ "src/c/linearAlgebra/interfaces/int_givens.h"
+ "src/c/linearAlgebra/interfaces/int_householder.h"
+ "src/c/linearAlgebra/interfaces/int_fullrf.h"
+ "src/c/linearAlgebra/interfaces/int_rowcomp.h"
+ "src/c/linearAlgebra/interfaces/int_qr.h";
"src/c/linearAlgebra/interfaces/int_rcond.h"];
diff --git a/macros/findDeps/getAllSources.sci b/macros/findDeps/getAllSources.sci
index 0891aef..502c599 100644
--- a/macros/findDeps/getAllSources.sci
+++ b/macros/findDeps/getAllSources.sci
@@ -155,18 +155,10 @@ function allSources = getAllSources(SharedInfo)
"src/c/matrixOperations/powm/spowma.c"
"src/c/matrixOperations/powm/zpowma.c"
"src/c/matrixOperations/powm/cpowma.c"
- "src/c/linearAlgebra/spec/cspeca.c"
- "src/c/linearAlgebra/spec/dspeca.c"
- "src/c/linearAlgebra/spec/sspeca.c"
- "src/c/linearAlgebra/spec/zspeca.c"
"src/c/matrixOperations/transpose/ztransposea.c"
"src/c/matrixOperations/transpose/stransposea.c"
"src/c/matrixOperations/transpose/ctransposea.c"
"src/c/matrixOperations/transpose/dtransposea.c"
- "src/c/linearAlgebra/spec2/zspec2a.c"
- "src/c/linearAlgebra/spec2/sspec2a.c"
- "src/c/linearAlgebra/spec2/dspec2a.c"
- "src/c/linearAlgebra/spec2/cspec2a.c"
"src/c/matrixOperations/trace/stracea.c"
"src/c/matrixOperations/trace/dtracea.c"
"src/c/matrixOperations/trace/ctracea.c"
@@ -1263,16 +1255,28 @@ function allSources = getAllSources(SharedInfo)
"src/c/CACSD/lqr/dlqra.c"
"src/c/CACSD/lqe/dlqea.c"
"src/c/CACSD/obscont/dobsconta.c"
- "src/c/linearAlgebra/sva/dsvaa.c"
- "src/c/linearAlgebra/svd/dsvda.c"
+ "src/c/linearAlgebra/spec2/zspec2a.c"
+ "src/c/linearAlgebra/spec2/sspec2a.c"
+ "src/c/linearAlgebra/spec2/dspec2a.c"
+ "src/c/linearAlgebra/spec2/cspec2a.c"
+ "src/c/linearAlgebra/spec/cspeca.c"
+ "src/c/linearAlgebra/spec/dspeca.c"
+ "src/c/linearAlgebra/spec/sspeca.c"
+ "src/c/linearAlgebra/spec/zspeca.c"
"src/c/linearAlgebra/schur/dschura.c"
"src/c/linearAlgebra/schur/dgschura.c"
"src/c/linearAlgebra/balanc/dbalanca.c"
"src/c/linearAlgebra/svd/dsvda.c"
"src/c/linearAlgebra/svd/zsvda.c"
+ "src/c/linearAlgebra/sqroot/dsqroota.c"
"src/c/linearAlgebra/hess/dhessa.c"
+ "src/c/linearAlgebra/givens/dgivensa.c"
+ "src/c/linearAlgebra/householder/dhouseholdera.c"
"src/c/linearAlgebra/sva/dsvaa.c"
"src/c/linearAlgebra/spec/dspec1a.c"
+ "src/c/linearAlgebra/fullrf/dfullrfa.c"
+ "src/c/linearAlgebra/rowcomp/drowcompa.c"
+ "src/c/linearAlgebra/qr/dqra.c"
"src/c/linearAlgebra/rcond/drconda.c"];
//Files to be inserted only if output format selected is 'Arduino'.
diff --git a/tests/unit_tests/testLinearAlgebra/testsvd/testsvd.sci b/tests/unit_tests/testLinearAlgebra/testsvd/testsvd.sci
new file mode 100644
index 0000000..9a3a50a
--- /dev/null
+++ b/tests/unit_tests/testLinearAlgebra/testsvd/testsvd.sci
@@ -0,0 +1,6 @@
+function testsvd()
+ disp(" ** SVD Function (Singular Value Decomposition)** ")
+ A = [1,2,3,11;4,5,6,12;7,8,9,13] // Matrix - A
+ [s = svd(A) // Calling Function Sequence
+ disp(s)
+endfunction
diff --git a/tests/unit_tests/testLinearAlgebra/testsvd/testsvdeconomy.sci b/tests/unit_tests/testLinearAlgebra/testsvd/testsvdeconomy.sci
new file mode 100644
index 0000000..0459c79
--- /dev/null
+++ b/tests/unit_tests/testLinearAlgebra/testsvd/testsvdeconomy.sci
@@ -0,0 +1,11 @@
+function testsvdeconomy()
+ disp(" ** SVD Function (Singular Value Decomposition)** ")
+ A = [1,2,3,11;4,5,6,12;7,8,9,13] // Matrix - A
+ [u,s,vt] = svd(A,'e') // Calling Function Sequence
+ disp("U Matrix")
+ disp(u) // A = U*sigma*Vt
+ disp("Sigma Matrix")
+ disp(s)
+ disp(" V transpose ")
+ disp(vt)
+endfunction
diff --git a/tests/unit_tests/testLinearAlgebra/testsvd/testsvdim.sci b/tests/unit_tests/testLinearAlgebra/testsvd/testsvdim.sci
new file mode 100644
index 0000000..16633cc
--- /dev/null
+++ b/tests/unit_tests/testLinearAlgebra/testsvd/testsvdim.sci
@@ -0,0 +1,6 @@
+// Function double_complex - test data.
+function svdim()
+ b = [ (5.91+5.69*%i),(3.15-4.08*%i),(4.89+4.20*%i),(7.09+2.72*%i);(1.89+3.27*%i),(4.10+6.70*%i),(7.78+4.06*%i),(4.57+2.07*%i);(3.28+3.84*%i),(-0.79+7.21*%i),(3.88+3.30*%i),(3.84+1.19*%i)]
+ s = svd(b)
+ disp(s)
+endfunction
diff --git a/tests/unit_tests/testLinearAlgebra/testsvd/testsvdrank.sci b/tests/unit_tests/testLinearAlgebra/testsvd/testsvdrank.sci
new file mode 100644
index 0000000..108acde
--- /dev/null
+++ b/tests/unit_tests/testLinearAlgebra/testsvd/testsvdrank.sci
@@ -0,0 +1,13 @@
+function testsvdrank()
+ disp(" ** SVD Function (Singular Value Decomposition)** ")
+ A = [1,2,3,11;4,5,6,12;7,8,9,13] // Matrix - A
+ [u,s,vt,rk] = svd(A) // Calling Function Sequence
+ disp("U Matrix")
+ disp(u) // A = U*sigma*Vt
+ disp("Sigma Matrix")
+ disp(s)
+ disp(" V transpose ")
+ disp(vt)
+ disp("Rank")
+ disp(rk)
+endfunction
diff --git a/tests/unit_tests/testLinearAlgebra/testsvd/testsvdreal.sci b/tests/unit_tests/testLinearAlgebra/testsvd/testsvdreal.sci
new file mode 100644
index 0000000..0e68e00
--- /dev/null
+++ b/tests/unit_tests/testLinearAlgebra/testsvd/testsvdreal.sci
@@ -0,0 +1,11 @@
+function testsvdreal()
+ disp(" ** SVD Function (Singular Value Decomposition)** ")
+ A = [1,2,3,11;4,5,6,12;7,8,9,13] // Matrix - A
+ [u,s,vt] = svd(A) // Calling Function Sequence
+ disp("U Matrix")
+ disp(u) // A = U*sigma*Vt
+ disp("Sigma Matrix")
+ disp(s)
+ disp(" V transpose ")
+ disp(vt)
+endfunction