summaryrefslogtreecommitdiff
path: root/src/operations/interface/int_OpStar.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/operations/interface/int_OpStar.h')
-rw-r--r--src/operations/interface/int_OpStar.h104
1 files changed, 57 insertions, 47 deletions
diff --git a/src/operations/interface/int_OpStar.h b/src/operations/interface/int_OpStar.h
index 9e4c3f79..14456060 100644
--- a/src/operations/interface/int_OpStar.h
+++ b/src/operations/interface/int_OpStar.h
@@ -36,67 +36,64 @@
/* Scalar * Matrix */
-/* On transforme le scalaire en tableau pour ensuite pouvoir appeler la multiplication éléments par éléments */
-#define s0s2OpStars2(in1,in2,size,out) sfilla((float*)out,size[0],size[1],in1);\
- s2s2OpDotStars2((float*)out,size,in2,size,out)
-/* On transforme le scalaire en tableau pour ensuite pouvoir appeler la multiplication éléments par éléments */
-#define d0d2OpStard2(in1,in2,size,out) dfilla((double*)out,size[0],size[1],in1);\
- d2d2OpDotStard2((double*)out,size,in2,size,out)
+#define s0s2OpStars2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
-/* On transforme le scalaire en tableau pour ensuite pouvoir appeler la multiplication éléments par éléments */
-#define c0c2OpStarc2(in1,in2,size,out) cfilla((floatComplex*)out,size[0],size[1],in1);\
- c2c2OpDotStarc2((floatComplex*)out,size,in2,size,out)
-/* On transforme le scalaire en tableau pour ensuite pouvoir appeler la multiplication éléments par éléments */
-#define z0z2OpStarz2(in1,in2,size,out) zfilla((doubleComplex*)out,size[0],size[1],in1);\
- z2z2OpDotStarz2((doubleComplex*)out,size,in2,size,out)
+#define d0d2OpStard2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+
+
+#define c0c2OpStarc2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,in2[i]);}
+
+
+#define z0z2OpStarz2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,in2[i]);}
-/* On transforme le float en floatComplex puis on appelle c0c2...c2 */
#define s0c2OpStarc2(in1,in2,size,out) c0c2OpStarc2(FloatComplex(in1,0),in2,size,out)
-/* On transforme le double en doubleComplex puis on appelle z0z2...z2 */
+
#define d0z2OpStarz2(in1,in2,size,out) z0z2OpStarz2(DoubleComplex(in1,0),in2,size,out)
-/* on transforme le tableau de float en tableau de floatComplex pour appeler c0c2...c2*/
-#define c0s2OpStarc2(in1,in2,size,out) sfilla((float*)out,size[0],size[1],0);\
- c0c2OpStarc2(in1,FloatComplexMatrix(in2,(float*)out,size[0]*size[1]),size,out)
-/* on transforme le tableau de double en tableau de doubleComplex pour appeler z0z2...z2*/
-#define z0d2OpStarz2(in1,in2,size,out) dfilla((double*)out,size[0],size[1],0);\
- z0z2OpStarz2(in1,DoubleComplexMatrix(in2,(double*)out,size[0]*size[1]),size,out)
+#define c0s2OpStarc2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,FloatComplex(in2[i],0));}
+
+#define z0d2OpStarz2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,DoubleComplex(in2[i],0));}
/* Matrix * Scalar */
-/* On transforme le scalaire en tableau pour ensuite pouvoir appeler la multiplication éléments par éléments */
-#define s2s0OpStars2(in1,size,in2,out) sfilla((float*)out,size[0],size[1],in2);\
- s2s2OpDotStars2(in1,size,(float*)out,size,out)
-/* On transforme le scalaire en tableau pour ensuite pouvoir appeler la multiplication éléments par éléments */
-#define d2d0OpStard2(in1,size,in2,out) dfilla((double*)out,size[0],size[1],in2);\
- d2d2OpDotStard2(in1,size,(double*)out,size,out)
+#define s2s0OpStars2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
+
+
+#define d2d0OpStard2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
+
+
+#define c2c0OpStarc2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1[i],in2);}
-/* On transforme le scalaire en tableau pour ensuite pouvoir appeler la multiplication éléments par éléments */
-#define c2c0OpStarc2(in1,size,in2,out) cfilla((floatComplex*)out,size[0],size[1],in2);\
- c2c2OpDotStarc2(in1,size,(floatComplex*)out,size,out)
+#define z2z0OpStarz2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1[i],in2);}
-/* On transforme le scalaire en tableau pour ensuite pouvoir appeler la multiplication éléments par éléments */
-#define z2z0OpStarz2(in1,size,in2,out) zfilla((doubleComplex*)out,size[0],size[1],in2);\
- z2z2OpDotStarz2(in1,size,(doubleComplex*)out,size,out)
-/* On transforme le tableau de float en tableau de floatComplex puis on appelle c2c0...c2 */
-#define s2c0OpStarc2(in1,size,in2,out) sfilla((float*)out,size[0],size[1],0);\
- c2c0OpStarc2(FloatComplexMatrix(in1,(float*)out,size[0]*size[1]),size,in2,out)
+#define s2c0OpStarc2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(FloatComplex(in1[i],0),in2);}
-/* On transforme le tableau de double en tableau de doubleComplex puis on appelle z2z0...z2 */
-#define d2z0OpStarz2(in1,size,in2,out) dfilla((double*)out,size[0],size[1],0);\
- z2z0OpStarz2(DoubleComplexMatrix(in1,(double*)out,size[0]*size[1]),size,in2,out)
-/* on transforme le float en floatComplex pour appeler c2c0...c2*/
+#define d2z0OpStarz2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(DoubleComplex(in1[i],0),in2);}
+
+
#define c2s0OpStarc2(in1,size,in2,out) c2c0OpStarc2(in1,size,FloatComplex(in2,0),out)
-/* on transforme le double en doubleComplex pour appeler z2z0...z2*/
+
#define z2d0OpStarz2(in1,size,in2,out) z2z0OpStarz2(in1,size,DoubleComplex(in2,0),out)
/* Matrix * Matrix */
@@ -107,14 +104,27 @@
#define c2c2OpStarc2(in1,size1,in2,size2,out) cmulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
-#define c2s2OpStarc2(in1,size1,in2,size2,out) cmulma(in1,size1[0],size1[1],FloatComplexMatrix(in2,0,size2[0]*size2[1]),size2[0],size2[1],out)
-
-#define s2c2OpStarc2(in1,size1,in2,size2,out) cmulma(FloatComplexMatrix(in1,0,size1[0]*size1[1]),size1[0],size1[1],in2,size2[0],size2[1],out)
-
#define z2z2OpStarz2(in1,size1,in2,size2,out) zmulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
-#define z2d2OpStarc2(in1,size1,in2,size2,out) cmulma(in1,size1[0],size1[1],DoubleComplexMatrix(in2,0,size2[0],size2[1]),size2[0],size2[1],out)
-
-#define d2z2OpStarc2(in1,size1,in2,size2,out) cmulma(DoubleComplexMatrix(in1,0,size1[0],size1[1]),size1[0],size1[1],in2,size2[0],size2[1],out)
+/* FIXME: There is some malloc in the define below, maybe they can be remove */
+#define c2s2OpStarc2(in1,size1,in2,size2,out) {float* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(float));\
+ sfilla(temp,size2[0],size2[1],0);\
+ c2c2OpStarc2(in1, size1, FloatComplexMatrix(in2,temp,size2[0]*size2[1]), size2, out);}
+
+#define s2c2OpStarc2(in1,size1,in2,size2,out) {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ c2c2OpStarc2(FloatComplexMatrix(in2,temp,size1[0]*size1[1]), size1, in2, size2, out);}
+
+#define z2d2OpStarc2(in1,size1,in2,size2,out) {double* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(double));\
+ dfilla(temp,size2[0],size2[1],0);\
+ z2z2OpStarz2(in1, size1, DoubleComplexMatrix(in2,temp,size2[0]*size2[1]), size2, out);}
+
+#define d2z2OpStarc2(in1,size1,in2,size2,out) {double* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ z2z2OpStarz2(DoubleComplexMatrix(in1,temp,size1[0]*size1[1]), size1, in2, size2, out);}
#endif /* !__INT_OPSTAR_H__ */