summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbhinav Dronamraju2017-08-10 20:30:45 +0530
committerAbhinav Dronamraju2017-08-10 20:30:45 +0530
commit6422b5c0a45161d6571fd6d7077b6d551cbb5e26 (patch)
tree42c7f31e0567f88bb0ebd550cbda363d8ee6799d
parentff2e111f068342863fc3ca66f40f5822d0b19415 (diff)
downloadScilab2C_fossee_old-6422b5c0a45161d6571fd6d7077b6d551cbb5e26.tar.gz
Scilab2C_fossee_old-6422b5c0a45161d6571fd6d7077b6d551cbb5e26.tar.bz2
Scilab2C_fossee_old-6422b5c0a45161d6571fd6d7077b6d551cbb5e26.zip
rank and gsort added
-rw-r--r--demos/Abhinav_Demos/test_gsort.sci81
-rw-r--r--demos/Abhinav_Demos/test_rank.sci20
-rw-r--r--includes/sci2clib.h6
-rw-r--r--jar/scilab_en_US_help.jarbin11210 -> 11210 bytes
-rw-r--r--macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci79
-rw-r--r--macros/findDeps/getAllHeaders.sci2
-rw-r--r--macros/findDeps/getAllInterfaces.sci2
-rw-r--r--macros/findDeps/getAllSources.sci14
-rw-r--r--src/c/linearAlgebra/includes/rank.h29
-rw-r--r--src/c/linearAlgebra/interfaces/int_rank.h28
-rw-r--r--src/c/linearAlgebra/rank/dranka.c34
-rw-r--r--src/c/linearAlgebra/rank/zranka.c82
-rw-r--r--src/c/statisticsFunctions/gsort/dgsorta.c94
-rw-r--r--src/c/statisticsFunctions/gsort/dgsortcola.c44
-rw-r--r--src/c/statisticsFunctions/gsort/dgsortrowa.c42
-rw-r--r--src/c/statisticsFunctions/gsort/sgsorta.c94
-rw-r--r--src/c/statisticsFunctions/gsort/sgsortcola.c42
-rw-r--r--src/c/statisticsFunctions/gsort/sgsortrowa.c42
-rw-r--r--src/c/statisticsFunctions/gsort/u16gsorta.c94
-rw-r--r--src/c/statisticsFunctions/gsort/u16gsortcola.c42
-rw-r--r--src/c/statisticsFunctions/gsort/u16gsortrowa.c42
-rw-r--r--src/c/statisticsFunctions/gsort/zgsorta.c96
-rw-r--r--src/c/statisticsFunctions/gsort/zgsortcola.c43
-rw-r--r--src/c/statisticsFunctions/gsort/zgsortrowa.c42
-rw-r--r--src/c/statisticsFunctions/includes/gsort.h46
-rw-r--r--src/c/statisticsFunctions/interfaces/int_gsort.h43
-rw-r--r--src/c/statisticsFunctions/median/dmediana.c16
-rw-r--r--src/c/statisticsFunctions/median/smediana.c16
-rw-r--r--src/c/statisticsFunctions/median/u16mediana.c16
-rw-r--r--src/c/statisticsFunctions/median/zmediana.c16
30 files changed, 1219 insertions, 28 deletions
diff --git a/demos/Abhinav_Demos/test_gsort.sci b/demos/Abhinav_Demos/test_gsort.sci
new file mode 100644
index 0000000..bd51c69
--- /dev/null
+++ b/demos/Abhinav_Demos/test_gsort.sci
@@ -0,0 +1,81 @@
+// Test file for "Column" function for the data types double, float, double complex, string , uint16.
+// All the below statements are added to initialize variables in different data types
+//The function written doesn't work for string or character scalar as of now.
+
+
+function test_gsort()
+ seq= [1 21 4; 10 5 98; 3.21 8.921 1000]
+ disp(seq)
+ disp('')
+ a= gsort(seq);
+ b= gsort(seq, 'r');
+ c= gsort(seq, 'c');
+ d= gsort(seq, 'r', 'i');
+ e= gsort(seq, 'c', 'd');
+ disp('Double')
+ disp(a)
+ disp('')
+ disp(b)
+ disp('')
+ disp(c)
+ disp('')
+ disp(d)
+ disp('')
+ disp(e)
+ disp('')
+ seq1= float(seq);
+ disp('')
+ f= gsort(seq1);
+ g= gsort(seq1, 'r');
+ h= gsort(seq1, 'c');
+ i= gsort(seq1, 'r', 'i');
+ j= gsort(seq1, 'c', 'd');
+ disp('Float')
+ disp(f)
+ disp('')
+ disp(g)
+ disp('')
+ disp(h)
+ disp('')
+ disp(i)
+ disp('')
+ disp(j)
+ disp('')
+ seq2= uint16(seq);
+ disp('')
+ k= gsort(seq2);
+ l= gsort(seq2, 'r');
+ m= gsort(seq2, 'c');
+ n= gsort(seq2, 'r', 'i');
+ o= gsort(seq2, 'c', 'd');
+ disp('Uint16')
+ disp(k)
+ disp('')
+ disp(l)
+ disp('')
+ disp(m)
+ disp('')
+ disp(n)
+ disp('')
+ disp(o)
+ disp('')
+ seq3= [%i*21, 65+%i*7, %i*121, 56; %i*6112, 12 ,3, 0]
+ disp('')
+ p= gsort(seq3);
+ q= gsort(seq3, 'r');
+ r1= gsort(seq3, 'c');
+ s= gsort(seq3, 'r', 'i');
+ t= gsort(seq3, 'c', 'd');
+ disp('Double Complex')
+ disp(p)
+ disp('')
+ disp(q)
+ disp('')
+ disp(r1)
+ disp('')
+ disp(s)
+ disp('')
+ disp(t)
+ disp('')
+
+endfunction
diff --git a/demos/Abhinav_Demos/test_rank.sci b/demos/Abhinav_Demos/test_rank.sci
new file mode 100644
index 0000000..95f4a7d
--- /dev/null
+++ b/demos/Abhinav_Demos/test_rank.sci
@@ -0,0 +1,20 @@
+// Test file for "Column" function for the data types double, float, double complex, string , uint16.
+// All the below statements are added to initialize variables in different data types
+//The function written doesn't work for string or character scalar as of now.
+
+
+function test_rank()
+ disp(" ** RANK ** ")
+ disp('Double')
+ A = [1,2,3,11;4,5,0.1,2.12;7,0,0,16.11] // Matrix - A
+ s = rank(A) // Calling Function Sequence
+ disp(s)
+ disp('')
+
+ disp('Double Complex')
+ B= [%i*12, 12 , 12; 98*%i , 24*%i, 0; 12, %i*12, 0];
+ t= rank(B)
+ disp(t)
+ disp('')
+
+endfunction
diff --git a/includes/sci2clib.h b/includes/sci2clib.h
index b0a951d..8466356 100644
--- a/includes/sci2clib.h
+++ b/includes/sci2clib.h
@@ -641,6 +641,9 @@ extern "C" {
/* interfacing median */
#include "median.h"
#include "int_median.h"
+/* interfacing gsort */
+#include "gsort.h"
+#include "int_gsort.h"
/* interfacing moment */
#include "moment.h"
#include "int_moment.h"
@@ -760,6 +763,9 @@ extern "C" {
#include "svd.h" /*Linear Alegbra - Singular value decompostion */
#include "int_svd.h"
+#include "rank.h" /*Linear Alegbra - Rank Using Singular value decompostion */
+#include "int_rank.h"
+
#include "rcond.h"
#include "int_rcond.h"
diff --git a/jar/scilab_en_US_help.jar b/jar/scilab_en_US_help.jar
index 0b7c607..2011834 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 85157ec..c460eeb 100644
--- a/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
+++ b/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
@@ -2377,6 +2377,57 @@ PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file',
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// --------------------
+// --- Class Gsort. ---
+// --------------------
+ClassName = 'Gsort';
+
+// --- 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');
+
+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)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',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');
+
+
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2g2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2g2g2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2g2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2g2g2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162g2'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162g2g2'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2g2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2g2g2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'gsort'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
// ------------------------
// --- Class OpDotStar. ---
// ------------------------
@@ -9172,6 +9223,34 @@ INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,Ex
//------------------------------------
+//---- Class RANK ---------------------
+//------------------------------------
+ClassName = 'RANK';
+
+// --- 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)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'rank';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
//---- Class SVA ---------------------
//------------------------------------
ClassName = 'SVA';
diff --git a/macros/findDeps/getAllHeaders.sci b/macros/findDeps/getAllHeaders.sci
index ee773ec..ff737db 100644
--- a/macros/findDeps/getAllHeaders.sci
+++ b/macros/findDeps/getAllHeaders.sci
@@ -152,6 +152,7 @@ function allHeaders = getAllHeaders(SharedInfo)
"src/c/statisticsFunctions/includes/mean.h"
"src/c/statisticsFunctions/includes/median.h"
"src/c/statisticsFunctions/includes/nanmedian.h"
+ "src/c/statisticsFunctions/includes/gsort.h"
"src/c/statisticsFunctions/includes/nanstdev.h"
"src/c/statisticsFunctions/includes/mad.h"
"src/c/statisticsFunctions/includes/meanf.h"
@@ -253,6 +254,7 @@ function allHeaders = getAllHeaders(SharedInfo)
"src/c/linearAlgebra/includes/schur.h"
"src/c/linearAlgebra/includes/balanc.h"
"src/c/linearAlgebra/includes/svd.h"
+ "src/c/linearAlgebra/includes/rank.h"
"src/c/linearAlgebra/includes/hess.h"
"src/c/linearAlgebra/includes/sva.h"
"src/c/linearAlgebra/includes/sqroot.h"
diff --git a/macros/findDeps/getAllInterfaces.sci b/macros/findDeps/getAllInterfaces.sci
index 7884cd7..45ac768 100644
--- a/macros/findDeps/getAllInterfaces.sci
+++ b/macros/findDeps/getAllInterfaces.sci
@@ -141,6 +141,7 @@ function allInterfaces = getAllInterfaces(SharedInfo)
"src/c/statisticsFunctions/interfaces/int_mean.h"
"src/c/statisticsFunctions/interfaces/int_median.h"
"src/c/statisticsFunctions/interfaces/int_nanmedian.h"
+ "src/c/statisticsFunctions/interfaces/int_gsort.h"
"src/c/statisticsFunctions/interfaces/int_nanstdev.h"
"src/c/statisticsFunctions/interfaces/int_mad.h"
"src/c/statisticsFunctions/interfaces/int_meanf.h"
@@ -249,6 +250,7 @@ function allInterfaces = getAllInterfaces(SharedInfo)
"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_rank.h"
"src/c/linearAlgebra/interfaces/int_sqroot.h"
"src/c/linearAlgebra/interfaces/int_hess.h"
"src/c/linearAlgebra/interfaces/int_sva.h"
diff --git a/macros/findDeps/getAllSources.sci b/macros/findDeps/getAllSources.sci
index 73b85a7..9b36b5e 100644
--- a/macros/findDeps/getAllSources.sci
+++ b/macros/findDeps/getAllSources.sci
@@ -1019,6 +1019,18 @@ function allSources = getAllSources(SharedInfo,BuildTool)
"src/c/statisticsFunctions/nanmedian/znanmediana.c"
"src/c/statisticsFunctions/nanmedian/znanmediancola.c"
"src/c/statisticsFunctions/nanmedian/znanmedianrowa.c"
+ "src/c/statisticsFunctions/gsort/dgsorta.c"
+ "src/c/statisticsFunctions/gsort/dgsortrowa.c"
+ "src/c/statisticsFunctions/gsort/dgsortcola.c"
+ "src/c/statisticsFunctions/gsort/sgsorta.c"
+ "src/c/statisticsFunctions/gsort/sgsortrowa.c"
+ "src/c/statisticsFunctions/gsort/sgsortcola.c"
+ "src/c/statisticsFunctions/gsort/u16gsorta.c"
+ "src/c/statisticsFunctions/gsort/u16gsortcola.c"
+ "src/c/statisticsFunctions/gsort/u16gsortrowa.c"
+ "src/c/statisticsFunctions/gsort/zgsorta.c"
+ "src/c/statisticsFunctions/gsort/zgsortcola.c"
+ "src/c/statisticsFunctions/gsort/zgsortrowa.c"
"src/c/statisticsFunctions/nanstdev/dnanstdeva.c"
"src/c/statisticsFunctions/nanstdev/dnanstdevrowa.c"
"src/c/statisticsFunctions/nanstdev/dnanstdevcola.c"
@@ -1497,6 +1509,8 @@ function allSources = getAllSources(SharedInfo,BuildTool)
"src/c/linearAlgebra/balanc/dbalanca.c"
"src/c/linearAlgebra/svd/dsvda.c"
"src/c/linearAlgebra/svd/zsvda.c"
+ "src/c/linearAlgebra/rank/dranka.c"
+ "src/c/linearAlgebra/rank/zranka.c"
"src/c/linearAlgebra/sqroot/dsqroota.c"
"src/c/linearAlgebra/hess/dhessa.c"
"src/c/linearAlgebra/givens/dgivensa.c"
diff --git a/src/c/linearAlgebra/includes/rank.h b/src/c/linearAlgebra/includes/rank.h
new file mode 100644
index 0000000..0a21b4f
--- /dev/null
+++ b/src/c/linearAlgebra/includes/rank.h
@@ -0,0 +1,29 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __RANK_H__
+#define __RANK_H__
+#include "types.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dranka(double* in1, int rows, int cols);
+
+doubleComplex zranka(doubleComplex* in1, int rows, int cols);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__RANK_H__*/
diff --git a/src/c/linearAlgebra/interfaces/int_rank.h b/src/c/linearAlgebra/interfaces/int_rank.h
new file mode 100644
index 0000000..5c04e71
--- /dev/null
+++ b/src/c/linearAlgebra/interfaces/int_rank.h
@@ -0,0 +1,28 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_RANK_H__
+#define __INT_RANK_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2rankd0(in1,size1) dranka(in1, size1[0], size1[1])
+
+#define z2rankz0(in1,size1) zranka(in1, size1[0], size1[1])
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_RANK_H__*/
diff --git a/src/c/linearAlgebra/rank/dranka.c b/src/c/linearAlgebra/rank/dranka.c
new file mode 100644
index 0000000..ebfb5a8
--- /dev/null
+++ b/src/c/linearAlgebra/rank/dranka.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+/*Funtion to find inverse condition number of square matrix*/
+
+#include "lapack.h"
+#include "stdlib.h"
+#include "string.h"
+#include "rank.h"
+#include "svd.h"
+
+double dranka(double* in1, int rows, int cols)
+{
+ double out1[rows*rows];
+ double out2[rows*cols];
+ double out3[cols*cols];
+ double rk;
+
+
+ rk = dsvda(0,in1,rows,cols, 0, 4, out1, out2, out3);
+
+
+ return rk;
+
+}
diff --git a/src/c/linearAlgebra/rank/zranka.c b/src/c/linearAlgebra/rank/zranka.c
new file mode 100644
index 0000000..0efad25
--- /dev/null
+++ b/src/c/linearAlgebra/rank/zranka.c
@@ -0,0 +1,82 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+/*Funtion to find inverse condition number of square matrix*/
+
+#include "lapack.h"
+#include "stdlib.h"
+#include "stdio.h"
+#include "string.h"
+#include "rank.h"
+#include "svd.h"
+#include "doubleComplex.h"
+#include "addition.h"
+
+#define eps 2.22044604925e-16
+
+doubleComplex zranka(doubleComplex* in1, int rows, int cols)
+{
+ doubleComplex out1[rows*rows];
+ doubleComplex out2[rows*cols];
+ doubleComplex out3[cols*cols];
+ doubleComplex rk=0;
+
+
+ zsvda(in1,rows,cols, 0, 3, out1, out2, out3);
+
+double tol = (double)max(rows,cols)*eps*zreals(out2[0]) ;
+
+/*
+for(int i=0; i< rows*rows; i++)
+ printf("%lf + i*%lf \t", zreals(out1[i]), zimags(out1[i]));
+printf("\n");
+
+for(int i=0; i< rows*cols; i++)
+ printf("%lf + i*%lf \t", zreals(out2[i]), zimags(out2[i]));
+printf("\n");
+
+for(int i=0; i< cols*cols; i++)
+ printf("%lf + i*%lf \t", zreals(out3[i]), zimags(out3[i]));
+printf("\n");
+
+*/
+
+if(rows<cols)
+{
+ for(int i=0;i< rows;i++)
+ {
+ if( zreals(out2[i+i*rows]) > tol)
+ {
+ rk = zadds(rk,1);
+ }
+ }
+
+}
+
+else
+{
+
+ for(int i=0;i< cols;i++)
+ {
+ if( zreals(out2[i+i*rows]) > tol)
+ {
+ rk = zadds(rk,1);
+ }
+ }
+
+
+
+}
+
+ return rk;
+
+}
diff --git a/src/c/statisticsFunctions/gsort/dgsorta.c b/src/c/statisticsFunctions/gsort/dgsorta.c
new file mode 100644
index 0000000..8585b54
--- /dev/null
+++ b/src/c/statisticsFunctions/gsort/dgsorta.c
@@ -0,0 +1,94 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "gsort.h"
+#include "types.h"
+#include "uint16.h"
+
+void dgsorta(double *in, int size, char check, double* out)
+{
+ double a; double fin; double in_copy[size];
+
+ for(int i=0; i< size; i++)
+
+ {
+ in_copy[i]= in[i];
+
+ }
+
+
+if(check == 'i')
+{
+ for (int i = 0; i < size; ++i)
+
+ {
+
+ for (int j = i + 1; j < size; ++j)
+
+ {
+
+ if (in_copy[i] > in_copy[j])
+
+ {
+
+ a = in_copy[i];
+
+ in_copy[i] = in_copy[j];
+
+ in_copy[j] = a;
+
+ }
+
+ }
+
+ }
+}
+
+if(check =='d')
+{
+ for (int i = 0; i < size; ++i)
+
+ {
+
+ for (int j = i + 1; j < size; ++j)
+
+ {
+
+ if (in_copy[i] < in_copy[j])
+
+ {
+
+ a = in_copy[i];
+
+ in_copy[i] = in_copy[j];
+
+ in_copy[j] = a;
+
+ }
+
+ }
+
+ }
+
+
+}
+
+ for(int i=0; i< size; i++)
+
+ {
+ out[i]= in_copy[i];
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/gsort/dgsortcola.c b/src/c/statisticsFunctions/gsort/dgsortcola.c
new file mode 100644
index 0000000..56cb3e8
--- /dev/null
+++ b/src/c/statisticsFunctions/gsort/dgsortcola.c
@@ -0,0 +1,44 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "gsort.h"
+#include "types.h"
+#include "uint16.h"
+#include "stdio.h"
+
+void dgsortcola(double *in, int row, int col, char check, double* out)
+{
+ double inter[col];
+ double temp[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+
+ dgsorta( inter, col, check, temp);
+
+ for(int k=0; k< col; k++)
+ {
+ out[i + k*row]= temp[k];
+
+ }
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/gsort/dgsortrowa.c b/src/c/statisticsFunctions/gsort/dgsortrowa.c
new file mode 100644
index 0000000..cb2b819
--- /dev/null
+++ b/src/c/statisticsFunctions/gsort/dgsortrowa.c
@@ -0,0 +1,42 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "gsort.h"
+#include "types.h"
+#include "uint16.h"
+
+void dgsortrowa(double *in, int row, int col, char check, double* out)
+{
+ double inter[row];
+ double temp[row];
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ dgsorta( inter, row, check, temp);
+
+ for(int k=0; k< row; k++)
+ {
+ out[k + i*row]= temp[k];
+
+ }
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/gsort/sgsorta.c b/src/c/statisticsFunctions/gsort/sgsorta.c
new file mode 100644
index 0000000..35bbc93
--- /dev/null
+++ b/src/c/statisticsFunctions/gsort/sgsorta.c
@@ -0,0 +1,94 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "gsort.h"
+#include "types.h"
+#include "uint16.h"
+
+void sgsorta(float *in, int size, char check, float* out)
+{
+ float a; float fin; float in_copy[size];
+
+ for(int i=0; i< size; i++)
+
+ {
+ in_copy[i]= in[i];
+
+ }
+
+
+if(check == 'i')
+{
+ for (int i = 0; i < size; ++i)
+
+ {
+
+ for (int j = i + 1; j < size; ++j)
+
+ {
+
+ if (in_copy[i] > in_copy[j])
+
+ {
+
+ a = in_copy[i];
+
+ in_copy[i] = in_copy[j];
+
+ in_copy[j] = a;
+
+ }
+
+ }
+
+ }
+}
+
+if(check =='d')
+{
+ for (int i = 0; i < size; ++i)
+
+ {
+
+ for (int j = i + 1; j < size; ++j)
+
+ {
+
+ if (in_copy[i] < in_copy[j])
+
+ {
+
+ a = in_copy[i];
+
+ in_copy[i] = in_copy[j];
+
+ in_copy[j] = a;
+
+ }
+
+ }
+
+ }
+
+
+}
+
+ for(int i=0; i< size; i++)
+
+ {
+ out[i]= in_copy[i];
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/gsort/sgsortcola.c b/src/c/statisticsFunctions/gsort/sgsortcola.c
new file mode 100644
index 0000000..7296f7f
--- /dev/null
+++ b/src/c/statisticsFunctions/gsort/sgsortcola.c
@@ -0,0 +1,42 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "gsort.h"
+#include "types.h"
+#include "uint16.h"
+#include "stdio.h"
+
+void sgsortcola(float *in, int row, int col, char check, float* out)
+{
+ float inter[col];
+ float temp[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ sgsorta( inter, col, check, temp);
+
+ for(int k=0; k< col; k++)
+ {
+ out[i + k*row]= temp[k];
+
+ }
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/gsort/sgsortrowa.c b/src/c/statisticsFunctions/gsort/sgsortrowa.c
new file mode 100644
index 0000000..220b45a
--- /dev/null
+++ b/src/c/statisticsFunctions/gsort/sgsortrowa.c
@@ -0,0 +1,42 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "gsort.h"
+#include "types.h"
+#include "uint16.h"
+
+void sgsortrowa(float *in, int row, int col, char check, float* out)
+{
+ float inter[row];
+ float temp[row];
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ sgsorta( inter, row, check, temp);
+
+ for(int k=0; k< row; k++)
+ {
+ out[k + i*row]= temp[k];
+
+ }
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/gsort/u16gsorta.c b/src/c/statisticsFunctions/gsort/u16gsorta.c
new file mode 100644
index 0000000..bca7b02
--- /dev/null
+++ b/src/c/statisticsFunctions/gsort/u16gsorta.c
@@ -0,0 +1,94 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "gsort.h"
+#include "types.h"
+#include "uint16.h"
+
+void u16gsorta(uint16 *in, int size, char check, uint16* out)
+{
+ uint16 a; uint16 fin; uint16 in_copy[size];
+
+ for(int i=0; i< size; i++)
+
+ {
+ in_copy[i]= in[i];
+
+ }
+
+
+if(check == 'i')
+{
+ for (int i = 0; i < size; ++i)
+
+ {
+
+ for (int j = i + 1; j < size; ++j)
+
+ {
+
+ if (in_copy[i] > in_copy[j])
+
+ {
+
+ a = in_copy[i];
+
+ in_copy[i] = in_copy[j];
+
+ in_copy[j] = a;
+
+ }
+
+ }
+
+ }
+}
+
+if(check =='d')
+{
+ for (int i = 0; i < size; ++i)
+
+ {
+
+ for (int j = i + 1; j < size; ++j)
+
+ {
+
+ if (in_copy[i] < in_copy[j])
+
+ {
+
+ a = in_copy[i];
+
+ in_copy[i] = in_copy[j];
+
+ in_copy[j] = a;
+
+ }
+
+ }
+
+ }
+
+
+}
+
+ for(int i=0; i< size; i++)
+
+ {
+ out[i]= in_copy[i];
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/gsort/u16gsortcola.c b/src/c/statisticsFunctions/gsort/u16gsortcola.c
new file mode 100644
index 0000000..51ac7b5
--- /dev/null
+++ b/src/c/statisticsFunctions/gsort/u16gsortcola.c
@@ -0,0 +1,42 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "gsort.h"
+#include "types.h"
+#include "uint16.h"
+#include "stdio.h"
+
+void u16gsortcola(uint16* in, int row, int col, char check, uint16* out)
+{
+ uint16 inter[col];
+ uint16 temp[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ u16gsorta( inter, col, check, temp);
+
+ for(int k=0; k< col; k++)
+ {
+ out[i + k*row]= temp[k];
+
+ }
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/gsort/u16gsortrowa.c b/src/c/statisticsFunctions/gsort/u16gsortrowa.c
new file mode 100644
index 0000000..c8cbf4e
--- /dev/null
+++ b/src/c/statisticsFunctions/gsort/u16gsortrowa.c
@@ -0,0 +1,42 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "gsort.h"
+#include "types.h"
+#include "uint16.h"
+
+void u16gsortrowa(uint16 *in, int row, int col, char check, uint16* out)
+{
+ uint16 inter[row];
+ uint16 temp[row];
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ u16gsorta( inter, row, check, temp);
+
+ for(int k=0; k< row; k++)
+ {
+ out[k + i*row]= temp[k];
+
+ }
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/gsort/zgsorta.c b/src/c/statisticsFunctions/gsort/zgsorta.c
new file mode 100644
index 0000000..0620a8c
--- /dev/null
+++ b/src/c/statisticsFunctions/gsort/zgsorta.c
@@ -0,0 +1,96 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "gsort.h"
+#include "abs.h"
+#include "types.h"
+#include "uint16.h"
+#include "doubleComplex.h"
+
+void zgsorta(doubleComplex *in, int size, char check, doubleComplex* out)
+{
+ doubleComplex a; doubleComplex fin; doubleComplex in_copy[size];
+
+ for(int i=0; i< size; i++)
+
+ {
+ in_copy[i]= in[i];
+
+ }
+
+
+if(check == 'i')
+{
+ for (int i = 0; i < size; ++i)
+
+ {
+
+ for (int j = i + 1; j < size; ++j)
+
+ {
+
+ if (zabss(in_copy[i]) > zabss(in_copy[j]))
+
+ {
+
+ a = in_copy[i];
+
+ in_copy[i] = in_copy[j];
+
+ in_copy[j] = a;
+
+ }
+
+ }
+
+ }
+}
+
+if(check =='d')
+{
+ for (int i = 0; i < size; ++i)
+
+ {
+
+ for (int j = i + 1; j < size; ++j)
+
+ {
+
+ if (zabss(in_copy[i]) < zabss(in_copy[j]))
+
+ {
+
+ a = in_copy[i];
+
+ in_copy[i] = in_copy[j];
+
+ in_copy[j] = a;
+
+ }
+
+ }
+
+ }
+
+
+}
+
+ for(int i=0; i< size; i++)
+
+ {
+ out[i]= in_copy[i];
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/gsort/zgsortcola.c b/src/c/statisticsFunctions/gsort/zgsortcola.c
new file mode 100644
index 0000000..2c03623
--- /dev/null
+++ b/src/c/statisticsFunctions/gsort/zgsortcola.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "gsort.h"
+#include "types.h"
+#include "uint16.h"
+#include "stdio.h"
+#include "doubleComplex.h"
+
+void zgsortcola(doubleComplex *in, int row, int col, char check, doubleComplex* out)
+{
+ doubleComplex inter[col];
+ doubleComplex temp[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ zgsorta( inter, col, check, temp);
+
+ for(int k=0; k< col; k++)
+ {
+ out[i + k*row]= temp[k];
+
+ }
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/gsort/zgsortrowa.c b/src/c/statisticsFunctions/gsort/zgsortrowa.c
new file mode 100644
index 0000000..f02b0b2
--- /dev/null
+++ b/src/c/statisticsFunctions/gsort/zgsortrowa.c
@@ -0,0 +1,42 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "gsort.h"
+#include "types.h"
+#include "doubleComplex.h"
+
+void zgsortrowa(doubleComplex *in, int row, int col, char check, doubleComplex* out)
+{
+ doubleComplex inter[row];
+ doubleComplex temp[row];
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ zgsorta( inter, row, check, temp);
+
+ for(int k=0; k< row; k++)
+ {
+ out[k + i*row]= temp[k];
+
+ }
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/includes/gsort.h b/src/c/statisticsFunctions/includes/gsort.h
new file mode 100644
index 0000000..a4d0870
--- /dev/null
+++ b/src/c/statisticsFunctions/includes/gsort.h
@@ -0,0 +1,46 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __GSORT_H__
+#define __GSORT_H__
+
+#include "types.h"
+#include "doubleComplex.h"
+#include "uint16.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dgsorta(double *in, int size, char check, double* out);
+void dgsortcola(double *in, int row, int col, char check, double* out);
+void dgsortrowa(double *in, int row, int col, char check, double* out);
+
+void sgsorta(float *in, int size, char check, float* out);
+void sgsortcola(float *in, int row, int col, char check, float* out);
+void sgsortrowa(float *in, int row, int col, char check, float* out);
+
+void u16gsorta(uint16 *in, int size, char check, uint16* out);
+void u16gsortcola(uint16 *in, int row, int col, char check, uint16* out);
+void u16gsortrowa(uint16 *in, int row, int col, char check, uint16* out);
+
+void zgsorta(doubleComplex *in, int size, char check, doubleComplex* out);
+void zgsortcola(doubleComplex *in, int row, int col, char check, doubleComplex* out);
+void zgsortrowa(doubleComplex*in, int row, int col, char check, doubleComplex* out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__GSORT_H__*/
diff --git a/src/c/statisticsFunctions/interfaces/int_gsort.h b/src/c/statisticsFunctions/interfaces/int_gsort.h
new file mode 100644
index 0000000..d1e9bb9
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_gsort.h
@@ -0,0 +1,43 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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-en.txt
+ Author: Abhinav Dronamraju
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_GSORT_H__
+#define __INT_GSORT_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2gsortd2(in1, size, out) dgsorta(in1, size[0]* size[1], 'd', out)
+#define d2g2gsortd2(in1, size1, in2, size2, out) (in2[0]== 'r') ? dgsortrowa(in1, size1[0], size1[1],'d', out) :dgsortcola(in1, size1[0], size1[1],'d', out)
+#define d2g2g2gsortd2(in1, size1, in2, size2, in3, size3, out) (in2[0]== 'r') ? dgsortrowa(in1, size1[0], size1[1],in3[0], out) :dgsortcola(in1, size1[0], size1[1],in3[0], out)
+
+#define s2gsorts2(in1, size, out) sgsorta(in1, size[0]* size[1], 'd', out)
+#define s2g2gsorts2(in1, size1, in2, size2, out) (in2[0]== 'r') ? sgsortrowa(in1, size1[0], size1[1],'d', out) :sgsortcola(in1, size1[0], size1[1],'d', out)
+#define s2g2g2gsorts2(in1, size1, in2, size2, in3, size3, out) (in2[0]== 'r') ? sgsortrowa(in1, size1[0], size1[1],in3[0], out) :sgsortcola(in1, size1[0], size1[1],in3[0], out)
+
+#define u162gsortu162(in1, size, out) u16gsorta(in1, size[0]* size[1], 'd', out)
+#define u162g2gsortu162(in1, size1, in2, size2, out) (in2[0]== 'r') ? u16gsortrowa(in1, size1[0], size1[1],'d', out) :u16gsortcola(in1, size1[0], size1[1],'d', out)
+#define u162g2g2gsortu162(in1, size1, in2, size2, in3, size3, out) (in2[0]== 'r') ? u16gsortrowa(in1, size1[0], size1[1],in3[0], out) :u16gsortcola(in1, size1[0], size1[1],in3[0], out)
+
+#define z2gsortz2(in1, size, out) zgsorta(in1, size[0]* size[1], 'd', out)
+#define z2g2gsortz2(in1, size1, in2, size2, out) (in2[0]== 'r') ? zgsortrowa(in1, size1[0], size1[1],'d', out) :zgsortcola(in1, size1[0], size1[1],'d', out)
+#define z2g2g2gsortz2(in1, size1, in2, size2, in3, size3, out) (in2[0]== 'r') ? zgsortrowa(in1, size1[0], size1[1],in3[0], out) :zgsortcola(in1, size1[0], size1[1],in3[0], out)
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_GSORT_H__*/
diff --git a/src/c/statisticsFunctions/median/dmediana.c b/src/c/statisticsFunctions/median/dmediana.c
index cb2463c..8b37fd1 100644
--- a/src/c/statisticsFunctions/median/dmediana.c
+++ b/src/c/statisticsFunctions/median/dmediana.c
@@ -17,7 +17,9 @@
double dmediana(double *in, int size)
{
- double a; double fin;
+ double a; double fin; double in_copy[size];
+for(int i=0; i< size; i++)
+ in_copy[i]= in[i];
for (int i = 0; i < size; ++i)
@@ -28,15 +30,15 @@ double dmediana(double *in, int size)
{
- if (in[i] > in[j])
+ if (in_copy[i] > in_copy[j])
{
- a = in[i];
+ a = in_copy[i];
- in[i] = in[j];
+ in_copy[i] = in_copy[j];
- in[j] = a;
+ in_copy[j] = a;
}
@@ -47,11 +49,11 @@ double dmediana(double *in, int size)
if(size%2 ==0)
{
- fin= (in[size/2]+ in[(size/2)-1])/2;
+ fin= (in_copy[size/2]+ in_copy[(size/2)-1])/2;
}
else
{
- fin= in[(size-1)/2];
+ fin= in_copy[(size-1)/2];
}
return fin;
diff --git a/src/c/statisticsFunctions/median/smediana.c b/src/c/statisticsFunctions/median/smediana.c
index 9e86b77..0d427e1 100644
--- a/src/c/statisticsFunctions/median/smediana.c
+++ b/src/c/statisticsFunctions/median/smediana.c
@@ -17,8 +17,10 @@
float smediana(float *in, int size)
{
- float a; float fin;
+ float a; float fin; float in_copy[size];
+for(int i=0; i< size; i++)
+ in_copy[i]= in[i];
for (int i = 0; i < size; ++i)
@@ -28,15 +30,15 @@ float smediana(float *in, int size)
{
- if (in[i] > in[j])
+ if (in_copy[i] > in_copy[j])
{
- a = in[i];
+ a = in_copy[i];
- in[i] = in[j];
+ in_copy[i] = in_copy[j];
- in[j] = a;
+ in_copy[j] = a;
}
@@ -46,11 +48,11 @@ float smediana(float *in, int size)
if(size%2 ==0)
{
- fin= (in[size/2]+ in[(size/2)-1])/2;
+ fin= (in_copy[size/2]+ in_copy[(size/2)-1])/2;
}
else
{
- fin= in[(size-1)/2];
+ fin= in_copy[(size-1)/2];
}
return fin;
diff --git a/src/c/statisticsFunctions/median/u16mediana.c b/src/c/statisticsFunctions/median/u16mediana.c
index b45c530..85cfedc 100644
--- a/src/c/statisticsFunctions/median/u16mediana.c
+++ b/src/c/statisticsFunctions/median/u16mediana.c
@@ -17,8 +17,10 @@
uint16 u16mediana(uint16 *in, int size)
{
- uint16 a; uint16 fin;
+ uint16 a; uint16 fin; uint16 in_copy[size];
+for(int i=0; i< size; i++)
+ in_copy[i]= in[i];
for (int i = 0; i < size; ++i)
@@ -28,15 +30,15 @@ uint16 u16mediana(uint16 *in, int size)
{
- if (in[i] > in[j])
+ if (in_copy[i] > in_copy[j])
{
- a = in[i];
+ a = in_copy[i];
- in[i] = in[j];
+ in_copy[i] = in_copy[j];
- in[j] = a;
+ in_copy[j] = a;
}
@@ -46,11 +48,11 @@ uint16 u16mediana(uint16 *in, int size)
if(size%2 ==0)
{
- fin= (in[size/2]+ in[(size/2)-1])/2;
+ fin= (in_copy[size/2]+ in_copy[(size/2)-1])/2;
}
else
{
- fin= in[(size-1)/2];
+ fin= in_copy[(size-1)/2];
}
return fin;
diff --git a/src/c/statisticsFunctions/median/zmediana.c b/src/c/statisticsFunctions/median/zmediana.c
index 32726e7..3680456 100644
--- a/src/c/statisticsFunctions/median/zmediana.c
+++ b/src/c/statisticsFunctions/median/zmediana.c
@@ -21,8 +21,10 @@
doubleComplex zmediana(doubleComplex *in, int size)
{
- doubleComplex a; doubleComplex fin; doubleComplex middle;
+ doubleComplex a; doubleComplex fin; doubleComplex middle; doubleComplex in_copy[size];
+for(int i=0; i< size; i++)
+ in_copy[i]= in[i];
for (int i = 0; i < size; ++i)
@@ -32,15 +34,15 @@ doubleComplex zmediana(doubleComplex *in, int size)
{
- if (zabss(in[i]) > zabss(in[j]))
+ if (zabss(in_copy[i]) > zabss(in_copy[j]))
{
- a = in[i];
+ a = in_copy[i];
- in[i] = in[j];
+ in_copy[i] = in_copy[j];
- in[j] = a;
+ in_copy[j] = a;
}
@@ -52,12 +54,12 @@ doubleComplex zmediana(doubleComplex *in, int size)
if(size%2 ==0)
{
- middle= zadds(in[size/2], in[(size/2)-1]);
+ middle= zadds(in_copy[size/2], in_copy[(size/2)-1]);
fin= zrdivs(middle, DoubleComplex(2,0));
}
else
{
- fin= in[(size-1)/2];
+ fin= in_copy[(size-1)/2];
}
return fin;