summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/signalProcessing/includes/ifft.h12
-rw-r--r--src/signalProcessing/interfaces/int_convol.h126
-rw-r--r--src/signalProcessing/interfaces/int_ifft.h4
3 files changed, 134 insertions, 8 deletions
diff --git a/src/signalProcessing/includes/ifft.h b/src/signalProcessing/includes/ifft.h
index e599b22a..a0c06ef4 100644
--- a/src/signalProcessing/includes/ifft.h
+++ b/src/signalProcessing/includes/ifft.h
@@ -21,8 +21,16 @@
#define ciffts(in) in
#define ziffts(in) in
-#define sifftma(in,rows,columns,out) cifftma(FloatComplexMatrix(in,0),rows,columns,out)
-#define difftma(in,rows,columns,out) zifftma(DoubleComplexMatrix(in,0),rows,columns,out)
+#define sifftma(in,rows,columns,out) {float* temp;\
+ temp=malloc((uint)(rows*columns)*sizeof(float));\
+ sfilla(temp,rows,columns,0);\
+ cifftma(FloatComplexMatrix(in,temp,rows*columns),rows,columns,out);\
+ }
+#define difftma(in,rows,columns,out) {double* temp;\
+ temp=malloc((uint)(rows*columns)*sizeof(double));\
+ dfilla(temp,rows,columns,0);\
+ zifftma(DoubleComplexMatrix(in,temp,rows*columns),rows,columns,out);\
+ }
/*
** compute the inverse fast fourier transform of a vector
diff --git a/src/signalProcessing/interfaces/int_convol.h b/src/signalProcessing/interfaces/int_convol.h
index 9c0b730a..80ec65b1 100644
--- a/src/signalProcessing/interfaces/int_convol.h
+++ b/src/signalProcessing/interfaces/int_convol.h
@@ -15,6 +15,9 @@
#ifndef __INT_CONVOL_H__
#define __INT_CONVOL_H__
+
+/* Scalar - Scalar */
+
#define s0s0convols0(in1,in2) in1*in2
#define d0d0convold0(in1,in2) in1*in2
@@ -23,13 +26,128 @@
#define z0z0convolz0(in1,in2) zmuls(in1,in2)
+#define s0c0convolc0(in1,in2) cmuls(FloatComplex(in1,0),in2)
+
+#define d0z0convolz0(in1,in2) zmuls(DoubleComplex(in1,0),in2)
+
+#define c0s0convolc0(in1,in2) cmuls(in1,FloatComplex(in2,0))
+
+#define z0d0convolz0(in1,in2) zmuls(in1,DoubleComplex(in2,0))
+
+/* Scalar - Matrix */
+
+#define s0s2convols2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*in2[i];\
+ }
+
+#define d0d2convold2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*in2[i];\
+ }
+
+#define c0c2convolc2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,in2[i]);\
+ }
+
+#define z0z2convolz2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,in2[i]);\
+ }
+
+#define s0c2convolc2(in1,in2,size,out) c0c2convolc2(FloatComplex(in1,0),in2,size,out)
+
+#define d0z2convolz2(in1,in2,size,out) z0z2convolz2(DoubleComplex(in1,0),in2,size,out)
+
+#define c0s2convolc2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,FloatComplex(in2[i],0));\
+ }
+
+#define z0d2convolz2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,DoubleComplex(in2[i],0));\
+ }
+
+/* Matrix - Scalar */
+
+#define s2s0convols2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;\
+ }
+
+#define d2d0convold2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;\
+ }
+
+#define c2c0convolc2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1[i],in2);\
+ }
+
+#define z2z0convolz2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1[i],in2);\
+ }
+
+#define s2c0convolc2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(FloatComplex(in1[i],0),in2);\
+ }
+
+#define d2z0convolz2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(DoubleComplex(in1[i],0),in2);\
+ }
+
+#define c2s0convolc2(in1,size,in2,out) c2c0convolc2(in1,size,FloatComplex(in2,0),out)
+
+#define z2d0convolz2(in1,size,in2,out) z2z0convolz2(in1,size,DoubleComplex(in2,0),out)
+
+
+/* Matrix - Matrix */
+
+#define s2s2convols2(in1,size1,in2,size2,out) if(((size1[0]==1)||(size1[1]==1))&&((size2[0]==1)||(size2[1]==1))){\
+ sconva(in1,size1[0]*size1[1],in2,size2[0]*size2[1],out);\
+ }else{\
+ sconv2da(in1,size1[0],size1[1],in2,size2[0],size2[1],out);\
+ }
+
+#define d2d2convold2(in1,size1,in2,size2,out) if(((size1[0]==1)||(size1[1]==1))&&((size2[0]==1)||(size2[1]==1))){\
+ dconva(in1,size1[0]*size1[1],in2,size2[0]*size2[1],out);\
+ }else{\
+ dconv2da(in1,size1[0],size1[1],in2,size2[0],size2[1],out);\
+ }
+
+#define c2c2convolc2(in1,size1,in2,size2,out) if(((size1[0]==1)||(size1[1]==1))&&((size2[0]==1)||(size2[1]==1))){\
+ cconva(in1,size1[0]*size1[1],in2,size2[0]*size2[1],out);\
+ }else{\
+ cconv2da(in1,size1[0],size1[1],in2,size2[0],size2[1],out);\
+ }
+
+#define z2z2convolz2(in1,size1,in2,size2,out) if(((size1[0]==1)||(size1[1]==1))&&((size2[0]==1)||(size2[1]==1))){\
+ zconva(in1,size1[0]*size1[1],in2,size2[0]*size2[1],out);\
+ }else{\
+ zconv2da(in1,size1[0],size1[1],in2,size2[0],size2[1],out);\
+ }
-#define s2convols2(in,size,out) sconvola(in, size[0]*size[1], out)
+#define s2c2convolc2(in1,size1,in2,size2,out) {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ c2c2convolc2(FloatComplexMatrix(in1,temp,size1[0]*size1[1]),size1,in2,size2,out);\
+ free(temp);\
+ }
+
+#define d2z2convolz2(in1,size1,in2,size2,out) {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ z2z2convolz2(DoubleComplexMatrix(in1,temp,size1[0]*size1[1]),size1,in2,size2,out);\
+ free(temp);\
+ }
-#define d2convold2(in,size,out) dconvola(in, size[0]*size[1], out)
+#define c2s2convolc2(in1,size1,in2,size2,out) {float* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(float));\
+ sfilla(temp,size2[0],size2[1],0);\
+ c2c2convolc2(in1,size1,FloatComplexMatrix(in2,temp,size2[0]*size2[1]),size2,out);\
+ free(temp);\
+ }
-#define c2convolc2(in,size,out) cconvola(in, size[0]*size[1], out)
-#define z2convolz2(in,size,out) zconvola(in, size[0]*size[1], out)
+#define z2d2convolz2(in1,size1,in2,size2,out) {double* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(double));\
+ dfilla(temp,size2[0],size2[1],0);\
+ z2z2convolz2(in1,size1,DoubleComplexMatrix(in2,temp,size2[0]*size2[1]),size2,out);\
+ free(temp);\
+ }
#endif /* !__INT_CONVOL_H__ */
diff --git a/src/signalProcessing/interfaces/int_ifft.h b/src/signalProcessing/interfaces/int_ifft.h
index 419969c9..87aa138f 100644
--- a/src/signalProcessing/interfaces/int_ifft.h
+++ b/src/signalProcessing/interfaces/int_ifft.h
@@ -15,9 +15,9 @@
#ifndef __INT_IFFT_H__
#define __INT_IFFT_H__
-#define s0ifftc0(in) FloatComlex(siffts(in),0)
+#define s0ifftc0(in) FloatComplex(siffts(in),0)
-#define d0ifftz0(in) DoubleComlex(diffts(in),0)
+#define d0ifftz0(in) DoubleComplex(diffts(in),0)
#define c0ifftc0(in) ciffts(in)