diff options
Diffstat (limited to 'src/c/auxiliaryFunctions')
-rw-r--r-- | src/c/auxiliaryFunctions/includes/sign.h | 70 | ||||
-rw-r--r-- | src/c/auxiliaryFunctions/interfaces/int_sign.h | 16 | ||||
-rw-r--r-- | src/c/auxiliaryFunctions/sign/i16signa.c | 21 | ||||
-rw-r--r-- | src/c/auxiliaryFunctions/sign/i16signs.c | 24 | ||||
-rw-r--r-- | src/c/auxiliaryFunctions/sign/i8signa.c | 21 | ||||
-rw-r--r-- | src/c/auxiliaryFunctions/sign/i8signs.c | 24 | ||||
-rw-r--r-- | src/c/auxiliaryFunctions/sign/u16signa.c | 21 | ||||
-rw-r--r-- | src/c/auxiliaryFunctions/sign/u16signs.c | 24 | ||||
-rw-r--r-- | src/c/auxiliaryFunctions/sign/u8signa.c | 21 | ||||
-rw-r--r-- | src/c/auxiliaryFunctions/sign/u8signs.c | 24 |
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; +} |