summaryrefslogtreecommitdiff
path: root/src/c/auxiliaryFunctions
diff options
context:
space:
mode:
Diffstat (limited to 'src/c/auxiliaryFunctions')
-rw-r--r--src/c/auxiliaryFunctions/includes/sign.h70
-rw-r--r--src/c/auxiliaryFunctions/interfaces/int_sign.h16
-rw-r--r--src/c/auxiliaryFunctions/sign/i16signa.c21
-rw-r--r--src/c/auxiliaryFunctions/sign/i16signs.c24
-rw-r--r--src/c/auxiliaryFunctions/sign/i8signa.c21
-rw-r--r--src/c/auxiliaryFunctions/sign/i8signs.c24
-rw-r--r--src/c/auxiliaryFunctions/sign/u16signa.c21
-rw-r--r--src/c/auxiliaryFunctions/sign/u16signs.c24
-rw-r--r--src/c/auxiliaryFunctions/sign/u8signa.c21
-rw-r--r--src/c/auxiliaryFunctions/sign/u8signs.c24
10 files changed, 266 insertions, 0 deletions
diff --git a/src/c/auxiliaryFunctions/includes/sign.h b/src/c/auxiliaryFunctions/includes/sign.h
index 0f69b4b..67f0da8 100644
--- a/src/c/auxiliaryFunctions/includes/sign.h
+++ b/src/c/auxiliaryFunctions/includes/sign.h
@@ -18,6 +18,7 @@
#include "dynlib_auxiliaryfunctions.h"
#include "floatComplex.h"
#include "doubleComplex.h"
+#include "types.h"
#ifdef __cplusplus
extern "C" {
@@ -56,6 +57,38 @@ EXTERN_AUXFUNCT floatComplex csigns(floatComplex in);
EXTERN_AUXFUNCT doubleComplex zsigns(doubleComplex in);
/**
+ ** \brief Uint8 Sign function
+ ** Determine the sign of in (assume that 0 is positive).
+ ** \param in : the uint8 we must determine sign.
+ ** \return -1 or +1 depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT int8 u8signs(uint8 in);
+
+/**
+ ** \brief Int8 Sign function
+ ** Determine the sign of in (assume that 0 is positive).
+ ** \param in : the int8 we must determine sign.
+ ** \return -1 or +1 depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT int8 i8signs(int8 in);
+
+/**
+ ** \brief Uint16 Sign function
+ ** Determine the sign of in (assume that 0 is positive).
+ ** \param in : the uint16 we must determine sign.
+ ** \return -1 or +1 depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT int16 u16signs(uint16 in);
+
+/**
+ ** \brief Int16 Sign function
+ ** Determine the sign of in (assume that 0 is positive).
+ ** \param in : the uint16 we must determine sign.
+ ** \return -1 or +1 depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT int16 i16signs(int16 in);
+
+/**
** \brief Float Signe Array function
** Determine the sign of an array in (assume that 0 is positive).
** \param in : the float array we must determine sign.
@@ -91,6 +124,43 @@ EXTERN_AUXFUNCT void csigna(floatComplex *in, int size, floatComplex *out);
**/
EXTERN_AUXFUNCT void zsigna(doubleComplex *in, int size, doubleComplex *out);
+/**
+ ** \brief Uint8 Sign Array function
+ ** Determine the sign of an array in (assume that 0 is positive).
+ ** \param in : the uint8 array we must determine sign.
+ ** \param size : the number of elements.
+ ** \return -1 or +1 depending on the sign of in elements.
+ **/
+EXTERN_AUXFUNCT void u8signa(uint8 *in, int size, int8 *out);
+
+/**
+ ** \brief Int8 Sign Array function
+ ** Determine the sign of an array in (assume that 0 is positive).
+ ** \param in : the int8 array we must determine sign.
+ ** \param size : the number of elements.
+ ** \return -1 or +1 depending on the sign of in elements.
+ **/
+EXTERN_AUXFUNCT void i8signa(int8 *in, int size, int8 *out);
+
+/**
+ ** \brief Uint16 Sign Array function
+ ** Determine the sign of an array in (assume that 0 is positive).
+ ** \param in : the uint16 array we must determine sign.
+ ** \param size : the number of elements.
+ ** \return -1 or +1 depending on the sign of in elements.
+ **/
+EXTERN_AUXFUNCT void u16signa(uint16 *in, int size, int16 *out);
+
+/**
+ ** \brief Int16 Sign Array function
+ ** Determine the sign of an array in (assume that 0 is positive).
+ ** \param in : the int16 array we must determine sign.
+ ** \param size : the number of elements.
+ ** \return -1 or +1 depending on the sign of in elements.
+ **/
+EXTERN_AUXFUNCT void i16signa(int16 *in, int size, int16 *out);
+
+
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/src/c/auxiliaryFunctions/interfaces/int_sign.h b/src/c/auxiliaryFunctions/interfaces/int_sign.h
index 4463901..1003fe7 100644
--- a/src/c/auxiliaryFunctions/interfaces/int_sign.h
+++ b/src/c/auxiliaryFunctions/interfaces/int_sign.h
@@ -23,6 +23,14 @@
#define z0signz0(in) zsigns(in)
+#define u80signi80(in) u8signs(in)
+
+#define i80signi80(in) i8signs(in)
+
+#define u160signi160(in) u16signs(in)
+
+#define i160signi160(in) i16signs(in)
+
#define s2signs2(in,size,out) ssigna(in, size[0]*size[1], out)
#define d2signd2(in,size,out) dsigna(in, size[0]*size[1], out)
@@ -31,4 +39,12 @@
#define z2signz2(in,size,out) zsigna(in, size[0]*size[1], out)
+#define u82signi82(in,size,out) u8signa(in, size[0]*size[1], out)
+
+#define i82signi82(in,size,out) i8signa(in, size[0]*size[1], out)
+
+#define u162signi162(in,size,out) u16signa(in, size[0]*size[1], out)
+
+#define i162signi162(in,size,out) i16signa(in, size[0]*size[1], out)
+
#endif /* !__INT_SIGN_H__ */
diff --git a/src/c/auxiliaryFunctions/sign/i16signa.c b/src/c/auxiliaryFunctions/sign/i16signa.c
new file mode 100644
index 0000000..c1d9e91
--- /dev/null
+++ b/src/c/auxiliaryFunctions/sign/i16signa.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-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
+ *
+ */
+
+#include "sign.h"
+
+void i16signa(int16 *in, int size, int16 *out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = i16signs(in[i]);
+ }
+}
diff --git a/src/c/auxiliaryFunctions/sign/i16signs.c b/src/c/auxiliaryFunctions/sign/i16signs.c
new file mode 100644
index 0000000..a3a11ab
--- /dev/null
+++ b/src/c/auxiliaryFunctions/sign/i16signs.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-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
+ *
+ */
+
+#include "sign.h"
+
+int16 i16signs(int16 num) {
+ if (num > 0) {
+ return (int16)1;
+ }
+ if (num < 0) {
+ return (int16)-1;
+ }
+ /* num == 0 */
+ return (int16)0;
+}
diff --git a/src/c/auxiliaryFunctions/sign/i8signa.c b/src/c/auxiliaryFunctions/sign/i8signa.c
new file mode 100644
index 0000000..c86e0fb
--- /dev/null
+++ b/src/c/auxiliaryFunctions/sign/i8signa.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-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
+ *
+ */
+
+#include "sign.h"
+
+void i8signa(int8 *in, int size, int8 *out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = i8signs(in[i]);
+ }
+}
diff --git a/src/c/auxiliaryFunctions/sign/i8signs.c b/src/c/auxiliaryFunctions/sign/i8signs.c
new file mode 100644
index 0000000..ced00a7
--- /dev/null
+++ b/src/c/auxiliaryFunctions/sign/i8signs.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-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
+ *
+ */
+
+#include "sign.h"
+
+int8 i8signs(int8 num) {
+ if (num > 0) {
+ return (int8)1;
+ }
+ if (num < 0) {
+ return (int8)-1;
+ }
+ /* num == 0 */
+ return (int8)0;
+}
diff --git a/src/c/auxiliaryFunctions/sign/u16signa.c b/src/c/auxiliaryFunctions/sign/u16signa.c
new file mode 100644
index 0000000..3cc4f66
--- /dev/null
+++ b/src/c/auxiliaryFunctions/sign/u16signa.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-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
+ *
+ */
+
+#include "sign.h"
+
+void u16signa(uint16 *in, int size, int16 *out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = u16signs(in[i]);
+ }
+}
diff --git a/src/c/auxiliaryFunctions/sign/u16signs.c b/src/c/auxiliaryFunctions/sign/u16signs.c
new file mode 100644
index 0000000..7f18722
--- /dev/null
+++ b/src/c/auxiliaryFunctions/sign/u16signs.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-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
+ *
+ */
+
+#include "sign.h"
+
+int16 u16signs(uint16 num) {
+ if (num > 0) {
+ return (int16)1;
+ }
+ if (num < 0) {
+ return (int16)-1;
+ }
+ /* num == 0 */
+ return (int16)0;
+}
diff --git a/src/c/auxiliaryFunctions/sign/u8signa.c b/src/c/auxiliaryFunctions/sign/u8signa.c
new file mode 100644
index 0000000..34021b5
--- /dev/null
+++ b/src/c/auxiliaryFunctions/sign/u8signa.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-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
+ *
+ */
+
+#include "sign.h"
+
+void u8signa(uint8 *in, int size, int8 *out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = u8signs(in[i]);
+ }
+}
diff --git a/src/c/auxiliaryFunctions/sign/u8signs.c b/src/c/auxiliaryFunctions/sign/u8signs.c
new file mode 100644
index 0000000..437da77
--- /dev/null
+++ b/src/c/auxiliaryFunctions/sign/u8signs.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-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
+ *
+ */
+
+#include "sign.h"
+
+int8 u8signs(uint8 num) {
+ if (num > 0) {
+ return (int8)1;
+ }
+ if (num < 0) {
+ return (int8)-1;
+ }
+ /* num == 0 */
+ return (int8)0;
+}