summaryrefslogtreecommitdiff
path: root/src/c/statisticsFunctions
diff options
context:
space:
mode:
Diffstat (limited to 'src/c/statisticsFunctions')
-rw-r--r--src/c/statisticsFunctions/center/dcentera.c25
-rw-r--r--src/c/statisticsFunctions/center/dcentercola.c38
-rw-r--r--src/c/statisticsFunctions/center/dcenterrowa.c40
-rw-r--r--src/c/statisticsFunctions/center/scentera.c25
-rw-r--r--src/c/statisticsFunctions/center/scentercola.c37
-rw-r--r--src/c/statisticsFunctions/center/scenterrowa.c40
-rw-r--r--src/c/statisticsFunctions/center/zcentera.c29
-rw-r--r--src/c/statisticsFunctions/center/zcentercola.c42
-rw-r--r--src/c/statisticsFunctions/center/zcenterrowa.c44
-rw-r--r--src/c/statisticsFunctions/correl/dcorrelfres.c56
-rw-r--r--src/c/statisticsFunctions/correl/dcorrels.c35
-rw-r--r--src/c/statisticsFunctions/correl/scorrelfres.c56
-rw-r--r--src/c/statisticsFunctions/correl/scorrels.c35
-rw-r--r--src/c/statisticsFunctions/correl/zcorrelfres.c58
-rw-r--r--src/c/statisticsFunctions/correl/zcorrels.c37
-rw-r--r--src/c/statisticsFunctions/covar/dcovars.c70
-rw-r--r--src/c/statisticsFunctions/covar/scovars.c70
-rw-r--r--src/c/statisticsFunctions/covar/zcovars.c71
-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/center.h47
-rw-r--r--src/c/statisticsFunctions/includes/correl.h48
-rw-r--r--src/c/statisticsFunctions/includes/covar.h43
-rw-r--r--src/c/statisticsFunctions/includes/gsort.h46
-rw-r--r--src/c/statisticsFunctions/includes/mad.h42
-rw-r--r--src/c/statisticsFunctions/includes/median.h46
-rw-r--r--src/c/statisticsFunctions/includes/moment.h42
-rw-r--r--src/c/statisticsFunctions/includes/mvcorrel.h37
-rw-r--r--src/c/statisticsFunctions/includes/nanmedian.h44
-rw-r--r--src/c/statisticsFunctions/includes/nanstdev.h40
-rw-r--r--src/c/statisticsFunctions/includes/statMax.h79
-rw-r--r--src/c/statisticsFunctions/includes/statMin.h79
-rw-r--r--src/c/statisticsFunctions/includes/stdev.h37
-rw-r--r--src/c/statisticsFunctions/includes/strange.h43
-rw-r--r--src/c/statisticsFunctions/includes/wcenter.h47
-rw-r--r--src/c/statisticsFunctions/interfaces/int_center.h36
-rw-r--r--src/c/statisticsFunctions/interfaces/int_correl.h34
-rw-r--r--src/c/statisticsFunctions/interfaces/int_covar.h29
-rw-r--r--src/c/statisticsFunctions/interfaces/int_gsort.h43
-rw-r--r--src/c/statisticsFunctions/interfaces/int_mad.h35
-rw-r--r--src/c/statisticsFunctions/interfaces/int_median.h39
-rw-r--r--src/c/statisticsFunctions/interfaces/int_moment.h33
-rw-r--r--src/c/statisticsFunctions/interfaces/int_mvcorrel.h33
-rw-r--r--src/c/statisticsFunctions/interfaces/int_nanmedian.h26
-rw-r--r--src/c/statisticsFunctions/interfaces/int_nanstdev.h23
-rw-r--r--src/c/statisticsFunctions/interfaces/int_statMax.h161
-rw-r--r--src/c/statisticsFunctions/interfaces/int_statMin.h162
-rw-r--r--src/c/statisticsFunctions/interfaces/int_stdev.h32
-rw-r--r--src/c/statisticsFunctions/interfaces/int_strange.h26
-rw-r--r--src/c/statisticsFunctions/interfaces/int_wcenter.h36
-rw-r--r--src/c/statisticsFunctions/mad/dmada.c38
-rw-r--r--src/c/statisticsFunctions/mad/dmadcola.c36
-rw-r--r--src/c/statisticsFunctions/mad/dmadrowa.c36
-rw-r--r--src/c/statisticsFunctions/mad/smada.c38
-rw-r--r--src/c/statisticsFunctions/mad/smadcola.c36
-rw-r--r--src/c/statisticsFunctions/mad/smadrowa.c36
-rw-r--r--src/c/statisticsFunctions/mad/zmada.c40
-rw-r--r--src/c/statisticsFunctions/mad/zmadcola.c36
-rw-r--r--src/c/statisticsFunctions/mad/zmadrowa.c36
-rw-r--r--src/c/statisticsFunctions/max/dcolumnmaxa.c5
-rw-r--r--src/c/statisticsFunctions/max/dmaxa.c3
-rw-r--r--src/c/statisticsFunctions/max/drowmaxa.c7
-rw-r--r--src/c/statisticsFunctions/max/i16columnmaxa.c25
-rw-r--r--src/c/statisticsFunctions/max/i16maxa.c26
-rw-r--r--src/c/statisticsFunctions/max/i16rowmaxa.c24
-rw-r--r--src/c/statisticsFunctions/max/i8columnmaxa.c25
-rw-r--r--src/c/statisticsFunctions/max/i8maxa.c25
-rw-r--r--src/c/statisticsFunctions/max/i8rowmaxa.c24
-rw-r--r--src/c/statisticsFunctions/max/scolumnmaxa.c2
-rw-r--r--src/c/statisticsFunctions/max/smaxa.c2
-rw-r--r--src/c/statisticsFunctions/max/srowmaxa.c2
-rw-r--r--src/c/statisticsFunctions/max/testDoubleMax.c2
-rw-r--r--src/c/statisticsFunctions/max/testFloatMax.c1
-rw-r--r--src/c/statisticsFunctions/max/u16columnmaxa.c26
-rw-r--r--src/c/statisticsFunctions/max/u16maxa.c25
-rw-r--r--src/c/statisticsFunctions/max/u16rowmaxa.c27
-rw-r--r--src/c/statisticsFunctions/max/u8columnmaxa.c26
-rw-r--r--src/c/statisticsFunctions/max/u8maxa.c26
-rw-r--r--src/c/statisticsFunctions/max/u8rowmaxa.c28
-rw-r--r--src/c/statisticsFunctions/median/dmediana.c60
-rw-r--r--src/c/statisticsFunctions/median/dmediancola.c35
-rw-r--r--src/c/statisticsFunctions/median/dmedianrowa.c36
-rw-r--r--src/c/statisticsFunctions/median/smediana.c59
-rw-r--r--src/c/statisticsFunctions/median/smediancola.c35
-rw-r--r--src/c/statisticsFunctions/median/smedianrowa.c36
-rw-r--r--src/c/statisticsFunctions/median/u16mediana.c59
-rw-r--r--src/c/statisticsFunctions/median/u16mediancola.c35
-rw-r--r--src/c/statisticsFunctions/median/u16medianrowa.c36
-rw-r--r--src/c/statisticsFunctions/median/zmediana.c66
-rw-r--r--src/c/statisticsFunctions/median/zmediancola.c36
-rw-r--r--src/c/statisticsFunctions/median/zmedianrowa.c37
-rw-r--r--src/c/statisticsFunctions/min/dcolumnmina.c2
-rw-r--r--src/c/statisticsFunctions/min/i16columnmina.c25
-rw-r--r--src/c/statisticsFunctions/min/i16mina.c26
-rw-r--r--src/c/statisticsFunctions/min/i16rowmina.c24
-rw-r--r--src/c/statisticsFunctions/min/i8columnmina.c25
-rw-r--r--src/c/statisticsFunctions/min/i8mina.c26
-rw-r--r--src/c/statisticsFunctions/min/i8rowmina.c24
-rw-r--r--src/c/statisticsFunctions/min/scolumnmina.c2
-rw-r--r--src/c/statisticsFunctions/min/u16columnmina.c25
-rw-r--r--src/c/statisticsFunctions/min/u16mina.c26
-rw-r--r--src/c/statisticsFunctions/min/u16rowmina.c25
-rw-r--r--src/c/statisticsFunctions/min/u8columnmina.c25
-rw-r--r--src/c/statisticsFunctions/min/u8mina.c26
-rw-r--r--src/c/statisticsFunctions/min/u8rowmina.c24
-rw-r--r--src/c/statisticsFunctions/moment/dmomentcola.c18
-rw-r--r--src/c/statisticsFunctions/moment/dmomentrowa.c18
-rw-r--r--src/c/statisticsFunctions/moment/dmoments.c17
-rw-r--r--src/c/statisticsFunctions/moment/smomentcola.c18
-rw-r--r--src/c/statisticsFunctions/moment/smomentrowa.c18
-rw-r--r--src/c/statisticsFunctions/moment/smoments.c17
-rw-r--r--src/c/statisticsFunctions/moment/zmomentcola.c20
-rw-r--r--src/c/statisticsFunctions/moment/zmomentrowa.c20
-rw-r--r--src/c/statisticsFunctions/moment/zmoments.c22
-rw-r--r--src/c/statisticsFunctions/mvcorrel/dmvcorrel1a.c34
-rw-r--r--src/c/statisticsFunctions/mvcorrel/dmvcorrela.c87
-rw-r--r--src/c/statisticsFunctions/mvcorrel/smvcorrel1a.c34
-rw-r--r--src/c/statisticsFunctions/mvcorrel/smvcorrela.c87
-rw-r--r--src/c/statisticsFunctions/nanmedian/dnanmediana.c51
-rw-r--r--src/c/statisticsFunctions/nanmedian/dnanmediancola.c35
-rw-r--r--src/c/statisticsFunctions/nanmedian/dnanmedianrowa.c36
-rw-r--r--src/c/statisticsFunctions/nanmedian/snanmediana.c49
-rw-r--r--src/c/statisticsFunctions/nanmedian/snanmediancola.c36
-rw-r--r--src/c/statisticsFunctions/nanmedian/snanmedianrowa.c37
-rw-r--r--src/c/statisticsFunctions/nanmedian/znanmediana.c51
-rw-r--r--src/c/statisticsFunctions/nanmedian/znanmediancola.c37
-rw-r--r--src/c/statisticsFunctions/nanmedian/znanmedianrowa.c38
-rw-r--r--src/c/statisticsFunctions/nanstdev/dnanstdeva.c51
-rw-r--r--src/c/statisticsFunctions/nanstdev/dnanstdevcola.c35
-rw-r--r--src/c/statisticsFunctions/nanstdev/dnanstdevrowa.c36
-rw-r--r--src/c/statisticsFunctions/nanstdev/snanstdeva.c51
-rw-r--r--src/c/statisticsFunctions/nanstdev/snanstdevcola.c35
-rw-r--r--src/c/statisticsFunctions/nanstdev/snanstdevrowa.c36
-rw-r--r--src/c/statisticsFunctions/stdev/dstdeva.c29
-rw-r--r--src/c/statisticsFunctions/stdev/dstdevcola.c35
-rw-r--r--src/c/statisticsFunctions/stdev/dstdevrowa.c36
-rw-r--r--src/c/statisticsFunctions/stdev/sstdeva.c29
-rw-r--r--src/c/statisticsFunctions/stdev/sstdevcola.c35
-rw-r--r--src/c/statisticsFunctions/stdev/sstdevrowa.c36
-rw-r--r--src/c/statisticsFunctions/strange/dstrangea.c60
-rw-r--r--src/c/statisticsFunctions/strange/dstrangecola.c37
-rw-r--r--src/c/statisticsFunctions/strange/dstrangerowa.c35
-rw-r--r--src/c/statisticsFunctions/strange/sstrangea.c60
-rw-r--r--src/c/statisticsFunctions/strange/sstrangecola.c37
-rw-r--r--src/c/statisticsFunctions/strange/sstrangerowa.c35
-rw-r--r--src/c/statisticsFunctions/strange/u16strangea.c60
-rw-r--r--src/c/statisticsFunctions/strange/u16strangecola.c37
-rw-r--r--src/c/statisticsFunctions/strange/u16strangerowa.c35
-rw-r--r--src/c/statisticsFunctions/sum/i16columnsuma.c34
-rw-r--r--src/c/statisticsFunctions/sum/i16rowsuma.c35
-rw-r--r--src/c/statisticsFunctions/sum/i16suma.c26
-rw-r--r--src/c/statisticsFunctions/sum/i8columnsuma.c34
-rw-r--r--src/c/statisticsFunctions/sum/i8rowsuma.c35
-rw-r--r--src/c/statisticsFunctions/sum/i8suma.c27
-rw-r--r--src/c/statisticsFunctions/sum/u16columnsuma.c35
-rw-r--r--src/c/statisticsFunctions/sum/u16rowsuma.c34
-rw-r--r--src/c/statisticsFunctions/sum/u16suma.c25
-rw-r--r--src/c/statisticsFunctions/sum/u8columnsuma.c34
-rw-r--r--src/c/statisticsFunctions/sum/u8rowsuma.c35
-rw-r--r--src/c/statisticsFunctions/sum/u8suma.c26
-rw-r--r--src/c/statisticsFunctions/wcenter/dwcentera.c34
-rw-r--r--src/c/statisticsFunctions/wcenter/dwcentercola.c64
-rw-r--r--src/c/statisticsFunctions/wcenter/dwcenterrowa.c68
-rw-r--r--src/c/statisticsFunctions/wcenter/swcentera.c34
-rw-r--r--src/c/statisticsFunctions/wcenter/swcentercola.c61
-rw-r--r--src/c/statisticsFunctions/wcenter/swcenterrowa.c68
-rw-r--r--src/c/statisticsFunctions/wcenter/zwcentera.c38
-rw-r--r--src/c/statisticsFunctions/wcenter/zwcentercola.c66
-rw-r--r--src/c/statisticsFunctions/wcenter/zwcenterrowa.c72
179 files changed, 6972 insertions, 24 deletions
diff --git a/src/c/statisticsFunctions/center/dcentera.c b/src/c/statisticsFunctions/center/dcentera.c
new file mode 100644
index 00000000..87480386
--- /dev/null
+++ b/src/c/statisticsFunctions/center/dcentera.c
@@ -0,0 +1,25 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "subtraction.h"
+#include "multiplication.h"
+#include "center.h"
+
+void dcentera (double* inp, int row, int col, double* out)
+{
+ double sum = 0, xbar = 0, sigma = 0;
+ for(int i = 0; i < row*col; i++) // Findinag the maen of all the elements of the matrix
+ sum += inp[i];
+ xbar = sum/(row*col);
+
+ double one[row*col]; // Creating a matrix of ones
+ donesa(one,row,col);
+
+ double prod[row*col];
+ for(int i = 0; i < row*col; i++) // Applying the formula (x(i,j)-xbar)/sigma
+ prod[i] = one[i]*xbar;
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = inp[i] - prod[i];
+}
diff --git a/src/c/statisticsFunctions/center/dcentercola.c b/src/c/statisticsFunctions/center/dcentercola.c
new file mode 100644
index 00000000..e92a1d29
--- /dev/null
+++ b/src/c/statisticsFunctions/center/dcentercola.c
@@ -0,0 +1,38 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "subtraction.h"
+#include "matrixMultiplication.h"
+#include "center.h"
+
+void dcentercola (double* inp, int row, int col, double* out)
+{
+
+ double sum[row], xbar[row];
+ for(int i = 0; i < row; i++)
+ sum[i] = 0;
+
+
+ for(int i = 0; i < row; i++)
+ {
+ for(int j = 0; j < col; j++)
+ {
+ sum[i] += inp[i + j*row];
+ }
+ }
+
+
+ for(int i = 0; i < row; i++)
+ xbar[i] = sum[i]/col;
+
+ double one[col]; // Creating a matrix of ones
+ donesa(one,1,col);
+
+
+ double prod[row*col];
+ dmulma(xbar, row, 1, one, 1, col, prod);
+
+ for(int i = 0; i< row*col; i++)
+ out[i] = inp[i] - prod[i];
+}
diff --git a/src/c/statisticsFunctions/center/dcenterrowa.c b/src/c/statisticsFunctions/center/dcenterrowa.c
new file mode 100644
index 00000000..e6f7e3cd
--- /dev/null
+++ b/src/c/statisticsFunctions/center/dcenterrowa.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "subtraction.h"
+#include "matrixMultiplication.h"
+#include "center.h"
+
+void dcenterrowa (double* inp, int row, int col, double* out)
+{
+
+ double sum[col], xbar[col];
+ for(int i = 0; i < col; i++)
+ sum[i] = 0;
+
+
+ for(int i = 0; i < col; i++)
+ {
+ for(int j = 0; j < row; j++)
+ {
+ sum[i] += inp[j + i*row];
+ }
+ }
+
+
+
+ for(int i = 0; i < col; i++)
+ xbar[i] = sum[i]/row;
+
+ double one[row]; // Creating a matrix of ones
+ donesa(one,row,1);
+
+ double prod[row*col];
+ dmulma(one, row, 1, xbar, 1, col, prod);
+
+
+
+ for(int i = 0; i< row*col; i++)
+ out[i] = inp[i] - prod[i];
+}
diff --git a/src/c/statisticsFunctions/center/scentera.c b/src/c/statisticsFunctions/center/scentera.c
new file mode 100644
index 00000000..2b165be1
--- /dev/null
+++ b/src/c/statisticsFunctions/center/scentera.c
@@ -0,0 +1,25 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "subtraction.h"
+#include "multiplication.h"
+#include "center.h"
+
+void scentera (float* inp, int row, int col, float* out)
+{
+ float sum = 0, xbar = 0, sigma = 0;
+ for(int i = 0; i < row*col; i++) // Findinag the maen of all the elements of the matrix
+ sum += inp[i];
+ xbar = sum/(row*col);
+
+ float one[row*col]; // Creating a matrix of ones
+ sonesa(one,row,col);
+
+ float prod[row*col];
+ for(int i = 0; i < row*col; i++) // Applying the formula (x(i,j)-xbar)/sigma
+ prod[i] = one[i]*xbar;
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = inp[i] - prod[i];
+}
diff --git a/src/c/statisticsFunctions/center/scentercola.c b/src/c/statisticsFunctions/center/scentercola.c
new file mode 100644
index 00000000..d5ef5eeb
--- /dev/null
+++ b/src/c/statisticsFunctions/center/scentercola.c
@@ -0,0 +1,37 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "subtraction.h"
+#include "matrixMultiplication.h"
+#include "center.h"
+
+void scentercola (float* inp, int row, int col, float* out)
+{
+
+ float sum[row], xbar[row];
+ for(int i = 0; i < row; i++)
+ sum[i] = 0;
+
+
+ for(int i = 0; i < row; i++)
+ {
+ for(int j = 0; j < col; j++)
+ {
+ sum[i] += inp[i + j*row];
+ }
+ }
+
+ for(int i = 0; i < row; i++)
+ xbar[i] = sum[i]/col;
+
+ float one[col]; // Creating a matrix of ones
+ sonesa(one,1,col);
+
+
+ float prod[row*col];
+ smulma(xbar, row, 1, one, 1, col, prod);
+
+ for(int i = 0; i< row*col; i++)
+ out[i] = inp[i] - prod[i];
+}
diff --git a/src/c/statisticsFunctions/center/scenterrowa.c b/src/c/statisticsFunctions/center/scenterrowa.c
new file mode 100644
index 00000000..b5910cd9
--- /dev/null
+++ b/src/c/statisticsFunctions/center/scenterrowa.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "subtraction.h"
+#include "matrixMultiplication.h"
+#include "center.h"
+
+void scenterrowa (float* inp, int row, int col, float* out)
+{
+
+ float sum[col], xbar[col];
+ for(int i = 0; i < col; i++)
+ sum[i] = 0;
+
+
+ for(int i = 0; i < col; i++)
+ {
+ for(int j = 0; j < row; j++)
+ {
+ sum[i] += inp[j + i*row];
+ }
+ }
+
+
+
+ for(int i = 0; i < col; i++)
+ xbar[i] = sum[i]/row;
+
+ float one[row]; // Creating a matrix of ones
+ sonesa(one,row,1);
+
+ float prod[row*col];
+ smulma(one, row, 1, xbar, 1, col, prod);
+
+
+
+ for(int i = 0; i< row*col; i++)
+ out[i] = inp[i] - prod[i];
+}
diff --git a/src/c/statisticsFunctions/center/zcentera.c b/src/c/statisticsFunctions/center/zcentera.c
new file mode 100644
index 00000000..22ce70d7
--- /dev/null
+++ b/src/c/statisticsFunctions/center/zcentera.c
@@ -0,0 +1,29 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "center.h"
+#include "doubleComplex.h"
+#include "sqrt.h"
+
+void zcentera (doubleComplex* inp, int row, int col, doubleComplex* out)
+{
+ doubleComplex sum = 0, xbar = 0, sigma = 0;
+ for(int i = 0; i < row*col; i++) // Findinag the maen of all the elements of the matrix
+ sum = zadds(sum,inp[i]);
+ xbar = zrdivs(sum,(row*col));
+
+ doubleComplex one[row*col]; // Creating a matrix of ones
+ zonesa(one,row,col);
+
+ doubleComplex prod[row*col];
+ for(int i = 0; i < row*col; i++) // Applying the formula (x(i,j)-xbar)/sigma
+ prod[i] = zmuls(one[i],xbar);
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = zdiffs(inp[i], prod[i]);
+}
diff --git a/src/c/statisticsFunctions/center/zcentercola.c b/src/c/statisticsFunctions/center/zcentercola.c
new file mode 100644
index 00000000..8a838bc5
--- /dev/null
+++ b/src/c/statisticsFunctions/center/zcentercola.c
@@ -0,0 +1,42 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "center.h"
+#include "doubleComplex.h"
+#include "sqrt.h"
+
+void zcentercola (doubleComplex* inp, int row, int col, doubleComplex* out)
+{
+
+ doubleComplex sum[row], xbar[row];
+ for(int i = 0; i < row; i++)
+ sum[i] = DoubleComplex(0,0);
+
+
+ for(int i = 0; i < row; i++)
+ {
+ for(int j = 0; j < col; j++)
+ {
+ sum[i] = zadds(sum[i], inp[i + j*row]);
+ }
+ }
+
+
+ for(int i = 0; i < row; i++)
+ xbar[i] = zrdivs(sum[i], col);
+
+ doubleComplex one[col]; // Creating a matrix of ones
+ zonesa(one,1,col);
+
+
+ doubleComplex prod[row*col];
+ zmulma(xbar, row, 1, one, 1, col, prod);
+
+ for(int i = 0; i< row*col; i++)
+ out[i] = zdiffs(inp[i], prod[i]);
+}
diff --git a/src/c/statisticsFunctions/center/zcenterrowa.c b/src/c/statisticsFunctions/center/zcenterrowa.c
new file mode 100644
index 00000000..cddd3403
--- /dev/null
+++ b/src/c/statisticsFunctions/center/zcenterrowa.c
@@ -0,0 +1,44 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "center.h"
+#include "doubleComplex.h"
+#include "sqrt.h"
+
+void zcenterrowa (doubleComplex* inp, int row, int col, doubleComplex* out)
+{
+
+ doubleComplex sum[col], xbar[col];
+ for(int i = 0; i < col; i++)
+ sum[i] = DoubleComplex(0,0);
+
+
+ for(int i = 0; i < col; i++)
+ {
+ for(int j = 0; j < row; j++)
+ {
+ sum[i] = zadds(sum[i], inp[j + i*row]);
+ }
+ }
+
+
+
+ for(int i = 0; i < col; i++)
+ xbar[i] = zrdivs(sum[i], row);
+
+ doubleComplex one[row]; // Creating a matrix of ones
+ zonesa(one,row,1);
+
+ doubleComplex prod[row*col];
+ zmulma(one, row, 1, xbar, 1, col, prod);
+
+
+
+ for(int i = 0; i< row*col; i++)
+ out[i] = zdiffs(inp[i], prod[i]);
+}
diff --git a/src/c/statisticsFunctions/correl/dcorrelfres.c b/src/c/statisticsFunctions/correl/dcorrelfres.c
new file mode 100644
index 00000000..7d4c718a
--- /dev/null
+++ b/src/c/statisticsFunctions/correl/dcorrelfres.c
@@ -0,0 +1,56 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "sqrt.h"
+#include "sum.h"
+#include "correl.h"
+#include "matrix.h"
+#include "mean.h"
+
+double dcorrelfres (double* inp1, int sr1, int sc1, double* inp2, int sr2, int sc2, double* inp3, int sr3, int sc3)
+{
+ double p1[sr3], p2[sc3], m1 = 0, m2 = 0, s1 = 0, s2 = 0, s3 = 0, diff1[sr1*sc1], diff2[sr2*sc2], sum = 0, prod[sr3];
+
+ double fr[sr3*sc3];
+
+ for(int i = 0; i < sr3*sc3; i++)
+ s3 += inp3[i];
+
+ for(int i = 0; i < sr3*sc3; i++)
+ fr[i] = inp3[i]/s3;
+
+
+
+ dcolumnsuma(fr, sr3, sc3, p1);
+ drowsuma(fr, sr3, sc3, p2);
+
+
+
+ m1 = dmulv(inp1, p1, sr3);
+ m2 = dmulv(inp2, p2, sc3);
+
+ for(int i = 0; i < sr1*sc1; i++)
+ diff1[i] = pow(inp1[i] - m1, 2);
+
+ for(int i = 0; i < sr2*sc2; i++)
+ diff2[i] = pow(inp2[i] - m2, 2);
+
+
+ s1 = dsqrts(dmulv(diff1, p1, sr3));
+ s2 = dsqrts(dmulv(p2, diff2, sc3));
+
+ for(int i = 0; i < sr1*sc1; i++)
+ diff1[i] = inp1[i] - m1;
+
+ for(int i = 0; i < sr2*sc2; i++)
+ diff2[i] = inp2[i] - m2;
+
+ dmulma(fr, sr3, sc3, diff2, sc2, 1, prod);
+
+ return dmulv(diff1, prod, sr3)/(s1*s2);
+}
diff --git a/src/c/statisticsFunctions/correl/dcorrels.c b/src/c/statisticsFunctions/correl/dcorrels.c
new file mode 100644
index 00000000..eda07fc1
--- /dev/null
+++ b/src/c/statisticsFunctions/correl/dcorrels.c
@@ -0,0 +1,35 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "sqrt.h"
+#include "sum.h"
+#include "correl.h"
+#include "matrix.h"
+#include "mean.h"
+
+double dcorrels (double* inp1, int sr1, int sc1, double* inp2, int sr2, int sc2)
+{
+ double m1 = 0, m2 = 0, s1 = 0, s2 = 0, diff1[sr1*sc1], diff2[sr2*sc2], sum = 0;
+ m1 = dmeana(inp1, sr1*sc1);
+ m2 = dmeana(inp2, sr2*sc2);
+
+ for(int i = 0; i < sr1*sc1; i++)
+ diff1[i] = pow(inp1[i] - m1, 2);
+
+ for(int i = 0; i < sr2*sc2; i++)
+ diff2[i] = pow(inp2[i] - m2, 2);
+
+
+ s1 = dsqrts(dsuma(diff1, sr1*sc1));
+ s2 = dsqrts(dsuma(diff2, sr2*sc2));
+
+ for(int i = 0; i < sr2*sc2; i++)
+ sum += (inp1[i] - m1) * (inp2[i] - m2);
+
+ return sum / (s1*s2);
+}
diff --git a/src/c/statisticsFunctions/correl/scorrelfres.c b/src/c/statisticsFunctions/correl/scorrelfres.c
new file mode 100644
index 00000000..2d056a5b
--- /dev/null
+++ b/src/c/statisticsFunctions/correl/scorrelfres.c
@@ -0,0 +1,56 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "sqrt.h"
+#include "sum.h"
+#include "correl.h"
+#include "matrix.h"
+#include "mean.h"
+
+float scorrelfres (float* inp1, int sr1, int sc1, float* inp2, int sr2, int sc2, float* inp3, int sr3, int sc3)
+{
+ float p1[sr3], p2[sc3], m1 = 0, m2 = 0, s1 = 0, s2 = 0, s3 = 0, diff1[sr1*sc1], diff2[sr2*sc2], sum = 0, prod[sr3];
+
+ float fr[sr3*sc3];
+
+ for(int i = 0; i < sr3*sc3; i++)
+ s3 += inp3[i];
+
+ for(int i = 0; i < sr3*sc3; i++)
+ fr[i] = inp3[i]/s3;
+
+
+
+ scolumnsuma(fr, sr3, sc3, p1);
+ srowsuma(fr, sr3, sc3, p2);
+
+
+
+ m1 = smulv(inp1, p1, sr3);
+ m2 = smulv(inp2, p2, sc3);
+
+ for(int i = 0; i < sr1*sc1; i++)
+ diff1[i] = pow(inp1[i] - m1, 2);
+
+ for(int i = 0; i < sr2*sc2; i++)
+ diff2[i] = pow(inp2[i] - m2, 2);
+
+
+ s1 = ssqrts(smulv(diff1, p1, sr3));
+ s2 = ssqrts(smulv(p2, diff2, sc3));
+
+ for(int i = 0; i < sr1*sc1; i++)
+ diff1[i] = inp1[i] - m1;
+
+ for(int i = 0; i < sr2*sc2; i++)
+ diff2[i] = inp2[i] - m2;
+
+ smulma(fr, sr3, sc3, diff2, sc2, 1, prod);
+
+ return smulv(diff1, prod, sr3)/(s1*s2);
+}
diff --git a/src/c/statisticsFunctions/correl/scorrels.c b/src/c/statisticsFunctions/correl/scorrels.c
new file mode 100644
index 00000000..892d8762
--- /dev/null
+++ b/src/c/statisticsFunctions/correl/scorrels.c
@@ -0,0 +1,35 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "sqrt.h"
+#include "sum.h"
+#include "correl.h"
+#include "matrix.h"
+#include "mean.h"
+
+float scorrels (float* inp1, int sr1, int sc1, float* inp2, int sr2, int sc2)
+{
+ float m1 = 0, m2 = 0, s1 = 0, s2 = 0, diff1[sr1*sc1], diff2[sr2*sc2], sum = 0;
+ m1 = smeana(inp1, sr1*sc1);
+ m2 = smeana(inp2, sr2*sc2);
+
+ for(int i = 0; i < sr1*sc1; i++)
+ diff1[i] = pow(inp1[i] - m1, 2);
+
+ for(int i = 0; i < sr2*sc2; i++)
+ diff2[i] = pow(inp2[i] - m2, 2);
+
+
+ s1 = ssqrts(ssuma(diff1, sr1*sc1));
+ s2 = ssqrts(ssuma(diff2, sr2*sc2));
+
+ for(int i = 0; i < sr2*sc2; i++)
+ sum += (inp1[i] - m1) * (inp2[i] - m2);
+
+ return sum / (s1*s2);
+}
diff --git a/src/c/statisticsFunctions/correl/zcorrelfres.c b/src/c/statisticsFunctions/correl/zcorrelfres.c
new file mode 100644
index 00000000..b026c58a
--- /dev/null
+++ b/src/c/statisticsFunctions/correl/zcorrelfres.c
@@ -0,0 +1,58 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "pow.h"
+#include "sqrt.h"
+#include "sum.h"
+#include "correl.h"
+#include "matrix.h"
+#include "mean.h"
+#include "doubleComplex.h"
+
+doubleComplex zcorrelfres (doubleComplex* inp1, int sr1, int sc1, doubleComplex* inp2, int sr2, int sc2, doubleComplex* inp3, int sr3, int sc3)
+{
+ doubleComplex p1[sr3], p2[sc3], m1 = 0, m2 = 0, s1 = 0, s2 = 0, s3 = 0, diff1[sr1*sc1], diff2[sr2*sc2], sum = 0, prod[sr3];
+
+ doubleComplex fr[sr3*sc3];
+
+ for(int i = 0; i < sr3*sc3; i++)
+ s3 = zadds(s3, inp3[i]);
+
+ for(int i = 0; i < sr3*sc3; i++)
+ fr[i] = zrdivs(inp3[i],s3);
+
+
+
+ zcolumnsuma(fr, sr3, sc3, p1);
+ zrowsuma(fr, sr3, sc3, p2);
+
+
+
+ m1 = zmulv(inp1, p1, sr3);
+ m2 = zmulv(inp2, p2, sc3);
+
+ for(int i = 0; i < sr1*sc1; i++)
+ diff1[i] = zpows(zdiffs(inp1[i], m1), DoubleComplex(2,0));
+
+ for(int i = 0; i < sr2*sc2; i++)
+ diff2[i] = zpows(zdiffs(inp2[i], m2), DoubleComplex(2,0));
+
+
+ s1 = zsqrts(zmulv(diff1, p1, sr3));
+ s2 = zsqrts(zmulv(p2, diff2, sc3));
+
+ for(int i = 0; i < sr1*sc1; i++)
+ diff1[i] = zdiffs(inp1[i], m1);
+
+ for(int i = 0; i < sr2*sc2; i++)
+ diff2[i] = zdiffs(inp2[i], m2);
+
+ zmulma(fr, sr3, sc3, diff2, sc2, 1, prod);
+
+ return zrdivs(zmulv(diff1, prod, sr3), zmuls(s1, s2));
+}
diff --git a/src/c/statisticsFunctions/correl/zcorrels.c b/src/c/statisticsFunctions/correl/zcorrels.c
new file mode 100644
index 00000000..818a6800
--- /dev/null
+++ b/src/c/statisticsFunctions/correl/zcorrels.c
@@ -0,0 +1,37 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "pow.h"
+#include "sqrt.h"
+#include "sum.h"
+#include "correl.h"
+#include "matrix.h"
+#include "mean.h"
+#include "doubleComplex.h"
+
+doubleComplex zcorrels (doubleComplex* inp1, int sr1, int sc1, doubleComplex* inp2, int sr2, int sc2)
+{
+ doubleComplex m1 = 0, m2 = 0, s1 = 0, s2 = 0, diff1[sr1*sc1], diff2[sr2*sc2], sum = 0;
+ m1 = zmeana(inp1, sr1*sc1);
+ m2 = zmeana(inp2, sr2*sc2);
+
+ for(int i = 0; i < sr1*sc1; i++)
+ diff1[i] = zpows(zdiffs(inp1[i], m1), DoubleComplex(2,0));
+
+ for(int i = 0; i < sr2*sc2; i++)
+ diff2[i] = zpows(zdiffs(inp2[i], m2), DoubleComplex(2,0));
+
+
+ s1 = zsqrts(zsuma(diff1, sr1*sc1));
+ s2 = zsqrts(zsuma(diff2, sr2*sc2));
+
+ for(int i = 0; i < sr2*sc2; i++)
+ sum = zadds(sum, zmuls(zdiffs(inp1[i], m1), zdiffs(inp2[i], m2)));
+
+ return zrdivs(sum, zmuls(s1,s2));
+}
diff --git a/src/c/statisticsFunctions/covar/dcovars.c b/src/c/statisticsFunctions/covar/dcovars.c
new file mode 100644
index 00000000..f67905ee
--- /dev/null
+++ b/src/c/statisticsFunctions/covar/dcovars.c
@@ -0,0 +1,70 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "sqrt.h"
+#include "sum.h"
+#include "correl.h"
+#include "matrix.h"
+#include "mean.h"
+
+double dcovars (double* inp1, int sr1, int sc1, double* inp2, int sr2, int sc2, double* fre, int sr3, int sc3)
+{
+ double fr[sr3*sc3], s3 = 0, sfrr[sc3], p1[sc2*sc3], s1 = 0, d1[sc2] , one[sr1*sc1], p2[sc1 * sc2], p3[sr3*sc3], sfrc[sr3], p4[sr3], s2 = 0, d2[sr1*sc1], one2[sr2*sc2], p5[sr1*sc1*sr2*sc2], p6[sr1*sc1*sr2*sc2],s4 = 0;
+
+ for(int i = 0; i < sr3*sc3; i++)
+ s3 += fre[i];
+
+ for(int i = 0; i < sr3*sc3; i++)
+ fr[i] = fre[i]/s3;
+
+ drowsuma(fr, sr3, sc3, sfrr);
+
+ for(int i = 0; i < sc3; i++)
+ p1[i] = inp2[i] * sfrr[i];
+
+ for(int i = 0; i < sc3; i++)
+ s1 += p1[i];
+
+
+
+ for(int i = 0; i < sc2; i++)
+ d1[i] = inp2[i] - s1;
+
+ donesa(one, sr1*sc1, 1);
+
+ dmulma(one, sr1*sc1, 1, d1, 1, sc2, p2);
+
+ for(int i = 0; i < sr3*sc3; i++)
+ p3[i] = fr[i] * p2[i];
+
+ dcolumnsuma(fr, sr3, sc3, sfrc);
+
+ for(int i = 0; i < sr3; i++)
+ p4[i] = inp1[i] * sfrc[i];
+
+ for(int i = 0; i < sr3; i++)
+ s2 += p4[i];
+
+ for(int i = 0; i < sr1*sc1; i++)
+ d2[i] = inp1[i] - s2;
+
+ donesa(one2, 1, sr2*sc2);
+
+ dmulma(d2, sr1*sc1, 1, one2, 1, sr2*sc2, p5);
+
+ for(int i = 0; i < sr1*sc1*sr2*sc2; i++)
+ p6[i] = p5[i] * p3[i];
+
+
+ for(int i = 0; i < sr1*sc1*sr2*sc2; i++)
+ s4 += p6[i];
+
+
+ return s4;
+
+}
diff --git a/src/c/statisticsFunctions/covar/scovars.c b/src/c/statisticsFunctions/covar/scovars.c
new file mode 100644
index 00000000..daff6b94
--- /dev/null
+++ b/src/c/statisticsFunctions/covar/scovars.c
@@ -0,0 +1,70 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "sqrt.h"
+#include "sum.h"
+#include "correl.h"
+#include "matrix.h"
+#include "mean.h"
+
+float scovars (float* inp1, int sr1, int sc1, float* inp2, int sr2, int sc2, float* fre, int sr3, int sc3)
+{
+ float fr[sr3*sc3], s3 = 0, sfrr[sc3], p1[sc2*sc3], s1 = 0, d1[sc2] , one[sr1*sc1], p2[sc1 * sc2], p3[sr3*sc3], sfrc[sr3], p4[sr3], s2 = 0, d2[sr1*sc1], one2[sr2*sc2], p5[sr1*sc1*sr2*sc2], p6[sr1*sc1*sr2*sc2],s4 = 0;
+
+ for(int i = 0; i < sr3*sc3; i++)
+ s3 += fre[i];
+
+ for(int i = 0; i < sr3*sc3; i++)
+ fr[i] = fre[i]/s3;
+
+ srowsuma(fr, sr3, sc3, sfrr);
+
+ for(int i = 0; i < sc3; i++)
+ p1[i] = inp2[i] * sfrr[i];
+
+ for(int i = 0; i < sc3; i++)
+ s1 += p1[i];
+
+
+
+ for(int i = 0; i < sc2; i++)
+ d1[i] = inp2[i] - s1;
+
+ sonesa(one, sr1*sc1, 1);
+
+ smulma(one, sr1*sc1, 1, d1, 1, sc2, p2);
+
+ for(int i = 0; i < sr3*sc3; i++)
+ p3[i] = fr[i] * p2[i];
+
+ scolumnsuma(fr, sr3, sc3, sfrc);
+
+ for(int i = 0; i < sr3; i++)
+ p4[i] = inp1[i] * sfrc[i];
+
+ for(int i = 0; i < sr3; i++)
+ s2 += p4[i];
+
+ for(int i = 0; i < sr1*sc1; i++)
+ d2[i] = inp1[i] - s2;
+
+ sonesa(one2, 1, sr2*sc2);
+
+ smulma(d2, sr1*sc1, 1, one2, 1, sr2*sc2, p5);
+
+ for(int i = 0; i < sr1*sc1*sr2*sc2; i++)
+ p6[i] = p5[i] * p3[i];
+
+
+ for(int i = 0; i < sr1*sc1*sr2*sc2; i++)
+ s4 += p6[i];
+
+
+ return s4;
+
+}
diff --git a/src/c/statisticsFunctions/covar/zcovars.c b/src/c/statisticsFunctions/covar/zcovars.c
new file mode 100644
index 00000000..6adbd3c9
--- /dev/null
+++ b/src/c/statisticsFunctions/covar/zcovars.c
@@ -0,0 +1,71 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "sqrt.h"
+#include "sum.h"
+#include "correl.h"
+#include "matrix.h"
+#include "mean.h"
+#include "doubleComplex.h"
+
+doubleComplex zcovars (doubleComplex* inp1, int sr1, int sc1, doubleComplex* inp2, int sr2, int sc2, doubleComplex* fre, int sr3, int sc3)
+{
+ doubleComplex fr[sr3*sc3], s3 = 0, sfrr[sc3], p1[sc2*sc3], s1 = 0, d1[sc2] , one[sr1*sc1], p2[sc1 * sc2], p3[sr3*sc3], sfrc[sr3], p4[sr3], s2 = 0, d2[sr1*sc1], one2[sr2*sc2], p5[sr1*sc1*sr2*sc2], p6[sr1*sc1*sr2*sc2],s4 = 0;
+
+ for(int i = 0; i < sr3*sc3; i++)
+ s3 = zadds(s3, fre[i]);
+
+ for(int i = 0; i < sr3*sc3; i++)
+ fr[i] = zrdivs(fre[i], s3);
+
+ zrowsuma(fr, sr3, sc3, sfrr);
+
+ for(int i = 0; i < sc3; i++)
+ p1[i] = zmuls(inp2[i], sfrr[i]);
+
+ for(int i = 0; i < sc3; i++)
+ s1 = zadds(s1, p1[i]);
+
+
+
+ for(int i = 0; i < sc2; i++)
+ d1[i] = zdiffs(inp2[i], s1);
+
+ zonesa(one, sr1*sc1, 1);
+
+ zmulma(one, sr1*sc1, 1, d1, 1, sc2, p2);
+
+ for(int i = 0; i < sr3*sc3; i++)
+ p3[i] = fr[i] * p2[i];
+
+ zcolumnsuma(fr, sr3, sc3, sfrc);
+
+ for(int i = 0; i < sr3; i++)
+ p4[i] = zmuls(inp1[i], sfrc[i]);
+
+ for(int i = 0; i < sr3; i++)
+ s2 = zadds(s2, p4[i]);
+
+ for(int i = 0; i < sr1*sc1; i++)
+ d2[i] = zdiffs(inp1[i], s2);
+
+ zonesa(one2, 1, sr2*sc2);
+
+ zmulma(d2, sr1*sc1, 1, one2, 1, sr2*sc2, p5);
+
+ for(int i = 0; i < sr1*sc1*sr2*sc2; i++)
+ p6[i] = zmuls(p5[i], p3[i]);
+
+
+ for(int i = 0; i < sr1*sc1*sr2*sc2; i++)
+ s4 = zadds(s4, p6[i]);
+
+
+ return s4;
+
+}
diff --git a/src/c/statisticsFunctions/gsort/dgsorta.c b/src/c/statisticsFunctions/gsort/dgsorta.c
new file mode 100644
index 00000000..8585b54e
--- /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 00000000..56cb3e8b
--- /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 00000000..cb2b819d
--- /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 00000000..35bbc93e
--- /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 00000000..7296f7f0
--- /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 00000000..220b45a5
--- /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 00000000..bca7b025
--- /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 00000000..51ac7b5e
--- /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 00000000..c8cbf4e9
--- /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 00000000..0620a8cb
--- /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 00000000..2c03623d
--- /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 00000000..f02b0b24
--- /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/center.h b/src/c/statisticsFunctions/includes/center.h
new file mode 100644
index 00000000..57a109b3
--- /dev/null
+++ b/src/c/statisticsFunctions/includes/center.h
@@ -0,0 +1,47 @@
+ /* 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: Brijesh Gupta C R
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __CENTER_H__
+#define __CENTER_H__
+#include "types.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "sqrt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dcentera (double* inp, int row, int col, double* out);
+void dcentercola (double* inp, int row, int col, double* out);
+void dcenterrowa (double* inp, int row, int col, double* out);
+
+void scentera (float* inp, int row, int col, float* out);
+void scentercola (float* inp, int row, int col, float* out);
+void scenterrowa (float* inp, int row, int col, float* out);
+
+void zcentera (doubleComplex* inp, int row, int col, doubleComplex* out);
+void zcentercola (doubleComplex* inp, int row, int col, doubleComplex* out);
+void zcenterrowa (doubleComplex* inp, int row, int col, doubleComplex* out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__CENTER_H__*/
diff --git a/src/c/statisticsFunctions/includes/correl.h b/src/c/statisticsFunctions/includes/correl.h
new file mode 100644
index 00000000..8a9c0365
--- /dev/null
+++ b/src/c/statisticsFunctions/includes/correl.h
@@ -0,0 +1,48 @@
+ /* 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: Brijesh Gupta C R
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __CORREL_H__
+#define __CORREL_H__
+#include "types.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "sqrt.h"
+#include "sum.h"
+#include "correl.h"
+#include "matrix.h"
+#include "mean.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dcorrels (double* inp1, int sr1, int sc1, double* inp2, int sr2, int sc2);
+double dcorrelfres (double* inp1, int sr1, int sc1, double* inp2, int sr2, int sc2, double* inp3, int sr3, int sc3);
+
+float scorrels (float* inp1, int sr1, int sc1, float* inp2, int sr2, int sc2);
+float scorrelfres (float* inp1, int sr1, int sc1, float* inp2, int sr2, int sc2, float* inp3, int sr3, int sc3);
+
+doubleComplex zcorrels (doubleComplex* inp1, int sr1, int sc1, doubleComplex* inp2, int sr2, int sc2);
+doubleComplex zcorrelfres (doubleComplex* inp1, int sr1, int sc1, doubleComplex* inp2, int sr2, int sc2, doubleComplex* inp3, int sr3, int sc3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__CORREL_H__*/
diff --git a/src/c/statisticsFunctions/includes/covar.h b/src/c/statisticsFunctions/includes/covar.h
new file mode 100644
index 00000000..4f37f852
--- /dev/null
+++ b/src/c/statisticsFunctions/includes/covar.h
@@ -0,0 +1,43 @@
+ /* 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: Brijesh Gupta C R
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __COVAR_H__
+#define __COVAR_H__
+#include "types.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "sqrt.h"
+#include "sum.h"
+#include "correl.h"
+#include "matrix.h"
+#include "mean.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dcovars (double* inp1, int sr1, int sc1, double* inp2, int sr2, int sc2, double* fre, int sr3, int sc3);
+float scovars (float* inp1, int sr1, int sc1, float* inp2, int sr2, int sc2, float* fre, int sr3, int sc3);
+doubleComplex zcovars (doubleComplex* inp1, int sr1, int sc1, doubleComplex* inp2, int sr2, int sc2, doubleComplex* fre, int sr3, int sc3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__COVAR_H__*/
diff --git a/src/c/statisticsFunctions/includes/gsort.h b/src/c/statisticsFunctions/includes/gsort.h
new file mode 100644
index 00000000..a4d0870e
--- /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/includes/mad.h b/src/c/statisticsFunctions/includes/mad.h
new file mode 100644
index 00000000..29032deb
--- /dev/null
+++ b/src/c/statisticsFunctions/includes/mad.h
@@ -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
+*/
+
+
+#ifndef __MAD_H__
+#define __MAD_H__
+
+#include "types.h"
+#include "doubleComplex.h"
+#include "uint16.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dmada(double* , int );
+void dmadrowa(double*, int, int, double*);
+void dmadcola(double*, int, int, double*);
+
+float smada(float* , int );
+void smadrowa(float*, int, int, float*);
+void smadcola(float*, int, int, float*);
+
+doubleComplex zmada(doubleComplex* , int );
+void zmadrowa(doubleComplex*, int, int, doubleComplex*);
+void zmadcola(doubleComplex*, int, int, doubleComplex*);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__MAD_H__*/
diff --git a/src/c/statisticsFunctions/includes/median.h b/src/c/statisticsFunctions/includes/median.h
new file mode 100644
index 00000000..accb5df0
--- /dev/null
+++ b/src/c/statisticsFunctions/includes/median.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 __MEDIAN_H__
+#define __MEDIAN_H__
+
+#include "types.h"
+#include "doubleComplex.h"
+#include "uint16.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dmediana(double* , int );
+void dmedianrowa(double*, int, int, double*);
+void dmediancola(double*, int, int, double*);
+
+float smediana(float* , int );
+void smedianrowa(float*, int, int, float*);
+void smediancola(float*, int, int, float*);
+
+uint16 u16mediana(uint16* , int );
+void u16medianrowa(uint16*, int, int, uint16*);
+void u16mediancola(uint16*, int, int, uint16*);
+
+doubleComplex zmediana(doubleComplex* , int );
+void zmedianrowa(doubleComplex*, int, int, doubleComplex*);
+void zmediancola(doubleComplex*, int, int, doubleComplex*);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__MATRIX_H__*/
diff --git a/src/c/statisticsFunctions/includes/moment.h b/src/c/statisticsFunctions/includes/moment.h
new file mode 100644
index 00000000..3f419d06
--- /dev/null
+++ b/src/c/statisticsFunctions/includes/moment.h
@@ -0,0 +1,42 @@
+ /* 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: Brijesh Gupta C R
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __MOMENT_H__
+#define __MOMENT_H__
+#include "types.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+#include "pow.h"
+#include "addition.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dmoments (double* inp, int size, double ord);
+void dmomentrowa (double* inp, int row, int col, double ord, double* out);
+void dmomentcola (double* inp, int row, int col, double ord, double* out);
+
+float smoments (float* inp, int size, double ord);
+void smomentrowa (float* inp, int row, int col, double ord, float* out);
+void smomentcola (float* inp, int row, int col, double ord, float* out);
+
+doubleComplex zmoments (doubleComplex* inp, int size, double ord);
+void zmomentrowa (doubleComplex* inp, int row, int col, double ord, doubleComplex* out);
+void zmomentcola (doubleComplex* inp, int row, int col, double ord, doubleComplex* out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__MOMENT_H__*/
diff --git a/src/c/statisticsFunctions/includes/mvcorrel.h b/src/c/statisticsFunctions/includes/mvcorrel.h
new file mode 100644
index 00000000..f1ed94cd
--- /dev/null
+++ b/src/c/statisticsFunctions/includes/mvcorrel.h
@@ -0,0 +1,37 @@
+/* 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 __MVCORREL_H__
+#define __MVCORREL_H__
+
+#include "types.h"
+#include "doubleComplex.h"
+#include "uint16.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dmvcorrela(double* , int, int, double* );
+double dmvcorrel1a( int, int);
+
+void smvcorrela(float* , int, int, float* );
+float smvcorrel1a( int, int);
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__MVCORREL_H__*/
diff --git a/src/c/statisticsFunctions/includes/nanmedian.h b/src/c/statisticsFunctions/includes/nanmedian.h
new file mode 100644
index 00000000..767dbc90
--- /dev/null
+++ b/src/c/statisticsFunctions/includes/nanmedian.h
@@ -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
+*/
+
+#ifndef __NANMEDIAN_H__
+#define __NANMEDIAN_H__
+
+
+#include "types.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+#include "int16.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dnanmediana (double* , int);
+void dnanmedianrowa (double*, int , int, double*);
+void dnanmediancola (double*, int , int, double*);
+
+float snanmediana (float* , int);
+void snanmedianrowa (float*, int , int, float*);
+void snanmediancola (float*, int , int, float*);
+
+doubleComplex znanmediana (doubleComplex* , int);
+void znanmedianrowa (doubleComplex*, int , int, doubleComplex*);
+void znanmediancola (doubleComplex*, int , int, doubleComplex*);
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
diff --git a/src/c/statisticsFunctions/includes/nanstdev.h b/src/c/statisticsFunctions/includes/nanstdev.h
new file mode 100644
index 00000000..5c140939
--- /dev/null
+++ b/src/c/statisticsFunctions/includes/nanstdev.h
@@ -0,0 +1,40 @@
+/* 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 __NANSTDEV_H__
+#define __NANSTDEV_H__
+
+
+#include "types.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+#include "int16.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dnanstdeva (double* , int);
+void dnanstdevrowa (double*, int , int, double*);
+void dnanstdevcola (double*, int , int, double*);
+
+float snanstdeva (float* , int);
+void snanstdevrowa (float*, int , int, float*);
+void snanstdevcola (float*, int , int, float*);
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
diff --git a/src/c/statisticsFunctions/includes/statMax.h b/src/c/statisticsFunctions/includes/statMax.h
index 3538bc1a..8e5d12b9 100644
--- a/src/c/statisticsFunctions/includes/statMax.h
+++ b/src/c/statisticsFunctions/includes/statMax.h
@@ -14,28 +14,57 @@
#define __STAT_MAX_H__
#include "dynlib_statisticsfunctions.h"
+#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
+//#define max(a,b) (a>=b?a:b)
+
+#define maxa(a,size1,b,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=max(a[i],b[i]);\
+ }
+
/*
-** \brief Sum of a scalar element, just returns it
+** \brief max of a scalar element, just returns it
*/
-#define smaxs(in) in
+#define smaxs(in) in
#define srowmaxs(in) in
#define scolumnmaxs(in) in
#define smatlabmaxs(in) in
/*
-** \brief Sum of a scalar element, just returns it
+** \brief max of a scalar element, just returns it
*/
-#define dmaxs(in) in
+#define dmaxs(in) in
#define drowmaxs(in) in
#define dcolumnmaxs(in) in
#define dmatlabmaxs(in) in
/*
+** \brief max of a scalar element, just returns it
+*/
+#define u8maxs(in) (uint8)in
+#define u8rowmaxs(in) (uint8)in
+#define u8columnmaxs(in) (uint8)in
+#define u8matlabmaxs(in) (uint8)in
+#define u16maxs(in) (uint16)in
+#define u16rowmaxs(in) (uint16)in
+#define u16columnmaxs(in) (uint16)in
+#define u16matlabmaxs(in) (uint16)in
+#define i8maxs(in) (int8)in
+#define i8rowmaxs(in) (int8)in
+#define i8columnmaxs(in) (int8)in
+#define i8matlabmaxs(in) (int8)in
+#define i16maxs(in) (int16)in
+#define i16rowmaxs(in) (int16)in
+#define i16columnmaxs(in) (int16)in
+#define i16matlabmaxs(in) (int16)in
+
+
+
+/*
** \brief Sum of a float array
** \param in the float array to process
** \param size, the size of the array
@@ -55,9 +84,47 @@ EXTERN_STATFUNC double dmaxa(double *in, int size);
EXTERN_STATFUNC void drowmaxa(double *in, int lines, int columns, double* out);
EXTERN_STATFUNC void dcolumnmaxa(double *in, int lines, int columns, double* out);
+/*
+** \brief Sum of a uint8 array
+** \param in the uint8 array to process
+** \param size, the size of the array
+** \returns the max.
+*/
+EXTERN_STATFUNC uint8 u8maxa(uint8 *in, int size);
+EXTERN_STATFUNC void u8rowmaxa(uint8 *in, int lines, int columns, uint8* out);
+EXTERN_STATFUNC void u8columnmaxa(uint8 *in, int lines, int columns, uint8* out);
+
+/*
+** \brief Sum of a uint16 array
+** \param in the uint16 array to process
+** \param size, the size of the array
+** \returns the max.
+*/
+EXTERN_STATFUNC uint16 u16maxa(uint16 *in, int size);
+EXTERN_STATFUNC void u16rowmaxa(uint16 *in, int lines, int columns, uint16* out);
+EXTERN_STATFUNC void u16columnmaxa(uint16 *in, int lines, int columns, uint16* out);
+
+/*
+** \brief Sum of a int8 array
+** \param in the int8 array to process
+** \param size, the size of the array
+** \returns the max.
+*/
+EXTERN_STATFUNC int8 i8maxa(int8 *in, int size);
+EXTERN_STATFUNC void i8rowmaxa(int8 *in, int lines, int columns, int8* out);
+EXTERN_STATFUNC void i8columnmaxa(int8 *in, int lines, int columns, int8* out);
+
+/*
+** \brief Sum of a int16 array
+** \param in the int16 array to process
+** \param size, the size of the array
+** \returns the max.
+*/
+EXTERN_STATFUNC int16 i16maxa(int16 *in, int size);
+EXTERN_STATFUNC void i16rowmaxa(int16 *in, int lines, int columns, int16* out);
+EXTERN_STATFUNC void i16columnmaxa(int16 *in, int lines, int columns, int16* out);
+
#ifdef __cplusplus
} /* extern "C" */
#endif
-
-
#endif /* !__STAT_MAX_H__ */
diff --git a/src/c/statisticsFunctions/includes/statMin.h b/src/c/statisticsFunctions/includes/statMin.h
index 9528d9f4..f3b8268a 100644
--- a/src/c/statisticsFunctions/includes/statMin.h
+++ b/src/c/statisticsFunctions/includes/statMin.h
@@ -14,28 +14,57 @@
#define __STAT_MIN_H__
#include "dynlib_statisticsfunctions.h"
+#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
+//#define min(a,b) (a<=b?a:b)
+
+#define mina(a,size1,b,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=min(a[i],b[i]);\
+ }
+
/*
-** \brief Sum of a scalar element, just returns it
+** \brief min of a scalar element, just returns it
*/
#define smins(in) in
#define srowmins(in) in
-#define scolumnmins(in) in
+#define scolumnmins(in) in
#define smatlabmins(in) in
/*
-** \brief Sum of a scalar element, just returns it
+** \brief min of a scalar element, just returns it
*/
#define dmins(in) in
#define drowmins(in) in
-#define dcolumnmins(in) in
+#define dcolumnmins(in) in
#define dmatlabmins(in) in
/*
+** \brief min of a scalar element, just returns it
+*/
+#define u8mins(in) (uint8)in
+#define u8rowmins(in) (uint8)in
+#define u8columnmins(in) (uint8)in
+#define u8matlabmins(in) (uint8)in
+#define u16mins(in) (uint16)in
+#define u16rowmins(in) (uint16)in
+#define u16columnmins(in) (uint16)in
+#define u16matlabmins(in) (uint16)in
+#define i8mins(in) (int8)in
+#define i8rowmins(in) (int8)in
+#define i8columnmins(in) (int8)in
+#define i8matlabmins(in) (int8)in
+#define i16mins(in) (int16)in
+#define i16rowmins(in) (int16)in
+#define i16columnmins(in) (int16)in
+#define i16matlabmins(in) (int16)in
+
+
+
+/*
** \brief Sum of a float array
** \param in the float array to process
** \param size, the size of the array
@@ -55,9 +84,47 @@ EXTERN_STATFUNC double dmina(double *in, int size);
EXTERN_STATFUNC void drowmina(double *in, int lines, int columns, double* out);
EXTERN_STATFUNC void dcolumnmina(double *in, int lines, int columns, double* out);
+/*
+** \brief Sum of a uint8 array
+** \param in the uint8 array to process
+** \param size, the size of the array
+** \returns the min.
+*/
+EXTERN_STATFUNC uint8 u8mina(uint8 *in, int size);
+EXTERN_STATFUNC void u8rowmina(uint8 *in, int lines, int columns, uint8* out);
+EXTERN_STATFUNC void u8columnmina(uint8 *in, int lines, int columns, uint8* out);
+
+/*
+** \brief Sum of a uint16 array
+** \param in the uint16 array to process
+** \param size, the size of the array
+** \returns the min.
+*/
+EXTERN_STATFUNC uint16 u16mina(uint16 *in, int size);
+EXTERN_STATFUNC void u16rowmina(uint16 *in, int lines, int columns, uint16* out);
+EXTERN_STATFUNC void u16columnmina(uint16 *in, int lines, int columns, uint16* out);
+
+/*
+** \brief Sum of a int8 array
+** \param in the int8 array to process
+** \param size, the size of the array
+** \returns the min.
+*/
+EXTERN_STATFUNC int8 i8mina(int8 *in, int size);
+EXTERN_STATFUNC void i8rowmina(int8 *in, int lines, int columns, int8* out);
+EXTERN_STATFUNC void i8columnmina(int8 *in, int lines, int columns, int8* out);
+
+/*
+** \brief Sum of a int16 array
+** \param in the int16 array to process
+** \param size, the size of the array
+** \returns the min.
+*/
+EXTERN_STATFUNC int16 i16mina(int16 *in, int size);
+EXTERN_STATFUNC void i16rowmina(int16 *in, int lines, int columns, int16* out);
+EXTERN_STATFUNC void i16columnmina(int16 *in, int lines, int columns, int16* out);
+
#ifdef __cplusplus
} /* extern "C" */
#endif
-
-
#endif /* !__STAT_MIN_H__ */
diff --git a/src/c/statisticsFunctions/includes/stdev.h b/src/c/statisticsFunctions/includes/stdev.h
new file mode 100644
index 00000000..16b4697a
--- /dev/null
+++ b/src/c/statisticsFunctions/includes/stdev.h
@@ -0,0 +1,37 @@
+/* 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 __STDEV_H__
+#define __STDEV_H__
+
+#include "types.h"
+#include "doubleComplex.h"
+#include "uint16.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dstdeva(double* , int );
+void dstdevrowa(double*, int, int, double*);
+void dstdevcola(double*, int, int, double*);
+
+float sstdeva(float* , int );
+void sstdevrowa(float*, int, int, float*);
+void sstdevcola(float*, int, int, float*);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__STDEV_H__*/
diff --git a/src/c/statisticsFunctions/includes/strange.h b/src/c/statisticsFunctions/includes/strange.h
new file mode 100644
index 00000000..0c783ad0
--- /dev/null
+++ b/src/c/statisticsFunctions/includes/strange.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 __STRANGE_H__
+#define __STRANGE_H__
+
+
+#include "types.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+#include "uint16.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dstrangea (double* , int);
+void dstrangerowa (double*, int , int, double*);
+void dstrangecola (double*, int , int, double*);
+
+float sstrangea (float* , int);
+void sstrangerowa (float*, int , int, float*);
+void sstrangecola (float*, int , int, float*);
+
+uint16 u16strangea (uint16* , int);
+void u16strangerowa (uint16*, int , int, uint16*);
+void u16strangecola (uint16*, int , int, uint16*);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
diff --git a/src/c/statisticsFunctions/includes/wcenter.h b/src/c/statisticsFunctions/includes/wcenter.h
new file mode 100644
index 00000000..3919fd37
--- /dev/null
+++ b/src/c/statisticsFunctions/includes/wcenter.h
@@ -0,0 +1,47 @@
+ /* 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: Brijesh Gupta C R
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __WCENTER_H__
+#define __WCENTER_H__
+#include "types.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "sqrt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dwcentera (double* inp, int row, int col, double* out);
+void dwcentercola (double* inp, int row, int col, double* out);
+void dwcenterrowa (double* inp, int row, int col, double* out);
+
+void swcentera (float* inp, int row, int col, float* out);
+void swcentercola (float* inp, int row, int col, float* out);
+void swcenterrowa (float* inp, int row, int col, float* out);
+
+void zwcentera (doubleComplex* inp, int row, int col, doubleComplex* out);
+void zwcentercola (doubleComplex* inp, int row, int col, doubleComplex* out);
+void zwcenterrowa (doubleComplex* inp, int row, int col, doubleComplex* out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__WCENTER_H__*/
diff --git a/src/c/statisticsFunctions/interfaces/int_center.h b/src/c/statisticsFunctions/interfaces/int_center.h
new file mode 100644
index 00000000..041937e0
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_center.h
@@ -0,0 +1,36 @@
+ /* 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: Brijesh Gupta C R
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_CENTER_H__
+#define __INT_CENTER_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2centerd2(in1,size, out) dcentera(in1,size[0],size[1],out)
+#define d2g2centerd2(in1, size, in2, size2 ,out) (in2[0] == 'r') ? dcenterrowa(in1, size[0], size[1], out) : dcentercola(in1, size[0], size[1], out)
+#define d2d0centerd2(in1, size, in2 ,out) (in2 == 1) ? dcenterrowa(in1, size[0], size[1], out) : dcentercola(in1, size[0], size[1], out)
+
+#define s2centers2(in1,size, out) scentera(in1,size[0],size[1],out)
+#define s2g2centers2(in1, size, in2, size2 ,out) (in2[0] == 'r') ? scenterrowa(in1, size[0], size[1], out) : scentercola(in1, size[0], size[1], out)
+#define s2d0centers2(in1, size, in2 ,out) (in2 == 1) ? scenterrowa(in1, size[0], size[1], out) : scentercola(in1, size[0], size[1], out)
+
+#define z2centerz2(in1,size, out) zcentera(in1,size[0],size[1],out)
+#define z2g2centerz2(in1, size, in2, size2 ,out) (in2[0] == 'r') ? zcenterrowa(in1, size[0], size[1], out) : zcentercola(in1, size[0], size[1], out)
+#define z2d0centerz2(in1, size, in2 ,out) (in2 == 1) ? zcenterrowa(in1, size[0], size[1], out) : zcentercola(in1, size[0], size[1], out)
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_CENTER_H__*/
diff --git a/src/c/statisticsFunctions/interfaces/int_correl.h b/src/c/statisticsFunctions/interfaces/int_correl.h
new file mode 100644
index 00000000..8dd5c31e
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_correl.h
@@ -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: Brijesh Gupta C R
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_CORREL_H__
+#define __INT_CORREL_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define d2d2correld0(in1, size, in2, size2) dcorrels(in1, size[0], size[1], in2, size2[0], size2[1])
+#define d2d2d2correld0(in1, size, in2, size2, in3, size3) dcorrelfres(in1, size[0], size[1], in2, size2[0], size2[1], in3, size3[0], size3[1])
+
+#define s2s2correls0(in1, size, in2, size2) scorrels(in1, size[0], size[1], in2, size2[0], size2[1])
+#define s2s2s2correls0(in1, size, in2, size2, in3, size3) scorrelfres(in1, size[0], size[1], in2, size2[0], size2[1], in3, size3[0], size3[1])
+
+#define z2z2correlz0(in1, size, in2, size2) zcorrels(in1, size[0], size[1], in2, size2[0], size2[1])
+#define z2z2z2correlz0(in1, size, in2, size2, in3, size3) zcorrelfres(in1, size[0], size[1], in2, size2[0], size2[1], in3, size3[0], size3[1])
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_CORREL_H__*/
diff --git a/src/c/statisticsFunctions/interfaces/int_covar.h b/src/c/statisticsFunctions/interfaces/int_covar.h
new file mode 100644
index 00000000..5ebef22f
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_covar.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: Brijesh Gupta C R
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_COVAR_H__
+#define __INT_COVAR_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define d2d2d2covard0(in1, size, in2, size2, in3, size3) dcovars(in1, size[0], size[1], in2, size2[0], size2[1], in3, size3[0], size3[1])
+#define s2s2s2covars0(in1, size, in2, size2, in3, size3) scovars(in1, size[0], size[1], in2, size2[0], size2[1], in3, size3[0], size3[1])
+#define z2z2z2covarz0(in1, size, in2, size2, in3, size3) zcovars(in1, size[0], size[1], in2, size2[0], size2[1], in3, size3[0], size3[1])
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_COVAR_H__*/
diff --git a/src/c/statisticsFunctions/interfaces/int_gsort.h b/src/c/statisticsFunctions/interfaces/int_gsort.h
new file mode 100644
index 00000000..d1e9bb97
--- /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/interfaces/int_mad.h b/src/c/statisticsFunctions/interfaces/int_mad.h
new file mode 100644
index 00000000..956323da
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_mad.h
@@ -0,0 +1,35 @@
+/* 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_MAD_H__
+#define __INT_MAD_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2madd0(in1, size) dmada(in1, size[0]* size[1])
+#define d2g2madd2(in1, size1, in2, size2, out) (in2[0]== 'r') ? dmadrowa(in1, size1[0], size1[1], out) :dmadcola(in1, size1[0], size1[1], out)
+
+#define s2mads0(in1, size) smada(in1, size[0]* size[1])
+#define s2g2mads2(in1, size1, in2, size2, out) (in2[0]== 'r') ? smadrowa(in1, size1[0], size1[1], out) :smadcola(in1, size1[0], size1[1], out)
+
+#define z2madz0(in1, size) zmada(in1, size[0]* size[1])
+#define z2g2madz2(in1, size1, in2, size2, out) (in2[0]== 'r') ? zmadrowa(in1, size1[0], size1[1], out) :zmadcola(in1, size1[0], size1[1], out)
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_MAD_H__*/
diff --git a/src/c/statisticsFunctions/interfaces/int_median.h b/src/c/statisticsFunctions/interfaces/int_median.h
new file mode 100644
index 00000000..e9f3578b
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_median.h
@@ -0,0 +1,39 @@
+/* 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_MEDIAN_H__
+#define __INT_MEDIAN_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2mediand0(in1, size) dmediana(in1, size[0]* size[1])
+#define d2g2mediand2(in1, size1, in2, size2, out) (in2[0]== 'r') ? dmedianrowa(in1, size1[0], size1[1], out) :dmediancola(in1, size1[0], size1[1], out)
+
+#define s2medians0(in1, size) smediana(in1, size[0]* size[1])
+#define s2g2medians2(in1, size1, in2, size2, out) (in2[0]== 'r') ? smedianrowa(in1, size1[0], size1[1], out) :smediancola(in1, size1[0], size1[1], out)
+
+#define u162medianu160(in1, size) u16mediana(in1, size[0]* size[1])
+#define u162g2medianu162(in1, size1, in2, size2, out) (in2[0]== 'r') ? u16medianrowa(in1, size1[0], size1[1], out) :u16mediancola(in1, size1[0], size1[1], out)
+
+#define z2medianz0(in1, size) zmediana(in1, size[0]* size[1])
+#define z2g2medianz2(in1, size1, in2, size2, out) (in2[0]== 'r') ? zmedianrowa(in1, size1[0], size1[1], out) :zmediancola(in1, size1[0], size1[1], out)
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_MEDIAN_H__*/
diff --git a/src/c/statisticsFunctions/interfaces/int_moment.h b/src/c/statisticsFunctions/interfaces/int_moment.h
new file mode 100644
index 00000000..5e9a0362
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_moment.h
@@ -0,0 +1,33 @@
+ /* 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: Brijesh Gupta C R
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_MOMENT_H__
+#define __INT_MOMENT_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2d0momentd0(in1,size,in2) dmoments(in1,size[0]*size[1], in2)
+#define d2d0g2momentd2(in1, size, in2, in3, size2 ,out) (in3[0] == 'r') ? dmomentrowa(in1, size[0], size[1], in2, out) : dmomentcola(in1, size[0], size[1], in2, out)
+
+#define s2d0moments0(in1,size,in2) smoments(in1,size[0]*size[1], in2)
+#define s2d0g2moments2(in1, size, in2, in3, size2 ,out) (in3[0] == 'r') ? smomentrowa(in1, size[0], size[1], in2, out) : smomentcola(in1, size[0], size[1], in2, out)
+
+#define z2d0momentz0(in1,size,in2) zmoments(in1,size[0]*size[1], in2)
+#define z2d0g2momentz2(in1, size, in2, in3, size2 ,out) (in3[0] == 'r') ? zmomentrowa(in1, size[0], size[1], in2, out) : zmomentcola(in1, size[0], size[1], in2, out)
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_MOMENT_H__*/
diff --git a/src/c/statisticsFunctions/interfaces/int_mvcorrel.h b/src/c/statisticsFunctions/interfaces/int_mvcorrel.h
new file mode 100644
index 00000000..481841fb
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_mvcorrel.h
@@ -0,0 +1,33 @@
+/* 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_MVCORREL_H__
+#define __INT_MVCORREL_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2mvcorreld2(in1, size, out) dmvcorrela(in1, size[0] ,size[1], out)
+#define d2mvcorreld0(in1, size) dmvcorrel1a( size[0], size[1] )
+#define d0mvcorreld0(in1) dmvcorrel1a( 1,1 )
+
+#define s2mvcorrels2(in1, size, out) smvcorrela(in1, size[0] ,size[1], out)
+#define s2mvcorrels0(in1, size) smvcorrel1a( size[0], size[1] )
+#define s0mvcorrels0(in1) smvcorrel1a( 1,1 )
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_MVCORREL_H__*/
diff --git a/src/c/statisticsFunctions/interfaces/int_nanmedian.h b/src/c/statisticsFunctions/interfaces/int_nanmedian.h
new file mode 100644
index 00000000..6fd08b46
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_nanmedian.h
@@ -0,0 +1,26 @@
+ /*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_NANMEDIAN_H__
+#define __INT_NANMEDIAN_H__
+
+#define d2nanmediand0(in1, size) dnanmediana(in1,size[0]* size[1])
+#define d2g2nanmediand2(in1, size1, in2, size2, out) (in2[0]=='r') ? dnanmedianrowa(in1, size1[0], size1[1], out) : dnanmediancola(in1, size1[0] , size1[1], out)
+
+#define s2nanmedians0(in1, size) snanmediana(in1,size[0]* size[1])
+#define s2g2nanmedians2(in1, size1, in2, size2, out) (in2[0]=='r') ? snanmedianrowa(in1, size1[0], size1[1], out) : snanmediancola(in1, size1[0] , size1[1], out)
+
+#define z2nanmedianz0(in1, size) znanmediana(in1,size[0]* size[1])
+#define z2g2nanmedianz2(in1, size1, in2, size2, out) (in2[0]=='r') ? znanmedianrowa(in1, size1[0], size1[1], out) : znanmediancola(in1, size1[0] , size1[1], out)
+
+
+#endif
diff --git a/src/c/statisticsFunctions/interfaces/int_nanstdev.h b/src/c/statisticsFunctions/interfaces/int_nanstdev.h
new file mode 100644
index 00000000..1d652ee1
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_nanstdev.h
@@ -0,0 +1,23 @@
+ /*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_NANSTDEV_H__
+#define __INT_NANSTDEV_H__
+
+#define d2nanstdevd0(in1, size) dnanstdeva(in1,size[0]* size[1])
+#define d2g2nanstdevd2(in1, size1, in2, size2, out) (in2[0]=='r') ? dnanstdevrowa(in1, size1[0], size1[1], out) : dnanstdevcola(in1, size1[0] , size1[1], out)
+
+#define s2nanstdevs0(in1, size) snanstdeva(in1,size[0]* size[1])
+#define s2g2nanstdevs2(in1, size1, in2, size2, out) (in2[0]=='r') ? snanstdevrowa(in1, size1[0], size1[1], out) : snanstdevcola(in1, size1[0] , size1[1], out)
+
+
+#endif
diff --git a/src/c/statisticsFunctions/interfaces/int_statMax.h b/src/c/statisticsFunctions/interfaces/int_statMax.h
new file mode 100644
index 00000000..6d28186b
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_statMax.h
@@ -0,0 +1,161 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_STATMAX_H__
+#define __INT_STATMAX_H__
+//#ifndef __INT_MAX_H__
+//#define __INT_MAX_H__
+
+#define s0maxs0(in) in
+
+#define d0maxd0(in) in
+
+#define u80maxu80(in) (uint8)in
+
+#define u160maxu160(in) (uint16)in
+
+#define i80maxi80(in) (int8)in
+
+#define i160maxi160(in) (int16)in
+
+#define s2maxs0(in,size) smaxa(in, size[0]*size[1])
+
+#define d2maxd0(in,size) dmaxa(in, size[0]*size[1])
+
+#define c2maxc0(in,size) cmaxa(in, size[0]*size[1])
+
+#define z2maxz0(in,size) zmaxa(in, size[0]*size[1])
+
+#define u82maxu80(in,size) u8maxa(in, size[0]*size[1])
+
+#define u162maxu160(in,size) u16maxa(in, size[0]*size[1])
+
+#define i82maxi80(in,size) i8maxa(in, size[0]*size[1])
+
+#define i162maxi160(in,size) i16maxa(in, size[0]*size[1])
+
+
+
+#define s0s0maxs0(in1,in2) max(in1,in2)
+
+#define d0d0maxd0(in1,in2) max(in1,in2)
+
+#define u80u80maxu80(in1,in2) max(in1,in2)
+
+#define u160u160maxu160(in1,in2) max(in1,in2)
+
+#define i80i80maxi80(in1,in2) max(in1,in2)
+
+#define i160i160maxi160(in1,in2) max(in1,in2)
+
+#define s2s2maxs2(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+#define d2d2maxd2(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+#define u82u82maxu82(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+#define u162u162maxu162(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+#define i82i82maxi82(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+#define i162i162maxi162(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+
+#define s2s0maxs2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define d2d0maxd2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define u82u80maxu82(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define u162u160maxu162(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define i82i80maxi82(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define i162i160maxi162(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define s0s2maxs2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+#define d0d2maxd2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+#define u80u82maxu82(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+#define u160u162maxu162(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+#define i80i82maxi82(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+#define i160i162maxi162(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+/*'r' and 'c' case */
+#define s0g2maxs0(in1,in2,size2) (in2[0]=='r') ? srowmaxs(in1) : scolumnmaxs(in1)
+
+#define d0g2maxd0(in1,in2,size2) (in2[0]=='r') ? drowmaxs(in1) : dcolumnmaxs(in1)
+
+#define c0g2maxc0(in1,in2,size2) (in2[0]=='r') ? crowmaxs(in1) : ccolumnmaxs(in1)
+
+#define z0g2maxz0(in1,in2,size2) (in2[0]=='r') ? zrowmaxs(in1) : zcolumnmaxs(in1)
+
+#define u80g2maxu80(in1,in2,size2) (in2[0]=='r') ? u8rowmaxs(in1) : u8columnmaxs(in1)
+
+#define u160g2maxu160(in1,in2,size2) (in2[0]=='r') ? u16rowmaxs(in1) : u16columnmaxs(in1)
+
+#define i80g2maxi80(in1,in2,size2) (in2[0]=='r') ? i8rowmaxs(in1) : i8columnmaxs(in1)
+
+#define i160g2maxi160(in1,in2,size2) (in2[0]=='r') ? i16rowmaxs(in1) : i16columnmaxs(in1)
+
+
+#define s2g2maxs2(in1,size1,in2,size2,out) (in2[0]=='r') ? srowmaxa(in1,size1[0],size1[1],out) : scolumnmaxa(in1,size1[0],size1[1],out)
+
+#define d2g2maxd2(in1,size1,in2,size2,out) (in2[0]=='r') ? drowmaxa(in1,size1[0],size1[1],out) : dcolumnmaxa(in1,size1[0],size1[1],out)
+
+#define c2g2maxc2(in1,size1,in2,size2,out) (in2[0]=='r') ? crowmaxa(in1,size1[0],size1[1],out) : ccolumnmaxa(in1,size1[0],size1[1],out)
+
+#define z2g2maxz2(in1,size1,in2,size2,out) (in2[0]=='r') ? zrowmaxa(in1,size1[0],size1[1],out) : zcolumnmaxa(in1,size1[0],size1[1],out)
+
+#define u82g2maxu82(in1,size1,in2,size2,out) (in2[0]=='r') ? u8rowmaxa(in1,size1[0],size1[1],out) : u8columnmaxa(in1,size1[0],size1[1],out)
+
+#define u162g2maxu162(in1,size1,in2,size2,out) (in2[0]=='r') ? u16rowmaxa(in1,size1[0],size1[1],out) : u16columnmaxa(in1,size1[0],size1[1],out)
+
+#define i82g2maxi82(in1,size1,in2,size2,out) (in2[0]=='r') ? i8rowmaxa(in1,size1[0],size1[1],out) : i8columnmaxa(in1,size1[0],size1[1],out)
+
+#define i162g2maxi162(in1,size1,in2,size2,out) (in2[0]=='r') ? i16rowmaxa(in1,size1[0],size1[1],out) : i16columnmaxa(in1,size1[0],size1[1],out)
+
+
+
+
+
+#endif /* !__INT_STATMAX_H__ */
diff --git a/src/c/statisticsFunctions/interfaces/int_statMin.h b/src/c/statisticsFunctions/interfaces/int_statMin.h
new file mode 100644
index 00000000..39187efe
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_statMin.h
@@ -0,0 +1,162 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_STATMIN_H__
+#define __INT_STATMIN_H__
+//#ifndef __INT_MIN_H__
+//#define __INT_MIN_H__
+
+#define s0mins0(in) in
+
+#define d0mind0(in) in
+
+#define u80minu80(in) (uint8)in
+
+#define u160minu160(in) (uint16)in
+
+#define i80mini80(in) (int8)in
+
+#define i160mini160(in) (int16)in
+
+#define s2mins0(in,size) smina(in, size[0]*size[1])
+
+#define d2mind0(in,size) dmina(in, size[0]*size[1])
+
+#define c2minc0(in,size) cmina(in, size[0]*size[1])
+
+#define z2minz0(in,size) zmina(in, size[0]*size[1])
+
+#define u82minu80(in,size) u8mina(in, size[0]*size[1])
+
+#define u162minu160(in,size) u16mina(in, size[0]*size[1])
+
+#define i82mini80(in,size) i8mina(in, size[0]*size[1])
+
+#define i162mini160(in,size) i16mina(in, size[0]*size[1])
+
+
+
+#define s0s0mins0(in1,in2) min(in1,in2)
+
+#define d0d0mind0(in1,in2) min(in1,in2)
+
+#define u80u80minu80(in1,in2) min(in1,in2)
+
+#define u160u160minu160(in1,in2) min(in1,in2)
+
+#define i80i80mini80(in1,in2) min(in1,in2)
+
+#define i160i160mini160(in1,in2) min(in1,in2)
+
+#define s2s2mins2(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+#define d2d2mind2(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+#define u82u82minu82(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+#define u162u162minu162(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+#define i82i82mini82(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+#define i162i162mini162(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+
+#define s2s0mins2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define d2d0mind2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define u82u80minu82(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define u162u160minu162(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define i82i80mini82(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define i162i160mini162(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define s0s2mins2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+#define d0d2mind2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+#define u80u82minu82(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+#define u160u162minu162(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+#define i80i82mini82(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+#define i160i162mini162(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+
+/*'r' and 'c' case */
+#define s0g2mins0(in1,in2,size2) (in2[0]=='r') ? srowmins(in1) : scolumnmins(in1)
+
+#define d0g2mind0(in1,in2,size2) (in2[0]=='r') ? drowmins(in1) : dcolumnmins(in1)
+
+#define c0g2minc0(in1,in2,size2) (in2[0]=='r') ? crowmins(in1) : ccolumnmins(in1)
+
+#define z0g2minz0(in1,in2,size2) (in2[0]=='r') ? zrowmins(in1) : zcolumnmins(in1)
+
+#define u80g2minu80(in1,in2,size2) (in2[0]=='r') ? u8rowmins(in1) : u8columnmins(in1)
+
+#define u160g2minu160(in1,in2,size2) (in2[0]=='r') ? u16rowmins(in1) : u16columnmins(in1)
+
+#define i80g2mini80(in1,in2,size2) (in2[0]=='r') ? i8rowmins(in1) : i8columnmins(in1)
+
+#define i160g2mini160(in1,in2,size2) (in2[0]=='r') ? i16rowmins(in1) : i16columnmins(in1)
+
+
+#define s2g2mins2(in1,size,in2,size2,out) (in2[0]=='r') ? srowmina(in1,size[0],size[1],out) : scolumnmina(in1,size[0],size[1],out)
+
+#define d2g2mind2(in1,size,in2,size2,out) (in2[0]=='r') ? drowmina(in1,size[0],size[1],out) : dcolumnmina(in1,size[0],size[1],out)
+
+#define c2g2minc2(in1,size,in2,size2,out) (in2[0]=='r') ? crowmina(in1,size[0],size[1],out) : ccolumnmina(in1,size[0],size[1],out)
+
+#define z2g2minz2(in1,size,in2,size2,out) (in2[0]=='r') ? zrowmina(in1,size[0],size[1],out) : zcolumnmina(in1,size[0],size[1],out)
+
+#define u82g2minu82(in1,size,in2,size2,out) (in2[0]=='r') ? u8rowmina(in1,size[0],size[1],out) : u8columnmina(in1,size[0],size[1],out)
+
+#define u162g2minu162(in1,size,in2,size2,out) (in2[0]=='r') ? u16rowmina(in1,size[0],size[1],out) : u16columnmina(in1,size[0],size[1],out)
+
+#define i82g2mini82(in1,size,in2,size2,out) (in2[0]=='r') ? i8rowmina(in1,size[0],size[1],out) : i8columnmina(in1,size[0],size[1],out)
+
+#define i162g2mini162(in1,size,in2,size2,out) (in2[0]=='r') ? i16rowmina(in1,size[0],size[1],out) : i16columnmina(in1,size[0],size[1],out)
+
+
+
+
+
+#endif /* !__INT_STATMIN_H__ */
diff --git a/src/c/statisticsFunctions/interfaces/int_stdev.h b/src/c/statisticsFunctions/interfaces/int_stdev.h
new file mode 100644
index 00000000..1e0b6a36
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_stdev.h
@@ -0,0 +1,32 @@
+/* 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_STDEV_H__
+#define __INT_STDEV_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2stdevd0(in1, size) dstdeva(in1, size[0]* size[1])
+#define d2g2stdevd2(in1, size1, in2, size2, out) (in2[0]== 'r') ? dstdevrowa(in1, size1[0], size1[1], out) :dstdevcola(in1, size1[0], size1[1], out)
+
+#define s2stdevs0(in1, size) sstdeva(in1, size[0]* size[1])
+#define s2g2stdevs2(in1, size1, in2, size2, out) (in2[0]== 'r') ? sstdevrowa(in1, size1[0], size1[1], out) :sstdevcola(in1, size1[0], size1[1], out)
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_STDEV_H__*/
diff --git a/src/c/statisticsFunctions/interfaces/int_strange.h b/src/c/statisticsFunctions/interfaces/int_strange.h
new file mode 100644
index 00000000..133ec2b6
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_strange.h
@@ -0,0 +1,26 @@
+ /*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_STRANGE_H__
+#define __INT_STRANGE_H__
+
+#define d2stranged0(in1, size) dstrangea(in1,size[0]* size[1])
+#define d2g2stranged2(in1, size1, in2, size2, out) (in2[0]=='r') ? dstrangerowa(in1, size1[0], size1[1], out) : dstrangecola(in1, size1[0] , size1[1], out)
+
+#define s2stranges0(in1, size) sstrangea(in1,size[0]* size[1])
+#define s2g2stranges2(in1, size1, in2, size2, out) (in2[0]=='r') ? sstrangerowa(in1, size1[0], size1[1], out) : sstrangecola(in1, size1[0] , size1[1], out)
+
+#define u162strangeu160(in1, size) u16strangea(in1,size[0]* size[1])
+#define u162g2strangeu162(in1, size1, in2, size2, out) (in2[0]=='r') ? u16strangerowa(in1, size1[0], size1[1], out) : u16strangecola(in1, size1[0] , size1[1], out)
+
+
+#endif
diff --git a/src/c/statisticsFunctions/interfaces/int_wcenter.h b/src/c/statisticsFunctions/interfaces/int_wcenter.h
new file mode 100644
index 00000000..38273af1
--- /dev/null
+++ b/src/c/statisticsFunctions/interfaces/int_wcenter.h
@@ -0,0 +1,36 @@
+ /* 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: Brijesh Gupta C R
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_WCENTER_H__
+#define __INT_WCENTER_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2wcenterd2(in1,size, out) dwcentera(in1,size[0],size[1],out)
+#define d2g2wcenterd2(in1, size, in2, size2 ,out) (in2[0] == 'r') ? dwcenterrowa(in1, size[0], size[1], out) : dwcentercola(in1, size[0], size[1], out)
+#define d2d0wcenterd2(in1, size, in2 ,out) (in2 == 1) ? dwcenterrowa(in1, size[0], size[1], out) : dwcentercola(in1, size[0], size[1], out)
+
+#define s2wcenters2(in1,size, out) swcentera(in1,size[0],size[1],out)
+#define s2g2wcenters2(in1, size, in2, size2 ,out) (in2[0] == 'r') ? swcenterrowa(in1, size[0], size[1], out) : swcentercola(in1, size[0], size[1], out)
+#define s2d0wcenters2(in1, size, in2 ,out) (in2 == 1) ? swcenterrowa(in1, size[0], size[1], out) : swcentercola(in1, size[0], size[1], out)
+
+#define z2wcenterz2(in1,size, out) zwcentera(in1,size[0],size[1],out)
+#define z2g2wcenterz2(in1, size, in2, size2 ,out) (in2[0] == 'r') ? zwcenterrowa(in1, size[0], size[1], out) : zwcentercola(in1, size[0], size[1], out)
+#define z2d0wcenterz2(in1, size, in2 ,out) (in2 == 1) ? zwcenterrowa(in1, size[0], size[1], out) : zwcentercola(in1, size[0], size[1], out)
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_WCENTER_H__*/
diff --git a/src/c/statisticsFunctions/mad/dmada.c b/src/c/statisticsFunctions/mad/dmada.c
new file mode 100644
index 00000000..907f78a8
--- /dev/null
+++ b/src/c/statisticsFunctions/mad/dmada.c
@@ -0,0 +1,38 @@
+/* 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 "mad.h"
+#include "types.h"
+#include "uint16.h"
+#include "mean.h"
+#include "addition.h"
+#include "abs.h"
+
+double dmada(double *in, int size)
+{
+ double fin = 0; double mean;
+
+ mean= dmeana(in, size);
+
+ for(int i=0; i< size; i++)
+ {
+
+ fin = dadds(fin, dabss(mean-in[i]));
+
+ }
+
+fin= fin/size;
+
+
+ return fin;
+}
diff --git a/src/c/statisticsFunctions/mad/dmadcola.c b/src/c/statisticsFunctions/mad/dmadcola.c
new file mode 100644
index 00000000..381f85ca
--- /dev/null
+++ b/src/c/statisticsFunctions/mad/dmadcola.c
@@ -0,0 +1,36 @@
+/* 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 "mad.h"
+#include "types.h"
+#include "uint16.h"
+#include "mean.h"
+#include "addition.h"
+#include "abs.h"
+
+void dmadcola(double *in, int row, int col, double* out)
+{
+ double inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= dmada( inter, col);
+
+ }
+}
diff --git a/src/c/statisticsFunctions/mad/dmadrowa.c b/src/c/statisticsFunctions/mad/dmadrowa.c
new file mode 100644
index 00000000..2b47ba06
--- /dev/null
+++ b/src/c/statisticsFunctions/mad/dmadrowa.c
@@ -0,0 +1,36 @@
+/* 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 "mad.h"
+#include "types.h"
+#include "uint16.h"
+#include "mean.h"
+#include "addition.h"
+#include "abs.h"
+
+void dmadrowa(double *in, int row, int col, double* out)
+{
+ double inter[row];
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= dmada( inter, row);
+
+ }
+
+}
diff --git a/src/c/statisticsFunctions/mad/smada.c b/src/c/statisticsFunctions/mad/smada.c
new file mode 100644
index 00000000..241e337d
--- /dev/null
+++ b/src/c/statisticsFunctions/mad/smada.c
@@ -0,0 +1,38 @@
+/* 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 "mad.h"
+#include "types.h"
+#include "uint16.h"
+#include "mean.h"
+#include "addition.h"
+#include "abs.h"
+
+float smada(float *in, int size)
+{
+ float fin = 0; float mean;
+
+ mean= smeana(in, size);
+
+ for(int i=0; i< size; i++)
+ {
+
+ fin = sadds(fin, sabss(mean-in[i]));
+
+ }
+
+fin= fin/size;
+
+
+ return fin;
+}
diff --git a/src/c/statisticsFunctions/mad/smadcola.c b/src/c/statisticsFunctions/mad/smadcola.c
new file mode 100644
index 00000000..c6f5e753
--- /dev/null
+++ b/src/c/statisticsFunctions/mad/smadcola.c
@@ -0,0 +1,36 @@
+/* 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 "mad.h"
+#include "types.h"
+#include "uint16.h"
+#include "mean.h"
+#include "addition.h"
+#include "abs.h"
+
+void smadcola(float* in, int row, int col, float* out)
+{
+ float inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= smada( inter, col);
+
+ }
+}
diff --git a/src/c/statisticsFunctions/mad/smadrowa.c b/src/c/statisticsFunctions/mad/smadrowa.c
new file mode 100644
index 00000000..3fbd917b
--- /dev/null
+++ b/src/c/statisticsFunctions/mad/smadrowa.c
@@ -0,0 +1,36 @@
+/* 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 "mad.h"
+#include "types.h"
+#include "uint16.h"
+#include "mean.h"
+#include "addition.h"
+#include "abs.h"
+
+void smadrowa(float *in, int row, int col, float* out)
+{
+ float inter[row];
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= smada( inter, row);
+
+ }
+
+}
diff --git a/src/c/statisticsFunctions/mad/zmada.c b/src/c/statisticsFunctions/mad/zmada.c
new file mode 100644
index 00000000..9531e3b7
--- /dev/null
+++ b/src/c/statisticsFunctions/mad/zmada.c
@@ -0,0 +1,40 @@
+/* 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 "mad.h"
+#include "types.h"
+#include "doubleComplex.h"
+#include "mean.h"
+#include "addition.h"
+#include "abs.h"
+#include "subtraction.h"
+#include "division.h"
+
+doubleComplex zmada(doubleComplex *in, int size)
+{
+ doubleComplex fin = DoubleComplex(0,0); doubleComplex mean;
+
+ mean= zmeana(in, size);
+
+ for(int i=0; i< size; i++)
+ {
+
+ fin = zadds(fin, zabss(zdiffs(mean,in[i])));
+
+ }
+
+fin= zrdivs(fin,size);
+
+
+ return fin;
+}
diff --git a/src/c/statisticsFunctions/mad/zmadcola.c b/src/c/statisticsFunctions/mad/zmadcola.c
new file mode 100644
index 00000000..a70841b3
--- /dev/null
+++ b/src/c/statisticsFunctions/mad/zmadcola.c
@@ -0,0 +1,36 @@
+/* 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 "mad.h"
+#include "types.h"
+#include "doubleComplex.h"
+#include "mean.h"
+#include "addition.h"
+#include "abs.h"
+
+void zmadcola(doubleComplex* in, int row, int col, doubleComplex* out)
+{
+ doubleComplex inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= zmada( inter, col);
+
+ }
+}
diff --git a/src/c/statisticsFunctions/mad/zmadrowa.c b/src/c/statisticsFunctions/mad/zmadrowa.c
new file mode 100644
index 00000000..c279322c
--- /dev/null
+++ b/src/c/statisticsFunctions/mad/zmadrowa.c
@@ -0,0 +1,36 @@
+/* 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 "mad.h"
+#include "types.h"
+#include "doubleComplex.h"
+#include "mean.h"
+#include "addition.h"
+#include "abs.h"
+
+void zmadrowa(doubleComplex* in, int row, int col, doubleComplex* out)
+{
+ doubleComplex inter[row];
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= zmada( inter, row);
+
+ }
+
+}
diff --git a/src/c/statisticsFunctions/max/dcolumnmaxa.c b/src/c/statisticsFunctions/max/dcolumnmaxa.c
index ae0bbd47..ec717778 100644
--- a/src/c/statisticsFunctions/max/dcolumnmaxa.c
+++ b/src/c/statisticsFunctions/max/dcolumnmaxa.c
@@ -16,9 +16,10 @@ void dcolumnmaxa(double *in, int rows, int columns, double* out) {
int i = 0, j = 0;
for (i = 0; i < rows; i++) {
- out[i]=in[i];
+ out[i]=in[i*columns];
for (j=0;j<columns;j++)
- if (in[i+j*rows]>out[i]) out[i] = in[i+j*rows];
+ if (in[i+j*rows]>out[i])
+ out[i] = in[i+j*rows];
}
}
diff --git a/src/c/statisticsFunctions/max/dmaxa.c b/src/c/statisticsFunctions/max/dmaxa.c
index 5e2145e3..7292f3cd 100644
--- a/src/c/statisticsFunctions/max/dmaxa.c
+++ b/src/c/statisticsFunctions/max/dmaxa.c
@@ -18,7 +18,8 @@ double dmaxa(double *in, int size) {
for (i = 1; i < size; ++i)
{
- if (in[i]>out) out = in[i];
+ if (in[i]>out)
+ out = in[i];
}
return out;
diff --git a/src/c/statisticsFunctions/max/drowmaxa.c b/src/c/statisticsFunctions/max/drowmaxa.c
index a3099231..596c535f 100644
--- a/src/c/statisticsFunctions/max/drowmaxa.c
+++ b/src/c/statisticsFunctions/max/drowmaxa.c
@@ -14,10 +14,11 @@
void drowmaxa(double *in, int rows, int columns, double* out) {
int i = 0, j = 0;
-
- for (i = 0; i < columns; i++) {
+ for (i = 0; i < columns; i++)
+ {
out[i]=in[i*rows];
for (j = 1 ; j < rows ; j++)
- if (in[i*rows+j]>out[i]) out[i] = in[i*rows+j];
+ if (in[i*rows+j]>out[i])
+ out[i] = in[i*rows+j];
}
}
diff --git a/src/c/statisticsFunctions/max/i16columnmaxa.c b/src/c/statisticsFunctions/max/i16columnmaxa.c
new file mode 100644
index 00000000..87cc579c
--- /dev/null
+++ b/src/c/statisticsFunctions/max/i16columnmaxa.c
@@ -0,0 +1,25 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+void i16columnmaxa(int16 *in, int rows, int columns, int16* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(int16)in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]>out[i])
+ out[i] = (int16)in[i+j*rows];
+ }
+
+}
diff --git a/src/c/statisticsFunctions/max/i16maxa.c b/src/c/statisticsFunctions/max/i16maxa.c
new file mode 100644
index 00000000..b2eab344
--- /dev/null
+++ b/src/c/statisticsFunctions/max/i16maxa.c
@@ -0,0 +1,26 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+int16 i16maxa(int16 *in, int size) {
+ int16 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]>out)
+ out = (int16)in[i];
+ }
+ return out;
+
+}
diff --git a/src/c/statisticsFunctions/max/i16rowmaxa.c b/src/c/statisticsFunctions/max/i16rowmaxa.c
new file mode 100644
index 00000000..46c4ae29
--- /dev/null
+++ b/src/c/statisticsFunctions/max/i16rowmaxa.c
@@ -0,0 +1,24 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+void i16rowmaxa(int16 *in, int rows, int columns, int16* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=(int16)in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]>out[i])
+ out[i] = (int16)in[i*rows+j];
+ }
+}
diff --git a/src/c/statisticsFunctions/max/i8columnmaxa.c b/src/c/statisticsFunctions/max/i8columnmaxa.c
new file mode 100644
index 00000000..6c7ea25c
--- /dev/null
+++ b/src/c/statisticsFunctions/max/i8columnmaxa.c
@@ -0,0 +1,25 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+void i8columnmaxa(int8 *in, int rows, int columns, int8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(int8)in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]>out[i])
+ out[i] = (int8)in[i+j*rows];
+ }
+
+}
diff --git a/src/c/statisticsFunctions/max/i8maxa.c b/src/c/statisticsFunctions/max/i8maxa.c
new file mode 100644
index 00000000..d57b9957
--- /dev/null
+++ b/src/c/statisticsFunctions/max/i8maxa.c
@@ -0,0 +1,25 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "statMax.h"
+
+int8 i8maxa(int8 *in, int size) {
+ int8 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]>out)
+ out = (int8)in[i];
+ }
+ return out;
+
+}
diff --git a/src/c/statisticsFunctions/max/i8rowmaxa.c b/src/c/statisticsFunctions/max/i8rowmaxa.c
new file mode 100644
index 00000000..677c61c7
--- /dev/null
+++ b/src/c/statisticsFunctions/max/i8rowmaxa.c
@@ -0,0 +1,24 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+void i8rowmaxa(int8 *in, int rows, int columns, int8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=(int8)in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]>out[i])
+ out[i] = (int8)in[i*rows+j];
+ }
+}
diff --git a/src/c/statisticsFunctions/max/scolumnmaxa.c b/src/c/statisticsFunctions/max/scolumnmaxa.c
index 71af8460..185ab985 100644
--- a/src/c/statisticsFunctions/max/scolumnmaxa.c
+++ b/src/c/statisticsFunctions/max/scolumnmaxa.c
@@ -16,7 +16,7 @@ void scolumnmaxa(float *in, int rows, int columns, float* out) {
int i = 0, j = 0;
for (i = 0; i < rows; i++) {
- out[i]=in[i];
+ out[i]=in[i*columns];
for (j=0;j<columns;j++)
if (in[i+j*rows]>out[i]) out[i] = in[i+j*rows];
}
diff --git a/src/c/statisticsFunctions/max/smaxa.c b/src/c/statisticsFunctions/max/smaxa.c
index f47fcffe..3410faea 100644
--- a/src/c/statisticsFunctions/max/smaxa.c
+++ b/src/c/statisticsFunctions/max/smaxa.c
@@ -9,9 +9,9 @@
* http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
*
*/
-
#include "statMax.h"
+
float smaxa(float *in, int size) {
float out = in[0];
int i = 0;
diff --git a/src/c/statisticsFunctions/max/srowmaxa.c b/src/c/statisticsFunctions/max/srowmaxa.c
index c87ccf7f..8f3b30ee 100644
--- a/src/c/statisticsFunctions/max/srowmaxa.c
+++ b/src/c/statisticsFunctions/max/srowmaxa.c
@@ -9,9 +9,9 @@
* http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
*
*/
-
#include "statMax.h"
+
void srowmaxa(float *in, int rows, int columns, float* out) {
int i = 0, j = 0;
diff --git a/src/c/statisticsFunctions/max/testDoubleMax.c b/src/c/statisticsFunctions/max/testDoubleMax.c
index 81c50324..883b427f 100644
--- a/src/c/statisticsFunctions/max/testDoubleMax.c
+++ b/src/c/statisticsFunctions/max/testDoubleMax.c
@@ -11,8 +11,8 @@
*/
-
#include "statMax.h"
+//#include "max.h"
#include "assert.h"
#include "stdio.h"
diff --git a/src/c/statisticsFunctions/max/testFloatMax.c b/src/c/statisticsFunctions/max/testFloatMax.c
index 7741aef4..cb572f7e 100644
--- a/src/c/statisticsFunctions/max/testFloatMax.c
+++ b/src/c/statisticsFunctions/max/testFloatMax.c
@@ -13,6 +13,7 @@
#include "statMax.h"
+//#include "max.h"
#include "assert.h"
#include "stdio.h"
diff --git a/src/c/statisticsFunctions/max/u16columnmaxa.c b/src/c/statisticsFunctions/max/u16columnmaxa.c
new file mode 100644
index 00000000..5b4f4236
--- /dev/null
+++ b/src/c/statisticsFunctions/max/u16columnmaxa.c
@@ -0,0 +1,26 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+void u16columnmaxa(uint16 *in, int rows, int columns, uint16* out) {
+ int i = 0, j = 0;
+
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(uint16)in[i];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]>out[i])
+ out[i] = (uint16)in[i+j*rows];
+ }
+
+}
diff --git a/src/c/statisticsFunctions/max/u16maxa.c b/src/c/statisticsFunctions/max/u16maxa.c
new file mode 100644
index 00000000..7c9078d5
--- /dev/null
+++ b/src/c/statisticsFunctions/max/u16maxa.c
@@ -0,0 +1,25 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "statMax.h"
+
+uint16 u16maxa(uint16 *in, int size) {
+ uint16 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]>out)
+ out = (uint16)in[i];
+ }
+ return out;
+
+}
diff --git a/src/c/statisticsFunctions/max/u16rowmaxa.c b/src/c/statisticsFunctions/max/u16rowmaxa.c
new file mode 100644
index 00000000..eacbe848
--- /dev/null
+++ b/src/c/statisticsFunctions/max/u16rowmaxa.c
@@ -0,0 +1,27 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "statMax.h"
+
+void u16rowmaxa(uint16 *in, int rows, int columns, uint16* out) {
+ int i = 0, j = 0;
+ //out = malloc(columns*sizeof(uint16));
+ for (i = 0; i < columns; i++)
+ {
+ out[i]=(uint16)in[i];
+ for (j = 1 ; j < rows ; j++)
+ {
+ if (in[j*columns+i]>out[i])
+ out[i] = (uint16)in[j*columns+i];
+ }
+ }
+
+}
diff --git a/src/c/statisticsFunctions/max/u8columnmaxa.c b/src/c/statisticsFunctions/max/u8columnmaxa.c
new file mode 100644
index 00000000..ac9bc086
--- /dev/null
+++ b/src/c/statisticsFunctions/max/u8columnmaxa.c
@@ -0,0 +1,26 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "statMax.h"
+
+
+void u8columnmaxa(uint8 *in, int rows, int columns, uint8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++)
+{
+ out[i]=(uint8)in[0];
+ for (j=0;j<columns;j++)
+ if (in[j]>out[i])
+ out[i] = (uint8)in[j];
+ }
+
+}
diff --git a/src/c/statisticsFunctions/max/u8maxa.c b/src/c/statisticsFunctions/max/u8maxa.c
new file mode 100644
index 00000000..3f84af41
--- /dev/null
+++ b/src/c/statisticsFunctions/max/u8maxa.c
@@ -0,0 +1,26 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+uint8 u8maxa(uint8 *in, int size) {
+ uint8 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]>out)
+ out = (uint8)in[i];
+ }
+ return out;
+
+}
diff --git a/src/c/statisticsFunctions/max/u8rowmaxa.c b/src/c/statisticsFunctions/max/u8rowmaxa.c
new file mode 100644
index 00000000..0ddae26d
--- /dev/null
+++ b/src/c/statisticsFunctions/max/u8rowmaxa.c
@@ -0,0 +1,28 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "statMax.h"
+
+
+void u8rowmaxa(uint8 *in, int rows, int columns, uint8* out) {
+ int i = 0, j = 0;
+
+
+ for (i = 0; i < columns; i++)
+ {
+ out[i]=(uint8)in[0];
+ for (j = 0 ; j < rows ; j++)
+ {
+ if (in[j]>out[i])
+ out[i] = (uint8)in[j];
+ }
+ }
+}
diff --git a/src/c/statisticsFunctions/median/dmediana.c b/src/c/statisticsFunctions/median/dmediana.c
new file mode 100644
index 00000000..8b37fd16
--- /dev/null
+++ b/src/c/statisticsFunctions/median/dmediana.c
@@ -0,0 +1,60 @@
+/* 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 "median.h"
+#include "types.h"
+#include "uint16.h"
+
+double dmediana(double *in, int size)
+{
+ 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)
+
+ {
+
+ 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(size%2 ==0)
+ {
+ fin= (in_copy[size/2]+ in_copy[(size/2)-1])/2;
+ }
+ else
+ {
+ fin= in_copy[(size-1)/2];
+ }
+
+ return fin;
+}
diff --git a/src/c/statisticsFunctions/median/dmediancola.c b/src/c/statisticsFunctions/median/dmediancola.c
new file mode 100644
index 00000000..b3ff4fb8
--- /dev/null
+++ b/src/c/statisticsFunctions/median/dmediancola.c
@@ -0,0 +1,35 @@
+/* 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 "median.h"
+#include "types.h"
+#include "uint16.h"
+
+void dmediancola(double *in, int row, int col, double* out)
+{
+ double inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= dmediana( inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/median/dmedianrowa.c b/src/c/statisticsFunctions/median/dmedianrowa.c
new file mode 100644
index 00000000..4b5879c5
--- /dev/null
+++ b/src/c/statisticsFunctions/median/dmedianrowa.c
@@ -0,0 +1,36 @@
+/* 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 "median.h"
+#include "types.h"
+#include "uint16.h"
+
+void dmedianrowa(double *in, int row, int col, double* out)
+{
+ double inter[row];
+
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= dmediana( inter, row);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/median/smediana.c b/src/c/statisticsFunctions/median/smediana.c
new file mode 100644
index 00000000..0d427e10
--- /dev/null
+++ b/src/c/statisticsFunctions/median/smediana.c
@@ -0,0 +1,59 @@
+/* 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 "median.h"
+#include "types.h"
+#include "uint16.h"
+
+float smediana(float *in, int size)
+{
+ 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)
+
+ {
+
+ 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(size%2 ==0)
+ {
+ fin= (in_copy[size/2]+ in_copy[(size/2)-1])/2;
+ }
+ else
+ {
+ fin= in_copy[(size-1)/2];
+ }
+
+ return fin;
+}
diff --git a/src/c/statisticsFunctions/median/smediancola.c b/src/c/statisticsFunctions/median/smediancola.c
new file mode 100644
index 00000000..2fc4eaf1
--- /dev/null
+++ b/src/c/statisticsFunctions/median/smediancola.c
@@ -0,0 +1,35 @@
+/* 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 "median.h"
+#include "types.h"
+#include "uint16.h"
+
+void smediancola(float *in, int row, int col, float* out)
+{
+ float inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= smediana( inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/median/smedianrowa.c b/src/c/statisticsFunctions/median/smedianrowa.c
new file mode 100644
index 00000000..aab59382
--- /dev/null
+++ b/src/c/statisticsFunctions/median/smedianrowa.c
@@ -0,0 +1,36 @@
+/* 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 "median.h"
+#include "types.h"
+#include "uint16.h"
+
+void smedianrowa(float *in, int row, int col, float* out)
+{
+ float inter[row];
+
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= smediana( inter, row);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/median/u16mediana.c b/src/c/statisticsFunctions/median/u16mediana.c
new file mode 100644
index 00000000..85cfedce
--- /dev/null
+++ b/src/c/statisticsFunctions/median/u16mediana.c
@@ -0,0 +1,59 @@
+/* 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 "median.h"
+#include "types.h"
+#include "uint16.h"
+
+uint16 u16mediana(uint16 *in, int size)
+{
+ 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)
+
+ {
+
+ 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(size%2 ==0)
+ {
+ fin= (in_copy[size/2]+ in_copy[(size/2)-1])/2;
+ }
+ else
+ {
+ fin= in_copy[(size-1)/2];
+ }
+
+ return fin;
+}
diff --git a/src/c/statisticsFunctions/median/u16mediancola.c b/src/c/statisticsFunctions/median/u16mediancola.c
new file mode 100644
index 00000000..77952a35
--- /dev/null
+++ b/src/c/statisticsFunctions/median/u16mediancola.c
@@ -0,0 +1,35 @@
+/* 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 "median.h"
+#include "types.h"
+#include "uint16.h"
+
+void u16mediancola(uint16 *in, int row, int col, uint16* out)
+{
+ uint16 inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= u16mediana( inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/median/u16medianrowa.c b/src/c/statisticsFunctions/median/u16medianrowa.c
new file mode 100644
index 00000000..8e5b98ef
--- /dev/null
+++ b/src/c/statisticsFunctions/median/u16medianrowa.c
@@ -0,0 +1,36 @@
+/* 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 "median.h"
+#include "types.h"
+#include "uint16.h"
+
+void u16medianrowa(uint16 *in, int row, int col, uint16* out)
+{
+ uint16 inter[row];
+
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= u16mediana( inter, row);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/median/zmediana.c b/src/c/statisticsFunctions/median/zmediana.c
new file mode 100644
index 00000000..36804562
--- /dev/null
+++ b/src/c/statisticsFunctions/median/zmediana.c
@@ -0,0 +1,66 @@
+/* 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 "median.h"
+#include "types.h"
+#include "uint16.h"
+#include "doubleComplex.h"
+#include "addition.h"
+#include "division.h"
+#include "abs.h"
+
+doubleComplex zmediana(doubleComplex *in, int size)
+{
+ 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)
+
+ {
+
+ 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(size%2 ==0)
+ {
+ middle= zadds(in_copy[size/2], in_copy[(size/2)-1]);
+ fin= zrdivs(middle, DoubleComplex(2,0));
+ }
+ else
+ {
+ fin= in_copy[(size-1)/2];
+ }
+
+ return fin;
+}
diff --git a/src/c/statisticsFunctions/median/zmediancola.c b/src/c/statisticsFunctions/median/zmediancola.c
new file mode 100644
index 00000000..d709d98b
--- /dev/null
+++ b/src/c/statisticsFunctions/median/zmediancola.c
@@ -0,0 +1,36 @@
+/* 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 "median.h"
+#include "types.h"
+#include "uint16.h"
+#include "doubleComplex.h"
+
+void zmediancola(doubleComplex *in, int row, int col, doubleComplex * out)
+{
+ doubleComplex inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= zmediana( inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/median/zmedianrowa.c b/src/c/statisticsFunctions/median/zmedianrowa.c
new file mode 100644
index 00000000..ab2e0d4a
--- /dev/null
+++ b/src/c/statisticsFunctions/median/zmedianrowa.c
@@ -0,0 +1,37 @@
+/* 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 "median.h"
+#include "types.h"
+#include "uint16.h"
+#include "doubleComplex.h"
+
+void zmedianrowa(doubleComplex *in, int row, int col, doubleComplex* out)
+{
+ doubleComplex inter[row];
+
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= zmediana( inter, row);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/min/dcolumnmina.c b/src/c/statisticsFunctions/min/dcolumnmina.c
index e12cb8ff..6f0b3c1a 100644
--- a/src/c/statisticsFunctions/min/dcolumnmina.c
+++ b/src/c/statisticsFunctions/min/dcolumnmina.c
@@ -16,7 +16,7 @@ void dcolumnmina(double *in, int rows, int columns, double* out) {
int i = 0, j = 0;
for (i = 0; i < rows; i++) {
- out[i]=in[i];
+ out[i]=in[i*columns];
for (j=0;j<columns;j++)
if (in[i+j*rows]<out[i]) out[i] = in[i+j*rows];
}
diff --git a/src/c/statisticsFunctions/min/i16columnmina.c b/src/c/statisticsFunctions/min/i16columnmina.c
new file mode 100644
index 00000000..64ec334b
--- /dev/null
+++ b/src/c/statisticsFunctions/min/i16columnmina.c
@@ -0,0 +1,25 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void i16columnmina(int16 *in, int rows, int columns, int16* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(int16)in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]<out[i])
+ out[i] = (int16)in[i+j*rows];
+ }
+
+}
diff --git a/src/c/statisticsFunctions/min/i16mina.c b/src/c/statisticsFunctions/min/i16mina.c
new file mode 100644
index 00000000..402b946e
--- /dev/null
+++ b/src/c/statisticsFunctions/min/i16mina.c
@@ -0,0 +1,26 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+int16 i16mina(int16 *in, int size) {
+ int16 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]<out)
+ out = (int16)in[i];
+ }
+ return out;
+
+}
diff --git a/src/c/statisticsFunctions/min/i16rowmina.c b/src/c/statisticsFunctions/min/i16rowmina.c
new file mode 100644
index 00000000..51f575a6
--- /dev/null
+++ b/src/c/statisticsFunctions/min/i16rowmina.c
@@ -0,0 +1,24 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void i16rowmina(int16 *in, int rows, int columns, int16* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=(int16)in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]<out[i])
+ out[i] = (int16)in[i*rows+j];
+ }
+}
diff --git a/src/c/statisticsFunctions/min/i8columnmina.c b/src/c/statisticsFunctions/min/i8columnmina.c
new file mode 100644
index 00000000..041bc9b4
--- /dev/null
+++ b/src/c/statisticsFunctions/min/i8columnmina.c
@@ -0,0 +1,25 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void i8columnmina(int8 *in, int rows, int columns, int8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(int8)in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]<out[i])
+ out[i] = (int8)in[i+j*rows];
+ }
+
+}
diff --git a/src/c/statisticsFunctions/min/i8mina.c b/src/c/statisticsFunctions/min/i8mina.c
new file mode 100644
index 00000000..f7acac73
--- /dev/null
+++ b/src/c/statisticsFunctions/min/i8mina.c
@@ -0,0 +1,26 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+int8 i8mina(int8 *in, int size) {
+ int8 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]<out)
+ out = (int8)in[i];
+ }
+ return out;
+
+}
diff --git a/src/c/statisticsFunctions/min/i8rowmina.c b/src/c/statisticsFunctions/min/i8rowmina.c
new file mode 100644
index 00000000..1c573823
--- /dev/null
+++ b/src/c/statisticsFunctions/min/i8rowmina.c
@@ -0,0 +1,24 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void i8rowmina(int8 *in, int rows, int columns, int8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=(int8)in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]<out[i])
+ out[i] = (int8)in[i*rows+j];
+ }
+}
diff --git a/src/c/statisticsFunctions/min/scolumnmina.c b/src/c/statisticsFunctions/min/scolumnmina.c
index 79fac41a..8e19b1de 100644
--- a/src/c/statisticsFunctions/min/scolumnmina.c
+++ b/src/c/statisticsFunctions/min/scolumnmina.c
@@ -16,7 +16,7 @@ void scolumnmina(float *in, int rows, int columns, float* out) {
int i = 0, j = 0;
for (i = 0; i < rows; i++) {
- out[i]=in[i];
+ out[i]=in[i*columns];
for (j=0;j<columns;j++)
if (in[i+j*rows]<out[i]) out[i] = in[i+j*rows];
}
diff --git a/src/c/statisticsFunctions/min/u16columnmina.c b/src/c/statisticsFunctions/min/u16columnmina.c
new file mode 100644
index 00000000..1df155d2
--- /dev/null
+++ b/src/c/statisticsFunctions/min/u16columnmina.c
@@ -0,0 +1,25 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void u16columnmina(uint16 *in, int rows, int columns, uint16* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(uint16)in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]<out[i])
+ out[i] = (uint16)in[i+j*rows];
+ }
+
+}
diff --git a/src/c/statisticsFunctions/min/u16mina.c b/src/c/statisticsFunctions/min/u16mina.c
new file mode 100644
index 00000000..e09f0449
--- /dev/null
+++ b/src/c/statisticsFunctions/min/u16mina.c
@@ -0,0 +1,26 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+uint16 u16mina(uint16 *in, int size) {
+ uint16 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]<out)
+ out = (uint16)in[i];
+ }
+ return out;
+
+}
diff --git a/src/c/statisticsFunctions/min/u16rowmina.c b/src/c/statisticsFunctions/min/u16rowmina.c
new file mode 100644
index 00000000..dc4ba080
--- /dev/null
+++ b/src/c/statisticsFunctions/min/u16rowmina.c
@@ -0,0 +1,25 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "statMin.h"
+
+void u16rowmina(uint16 *in, int rows, int columns, uint16* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=(uint16)in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]<out[i])
+ out[i] = (uint16)in[i*rows+j];
+ }
+}
diff --git a/src/c/statisticsFunctions/min/u8columnmina.c b/src/c/statisticsFunctions/min/u8columnmina.c
new file mode 100644
index 00000000..07269fa4
--- /dev/null
+++ b/src/c/statisticsFunctions/min/u8columnmina.c
@@ -0,0 +1,25 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void u8columnmina(uint8 *in, int rows, int columns, uint8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(uint8)in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]<out[i])
+ out[i] = (uint8)in[i+j*rows];
+ }
+
+}
diff --git a/src/c/statisticsFunctions/min/u8mina.c b/src/c/statisticsFunctions/min/u8mina.c
new file mode 100644
index 00000000..579d1b3c
--- /dev/null
+++ b/src/c/statisticsFunctions/min/u8mina.c
@@ -0,0 +1,26 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+uint8 u8mina(uint8 *in, int size) {
+ uint8 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]<out)
+ out = (uint8)in[i];
+ }
+ return out;
+
+}
diff --git a/src/c/statisticsFunctions/min/u8rowmina.c b/src/c/statisticsFunctions/min/u8rowmina.c
new file mode 100644
index 00000000..2f1de4f1
--- /dev/null
+++ b/src/c/statisticsFunctions/min/u8rowmina.c
@@ -0,0 +1,24 @@
+/* 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: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void u8rowmina(uint8 *in, int rows, int columns, uint8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=(uint8)in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]<out[i])
+ out[i] = (uint8)in[i*rows+j];
+ }
+}
diff --git a/src/c/statisticsFunctions/moment/dmomentcola.c b/src/c/statisticsFunctions/moment/dmomentcola.c
new file mode 100644
index 00000000..538328e3
--- /dev/null
+++ b/src/c/statisticsFunctions/moment/dmomentcola.c
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "moment.h"
+
+void dmomentcola (double* inp, int row, int col, double ord, double* out)
+{
+ double vect[col];
+ for(int i = 0; i < row ; i++)
+ {
+ for(int j = 0; j < col ; j++)
+ {
+ vect[j] = inp[i + j*row];
+ }
+ out[i] = dmoments(vect, col, ord);
+ }
+
+}
diff --git a/src/c/statisticsFunctions/moment/dmomentrowa.c b/src/c/statisticsFunctions/moment/dmomentrowa.c
new file mode 100644
index 00000000..811aac39
--- /dev/null
+++ b/src/c/statisticsFunctions/moment/dmomentrowa.c
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "moment.h"
+
+void dmomentrowa (double* inp, int row, int col, double ord, double* out)
+{
+ double vect[row];
+ for(int i = 0; i < col ; i++)
+ {
+ for(int j = 0; j < row ; j++)
+ {
+ vect[j] = inp[j + i*row];
+ }
+ out[i] = dmoments(vect, row, ord);
+ }
+
+}
diff --git a/src/c/statisticsFunctions/moment/dmoments.c b/src/c/statisticsFunctions/moment/dmoments.c
new file mode 100644
index 00000000..779ffa0f
--- /dev/null
+++ b/src/c/statisticsFunctions/moment/dmoments.c
@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "moment.h"
+
+
+double dmoments (double* inp, int size, double ord)
+{
+ double sum = 0;
+
+ for(int i = 0; i < size; i++) // Elements are raised to the order and then their mean is calculated to give moment
+ {
+ sum = sum + pow(inp[i], ord);
+ }
+
+ return sum/size;
+}
diff --git a/src/c/statisticsFunctions/moment/smomentcola.c b/src/c/statisticsFunctions/moment/smomentcola.c
new file mode 100644
index 00000000..4255782c
--- /dev/null
+++ b/src/c/statisticsFunctions/moment/smomentcola.c
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "moment.h"
+
+void smomentcola (float* inp, int row, int col, double ord, float* out)
+{
+ float vect[col];
+ for(int i = 0; i < row ; i++)
+ {
+ for(int j = 0; j < col ; j++)
+ {
+ vect[j] = inp[i + j*row];
+ }
+ out[i] = smoments(vect, col, ord);
+ }
+
+}
diff --git a/src/c/statisticsFunctions/moment/smomentrowa.c b/src/c/statisticsFunctions/moment/smomentrowa.c
new file mode 100644
index 00000000..574ebe76
--- /dev/null
+++ b/src/c/statisticsFunctions/moment/smomentrowa.c
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "moment.h"
+
+void smomentrowa (float* inp, int row, int col, double ord, float* out)
+{
+ float vect[row];
+ for(int i = 0; i < col ; i++)
+ {
+ for(int j = 0; j < row ; j++)
+ {
+ vect[j] = inp[j + i*row];
+ }
+ out[i] = smoments(vect, row, ord);
+ }
+
+}
diff --git a/src/c/statisticsFunctions/moment/smoments.c b/src/c/statisticsFunctions/moment/smoments.c
new file mode 100644
index 00000000..c900d815
--- /dev/null
+++ b/src/c/statisticsFunctions/moment/smoments.c
@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "moment.h"
+
+
+float smoments (float* inp, int size, double ord)
+{
+ float sum = 0;
+
+ for(int i = 0; i < size; i++) // Elements are raised to the order and then their mean is calculated to give moment
+ {
+ sum = sum + pow(inp[i], ord);
+ }
+
+ return sum/size;
+}
diff --git a/src/c/statisticsFunctions/moment/zmomentcola.c b/src/c/statisticsFunctions/moment/zmomentcola.c
new file mode 100644
index 00000000..2b3cebb1
--- /dev/null
+++ b/src/c/statisticsFunctions/moment/zmomentcola.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "moment.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+
+void zmomentcola (doubleComplex* inp, int row, int col, double ord, doubleComplex* out)
+{
+ double vect[col];
+ for(int i = 0; i < row ; i++)
+ {
+ for(int j = 0; j < col ; j++)
+ {
+ vect[j] = inp[i + j*row];
+ }
+ out[i] = zmoments(vect, col, ord);
+ }
+
+}
diff --git a/src/c/statisticsFunctions/moment/zmomentrowa.c b/src/c/statisticsFunctions/moment/zmomentrowa.c
new file mode 100644
index 00000000..e1e1b47d
--- /dev/null
+++ b/src/c/statisticsFunctions/moment/zmomentrowa.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "moment.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+
+void zmomentrowa (doubleComplex* inp, int row, int col, double ord, doubleComplex* out)
+{
+ doubleComplex vect[row];
+ for(int i = 0; i < col ; i++)
+ {
+ for(int j = 0; j < row ; j++)
+ {
+ vect[j] = inp[j + i*row];
+ }
+ out[i] = zmoments(vect, row, ord);
+ }
+
+}
diff --git a/src/c/statisticsFunctions/moment/zmoments.c b/src/c/statisticsFunctions/moment/zmoments.c
new file mode 100644
index 00000000..b70df707
--- /dev/null
+++ b/src/c/statisticsFunctions/moment/zmoments.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "moment.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+#include "pow.h"
+#include "addition.h"
+#include "division.h"
+
+
+doubleComplex zmoments (doubleComplex* inp, int size, double ord)
+{
+ doubleComplex sum = DoubleComplex(0,0);
+
+ for(int i = 0; i < size; i++) // Elements are raised to the order and then their mean is calculated to give moment
+ {
+ sum = zadds(sum,zpows(inp[i], ord));
+ }
+
+ return zrdivs(sum,size);
+}
diff --git a/src/c/statisticsFunctions/mvcorrel/dmvcorrel1a.c b/src/c/statisticsFunctions/mvcorrel/dmvcorrel1a.c
new file mode 100644
index 00000000..9971e0fb
--- /dev/null
+++ b/src/c/statisticsFunctions/mvcorrel/dmvcorrel1a.c
@@ -0,0 +1,34 @@
+/* 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 "mvcorrel.h"
+#include "stdlib.h"
+#include "stdio.h"
+#include "types.h"
+#include "uint16.h"
+#include "zeros.h"
+#include "sum.h"
+#include "ones.h"
+#include "matrixMultiplication.h"
+#include "matrixTranspose.h"
+#include "subtraction.h"
+#include "division.h"
+
+double dmvcorrel1a(int lx, int cx)
+{
+ if(lx==1 && cx==1)
+ return 0;
+
+ else
+ return 1;
+}
diff --git a/src/c/statisticsFunctions/mvcorrel/dmvcorrela.c b/src/c/statisticsFunctions/mvcorrel/dmvcorrela.c
new file mode 100644
index 00000000..a1bacfdc
--- /dev/null
+++ b/src/c/statisticsFunctions/mvcorrel/dmvcorrela.c
@@ -0,0 +1,87 @@
+/* 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 "mvcorrel.h"
+#include "stdlib.h"
+#include "stdio.h"
+#include "pow.h"
+#include "division.h"
+#include "types.h"
+#include "uint16.h"
+#include "zeros.h"
+#include "sum.h"
+#include "ones.h"
+#include "matrixMultiplication.h"
+#include "matrixTranspose.h"
+#include "subtraction.h"
+#include "division.h"
+
+void dmvcorrela(double *in, int lx, int cx, double* r)
+{
+ double temp1[1* cx];
+ double xbar[1* cx];
+ double temp2[lx*1];
+ double temp3[lx*cx];
+ double temp4[lx*cx];
+ double temp4_trans[cx*lx];
+ double temp5[1* cx];
+ double temp6[lx*cx];
+ double std[1*cx];
+ double std_trans[cx*1];
+ double temp7[cx*cx];
+ double temp8[cx*cx];
+
+ donesa ( temp2 , lx , 1 ); //temp2= ones(lx,1)
+
+ if(lx==1)
+ {
+ dzerosa ( r , cx ,cx ); //out= zeros(lx,cx)
+
+ }
+
+ else
+ {
+
+ drowsuma(in, lx, cx, temp1); //temp1= sum(x, "r")
+
+ for(int i=0; i< 1*cx; i++)
+ xbar[i]= drdivs(temp1[i], lx); // xbar= sum(x, "r")/ lx
+/* //Debug Only*/
+/* for(int i= 0; i< 1*cx; i++)*/
+/* printf("xbar[%d]= %lf\t", i, xbar[i]);*/
+/* printf("\n");*/
+
+ dmulma(temp2, lx,1, xbar, 1, cx, temp3 ); //temp3= ones(lx,1)*xbar
+ ddiffa(in, lx*cx, temp3, lx*cx, temp4); //temp4= r= x-ones(lx,1)*xbar
+ for(int i=0; i< lx*cx; i++)
+ temp6[i]= dpows(temp4[i], 2); //temp6= r.^2
+ drowsuma(temp6, lx, cx, temp5); //temp5= sum(r.^2, "r")
+ for(int i=0; i< 1*cx; i++)
+ std[i]= dpows(temp5[i], 0.5); //std=(sum(r .^2,"r")) .^ (0.5)
+/* //Debug Only*/
+/* for(int i= 0; i< 1*cx; i++)*/
+/* printf("std[%d]= %lf\t", i, std[i]);*/
+/* printf("\n"); */
+ dtransposea ( temp4 , lx , cx, temp4_trans); //temp4_trans= r'
+ dtransposea ( std , 1 , cx, std_trans); //std_trans= std'
+ dmulma(temp4_trans, cx,lx, temp4, lx, cx, temp7 ); //temp7= r'*r
+ dmulma(std_trans, cx, 1, std, 1,cx, temp8); //temp8= std'*std
+
+ drdiva (temp7, temp8, cx*cx, r); // r=(r'*r) ./ (std'*std)
+
+
+ }
+
+
+
+}
diff --git a/src/c/statisticsFunctions/mvcorrel/smvcorrel1a.c b/src/c/statisticsFunctions/mvcorrel/smvcorrel1a.c
new file mode 100644
index 00000000..345ce601
--- /dev/null
+++ b/src/c/statisticsFunctions/mvcorrel/smvcorrel1a.c
@@ -0,0 +1,34 @@
+/* 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 "mvcorrel.h"
+#include "stdlib.h"
+#include "stdio.h"
+#include "types.h"
+#include "uint16.h"
+#include "zeros.h"
+#include "sum.h"
+#include "ones.h"
+#include "matrixMultiplication.h"
+#include "matrixTranspose.h"
+#include "subtraction.h"
+#include "division.h"
+
+float smvcorrel1a(int lx, int cx)
+{
+ if(lx==1 && cx==1)
+ return 0;
+
+ else
+ return 1;
+}
diff --git a/src/c/statisticsFunctions/mvcorrel/smvcorrela.c b/src/c/statisticsFunctions/mvcorrel/smvcorrela.c
new file mode 100644
index 00000000..8894ceeb
--- /dev/null
+++ b/src/c/statisticsFunctions/mvcorrel/smvcorrela.c
@@ -0,0 +1,87 @@
+/* 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 "mvcorrel.h"
+#include "stdlib.h"
+#include "stdio.h"
+#include "types.h"
+#include "pow.h"
+#include "uint16.h"
+#include "zeros.h"
+#include "sum.h"
+#include "ones.h"
+#include "matrixMultiplication.h"
+#include "division.h"
+#include "matrixTranspose.h"
+#include "subtraction.h"
+#include "division.h"
+
+void smvcorrela(float *in, int lx, int cx, float* r)
+{
+ float temp1[1* cx];
+ float xbar[1* cx];
+ float temp2[lx*1];
+ float temp3[lx*cx];
+ float temp4[lx*cx];
+ float temp4_trans[cx*lx];
+ float temp5[1* cx];
+ float temp6[lx*cx];
+ float std[1*cx];
+ float std_trans[cx*1];
+ float temp7[cx*cx];
+ float temp8[cx*cx];
+
+ sonesa ( temp2 , lx , 1 ); //temp2= ones(lx,1)
+
+ if(lx==1)
+ {
+ szerosa ( r , cx ,cx ); //out= zeros(lx,cx)
+
+ }
+
+ else
+ {
+
+ srowsuma(in, lx, cx, temp1); //temp1= sum(x, "r")
+
+ for(int i=0; i< 1*cx; i++)
+ xbar[i]= srdivs(temp1[i], lx); // xbar= sum(x, "r")/ lx
+/* //Debug Only*/
+/* for(int i= 0; i< 1*cx; i++)*/
+/* printf("xbar[%d]= %lf\t", i, xbar[i]);*/
+/* printf("\n");*/
+
+ smulma(temp2, lx,1, xbar, 1, cx, temp3 ); //temp3= ones(lx,1)*xbar
+ sdiffa(in, lx*cx, temp3, lx*cx, temp4); //temp4= r= x-ones(lx,1)*xbar
+ for(int i=0; i< lx*cx; i++)
+ temp6[i]= spows(temp4[i], 2); //temp6= r.^2
+ srowsuma(temp6, lx, cx, temp5); //temp5= sum(r.^2, "r")
+ for(int i=0; i< 1*cx; i++)
+ std[i]= spows(temp5[i], 0.5); //std=(sum(r .^2,"r")) .^ (0.5)
+/* //Debug Only*/
+/* for(int i= 0; i< 1*cx; i++)*/
+/* printf("std[%d]= %lf\t", i, std[i]);*/
+/* printf("\n"); */
+ stransposea ( temp4 , lx , cx, temp4_trans); //temp4_trans= r'
+ stransposea ( std , 1 , cx, std_trans); //std_trans= std'
+ smulma(temp4_trans, cx,lx, temp4, lx, cx, temp7 ); //temp7= r'*r
+ smulma(std_trans, cx, 1, std, 1,cx, temp8); //temp8= std'*std
+
+ srdiva (temp7, temp8, cx*cx, r); // r=(r'*r) ./ (std'*std)
+
+
+ }
+
+
+
+}
diff --git a/src/c/statisticsFunctions/nanmedian/dnanmediana.c b/src/c/statisticsFunctions/nanmedian/dnanmediana.c
new file mode 100644
index 00000000..0fb7de12
--- /dev/null
+++ b/src/c/statisticsFunctions/nanmedian/dnanmediana.c
@@ -0,0 +1,51 @@
+/* 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 <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "nanmedian.h"
+#include "median.h"
+#include "types.h"
+double dnanmediana(double* in, int size)
+{
+
+double temp[size];
+double out;
+int j=0;
+
+double a= 0.0/0.0;
+
+
+
+ for(int i=0; i< size; i++)
+ {
+ if( !(isnan(in[i])) )
+ {
+ temp[j]= in[i];
+ j=j+1;
+
+
+ }
+
+
+ }
+
+
+out= dmediana(temp, j);
+
+if(j=0)
+return a;
+else
+return out;
+
+}
diff --git a/src/c/statisticsFunctions/nanmedian/dnanmediancola.c b/src/c/statisticsFunctions/nanmedian/dnanmediancola.c
new file mode 100644
index 00000000..37b3f128
--- /dev/null
+++ b/src/c/statisticsFunctions/nanmedian/dnanmediancola.c
@@ -0,0 +1,35 @@
+/* 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 "nanmedian.h"
+#include "types.h"
+#include "uint16.h"
+
+void dnanmediancola(double *in, int row, int col, double* out)
+{
+ double inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= dnanmediana( inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/nanmedian/dnanmedianrowa.c b/src/c/statisticsFunctions/nanmedian/dnanmedianrowa.c
new file mode 100644
index 00000000..d24ba828
--- /dev/null
+++ b/src/c/statisticsFunctions/nanmedian/dnanmedianrowa.c
@@ -0,0 +1,36 @@
+/* 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 "nanmedian.h"
+#include "types.h"
+#include "uint16.h"
+
+void dnanmedianrowa(double *in, int row, int col, double* out)
+{
+ double inter[row];
+
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= dnanmediana( inter, row);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/nanmedian/snanmediana.c b/src/c/statisticsFunctions/nanmedian/snanmediana.c
new file mode 100644
index 00000000..cddb990e
--- /dev/null
+++ b/src/c/statisticsFunctions/nanmedian/snanmediana.c
@@ -0,0 +1,49 @@
+/* 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 <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "nanmedian.h"
+#include "median.h"
+#include "types.h"
+float snanmediana(float* in, int size)
+{
+
+float temp[size];
+float out;
+int j=0;
+
+float a= 0.0/0.0;
+
+ for(int i=0; i< size; i++)
+ {
+ if( !(isnan(in[i])) )
+ {
+ temp[j]= in[i];
+ j=j+1;
+
+
+ }
+
+
+ }
+
+
+out= smediana(temp, j);
+
+if(j=0)
+return a;
+else
+return out;
+
+}
diff --git a/src/c/statisticsFunctions/nanmedian/snanmediancola.c b/src/c/statisticsFunctions/nanmedian/snanmediancola.c
new file mode 100644
index 00000000..a8077f19
--- /dev/null
+++ b/src/c/statisticsFunctions/nanmedian/snanmediancola.c
@@ -0,0 +1,36 @@
+/* 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 "nanmedian.h"
+#include "mean.h"
+#include "types.h"
+#include "uint16.h"
+
+void snanmediancola(float *in, int row, int col, float* out)
+{
+ float inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= snanmediana( inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/nanmedian/snanmedianrowa.c b/src/c/statisticsFunctions/nanmedian/snanmedianrowa.c
new file mode 100644
index 00000000..47425e0f
--- /dev/null
+++ b/src/c/statisticsFunctions/nanmedian/snanmedianrowa.c
@@ -0,0 +1,37 @@
+/* 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 "nanmedian.h"
+#include "mean.h"
+#include "types.h"
+#include "uint16.h"
+
+void snanmedianrowa(float *in, int row, int col, float* out)
+{
+ float inter[row];
+
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= snanmediana( inter, row);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/nanmedian/znanmediana.c b/src/c/statisticsFunctions/nanmedian/znanmediana.c
new file mode 100644
index 00000000..bfc1fe46
--- /dev/null
+++ b/src/c/statisticsFunctions/nanmedian/znanmediana.c
@@ -0,0 +1,51 @@
+/* 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 <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "nanmedian.h"
+#include "median.h"
+#include "types.h"
+#include "doubleComplex.h"
+
+doubleComplex znanmediana(doubleComplex* in, int size)
+{
+
+doubleComplex temp[size];
+doubleComplex out;
+int j=0;
+
+float a= 0.0/0.0;
+
+ for(int i=0; i< size; i++)
+ {
+ if( !(zreals(in[i])) && !(zimags(in[i])) )
+ {
+ temp[j]= in[i];
+ j=j+1;
+
+
+ }
+
+
+ }
+
+
+out= zmediana(temp, j);
+
+if(j=0)
+return a;
+else
+return out;
+
+}
diff --git a/src/c/statisticsFunctions/nanmedian/znanmediancola.c b/src/c/statisticsFunctions/nanmedian/znanmediancola.c
new file mode 100644
index 00000000..0aaeba02
--- /dev/null
+++ b/src/c/statisticsFunctions/nanmedian/znanmediancola.c
@@ -0,0 +1,37 @@
+/* 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 "nanmedian.h"
+#include "mean.h"
+#include "types.h"
+#include "uint16.h"
+#include "doubleComplex.h"
+
+void znanmediancola(doubleComplex *in, int row, int col, doubleComplex* out)
+{
+ doubleComplex inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= znanmediana( inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/nanmedian/znanmedianrowa.c b/src/c/statisticsFunctions/nanmedian/znanmedianrowa.c
new file mode 100644
index 00000000..d0e470fa
--- /dev/null
+++ b/src/c/statisticsFunctions/nanmedian/znanmedianrowa.c
@@ -0,0 +1,38 @@
+/* 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 "nanmedian.h"
+#include "mean.h"
+#include "types.h"
+#include "uint16.h"
+#include "doubleComplex.h"
+
+void znanmedianrowa(doubleComplex* in, int row, int col, doubleComplex* out)
+{
+ doubleComplex inter[row];
+
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= znanmediana( inter, row);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/nanstdev/dnanstdeva.c b/src/c/statisticsFunctions/nanstdev/dnanstdeva.c
new file mode 100644
index 00000000..05b54339
--- /dev/null
+++ b/src/c/statisticsFunctions/nanstdev/dnanstdeva.c
@@ -0,0 +1,51 @@
+/* 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 <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "nanstdev.h"
+#include "stdev.h"
+#include "types.h"
+double dnanstdeva(double* in, int size)
+{
+
+double temp[size];
+double out;
+int j=0;
+
+double a= 0.0/0.0;
+
+
+
+ for(int i=0; i< size; i++)
+ {
+ if( !(isnan(in[i])) )
+ {
+ temp[j]= in[i];
+ j=j+1;
+
+
+ }
+
+
+ }
+
+
+out= dstdeva(temp, j);
+
+if(j=0)
+return a;
+else
+return out;
+
+}
diff --git a/src/c/statisticsFunctions/nanstdev/dnanstdevcola.c b/src/c/statisticsFunctions/nanstdev/dnanstdevcola.c
new file mode 100644
index 00000000..a6704b09
--- /dev/null
+++ b/src/c/statisticsFunctions/nanstdev/dnanstdevcola.c
@@ -0,0 +1,35 @@
+/* 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 "nanstdev.h"
+#include "types.h"
+#include "uint16.h"
+
+void dnanstdevcola(double *in, int row, int col, double* out)
+{
+ double inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= dnanstdeva( inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/nanstdev/dnanstdevrowa.c b/src/c/statisticsFunctions/nanstdev/dnanstdevrowa.c
new file mode 100644
index 00000000..52a1722e
--- /dev/null
+++ b/src/c/statisticsFunctions/nanstdev/dnanstdevrowa.c
@@ -0,0 +1,36 @@
+/* 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 "nanstdev.h"
+#include "types.h"
+#include "uint16.h"
+
+void dnanstdevrowa(double *in, int row, int col, double* out)
+{
+ double inter[row];
+
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= dnanstdeva( inter, row);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/nanstdev/snanstdeva.c b/src/c/statisticsFunctions/nanstdev/snanstdeva.c
new file mode 100644
index 00000000..3e6ab154
--- /dev/null
+++ b/src/c/statisticsFunctions/nanstdev/snanstdeva.c
@@ -0,0 +1,51 @@
+/* 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 <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "nanstdev.h"
+#include "stdev.h"
+#include "types.h"
+float snanstdeva(float* in, int size)
+{
+
+float temp[size];
+float out;
+int j=0;
+
+double a= 0.0/0.0;
+
+
+
+ for(int i=0; i< size; i++)
+ {
+ if( !(isnan(in[i])) )
+ {
+ temp[j]= in[i];
+ j=j+1;
+
+
+ }
+
+
+ }
+
+
+out= sstdeva(temp, j);
+
+if(j=0)
+return a;
+else
+return out;
+
+}
diff --git a/src/c/statisticsFunctions/nanstdev/snanstdevcola.c b/src/c/statisticsFunctions/nanstdev/snanstdevcola.c
new file mode 100644
index 00000000..987cb3fd
--- /dev/null
+++ b/src/c/statisticsFunctions/nanstdev/snanstdevcola.c
@@ -0,0 +1,35 @@
+/* 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 "nanstdev.h"
+#include "types.h"
+#include "uint16.h"
+
+void snanstdevcola(float *in, int row, int col, float* out)
+{
+ float inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= snanstdeva( inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/nanstdev/snanstdevrowa.c b/src/c/statisticsFunctions/nanstdev/snanstdevrowa.c
new file mode 100644
index 00000000..9c08682e
--- /dev/null
+++ b/src/c/statisticsFunctions/nanstdev/snanstdevrowa.c
@@ -0,0 +1,36 @@
+/* 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 "nanstdev.h"
+#include "types.h"
+#include "uint16.h"
+
+void snanstdevrowa(float *in, int row, int col, float* out)
+{
+ float inter[row];
+
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= snanstdeva( inter, row);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/stdev/dstdeva.c b/src/c/statisticsFunctions/stdev/dstdeva.c
new file mode 100644
index 00000000..73a4bec4
--- /dev/null
+++ b/src/c/statisticsFunctions/stdev/dstdeva.c
@@ -0,0 +1,29 @@
+/* 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 "stdev.h"
+#include <math.h>
+#include "mean.h"
+#include "pow.h"
+#include "variance.h"
+#include "types.h"
+#include "uint16.h"
+
+double dstdeva(double *in, int size)
+{
+ double variance = dvariancea(in, size);
+
+ return dpows(variance, 0.5);
+
+
+}
diff --git a/src/c/statisticsFunctions/stdev/dstdevcola.c b/src/c/statisticsFunctions/stdev/dstdevcola.c
new file mode 100644
index 00000000..cdce81a3
--- /dev/null
+++ b/src/c/statisticsFunctions/stdev/dstdevcola.c
@@ -0,0 +1,35 @@
+/* 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 "stdev.h"
+#include "types.h"
+#include "uint16.h"
+
+void dstdevcola(double *in, int row, int col, double* out)
+{
+ double inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= dstdeva( inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/stdev/dstdevrowa.c b/src/c/statisticsFunctions/stdev/dstdevrowa.c
new file mode 100644
index 00000000..a4cf40ca
--- /dev/null
+++ b/src/c/statisticsFunctions/stdev/dstdevrowa.c
@@ -0,0 +1,36 @@
+/* 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 "stdev.h"
+#include "types.h"
+#include "uint16.h"
+
+void dstdevrowa(double *in, int row, int col, double* out)
+{
+ double inter[row];
+
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= dstdeva( inter, row);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/stdev/sstdeva.c b/src/c/statisticsFunctions/stdev/sstdeva.c
new file mode 100644
index 00000000..db76d95d
--- /dev/null
+++ b/src/c/statisticsFunctions/stdev/sstdeva.c
@@ -0,0 +1,29 @@
+/* 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 "stdev.h"
+#include <math.h>
+#include "mean.h"
+#include "pow.h"
+#include "variance.h"
+#include "types.h"
+#include "uint16.h"
+
+float sstdeva(float *in, int size)
+{
+ float variance = svariancea(in, size);
+
+ return spows(variance, 0.5);
+
+
+}
diff --git a/src/c/statisticsFunctions/stdev/sstdevcola.c b/src/c/statisticsFunctions/stdev/sstdevcola.c
new file mode 100644
index 00000000..c72b4a5a
--- /dev/null
+++ b/src/c/statisticsFunctions/stdev/sstdevcola.c
@@ -0,0 +1,35 @@
+/* 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 "stdev.h"
+#include "types.h"
+#include "uint16.h"
+
+void sstdevcola(float *in, int row, int col, float* out)
+{
+ float inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+ out[i]= sstdeva( inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/stdev/sstdevrowa.c b/src/c/statisticsFunctions/stdev/sstdevrowa.c
new file mode 100644
index 00000000..415d409f
--- /dev/null
+++ b/src/c/statisticsFunctions/stdev/sstdevrowa.c
@@ -0,0 +1,36 @@
+/* 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 "stdev.h"
+#include "types.h"
+#include "uint16.h"
+
+void sstdevrowa(float *in, int row, int col, float* out)
+{
+ float inter[row];
+
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+ out[i]= sstdeva( inter, row);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/strange/dstrangea.c b/src/c/statisticsFunctions/strange/dstrangea.c
new file mode 100644
index 00000000..9dc94fe0
--- /dev/null
+++ b/src/c/statisticsFunctions/strange/dstrangea.c
@@ -0,0 +1,60 @@
+/* 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 "strange.h"
+#include "types.h"
+#include "uint16.h"
+#include "subtraction.h"
+
+double dstrangea(double *in, int size)
+{
+ double a; double in_copy[size];
+
+ for(int i=0; i< size; i++)
+
+ {
+ in_copy[i]= in[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;
+
+ }
+
+ }
+
+ }
+
+
+
+return ddiffs(in_copy[size-1],in_copy[0]);
+
+}
diff --git a/src/c/statisticsFunctions/strange/dstrangecola.c b/src/c/statisticsFunctions/strange/dstrangecola.c
new file mode 100644
index 00000000..d6a11e3d
--- /dev/null
+++ b/src/c/statisticsFunctions/strange/dstrangecola.c
@@ -0,0 +1,37 @@
+/* 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 "strange.h"
+#include "types.h"
+#include "uint16.h"
+#include "stdio.h"
+
+void dstrangecola(double *in, int row, int col, double* out)
+{
+ double inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+
+ out[i]= dstrangea(inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/strange/dstrangerowa.c b/src/c/statisticsFunctions/strange/dstrangerowa.c
new file mode 100644
index 00000000..f63df35c
--- /dev/null
+++ b/src/c/statisticsFunctions/strange/dstrangerowa.c
@@ -0,0 +1,35 @@
+/* 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 "strange.h"
+#include "types.h"
+#include "uint16.h"
+
+void dstrangerowa(double *in, int row, int col, double* out)
+{
+ double inter[row];
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+
+ out[i]= dstrangea(inter, row);
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/strange/sstrangea.c b/src/c/statisticsFunctions/strange/sstrangea.c
new file mode 100644
index 00000000..f79b00af
--- /dev/null
+++ b/src/c/statisticsFunctions/strange/sstrangea.c
@@ -0,0 +1,60 @@
+/* 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 "strange.h"
+#include "types.h"
+#include "uint16.h"
+#include "subtraction.h"
+
+float sstrangea(float *in, int size)
+{
+ float a; float in_copy[size];
+
+ for(int i=0; i< size; i++)
+
+ {
+ in_copy[i]= in[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;
+
+ }
+
+ }
+
+ }
+
+
+
+return sdiffs(in_copy[size-1],in_copy[0]);
+
+}
diff --git a/src/c/statisticsFunctions/strange/sstrangecola.c b/src/c/statisticsFunctions/strange/sstrangecola.c
new file mode 100644
index 00000000..4c8e90a4
--- /dev/null
+++ b/src/c/statisticsFunctions/strange/sstrangecola.c
@@ -0,0 +1,37 @@
+/* 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 "strange.h"
+#include "types.h"
+#include "uint16.h"
+#include "stdio.h"
+
+void sstrangecola(float *in, int row, int col, float* out)
+{
+ float inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+
+ out[i]= sstrangea(inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/strange/sstrangerowa.c b/src/c/statisticsFunctions/strange/sstrangerowa.c
new file mode 100644
index 00000000..50c1165c
--- /dev/null
+++ b/src/c/statisticsFunctions/strange/sstrangerowa.c
@@ -0,0 +1,35 @@
+/* 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 "strange.h"
+#include "types.h"
+#include "uint16.h"
+
+void sstrangerowa(float *in, int row, int col, float* out)
+{
+ float inter[row];
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+
+ out[i]= sstrangea(inter, row);
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/strange/u16strangea.c b/src/c/statisticsFunctions/strange/u16strangea.c
new file mode 100644
index 00000000..66b31fb1
--- /dev/null
+++ b/src/c/statisticsFunctions/strange/u16strangea.c
@@ -0,0 +1,60 @@
+/* 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 "strange.h"
+#include "types.h"
+#include "uint16.h"
+#include "subtraction.h"
+
+uint16 u16strangea(uint16 *in, int size)
+{
+ uint16 a; uint16 in_copy[size];
+
+ for(int i=0; i< size; i++)
+
+ {
+ in_copy[i]= in[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;
+
+ }
+
+ }
+
+ }
+
+
+
+return u16diffs(in_copy[size-1],in_copy[0]);
+
+}
diff --git a/src/c/statisticsFunctions/strange/u16strangecola.c b/src/c/statisticsFunctions/strange/u16strangecola.c
new file mode 100644
index 00000000..69783607
--- /dev/null
+++ b/src/c/statisticsFunctions/strange/u16strangecola.c
@@ -0,0 +1,37 @@
+/* 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 "strange.h"
+#include "types.h"
+#include "uint16.h"
+#include "stdio.h"
+
+void u16strangecola(uint16 *in, int row, int col, uint16* out)
+{
+ uint16 inter[col];
+
+
+for(int i=0; i< row; i++)
+ {
+ for(int j=0 ; j< col; j++)
+ {
+ inter[j]= in[i+ (j*row)];
+
+ }
+
+ out[i]= u16strangea(inter, col);
+
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/strange/u16strangerowa.c b/src/c/statisticsFunctions/strange/u16strangerowa.c
new file mode 100644
index 00000000..b7f878d0
--- /dev/null
+++ b/src/c/statisticsFunctions/strange/u16strangerowa.c
@@ -0,0 +1,35 @@
+/* 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 "strange.h"
+#include "types.h"
+#include "uint16.h"
+
+void u16strangerowa(uint16 *in, int row, int col, uint16* out)
+{
+ uint16 inter[row];
+
+
+for(int i=0; i< col; i++)
+ {
+ for(int j=0 ; j< row; j++)
+ {
+ inter[j]= in[j+ (i*row)];
+
+ }
+
+ out[i]= u16strangea(inter, row);
+ }
+
+
+}
diff --git a/src/c/statisticsFunctions/sum/i16columnsuma.c b/src/c/statisticsFunctions/sum/i16columnsuma.c
new file mode 100644
index 00000000..a34cea13
--- /dev/null
+++ b/src/c/statisticsFunctions/sum/i16columnsuma.c
@@ -0,0 +1,34 @@
+/* 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: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+void i16columnsuma(int16 *in, int lines, int columns, int16 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = (int16)in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] = (int16)i16adds(out[i % lines] , in[i]);
+ }
+}
diff --git a/src/c/statisticsFunctions/sum/i16rowsuma.c b/src/c/statisticsFunctions/sum/i16rowsuma.c
new file mode 100644
index 00000000..03d8ff29
--- /dev/null
+++ b/src/c/statisticsFunctions/sum/i16rowsuma.c
@@ -0,0 +1,35 @@
+/* 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: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+void i16rowsuma(int16 *in, int lines, int columns, int16 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = (int16)in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] = (int16)i16adds( out[(i - 1) % columns] ,
+ in[((i - 1) % columns) * lines + 1 + (i - 1) / columns]);
+ }
+}
diff --git a/src/c/statisticsFunctions/sum/i16suma.c b/src/c/statisticsFunctions/sum/i16suma.c
new file mode 100644
index 00000000..f5d08093
--- /dev/null
+++ b/src/c/statisticsFunctions/sum/i16suma.c
@@ -0,0 +1,26 @@
+/* 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: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+int16 i16suma(int16 *in, int size) {
+ //floatComplex accumulate = FloatComplex(0.0f, 0.0f);
+ int i = 0;
+ int16 accumulate = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = i16adds(accumulate, in[i]);
+ }
+ return accumulate;
+}
diff --git a/src/c/statisticsFunctions/sum/i8columnsuma.c b/src/c/statisticsFunctions/sum/i8columnsuma.c
new file mode 100644
index 00000000..bb79897c
--- /dev/null
+++ b/src/c/statisticsFunctions/sum/i8columnsuma.c
@@ -0,0 +1,34 @@
+/* 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: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+void i8columnsuma(int8 *in, int lines, int columns, int8 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = (int8)in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] = (int8)i8adds(out[i % lines] , in[i]);
+ }
+}
diff --git a/src/c/statisticsFunctions/sum/i8rowsuma.c b/src/c/statisticsFunctions/sum/i8rowsuma.c
new file mode 100644
index 00000000..2008f32d
--- /dev/null
+++ b/src/c/statisticsFunctions/sum/i8rowsuma.c
@@ -0,0 +1,35 @@
+/* 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: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+void i8rowsuma(int8 *in, int lines, int columns, int8 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = (int8)in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] = (int8)i8adds( out[(i - 1) % columns] ,
+ in[((i - 1) % columns) * lines + 1 + (i - 1) / columns]);
+ }
+}
diff --git a/src/c/statisticsFunctions/sum/i8suma.c b/src/c/statisticsFunctions/sum/i8suma.c
new file mode 100644
index 00000000..468a98b9
--- /dev/null
+++ b/src/c/statisticsFunctions/sum/i8suma.c
@@ -0,0 +1,27 @@
+/* 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: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+int8 i8suma(int8 *in, int size) {
+ //floatComplex accumulate = FloatComplex(0.0f, 0.0f);
+ int8 accumulate = 0;
+
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = i8adds(accumulate, in[i]);
+ }
+ return accumulate;
+}
diff --git a/src/c/statisticsFunctions/sum/u16columnsuma.c b/src/c/statisticsFunctions/sum/u16columnsuma.c
new file mode 100644
index 00000000..82b07757
--- /dev/null
+++ b/src/c/statisticsFunctions/sum/u16columnsuma.c
@@ -0,0 +1,35 @@
+/* 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: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+
+#include "sum.h"
+
+void u16columnsuma(uint16 *in, int lines, int columns, uint16 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = (uint16)in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] = (uint16)u16adds(out[i % lines] , in[i]);
+ }
+}
diff --git a/src/c/statisticsFunctions/sum/u16rowsuma.c b/src/c/statisticsFunctions/sum/u16rowsuma.c
new file mode 100644
index 00000000..535e302f
--- /dev/null
+++ b/src/c/statisticsFunctions/sum/u16rowsuma.c
@@ -0,0 +1,34 @@
+/* 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: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sum.h"
+
+void u16rowsuma(uint16 *in, int lines, int columns, uint16 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = (uint16)in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] = (uint16)u16adds( out[(i - 1) % columns] ,
+ in[((i - 1) % columns) * lines + 1 + (i - 1) / columns]);
+ }
+}
diff --git a/src/c/statisticsFunctions/sum/u16suma.c b/src/c/statisticsFunctions/sum/u16suma.c
new file mode 100644
index 00000000..5e5620c1
--- /dev/null
+++ b/src/c/statisticsFunctions/sum/u16suma.c
@@ -0,0 +1,25 @@
+/* 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: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sum.h"
+
+uint16 u16suma(uint16 *in, int size) {
+ //floatComplex accumulate = FloatComplex(0.0f, 0.0f);
+ int i = 0;
+ uint16 accumulate = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = u16adds(accumulate, in[i]);
+ }
+ return accumulate;
+}
diff --git a/src/c/statisticsFunctions/sum/u8columnsuma.c b/src/c/statisticsFunctions/sum/u8columnsuma.c
new file mode 100644
index 00000000..f3e30411
--- /dev/null
+++ b/src/c/statisticsFunctions/sum/u8columnsuma.c
@@ -0,0 +1,34 @@
+/* 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: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+void u8columnsuma(uint8 *in, int lines, int columns, uint8 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = (uint8)in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] = (uint8)u8adds(out[i % lines] , in[i]);
+ }
+}
diff --git a/src/c/statisticsFunctions/sum/u8rowsuma.c b/src/c/statisticsFunctions/sum/u8rowsuma.c
new file mode 100644
index 00000000..53a49442
--- /dev/null
+++ b/src/c/statisticsFunctions/sum/u8rowsuma.c
@@ -0,0 +1,35 @@
+/* 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: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+void u8rowsuma(uint8 *in, int lines, int columns, uint8 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = (uint8)in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] = (uint8)u8adds( out[(i - 1) % columns] ,
+ in[((i - 1) % columns) * lines + 1 + (i - 1) / columns]);
+ }
+}
diff --git a/src/c/statisticsFunctions/sum/u8suma.c b/src/c/statisticsFunctions/sum/u8suma.c
new file mode 100644
index 00000000..e5febef1
--- /dev/null
+++ b/src/c/statisticsFunctions/sum/u8suma.c
@@ -0,0 +1,26 @@
+/* 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: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+uint8 u8suma(uint8 *in, int size) {
+ //floatComplex accumulate = FloatComplex(0.0f, 0.0f);
+ int i = 0;
+ uint8 accumulate = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = u8adds(accumulate, in[i]);
+ }
+ return accumulate;
+}
diff --git a/src/c/statisticsFunctions/wcenter/dwcentera.c b/src/c/statisticsFunctions/wcenter/dwcentera.c
new file mode 100644
index 00000000..5c05cc86
--- /dev/null
+++ b/src/c/statisticsFunctions/wcenter/dwcentera.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "subtraction.h"
+#include "multiplication.h"
+#include "wcenter.h"
+
+void dwcentera (double* inp, int row, int col, double* out)
+{
+ double sum = 0, xbar = 0, sigma = 0;
+ for(int i = 0; i < row*col; i++) // Findinag the maen of all the elements of the matrix
+ sum += inp[i];
+ xbar = sum/(row*col);
+
+ double one[row*col]; // Creating a matrix of ones
+ donesa(one,row,col);
+
+ double prod[row*col];
+ for(int i = 0; i < row*col; i++) // Applying the formula (x(i,j)-xbar)/sigma
+ prod[i] = one[i]*xbar;
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = inp[i] - prod[i];
+
+ sum = 0;
+ for(int i = 0; i < row*col; i++)
+ sum = sum + out[i]*out[i];
+
+ sigma = sqrt(sum/(row*col-1));
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = out[i]/sigma;
+}
diff --git a/src/c/statisticsFunctions/wcenter/dwcentercola.c b/src/c/statisticsFunctions/wcenter/dwcentercola.c
new file mode 100644
index 00000000..ab82acfe
--- /dev/null
+++ b/src/c/statisticsFunctions/wcenter/dwcentercola.c
@@ -0,0 +1,64 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "subtraction.h"
+#include "matrixMultiplication.h"
+#include "wcenter.h"
+
+void dwcentercola (double* inp, int row, int col, double* out)
+{
+
+ double sum[row], xbar[row];
+ for(int i = 0; i < row; i++)
+ sum[i] = 0;
+
+
+ for(int i = 0; i < row; i++)
+ {
+ for(int j = 0; j < col; j++)
+ {
+ sum[i] += inp[i + j*row];
+ }
+ }
+
+ //for(int i = 0; i < row; i++)
+ //printf("%lf \n",sum[i]);
+
+ for(int i = 0; i < row; i++)
+ xbar[i] = sum[i]/col;
+
+ double one[col]; // Creating a matrix of ones
+ donesa(one,1,col);
+
+
+ double prod[row*col];
+ dmulma(xbar, row, 1, one, 1, col, prod);
+
+ for(int i = 0; i< row*col; i++)
+ out[i] = inp[i] - prod[i];
+
+ for(int i = 0; i < row; i++)
+ sum[i] = 0;
+
+ for(int i = 0; i < row; i++)
+ {
+ for(int j = 0; j < col; j++)
+ {
+ sum[i] += out[i + j*row] * out[i + j*row];
+ }
+ }
+
+ double sigma[row];
+ for(int i = 0; i < row; i++)
+ sigma[i] = sqrt(sum[i]/(col-1));
+
+ for(int i = 0; i < row*col; i++)
+ prod[i] = 0;
+
+ dmulma(sigma, row, 1, one, 1, col, prod);
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = out[i] / prod[i];
+
+}
diff --git a/src/c/statisticsFunctions/wcenter/dwcenterrowa.c b/src/c/statisticsFunctions/wcenter/dwcenterrowa.c
new file mode 100644
index 00000000..72e37931
--- /dev/null
+++ b/src/c/statisticsFunctions/wcenter/dwcenterrowa.c
@@ -0,0 +1,68 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "subtraction.h"
+#include "matrixMultiplication.h"
+#include "wcenter.h"
+
+void dwcenterrowa (double* inp, int row, int col, double* out)
+{
+
+ double sum[col], xbar[col];
+ for(int i = 0; i < col; i++)
+ sum[i] = 0;
+
+
+ for(int i = 0; i < col; i++)
+ {
+ for(int j = 0; j < row; j++)
+ {
+ sum[i] += inp[j + i*row];
+ }
+ }
+
+
+
+ for(int i = 0; i < col; i++)
+ xbar[i] = sum[i]/row;
+
+ double one[row]; // Creating a matrix of ones
+ donesa(one,row,1);
+
+ double prod[row*col];
+ dmulma(one, row, 1, xbar, 1, col, prod);
+
+
+
+ for(int i = 0; i< row*col; i++)
+ out[i] = inp[i] - prod[i];
+
+
+ for(int i = 0; i < col; i++)
+ sum[i] = 0;
+
+ for(int i = 0; i < col; i++)
+ {
+ for(int j = 0; j < row; j++)
+ {
+ sum[i] += out[j + i*row] * out[j + i*row];
+ }
+ }
+
+
+
+ double sigma[col];
+ for(int i = 0; i < col; i++)
+ sigma[i] = sqrt(sum[i]/(row-1));
+
+
+ for(int i = 0; i < row*col; i++)
+ prod[i] = 0;
+
+ dmulma(one, row, 1, sigma, 1, col, prod);
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = out[i] / prod[i];
+
+}
diff --git a/src/c/statisticsFunctions/wcenter/swcentera.c b/src/c/statisticsFunctions/wcenter/swcentera.c
new file mode 100644
index 00000000..91206fcf
--- /dev/null
+++ b/src/c/statisticsFunctions/wcenter/swcentera.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "subtraction.h"
+#include "multiplication.h"
+#include "wcenter.h"
+
+void swcentera (float* inp, int row, int col, float* out)
+{
+ float sum = 0, xbar = 0, sigma = 0;
+ for(int i = 0; i < row*col; i++) // Findinag the maen of all the elements of the matrix
+ sum += inp[i];
+ xbar = sum/(row*col);
+
+ float one[row*col]; // Creating a matrix of ones
+ sonesa(one,row,col);
+
+ float prod[row*col];
+ for(int i = 0; i < row*col; i++) // Applying the formula (x(i,j)-xbar)/sigma
+ prod[i] = one[i]*xbar;
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = inp[i] - prod[i];
+
+ sum = 0;
+ for(int i = 0; i < row*col; i++)
+ sum = sum + out[i]*out[i];
+
+ sigma = sqrt(sum/(row*col-1));
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = out[i]/sigma;
+}
diff --git a/src/c/statisticsFunctions/wcenter/swcentercola.c b/src/c/statisticsFunctions/wcenter/swcentercola.c
new file mode 100644
index 00000000..6fafe9f9
--- /dev/null
+++ b/src/c/statisticsFunctions/wcenter/swcentercola.c
@@ -0,0 +1,61 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "subtraction.h"
+#include "matrixMultiplication.h"
+#include "wcenter.h"
+
+void swcentercola (float* inp, int row, int col, float* out)
+{
+
+ float sum[row], xbar[row];
+ for(int i = 0; i < row; i++)
+ sum[i] = 0;
+
+
+ for(int i = 0; i < row; i++)
+ {
+ for(int j = 0; j < col; j++)
+ {
+ sum[i] += inp[i + j*row];
+ }
+ }
+
+ for(int i = 0; i < row; i++)
+ xbar[i] = sum[i]/col;
+
+ float one[col]; // Creating a matrix of ones
+ sonesa(one,1,col);
+
+
+ float prod[row*col];
+ smulma(xbar, row, 1, one, 1, col, prod);
+
+ for(int i = 0; i< row*col; i++)
+ out[i] = inp[i] - prod[i];
+
+ for(int i = 0; i < row; i++)
+ sum[i] = 0;
+
+ for(int i = 0; i < row; i++)
+ {
+ for(int j = 0; j < col; j++)
+ {
+ sum[i] += out[i + j*row] * out[i + j*row];
+ }
+ }
+
+ float sigma[row];
+ for(int i = 0; i < row; i++)
+ sigma[i] = sqrt(sum[i]/(col-1));
+
+ for(int i = 0; i < row*col; i++)
+ prod[i] = 0;
+
+ smulma(sigma, row, 1, one, 1, col, prod);
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = out[i] / prod[i];
+
+}
diff --git a/src/c/statisticsFunctions/wcenter/swcenterrowa.c b/src/c/statisticsFunctions/wcenter/swcenterrowa.c
new file mode 100644
index 00000000..ce1df2e9
--- /dev/null
+++ b/src/c/statisticsFunctions/wcenter/swcenterrowa.c
@@ -0,0 +1,68 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "subtraction.h"
+#include "matrixMultiplication.h"
+#include "wcenter.h"
+
+void swcenterrowa (float* inp, int row, int col, float* out)
+{
+
+ float sum[col], xbar[col];
+ for(int i = 0; i < col; i++)
+ sum[i] = 0;
+
+
+ for(int i = 0; i < col; i++)
+ {
+ for(int j = 0; j < row; j++)
+ {
+ sum[i] += inp[j + i*row];
+ }
+ }
+
+
+
+ for(int i = 0; i < col; i++)
+ xbar[i] = sum[i]/row;
+
+ float one[row]; // Creating a matrix of ones
+ sonesa(one,row,1);
+
+ float prod[row*col];
+ smulma(one, row, 1, xbar, 1, col, prod);
+
+
+
+ for(int i = 0; i< row*col; i++)
+ out[i] = inp[i] - prod[i];
+
+
+ for(int i = 0; i < col; i++)
+ sum[i] = 0;
+
+ for(int i = 0; i < col; i++)
+ {
+ for(int j = 0; j < row; j++)
+ {
+ sum[i] += out[j + i*row] * out[j + i*row];
+ }
+ }
+
+
+
+ float sigma[col];
+ for(int i = 0; i < col; i++)
+ sigma[i] = sqrt(sum[i]/(row-1));
+
+
+ for(int i = 0; i < row*col; i++)
+ prod[i] = 0;
+
+ smulma(one, row, 1, sigma, 1, col, prod);
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = out[i] / prod[i];
+
+}
diff --git a/src/c/statisticsFunctions/wcenter/zwcentera.c b/src/c/statisticsFunctions/wcenter/zwcentera.c
new file mode 100644
index 00000000..8571dd62
--- /dev/null
+++ b/src/c/statisticsFunctions/wcenter/zwcentera.c
@@ -0,0 +1,38 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "wcenter.h"
+#include "doubleComplex.h"
+#include "sqrt.h"
+
+void zwcentera (doubleComplex* inp, int row, int col, doubleComplex* out)
+{
+ doubleComplex sum = 0, xbar = 0, sigma = 0;
+ for(int i = 0; i < row*col; i++) // Findinag the maen of all the elements of the matrix
+ sum = zadds(sum,inp[i]);
+ xbar = zrdivs(sum,(row*col));
+
+ doubleComplex one[row*col]; // Creating a matrix of ones
+ zonesa(one,row,col);
+
+ doubleComplex prod[row*col];
+ for(int i = 0; i < row*col; i++) // Applying the formula (x(i,j)-xbar)/sigma
+ prod[i] = zmuls(one[i],xbar);
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = zdiffs(inp[i], prod[i]);
+
+ sum = DoubleComplex(0,0);
+ for(int i = 0; i < row*col; i++)
+ sum = zadds(sum, zmuls(out[i],out[i]));
+
+ sigma = zsqrts(zrdivs(sum,(row*col-1)));
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = zrdivs(out[i],sigma);
+}
diff --git a/src/c/statisticsFunctions/wcenter/zwcentercola.c b/src/c/statisticsFunctions/wcenter/zwcentercola.c
new file mode 100644
index 00000000..5e4e2bdd
--- /dev/null
+++ b/src/c/statisticsFunctions/wcenter/zwcentercola.c
@@ -0,0 +1,66 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "wcenter.h"
+#include "doubleComplex.h"
+#include "sqrt.h"
+
+void zwcentercola (doubleComplex* inp, int row, int col, doubleComplex* out)
+{
+
+ doubleComplex sum[row], xbar[row];
+ for(int i = 0; i < row; i++)
+ sum[i] = DoubleComplex(0,0);
+
+
+ for(int i = 0; i < row; i++)
+ {
+ for(int j = 0; j < col; j++)
+ {
+ sum[i] = zadds(sum[i], inp[i + j*row]);
+ }
+ }
+
+
+ for(int i = 0; i < row; i++)
+ xbar[i] = zrdivs(sum[i], col);
+
+ doubleComplex one[col]; // Creating a matrix of ones
+ zonesa(one,1,col);
+
+
+ doubleComplex prod[row*col];
+ zmulma(xbar, row, 1, one, 1, col, prod);
+
+ for(int i = 0; i< row*col; i++)
+ out[i] = zdiffs(inp[i], prod[i]);
+
+ for(int i = 0; i < row; i++)
+ sum[i] = DoubleComplex(0,0);
+
+ for(int i = 0; i < row; i++)
+ {
+ for(int j = 0; j < col; j++)
+ {
+ sum[i] = zadds(sum[i], zmuls(out[i + j*row], out[i + j*row]));
+ }
+ }
+
+ doubleComplex sigma[row];
+ for(int i = 0; i < row; i++)
+ sigma[i] = zsqrts(zrdivs(sum[i],(col-1)));
+
+ for(int i = 0; i < row*col; i++)
+ prod[i] = DoubleComplex(0,0);
+
+ zmulma(sigma, row, 1, one, 1, col, prod);
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = zrdivs(out[i], prod[i]);
+
+}
diff --git a/src/c/statisticsFunctions/wcenter/zwcenterrowa.c b/src/c/statisticsFunctions/wcenter/zwcenterrowa.c
new file mode 100644
index 00000000..f68835d8
--- /dev/null
+++ b/src/c/statisticsFunctions/wcenter/zwcenterrowa.c
@@ -0,0 +1,72 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ones.h>
+#include "addition.h"
+#include "subtraction.h"
+#include "multiplication.h"
+#include "division.h"
+#include "wcenter.h"
+#include "doubleComplex.h"
+#include "sqrt.h"
+
+void zwcenterrowa (doubleComplex* inp, int row, int col, doubleComplex* out)
+{
+
+ doubleComplex sum[col], xbar[col];
+ for(int i = 0; i < col; i++)
+ sum[i] = DoubleComplex(0,0);
+
+
+ for(int i = 0; i < col; i++)
+ {
+ for(int j = 0; j < row; j++)
+ {
+ sum[i] = zadds(sum[i], inp[j + i*row]);
+ }
+ }
+
+
+
+ for(int i = 0; i < col; i++)
+ xbar[i] = zrdivs(sum[i], row);
+
+ doubleComplex one[row]; // Creating a matrix of ones
+ zonesa(one,row,1);
+
+ doubleComplex prod[row*col];
+ zmulma(one, row, 1, xbar, 1, col, prod);
+
+
+
+ for(int i = 0; i< row*col; i++)
+ out[i] = zdiffs(inp[i], prod[i]);
+
+
+ for(int i = 0; i < col; i++)
+ sum[i] = DoubleComplex(0,0);
+
+ for(int i = 0; i < col; i++)
+ {
+ for(int j = 0; j < row; j++)
+ {
+ sum[i] = zadds(sum[i], zmuls(out[j + i*row], out[j + i*row]));
+ }
+ }
+
+
+
+ doubleComplex sigma[col];
+ for(int i = 0; i < col; i++)
+ sigma[i] = zsqrts(zrdivs(sum[i],(row-1)));
+
+
+ for(int i = 0; i < row*col; i++)
+ prod[i] = DoubleComplex(0,0);
+
+ zmulma(one, row, 1, sigma, 1, col, prod);
+
+ for(int i = 0; i < row*col; i++)
+ out[i] = zrdivs(out[i], prod[i]);
+
+}