summaryrefslogtreecommitdiff
path: root/src/matrixOperations/includes
diff options
context:
space:
mode:
Diffstat (limited to 'src/matrixOperations/includes')
-rw-r--r--src/matrixOperations/includes/cat.h42
-rw-r--r--src/matrixOperations/includes/chol.h20
-rw-r--r--src/matrixOperations/includes/determ.h18
-rw-r--r--src/matrixOperations/includes/dist.h24
-rw-r--r--src/matrixOperations/includes/dynlib_matrixoperations.h26
-rw-r--r--src/matrixOperations/includes/eye.h17
-rw-r--r--src/matrixOperations/includes/fill.h17
-rw-r--r--src/matrixOperations/includes/hilbert.h13
-rw-r--r--src/matrixOperations/includes/infiniteNorm.h17
-rw-r--r--src/matrixOperations/includes/jmat.h14
-rw-r--r--src/matrixOperations/includes/logm.h17
-rw-r--r--src/matrixOperations/includes/matrixDivision.h25
-rw-r--r--src/matrixOperations/includes/matrixExponential.h16
-rw-r--r--src/matrixOperations/includes/matrixInversion.h15
-rw-r--r--src/matrixOperations/includes/matrixMagnitude.h25
-rw-r--r--src/matrixOperations/includes/matrixMultiplication.h17
-rw-r--r--src/matrixOperations/includes/matrixPow.h17
-rw-r--r--src/matrixOperations/includes/matrixSquaredMagnitude.h25
-rw-r--r--src/matrixOperations/includes/matrixTrace.h16
-rw-r--r--src/matrixOperations/includes/matrixTranspose.h17
-rw-r--r--src/matrixOperations/includes/ones.h18
-rw-r--r--src/matrixOperations/includes/spec.h24
-rw-r--r--src/matrixOperations/includes/zeros.h17
23 files changed, 332 insertions, 125 deletions
diff --git a/src/matrixOperations/includes/cat.h b/src/matrixOperations/includes/cat.h
index a28f004c..9f64a157 100644
--- a/src/matrixOperations/includes/cat.h
+++ b/src/matrixOperations/includes/cat.h
@@ -13,32 +13,38 @@
#ifndef __CAT_H__
#define __CAT_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/*
** \brief concat 2 floats scalars
*/
-void srowcats(float in1, float in2, float *out);
-void scolumncats(float in1, float in2, float *out);
+EXTERN_MATOPS void srowcats(float in1, float in2, float *out);
+EXTERN_MATOPS void scolumncats(float in1, float in2, float *out);
/*
** \brief concat 2 double scalars
*/
-void drowcats(double in1, double in2, double *out);
-void dcolumncats(double in1, double in2, double *out);
+EXTERN_MATOPS void drowcats(double in1, double in2, double *out);
+EXTERN_MATOPS void dcolumncats(double in1, double in2, double *out);
/*
** \brief concat 2 floats complex scalars
*/
-void crowcats(floatComplex in1, floatComplex in2, floatComplex *out);
-void ccolumncats(floatComplex in1, floatComplex in2, floatComplex *out);
+EXTERN_MATOPS void crowcats(floatComplex in1, floatComplex in2, floatComplex *out);
+EXTERN_MATOPS void ccolumncats(floatComplex in1, floatComplex in2, floatComplex *out);
/*
** \brief concat 2 double complex scalars
*/
-void zrowcats(doubleComplex in1, doubleComplex in2, doubleComplex *out);
-void zcolumncats(doubleComplex in1, doubleComplex in2, doubleComplex *out);
+EXTERN_MATOPS void zrowcats(doubleComplex in1, doubleComplex in2, doubleComplex *out);
+EXTERN_MATOPS void zcolumncats(doubleComplex in1, doubleComplex in2, doubleComplex *out);
/*
** \brief Concat float arrays
@@ -50,8 +56,8 @@ void zcolumncats(doubleComplex in1, doubleComplex in2, doubleComplex *out);
** \param columns2
** \param out the concatenation
*/
-void srowcata(float *in1, int lines1, int columns1, float *in2, int lines2, int columns2, float* out);
-void scolumncata(float *in1, int lines1, int columns1, float *in2, int lines2, int columns2, float* out);
+EXTERN_MATOPS void srowcata(float *in1, int lines1, int columns1, float *in2, int lines2, int columns2, float* out);
+EXTERN_MATOPS void scolumncata(float *in1, int lines1, int columns1, float *in2, int lines2, int columns2, float* out);
/*
** \brief Concat double arrays
@@ -63,8 +69,8 @@ void scolumncata(float *in1, int lines1, int columns1, float *in2, int lines2,
** \param columns2
** \param out the concatenation
*/
-void drowcata(double *in1, int lines1, int columns1, double *in2, int lines2, int columns2, double* out);
-void dcolumncata(double *in1, int lines1, int columns1, double *in2, int lines2, int columns2, double* out);
+EXTERN_MATOPS void drowcata(double *in1, int lines1, int columns1, double *in2, int lines2, int columns2, double* out);
+EXTERN_MATOPS void dcolumncata(double *in1, int lines1, int columns1, double *in2, int lines2, int columns2, double* out);
/*
** \brief Concat Complex float arrays
@@ -76,8 +82,8 @@ void dcolumncata(double *in1, int lines1, int columns1, double *in2, int lines2
** \param columns2
** \param out the concatenation
*/
-void crowcata(floatComplex *in1, int lines1, int columns1, floatComplex *in2, int lines2, int columns2, floatComplex* out);
-void ccolumncata(floatComplex *in1, int lines1, int columns1, floatComplex *in2, int lines2, int columns2, floatComplex* out);
+EXTERN_MATOPS void crowcata(floatComplex *in1, int lines1, int columns1, floatComplex *in2, int lines2, int columns2, floatComplex* out);
+EXTERN_MATOPS void ccolumncata(floatComplex *in1, int lines1, int columns1, floatComplex *in2, int lines2, int columns2, floatComplex* out);
/*
** \brief Concat Complex double arrays
@@ -89,7 +95,11 @@ void ccolumncata(floatComplex *in1, int lines1, int columns1, floatComplex *in2
** \param columns2
** \param out the concatenation
*/
-void zrowcata(doubleComplex *in1, int lines1, int columns1, doubleComplex *in2, int lines2, int columns2, doubleComplex* out);
-void zcolumncata(doubleComplex *in1, int lines1, int columns1, doubleComplex *in2, int lines2, int columns2, doubleComplex* out);
+EXTERN_MATOPS void zrowcata(doubleComplex *in1, int lines1, int columns1, doubleComplex *in2, int lines2, int columns2, doubleComplex* out);
+EXTERN_MATOPS void zcolumncata(doubleComplex *in1, int lines1, int columns1, doubleComplex *in2, int lines2, int columns2, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* !__CAT_H__ */
diff --git a/src/matrixOperations/includes/chol.h b/src/matrixOperations/includes/chol.h
index 4b2655fc..0a17406d 100644
--- a/src/matrixOperations/includes/chol.h
+++ b/src/matrixOperations/includes/chol.h
@@ -14,24 +14,30 @@
#ifndef __CHOL_H__
#define __CHOL_H__
+#include "dynlib_matrixoperations.h"
#include "doubleComplex.h"
#include "floatComplex.h"
-
+#ifdef __cplusplus
+extern "C" {
+#endif
-double dchols(double in);
-void dchola(double *in, int size, double *out);
+EXTERN_MATOPS double dchols(double in);
+EXTERN_MATOPS void dchola(double *in, int size, double *out);
-float schols(float in);
-void schola(float *in, int size, float *out);
+EXTERN_MATOPS float schols(float in);
+EXTERN_MATOPS void schola(float *in, int size, float *out);
#define zchols(in) DoubleComplex(dchols(zreals(in)),0)
-void zchola (doubleComplex *in, int size, doubleComplex *out);
+EXTERN_MATOPS void zchola (doubleComplex *in, int size, doubleComplex *out);
#define cchols(in) FloatComplex(schols(creals(in)),0)
-void cchola(floatComplex *in, int size, floatComplex *out);
+EXTERN_MATOPS void cchola(floatComplex *in, int size, floatComplex *out);
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* __CHOL_H__ */
diff --git a/src/matrixOperations/includes/determ.h b/src/matrixOperations/includes/determ.h
index e9276a70..d915c31b 100644
--- a/src/matrixOperations/includes/determ.h
+++ b/src/matrixOperations/includes/determ.h
@@ -13,21 +13,27 @@
#ifndef __DETERM_H__
#define __DETERM_H__
-
+
+#include "dynlib_matrixoperations.h"
#include "doubleComplex.h"
#include "floatComplex.h"
-
+#ifdef __cplusplus
+extern "C" {
+#endif
-double ddeterma (double *in, int rows);
+EXTERN_MATOPS double ddeterma (double *in, int rows);
-float sdeterma (float *in, int rows);
+EXTERN_MATOPS float sdeterma (float *in, int rows);
-doubleComplex zdeterma (doubleComplex *in, int rows);
+EXTERN_MATOPS doubleComplex zdeterma (doubleComplex *in, int rows);
-floatComplex cdeterma (floatComplex *in, int rows);
+EXTERN_MATOPS floatComplex cdeterma (floatComplex *in, int rows);
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* __DETERM_H__ */
diff --git a/src/matrixOperations/includes/dist.h b/src/matrixOperations/includes/dist.h
index d4e9994a..bf45a8d7 100644
--- a/src/matrixOperations/includes/dist.h
+++ b/src/matrixOperations/includes/dist.h
@@ -16,25 +16,33 @@
#ifndef __DIST_H__
#define __DIST_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
/* Computes the euclidian distance
between 2 scalars/arrays.
We assume both arrays have the same
numbers of lines and columns.*/
-float sdists( float in1, float in2);
-float sdista( float* in1, float* in2, int lines, int columns);
+EXTERN_MATOPS float sdists( float in1, float in2);
+EXTERN_MATOPS float sdista( float* in1, float* in2, int lines, int columns);
-double ddists( double in1, double in2);
-double ddista( double* in1, double* in2, int lines, int columns);
+EXTERN_MATOPS double ddists( double in1, double in2);
+EXTERN_MATOPS double ddista( double* in1, double* in2, int lines, int columns);
-float cdists( floatComplex in1, floatComplex in2);
-float cdista( floatComplex* in1, floatComplex* in2, int lines, int columns);
+EXTERN_MATOPS float cdists( floatComplex in1, floatComplex in2);
+EXTERN_MATOPS float cdista( floatComplex* in1, floatComplex* in2, int lines, int columns);
-double zdists( doubleComplex in1, doubleComplex in2);
-double zdista( doubleComplex* in1, doubleComplex* in2, int lines, int columns);
+EXTERN_MATOPS double zdists( doubleComplex in1, doubleComplex in2);
+EXTERN_MATOPS double zdista( doubleComplex* in1, doubleComplex* in2, int lines, int columns);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /*__DIST_H__*/
diff --git a/src/matrixOperations/includes/dynlib_matrixoperations.h b/src/matrixOperations/includes/dynlib_matrixoperations.h
new file mode 100644
index 00000000..b17cad84
--- /dev/null
+++ b/src/matrixOperations/includes/dynlib_matrixoperations.h
@@ -0,0 +1,26 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2009 - DIGITEO - Allan CORNET
+*
+* 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
+*
+*/
+
+#ifndef __DYNLIB_MATRIXOPERATIONS_H__
+#define __DYNLIB_MATRIXOPERATIONS_H__
+
+#ifdef _MSC_VER
+ #if MATRIXOPERATIONS_EXPORTS
+ #define EXTERN_MATOPS __declspec (dllexport)
+ #else
+ #define EXTERN_MATOPS __declspec (dllimport)
+ #endif
+#else
+ #define EXTERN_MATOPS
+#endif
+
+#endif /* __DYNLIB_MATRIXOPERATIONS_H__ */ \ No newline at end of file
diff --git a/src/matrixOperations/includes/eye.h b/src/matrixOperations/includes/eye.h
index 9d78f590..f7f2ef2f 100644
--- a/src/matrixOperations/includes/eye.h
+++ b/src/matrixOperations/includes/eye.h
@@ -13,9 +13,14 @@
#ifndef __EYE_H__
#define __EYE_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/*
** \brief create a float Eye value
*/
@@ -39,22 +44,26 @@
/*
** \brief create a float Eye matrix
*/
-void seyea(float* in, int _iRows, int _iCols);
+EXTERN_MATOPS void seyea(float* in, int _iRows, int _iCols);
/*
** \brief create a Double Eye matrix
*/
-void deyea(double* in, int _iRows, int _iCols);
+EXTERN_MATOPS void deyea(double* in, int _iRows, int _iCols);
/*
** \brief create a float complex Eye matrix
*/
-void ceyea(floatComplex* in, int _iRows, int _iCols);
+EXTERN_MATOPS void ceyea(floatComplex* in, int _iRows, int _iCols);
/*
** \brief create a Double complex Eye matrix
*/
-void zeyea(doubleComplex* in, int _iRows, int _iCols);
+EXTERN_MATOPS void zeyea(doubleComplex* in, int _iRows, int _iCols);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* !__EYE_H__ */
diff --git a/src/matrixOperations/includes/fill.h b/src/matrixOperations/includes/fill.h
index b69e14d1..09b8d811 100644
--- a/src/matrixOperations/includes/fill.h
+++ b/src/matrixOperations/includes/fill.h
@@ -14,19 +14,26 @@
#ifndef __FILL_H__
#define __FILL_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
-
+#ifdef __cplusplus
+extern "C" {
+#endif
/*filling of a array with constant*/
-void dfilla (double* in, int rows, int cols, double constant);
+EXTERN_MATOPS void dfilla (double* in, int rows, int cols, double constant);
+
+EXTERN_MATOPS void sfilla (float* in, int rows, int cols, float constant);
-void sfilla (float* in, int rows, int cols, float constant);
+EXTERN_MATOPS void cfilla (floatComplex* in, int rows, int cols, floatComplex constant);
-void cfilla (floatComplex* in, int rows, int cols, floatComplex constant);
+EXTERN_MATOPS void zfilla (doubleComplex* in, int rows, int cols, doubleComplex constant);
-void zfilla (doubleComplex* in, int rows, int cols, doubleComplex constant);
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* __FILL_H__ */
diff --git a/src/matrixOperations/includes/hilbert.h b/src/matrixOperations/includes/hilbert.h
index 11c4f6bd..15f233fe 100644
--- a/src/matrixOperations/includes/hilbert.h
+++ b/src/matrixOperations/includes/hilbert.h
@@ -13,16 +13,21 @@
#ifndef __HILBERT_H__
#define __HILBERT_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
#include <math.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
/*
** generate an Hilbert's matrix
** param out : the hilbert's matrix in float precision
** param size: matrix's size
*/
-void shilba ( float* out, int size) ;
+EXTERN_MATOPS void shilba ( float* out, int size) ;
/*
** generate an Hilbert's matrix
@@ -31,7 +36,11 @@ void shilba ( float* out, int size) ;
*/
-void dhilba ( double* out, int size ) ;
+EXTERN_MATOPS void dhilba ( double* out, int size ) ;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* !__HILBERT_H__ */
diff --git a/src/matrixOperations/includes/infiniteNorm.h b/src/matrixOperations/includes/infiniteNorm.h
index 0a0d3382..130cfeaf 100644
--- a/src/matrixOperations/includes/infiniteNorm.h
+++ b/src/matrixOperations/includes/infiniteNorm.h
@@ -13,11 +13,16 @@
#ifndef __INFINITENORM_H__
#define __INFINITENORM_H__
+#include "dynlib_matrixoperations.h"
#include "sign.h"
#include "pythag.h"
#include "floatComplex.h"
#include "doubleComplex.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/*
** \brief Compute the infinite norm of a given floats matrix.
** \param in : input matrix.
@@ -25,7 +30,7 @@
** \param _iCols : number of columns of the matrix .
*/
-float sinfnorma(float* in, int _iRows, int _iCols);
+EXTERN_MATOPS float sinfnorma(float* in, int _iRows, int _iCols);
/*
** \brief Compute the infinite norm of a given doubles matrix.
@@ -34,7 +39,7 @@ float sinfnorma(float* in, int _iRows, int _iCols);
** \param out : the matrix inverse of the input .
*/
-double dinfnorma(double* in, int _iRows, int _iCols);
+EXTERN_MATOPS double dinfnorma(double* in, int _iRows, int _iCols);
/*
** \brief Compute the infinite norm of a given complex floats matrix.
@@ -43,7 +48,7 @@ double dinfnorma(double* in, int _iRows, int _iCols);
** \param _iCols : number of columns of the matrix .
*/
-float cinfnorma(floatComplex* in, int _iRows, int _iCols);
+EXTERN_MATOPS float cinfnorma(floatComplex* in, int _iRows, int _iCols);
/*
** \brief Compute the infinite norm of a given complex doubles matrix.
@@ -52,9 +57,11 @@ float cinfnorma(floatComplex* in, int _iRows, int _iCols);
** \param _iCols : number of columns of the matrix .
*/
-double zinfnorma(doubleComplex* in, int _iRows, int _iCols);
-
+EXTERN_MATOPS double zinfnorma(doubleComplex* in, int _iRows, int _iCols);
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* !__INFINITENORM_H__ */
diff --git a/src/matrixOperations/includes/jmat.h b/src/matrixOperations/includes/jmat.h
index b6b0388a..38a8b1e2 100644
--- a/src/matrixOperations/includes/jmat.h
+++ b/src/matrixOperations/includes/jmat.h
@@ -13,7 +13,17 @@
#ifndef __JMAT_H__
#define __JMAT_H__
-void sjmata(float in1, float in2, float* out);
-void djmata(double in1, double in2, double* out);
+#include "dynlib_matrixoperations.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_MATOPS void sjmata(float in1, float in2, float* out);
+EXTERN_MATOPS void djmata(double in1, double in2, double* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* !__JMAT_H__ */
diff --git a/src/matrixOperations/includes/logm.h b/src/matrixOperations/includes/logm.h
index 27513d82..7eec569d 100644
--- a/src/matrixOperations/includes/logm.h
+++ b/src/matrixOperations/includes/logm.h
@@ -14,15 +14,24 @@
#ifndef __LOGM_H__
#define __LOGM_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
-void slogma (float* in, int size, float* out);
+#ifdef __cplusplus
+extern "C" {
+#endif
-void dlogma (double* in, int size, double* out);
+EXTERN_MATOPS void slogma (float* in, int size, float* out);
-void clogma (floatComplex* in, int size, floatComplex* out);
+EXTERN_MATOPS void dlogma (double* in, int size, double* out);
-void zlogma (doubleComplex* in, int size, doubleComplex* out);
+EXTERN_MATOPS void clogma (floatComplex* in, int size, floatComplex* out);
+
+EXTERN_MATOPS void zlogma (doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* __LOGM_H__ */
diff --git a/src/matrixOperations/includes/matrixDivision.h b/src/matrixOperations/includes/matrixDivision.h
index 55006c54..9ea86d96 100644
--- a/src/matrixOperations/includes/matrixDivision.h
+++ b/src/matrixOperations/includes/matrixDivision.h
@@ -13,6 +13,7 @@
#ifndef __MATRIXDIVISION_H__
#define __MATRIXDIVISION_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
#include "lapack.h"
@@ -23,40 +24,46 @@
#include "max.h"
-void srdivma ( float* in1, int lines1, int columns1 ,
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_MATOPS void srdivma ( float* in1, int lines1, int columns1 ,
float* in2, int lines2, int columns2 ,
float* out );
-void sldivma ( float* in1, int lines1, int columns1 ,
+EXTERN_MATOPS void sldivma ( float* in1, int lines1, int columns1 ,
float* in2, int lines2, int columns2 ,
float* out );
-void drdivma ( double* in1, int lines1, int columns1 ,
+EXTERN_MATOPS void drdivma ( double* in1, int lines1, int columns1 ,
double* in2, int lines2, int columns2 ,
double* out );
-void dldivma ( double* in1, int lines1, int columns1 ,
+EXTERN_MATOPS void dldivma ( double* in1, int lines1, int columns1 ,
double* in2, int lines2, int columns2 ,
double* out );
-void zrdivma( doubleComplex* in1, int lines1, int columns1 ,
+EXTERN_MATOPS void zrdivma( doubleComplex* in1, int lines1, int columns1 ,
doubleComplex* in2, int lines2, int columns2 ,
doubleComplex* out );
-void zldivma( doubleComplex* in1, int lines1, int columns1 ,
+EXTERN_MATOPS void zldivma( doubleComplex* in1, int lines1, int columns1 ,
doubleComplex* in2, int lines2, int columns2 ,
doubleComplex* out );
-void crdivma( floatComplex* in1, int lines1, int columns1 ,
+EXTERN_MATOPS void crdivma( floatComplex* in1, int lines1, int columns1 ,
floatComplex* in2, int lines2, int columns2 ,
floatComplex* out );
-void cldivma( floatComplex* in1, int lines1, int columns1 ,
+EXTERN_MATOPS void cldivma( floatComplex* in1, int lines1, int columns1 ,
floatComplex* in2, int lines2, int columns2 ,
floatComplex* out );
-
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* !__MATRIXDIVISION_H__ */
diff --git a/src/matrixOperations/includes/matrixExponential.h b/src/matrixOperations/includes/matrixExponential.h
index 0626bf17..4b3cd8a0 100644
--- a/src/matrixOperations/includes/matrixExponential.h
+++ b/src/matrixOperations/includes/matrixExponential.h
@@ -15,6 +15,7 @@
#include <math.h>
#include <stdlib.h>
+#include "dynlib_matrixoperations.h"
#include "lapack.h"
#include "blas.h"
#include "abs.h"
@@ -30,14 +31,21 @@
#include "frexp.h"
#include "division.h"
-void sexpma (float* in, float* out, int _iLeadDim);
+#ifdef __cplusplus
+extern "C" {
+#endif
-void dexpma (double* in, double* out, int _iLeadDim);
+EXTERN_MATOPS void sexpma (float* in, float* out, int _iLeadDim);
-void cexpma(floatComplex * in, floatComplex * out, int _iLeadDim);
+EXTERN_MATOPS void dexpma (double* in, double* out, int _iLeadDim);
-void zexpma (doubleComplex * in, doubleComplex * out, int _iLeadDim);
+EXTERN_MATOPS void cexpma(floatComplex * in, floatComplex * out, int _iLeadDim);
+EXTERN_MATOPS void zexpma (doubleComplex * in, doubleComplex * out, int _iLeadDim);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* !__MATRIXEXPONENTIAL_H__ */
diff --git a/src/matrixOperations/includes/matrixInversion.h b/src/matrixOperations/includes/matrixInversion.h
index b1de5392..90312459 100644
--- a/src/matrixOperations/includes/matrixInversion.h
+++ b/src/matrixOperations/includes/matrixInversion.h
@@ -15,7 +15,11 @@
#define __MATRIXINVERSION_H__
#include "abs.h"
+#include "dynlib_matrixoperations.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
/*
** \brief Compute the matrix inverse for floats.
** \param in : input matrix.
@@ -23,7 +27,7 @@
** \param out : the matrix inverse of the input .
*/
-void sinverma ( float* in, float* out, int leadDimIn );
+EXTERN_MATOPS void sinverma ( float* in, float* out, int leadDimIn );
/*
** \brief Compute the matrix inverse for doubles.
@@ -33,7 +37,7 @@ void sinverma ( float* in, float* out, int leadDimIn );
*/
-void dinverma ( double* in, double* out, int leadDimIn );
+EXTERN_MATOPS void dinverma ( double* in, double* out, int leadDimIn );
/*
** \brief Compute the matrix inverse for complex floats .
@@ -43,7 +47,7 @@ void dinverma ( double* in, double* out, int leadDimIn );
*/
-void cinverma ( floatComplex* in, floatComplex* out, int leadDimIn );
+EXTERN_MATOPS void cinverma ( floatComplex* in, floatComplex* out, int leadDimIn );
/*
** \brief Compute the matrix inverse for complex doubles.
@@ -53,7 +57,10 @@ void cinverma ( floatComplex* in, floatComplex* out, int leadDimIn );
*/
-void zinverma ( doubleComplex* in, doubleComplex* out, int leadDimIn );
+EXTERN_MATOPS void zinverma ( doubleComplex* in, doubleComplex* out, int leadDimIn );
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* !__MATRIXINVERSION_H__ */
diff --git a/src/matrixOperations/includes/matrixMagnitude.h b/src/matrixOperations/includes/matrixMagnitude.h
index 9d9a4f89..7b65c6d9 100644
--- a/src/matrixOperations/includes/matrixMagnitude.h
+++ b/src/matrixOperations/includes/matrixMagnitude.h
@@ -14,19 +14,28 @@
#ifndef __MAGNITUDE_H__
#define __MAGNITUDE_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
-float smagns(float in);
-float smagna(float* in, int rows, int cols);
+#ifdef __cplusplus
+extern "C" {
+#endif
-double dmagns(double in);
-double dmagna(double* in, int rows, int cols);
+EXTERN_MATOPS float smagns(float in);
+EXTERN_MATOPS float smagna(float* in, int rows, int cols);
-float cmagns(floatComplex in);
-float cmagna(floatComplex* in, int rows, int cols);
+EXTERN_MATOPS double dmagns(double in);
+EXTERN_MATOPS double dmagna(double* in, int rows, int cols);
-double zmagns(doubleComplex in);
-double zmagna(doubleComplex* in, int rows, int cols);
+EXTERN_MATOPS float cmagns(floatComplex in);
+EXTERN_MATOPS float cmagna(floatComplex* in, int rows, int cols);
+
+EXTERN_MATOPS double zmagns(doubleComplex in);
+EXTERN_MATOPS double zmagna(doubleComplex* in, int rows, int cols);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* __MAGNITUDE_H__*/
diff --git a/src/matrixOperations/includes/matrixMultiplication.h b/src/matrixOperations/includes/matrixMultiplication.h
index 99091a7e..228dd163 100644
--- a/src/matrixOperations/includes/matrixMultiplication.h
+++ b/src/matrixOperations/includes/matrixMultiplication.h
@@ -13,9 +13,14 @@
#ifndef __MATRIXMULTIPLICATION_H__
#define __MATRIXMULTIPLICATION_H__
+#include "dynlib_matrixoperations.h"
#include "multiplication.h"
#include "addition.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/*
**
** WARNING WE ASSUME MATRIXES TO BE CONSCISTENT
@@ -33,7 +38,7 @@
** \param columns2 : columns of in2 matrix.
** \param out : Matrix that contains the multiplication in1 * in2.
*/
-void smulma(float *in1, int lines1, int columns1,
+EXTERN_MATOPS void smulma(float *in1, int lines1, int columns1,
float *in2, int lines2, int columns2,
float *out);
@@ -47,7 +52,7 @@ void smulma(float *in1, int lines1, int columns1,
** \param columns2 : columns of in2 matrix.
** \param out : Matrix that contains the multiplication in1 * in2.
*/
-void dmulma(double *in1, int lines1, int columns1,
+EXTERN_MATOPS void dmulma(double *in1, int lines1, int columns1,
double *in2, int lines2, int columns2,
double *out);
@@ -61,7 +66,7 @@ void dmulma(double *in1, int lines1, int columns1,
** \param columns2 : columns of in2 matrix.
** \param out : Matrix that contains the multiplication in1 * in2.
*/
-void cmulma(floatComplex *in1, int lines1, int columns1,
+EXTERN_MATOPS void cmulma(floatComplex *in1, int lines1, int columns1,
floatComplex *in2, int lines2, int columns2,
floatComplex *out);
@@ -75,8 +80,12 @@ void cmulma(floatComplex *in1, int lines1, int columns1,
** \param columns2 : columns of in2 matrix.
** \param out : Matrix that contains the multiplication in1 * in2.
*/
-void zmulma(doubleComplex *in1, int lines1, int columns1,
+EXTERN_MATOPS void zmulma(doubleComplex *in1, int lines1, int columns1,
doubleComplex *in2, int lines2, int columns2,
doubleComplex *out);
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
#endif /* !__MATRIXMULTIPLICATION_H__ */
diff --git a/src/matrixOperations/includes/matrixPow.h b/src/matrixOperations/includes/matrixPow.h
index d9d5684b..d7ffab31 100644
--- a/src/matrixOperations/includes/matrixPow.h
+++ b/src/matrixOperations/includes/matrixPow.h
@@ -14,22 +14,29 @@
#ifndef __MATRIXPOW_H__
#define __MATRIXPOW_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/*
powm is only working on square matrix
so the size is limited to rows
*/
-void spowma(float* in, int rows, float expand, float* out);
-
-void dpowma(double* in, int rows, double expand, double* out);
+EXTERN_MATOPS void spowma(float* in, int rows, float expand, float* out);
-void cpowma(floatComplex* in, int rows, floatComplex expand, floatComplex* out);
+EXTERN_MATOPS void dpowma(double* in, int rows, double expand, double* out);
-void zpowma(doubleComplex* in, int rows, doubleComplex expand, doubleComplex* out);
+EXTERN_MATOPS void cpowma(floatComplex* in, int rows, floatComplex expand, floatComplex* out);
+EXTERN_MATOPS void zpowma(doubleComplex* in, int rows, doubleComplex expand, doubleComplex* out);
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
diff --git a/src/matrixOperations/includes/matrixSquaredMagnitude.h b/src/matrixOperations/includes/matrixSquaredMagnitude.h
index a50d9b22..9ee64c32 100644
--- a/src/matrixOperations/includes/matrixSquaredMagnitude.h
+++ b/src/matrixOperations/includes/matrixSquaredMagnitude.h
@@ -14,19 +14,28 @@
#ifndef __SQUAREDMAGNITUDE_H__
#define __SQUAREDMAGNITUDE_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
-float ssquMagns(float in);
-float ssquMagna(float* in, int rows, int cols);
+#ifdef __cplusplus
+extern "C" {
+#endif
-double dsquMagns(double in);
-double dsquMagna(double* in, int rows, int cols);
+EXTERN_MATOPS float ssquMagns(float in);
+EXTERN_MATOPS float ssquMagna(float* in, int rows, int cols);
-float csquMagns(floatComplex in);
-float csquMagna(floatComplex* in, int rows, int cols);
+EXTERN_MATOPS double dsquMagns(double in);
+EXTERN_MATOPS double dsquMagna(double* in, int rows, int cols);
-double zsquMagns(doubleComplex in);
-double zsquMagna(doubleComplex* in, int rows, int cols);
+EXTERN_MATOPS float csquMagns(floatComplex in);
+EXTERN_MATOPS float csquMagna(floatComplex* in, int rows, int cols);
+
+EXTERN_MATOPS double zsquMagns(doubleComplex in);
+EXTERN_MATOPS double zsquMagna(doubleComplex* in, int rows, int cols);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* __SQUAREDMAGNITUDE_H__*/
diff --git a/src/matrixOperations/includes/matrixTrace.h b/src/matrixOperations/includes/matrixTrace.h
index cdab74d1..76b77454 100644
--- a/src/matrixOperations/includes/matrixTrace.h
+++ b/src/matrixOperations/includes/matrixTrace.h
@@ -13,9 +13,13 @@
#ifndef __MATRICXTRACE_H__
#define __MATRICXTRACE_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
/*
**
@@ -31,7 +35,7 @@
** \param out : float scalar containing the trace.
*/
-float stracea ( float* in ,int lines ) ;
+EXTERN_MATOPS float stracea ( float* in ,int lines ) ;
/*
@@ -40,7 +44,7 @@ float stracea ( float* in ,int lines ) ;
** \param lines : number of lines
** \param out : double scalar containing the trace.
*/
-double dtracea ( double* in ,int lines ) ;
+EXTERN_MATOPS double dtracea ( double* in ,int lines ) ;
/*
** \brief Compute the trace of a float complex matrix.
@@ -48,7 +52,7 @@ double dtracea ( double* in ,int lines ) ;
** \param lines : number of lines
** \param out : float complex containing the trace.
*/
-floatComplex ctracea ( floatComplex* in ,int lines ) ;
+EXTERN_MATOPS floatComplex ctracea ( floatComplex* in ,int lines ) ;
/*
@@ -57,6 +61,10 @@ floatComplex ctracea ( floatComplex* in ,int lines ) ;
** \param lines : number of lines
** \param out : double complex containing the trace.
*/
-doubleComplex ztracea ( doubleComplex* in ,int lines ) ;
+EXTERN_MATOPS doubleComplex ztracea ( doubleComplex* in ,int lines ) ;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* !__MATRICXTRACE_H__ */
diff --git a/src/matrixOperations/includes/matrixTranspose.h b/src/matrixOperations/includes/matrixTranspose.h
index 429e8303..122b618d 100644
--- a/src/matrixOperations/includes/matrixTranspose.h
+++ b/src/matrixOperations/includes/matrixTranspose.h
@@ -13,9 +13,14 @@
#ifndef __MATRIXTRANSPOSE_H__
#define __MATRIXTRANSPOSE_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
#include <math.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
/*
** \brief Compute the transpose of a float matrix.
** \param in : input matrix.
@@ -23,7 +28,7 @@
** \param column1 : number of column1
** \param out : the transposed float matrix.
*/
-void stransposea ( float* in , int lines1 , int column1, float* out );
+EXTERN_MATOPS void stransposea ( float* in , int lines1 , int column1, float* out );
/*
** \brief Compute the transpose of a double matrix.
** \param in : input matrix.
@@ -31,7 +36,7 @@ void stransposea ( float* in , int lines1 , int column1, float* out );
** \param column1 : number of column1
** \param out : the transposed double matrix.
*/
-void dtransposea ( double* in , int lines1 , int column1, double* out );
+EXTERN_MATOPS void dtransposea ( double* in , int lines1 , int column1, double* out );
/*
** \brief Compute the transpose of a float complex matrix.
** \param in : input matrix.
@@ -39,7 +44,7 @@ void dtransposea ( double* in , int lines1 , int column1, double* out );
** \param column1 : number of column1
** \param out : the transposed float complex matrix.
*/
-void ctransposea ( floatComplex* in , int lines1 , int column1, floatComplex* out );
+EXTERN_MATOPS void ctransposea ( floatComplex* in , int lines1 , int column1, floatComplex* out );
/*
** \brief Compute the transpose of a double complex matrix.
** \param in : input matrix.
@@ -47,6 +52,10 @@ void ctransposea ( floatComplex* in , int lines1 , int column1, floatComplex* ou
** \param column1 : number of column1
** \param out : the transposed double complex matrix.
*/
-void ztransposea ( doubleComplex* in , int lines1 , int column1, doubleComplex* out );
+EXTERN_MATOPS void ztransposea ( doubleComplex* in , int lines1 , int column1, doubleComplex* out );
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* !__MATRIXTRANSPOSE_H__ */
diff --git a/src/matrixOperations/includes/ones.h b/src/matrixOperations/includes/ones.h
index d32f9a7e..63d8bd4b 100644
--- a/src/matrixOperations/includes/ones.h
+++ b/src/matrixOperations/includes/ones.h
@@ -14,9 +14,15 @@
#ifndef __ONES_H__
#define __ONES_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/*
** \brief create a float one value
*/
@@ -42,18 +48,22 @@
/*
** \brief create a float matrix full of one
*/
-void sonesa ( float* in , int rows , int cols );
+EXTERN_MATOPS void sonesa ( float* in , int rows , int cols );
/*
** \brief create a float complex matrix full of one
*/
-void conesa ( floatComplex* in , int rows ,int cols );
+EXTERN_MATOPS void conesa ( floatComplex* in , int rows ,int cols );
/*
** \brief create a double matrix full of one
*/
-void donesa ( double* in , int rows ,int cols );
+EXTERN_MATOPS void donesa ( double* in , int rows ,int cols );
/*
** \brief create a double complex matrix full of one
*/
-void zonesa ( doubleComplex* in , int rows ,int cols );
+EXTERN_MATOPS void zonesa ( doubleComplex* in , int rows ,int cols );
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* !__ONES_H__ */
diff --git a/src/matrixOperations/includes/spec.h b/src/matrixOperations/includes/spec.h
index ab12a6ba..b7b7d35c 100644
--- a/src/matrixOperations/includes/spec.h
+++ b/src/matrixOperations/includes/spec.h
@@ -14,9 +14,14 @@
#ifndef __SPEC_H__
#define __SPEC_H__
+#include "dynlib_matrixoperations.h"
#include "doubleComplex.h"
#include "floatComplex.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* spec gives only the eigenvalues
If you want the eigenvalues and the eigenvectors, use spec2 */
@@ -26,10 +31,10 @@
#define cspecs(in) in
#define zspecs(in) in
-void sspeca(float* in, int rows, float* out);
-void dspeca(double* in, int rows, double* out);
-void cspeca(floatComplex* in, int rows, floatComplex* out);
-void zspeca(doubleComplex* in, int rows,doubleComplex* out);
+EXTERN_MATOPS void sspeca(float* in, int rows, float* out);
+EXTERN_MATOPS void dspeca(double* in, int rows, double* out);
+EXTERN_MATOPS void cspeca(floatComplex* in, int rows, floatComplex* out);
+EXTERN_MATOPS void zspeca(doubleComplex* in, int rows,doubleComplex* out);
@@ -39,10 +44,13 @@ void zspeca(doubleComplex* in, int rows,doubleComplex* out);
#define cspec2s(in,out) cspecs(FloatComplex(1,0));*out=FloatComplex(creals(in),cimags(in));
#define zspec2s(in,out) zspecs(DoubleComplex(1,0));*out=DoubleComplex(zreals(in),zimags(in));
-void sspec2a(float* in, int rows, float* eigenvalues,float* eigenvectors);
-void dspec2a(double* in, int rows, double* eigenvalues,double* eigenvectors);
-void cspec2a(floatComplex* in, int rows, floatComplex* eigenvalues,floatComplex* eigenvectors);
-void zspec2a(doubleComplex* in, int rows,doubleComplex* eigenvalues,doubleComplex* eigenvectors);
+EXTERN_MATOPS void sspec2a(float* in, int rows, float* eigenvalues,float* eigenvectors);
+EXTERN_MATOPS void dspec2a(double* in, int rows, double* eigenvalues,double* eigenvectors);
+EXTERN_MATOPS void cspec2a(floatComplex* in, int rows, floatComplex* eigenvalues,floatComplex* eigenvectors);
+EXTERN_MATOPS void zspec2a(doubleComplex* in, int rows,doubleComplex* eigenvalues,doubleComplex* eigenvectors);
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* __SPEC_H__ */
diff --git a/src/matrixOperations/includes/zeros.h b/src/matrixOperations/includes/zeros.h
index 611f883b..e2f3f002 100644
--- a/src/matrixOperations/includes/zeros.h
+++ b/src/matrixOperations/includes/zeros.h
@@ -14,9 +14,14 @@
#ifndef __ZEROS_H__
#define __ZEROS_H__
+#include "dynlib_matrixoperations.h"
#include "floatComplex.h"
#include "doubleComplex.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/*
** \brief create a float one value
*/
@@ -42,18 +47,22 @@
/*
** \brief create a float matrix full of one
*/
-void szerosa ( float* in , int rows , int cols );
+EXTERN_MATOPS void szerosa ( float* in , int rows , int cols );
/*
** \brief create a float complex matrix full of one
*/
-void czerosa ( floatComplex* in , int rows ,int cols );
+EXTERN_MATOPS void czerosa ( floatComplex* in , int rows ,int cols );
/*
** \brief create a double matrix full of one
*/
-void dzerosa ( double* in , int rows ,int cols );
+EXTERN_MATOPS void dzerosa ( double* in , int rows ,int cols );
/*
** \brief create a double complex matrix full of one
*/
-void zzerosa ( doubleComplex* in , int rows ,int cols );
+EXTERN_MATOPS void zzerosa ( doubleComplex* in , int rows ,int cols );
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif /* !__ZEROS_H__ */