diff options
Diffstat (limited to 'src/operations/interface/int_OpStar.h')
-rw-r--r-- | src/operations/interface/int_OpStar.h | 104 |
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__ */ |