summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortorset2009-01-28 09:01:11 +0000
committertorset2009-01-28 09:01:11 +0000
commit44884431f95beb9080b88aa3d987d48b199f6dba (patch)
treeb787c99d4fbe1ba2c46c3e44d7645e25cad134f2
parent144963c0581158c31732e77e26823f40923c3ecb (diff)
downloadscilab2c-44884431f95beb9080b88aa3d987d48b199f6dba.tar.gz
scilab2c-44884431f95beb9080b88aa3d987d48b199f6dba.tar.bz2
scilab2c-44884431f95beb9080b88aa3d987d48b199f6dba.zip
Modify interfaces
-rw-r--r--src/operations/interface/int_OpPlus.h68
-rw-r--r--src/operations/interface/int_OpSlash.h105
2 files changed, 138 insertions, 35 deletions
diff --git a/src/operations/interface/int_OpPlus.h b/src/operations/interface/int_OpPlus.h
index 0287c81a..6a40563c 100644
--- a/src/operations/interface/int_OpPlus.h
+++ b/src/operations/interface/int_OpPlus.h
@@ -39,49 +39,77 @@
/* Matrix + Scalar */
/*On transforme le scalaire en tableau et on se ramene à s2s2...s2*/
-#define s2s0OpPluss2(in1,size,in2,out) sfilla((float*)out,size[0],size[1],in2);\
- s2s2OpPluss2(in1,size,(float*)out,size,out)
+#define s2s0OpPluss2(in1,size,in2,out) {float* temp;\
+ temp=malloc((uint)(size[0]*size[1])*sizeof(float));\
+ sfilla((float*)temp,size[0],size[1],in2);\
+ s2s2OpPluss2(in1,size,(float*)temp,size,out);\
+ free(temp);\
+ }
/*On transforme le scalaire en tableau et on se ramene à d2d2...d2*/
-#define d2d0OpPlusd2(in1,size,in2,out) dfilla((double*)out,size[0],size[1],in2);\
- d2d2OpPlusd2(in1,size,(double*)out,size,out)
+#define d2d0OpPlusd2(in1,size,in2,out) {double* temp;\
+ temp=malloc((uint)(size[0]*size[1])*sizeof(double));\
+ dfilla((double*)out,size[0],size[1],in2);\
+ d2d2OpPlusd2(in1,size,(double*)out,size,out);\
+ free(temp);\
+ }
/*On transforme le scalaire en tableau et on se ramene à c2c2...c2*/
-#define c2c0OpPlusc2(in1,size,in2,out) cfilla((floatComplex*)out,size[0],size[1],in2);\
- c2c2OpPlusc2(in1,size,(floatComplex*)out,size,out)
+#define c2c0OpPlusc2(in1,size,in2,out) {floatComplex* temp;\
+ temp=malloc((uint)(size[0]*size[1])*sizeof(floatComplex));\
+ cfilla((floatComplex*)temp,size[0],size[1],in2);\
+ c2c2OpPlusc2(in1,size,(floatComplex*)temp,size,out);\
+ free(temp);\
+ }
/*On transforme le scalaire float en scalaire floatComplex pour pouvoir utiliser c2c0...c2*/
#define c2s0OpPlusc2(in1,size,in2,out) c2c0OpPlusc2(in1,size,FloatComplex(in2,0),out)
/*On transforme le tableau de float en tableau de floatComplex pour pouvoir utiliser c2c0...c2*/
#define s2c0OpPlusc2(in1,size,in2,out) sfilla((float*)out,size[0],size[1],0);\
- c2c0OpPlusc2(FloatComplexMatrix(in1,(float*)out,size[0]*size[1]),size,in2,out)
+ c2c0OpPlusc2(FloatComplexMatrix(in1,(float*)out,size[0]*size[1]),size,in2,out);
/*On transforme le scalaire en tableau et on se ramene à z2z2...z2*/
-#define z2z0OpPlusz2(in1,size,in2,out) zfilla((doubleComplex*)out,size[0],size[1],in2);\
- z2z2OpPlusz2(in1,size,(doubleComplex*)out,size,out)
+#define z2z0OpPlusz2(in1,size,in2,out) {doubleComplex* temp;\
+ temp=malloc((uint)(size[0]*size[1])*sizeof(doubleComplex));\
+ zfilla((doubleComplex*)temp,size[0],size[1],in2);\
+ z2z2OpPlusz2(in1,size,(doubleComplex*)temp,size,out);\
+ free(temp);\
+ }
/*On transforme le scalaire double en scalaire doubleComplex pour pouvoir utiliser z2z0...z2*/
#define z2d0OpPlusz2(in1,size,in2,out) z2z0OpPlusz2(in1,size,DoubleComplex(in2,0),out)
/*On transforme le tableau de double en tableau de doubleComplex pour pouvoir utiliser z2z0...z2*/
#define d2z0OpPlusz2(in1,size,in2,out) dfilla((double*)out,size[0],size[1],0);\
- z2z0OpPlusz2(DoubleComplexMatrix(in1,(double*)out,size[0]*size[1]),size,in2,out)
+ z2z0OpPlusz2(DoubleComplexMatrix(in1,(double*)out,size[0]*size[1]),size,in2,out);
/* Scalar + Matrix */
/*On transforme le scalaire en tableau et on se ramene à s2s2...s2*/
-#define s0s2OpPluss2(in1,in2,size,out) sfilla((float*)out,size[0],size[1],in1);\
- s2s2OpPluss2((float*)out,size,in2,size,out)
+#define s0s2OpPluss2(in1,in2,size,out) {float* temp;\
+ temp=malloc((uint)(size[0]*size[1])*sizeof(float));\
+ sfilla((float*)temp,size[0],size[1],in1);\
+ s2s2OpPluss2((float*)temp,size,in2,size,out);\
+ free(temp);\
+ }
/*On transforme le scalaire en tableau et on se ramene à d2d2...d2*/
-#define d0d2OpPlusd2(in1,in2,size,out) dfilla((double*)out,size[0],size[1],in1);\
- d2d2OpPlusd2((double*)out,size,in2,size,out)
+#define d0d2OpPlusd2(in1,in2,size,out) {double* temp;\
+ temp=malloc((uint)(size[0]*size[1])*sizeof(double));\
+ dfilla((double*)temp,size[0],size[1],in1);\
+ d2d2OpPlusd2((double*)temp,size,in2,size,out);\
+ free(temp);\
+ }
/*On transforme le scalaire en tableau et on se ramene à c2c2...c2*/
-#define c0c2OpPlusc2(in1,in2,size,out) cfilla((floatComplex*)out,size[0],size[1],in1);\
- c2c2OpPlusc2((floatComplex*)out,size,in2,size,out)
+#define c0c2OpPlusc2(in1,in2,size,out) {floatComplex* temp;\
+ temp=malloc((uint)(size[0]*size[1])*sizeof(floatComplex));\
+ cfilla((floatComplex*)temp,size[0],size[1],in1);\
+ c2c2OpPlusc2((floatComplex*)temp,size,in2,size,out);\
+ free(temp);\
+ }
/*On transforme le scalaire float en scalaire floatComplex pour pouvoir utiliser c0c2...c2*/
#define s0c2OpPlusc2(in1,in2,size,out) c0c2OpPlusc2(FloatComplex(in1,0),in2,size,out)
@@ -91,8 +119,12 @@
c0c2OpPlusc2(in1,FloatComplexMatrix(in2,(float*)out,size[0]*size[1]),size,out)
/*On transforme le scalaire en tableau et on se ramene à z2z2...z2*/
-#define z0z2OpPlusz2(in1,in2,size,out) zfilla((doubleComplex*)out,size[0],size[1],in1);\
- z2z2OpPlusz2((doubleComplex*)out,size,in2,size,out)
+#define z0z2OpPlusz2(in1,in2,size,out) {doubleComplex* temp;\
+ temp=malloc((uint)(size[0]*size[1])*sizeof(doubleComplex));\
+ zfilla((doubleComplex*)temp,size[0],size[1],in1);\
+ z2z2OpPlusz2((doubleComplex*)temp,size,in2,size,out);\
+ free(temp);\
+ }
/*On transforme le scalaire double en scalaire doubleComplex pour pouvoir utiliser z0z2...z2*/
#define d0z2OpPlusz2(in1,in2,size,out) z0z2OpPlusz2(DoubleComplex(in1,0),in2,size,out)
diff --git a/src/operations/interface/int_OpSlash.h b/src/operations/interface/int_OpSlash.h
index b4de1088..c21d4fe1 100644
--- a/src/operations/interface/int_OpSlash.h
+++ b/src/operations/interface/int_OpSlash.h
@@ -36,39 +36,110 @@
/* Scalar / Matrix */
-#define s0s2OpSlashs2(in1,in2,size,out) for(int i=0;i<size[0]*size[1];i++) out[i]= srdivs(in1,in2[i]);
+/* On transforme s0 en s2 pour appeler s2s2OpDotSlashs2*/
+#define s0s2OpSlashs2(in1,in2,size,out) {float* temp;\
+ sfilla((float*)temp,size[0],size[1],in1);\
+ s2s2OpDotSlashs2((float*)temp,size,in2,size,out);\
+ }
+
+/* On transforme d0 en d2 */
+#define d0d2OpSlashd2(in1,in2,size,out) {double* temp;\
+ dfilla((double*)temp,size[0],size[1],in1);\
+ d2d2OpDotSlashd2((double*)temp,size,in2,size,out);\
+ }
+
+/* On transforme c0 en c2 */
+#define c0c2OpSlashc2(in1,in2,size,out) {floatComplex* temp;\
+ cfilla((floatComplex*)temp,size[0],size[1],in1);\
+ c2c2OpDotSlashc2((floatComplex*)temp,size,in2,size,out);\
+ }
+
+/* On transforme z0 en z2 */
+#define z0z2OpSlashz2(in1,in2,size,out) {doubleComplex* temp;\
+ zfilla((doubleComplex*)temp,size[0],size[1],in1);\
+ z2z2OpDotSlashz2((doubleComplex*)temp,size,in2,size,out);\
+ }
+
+/* On transforme s0 en c0 pour appeler c0c2OpSlashc2 */
+#define s0c2OpSlashc2(in1,in2,size,out) c0c2OpSlashc2(FloatComplex(in1,0),in2,size,out)
+
+/* On transforme d0 en z0 */
+#define d0z2OpSlashz2(in1,in2,size,out) z0z2OpSlashz2(DoubleComplex(in1,0),in2,size,out)
+
+/* On transforme s2 en c2 */
+#define c0s2OpSlashc2(in1,in2,size,out) {sfilla((float*)out,size[0],size[1],0);\
+ c0c2OpSlashc2(in1,FloatComplexMatrix(in2,(float*)out,size[0]*size[1]),size,out);\
+ }
+
+/* On transforme d2 en z2 */
+#define z0d2OpSlashz2(in1,in2,size,out) {dfilla((double*)out,size[0],size[1],0);\
+ z0z2OpSlashz2(in1,DoubleComplexMatrix(in2,(double*)out,size[0]*size[1]),size,out);\
+ }
-#define d0d2OpSlashd2(in1,in2,size,out) for(int i=0;i<size[0]*size[1];i++) out[i]= drdivs(in1,in2[i]);
-#define c0c2OpSlashc2(in1,in2,size,out) for(int i=0;i<size[0]*size[1];i++) out[i]= crdivs(in1,in2[i]);
+/* Matrix / Scalar */
-#define z0z2OpSlashz2(in1,in2,size,out) for(int i=0;i<size[0]*size[1];i++) out[i]= zrdivs(in1,in2[i]);
+/* On transforme s0 en s2 pour appeler s2s2OpDotSlashs2*/
+#define s2s0OpSlashs2(in1,size,in2,out) {float* temp;\
+ sfilla((float*)temp,size[0],size[1],in2);\
+ s2s2OpDotSlashs2(in1,size,(float*)temp,size,out);\
+ }
-#define s0c2OpSlashc2(in1,in2,size,out) for(int i=0;i<size[0]*size[1];i++) out[i]= crdivs(FloatComplex(in1,0),in2[i]);
+/* On transforme d0 en d2 */
+#define d2d0OpSlashd2(in1,size,in2,out) {double* temp;\
+ dfilla((double*)temp,size[0],size[1],in2);\
+ d2d2OpDotSlashd2(in1,size,(double*)temp,size,out);\
+ }
+
+/* On transforme c0 en c2 */
+#define c2c0OpSlashc2(in1,size,in2,out) {floatComplex* temp;\
+ cfilla((floatComplex*)temp,size[0],size[1],in2);\
+ c2c2OpDotSlashc2(in1,size,(floatComplex*)temp,size,out);\
+ }
-#define d0z2OpSlashz2(in1,in2,size,out) for(int i=0;i<size[0]*size[1];i++) out[i]= zrdivs(DoubleComplex(in1,0),in2[i]);
+/* On transforme z0 en z2 */
+#define z2z0OpSlashz2(in1,size,in2,out) {doubleComplex* temp;\
+ zfilla((doubleComplex*)temp,size[0],size[1],in2);\
+ z2z2OpDotSlashz2(in1,size,(doubleComplex*)temp,size,out);\
+ }
-#define c0s2OpSlashc2(in1,in2,size,out) for(int i=0;i<size[0]*size[1];i++) out[i]= crdivs(in1,FloatComplex(in2[i],0));
+/* On transforme s2 en c2 pour appeler c2c0OpSlashc2 */
+#define s2c0OpSlashc2(in1,size,in2,out) {sfilla((float*)out,size[0],size[1],0);\
+ c2c0OpSlashc2(FloatComplexMatrix(in1,(float*)out,size[0]*size[1]),size,in2,out);\
+ }
+
+/* On transforme d2 en z2 */
+#define d2z0OpSlashz2(in1,size,in2,out) {dfilla((double*)out,size[0],size[1],0);\
+ z0z2OpSlashz2(DoubleComplexMatrix(in1,(double*)out,size[0]*size[1]),size,in2,out);\
+ }
-#define z0d2OpSlashz2(in1,in2,size,out) for(int i=0;i<size[0]*size[1];i++) out[i]= zrdivs(in1,DoubleComplex(in2[i],0));
+
+/* On transforme s0 en c0 */
+#define c2s0OpSlashc2(in1,size,in2,out) c2c0OpSlashc2(in1,size,FloatComplex(in2,0),out)
+
+/* On transforme d0 en z0 */
+#define z2d0OpSlashz2(in1,size,in2,out) z2z0OpSlashz2(in1,size,DoubleComplex(in2,0),out)
+
-/* Matrix / Scalar */
-#define s2s0OpSlashs2(in1,size,in2,out) for(int i=0;i<size[0]*size[1];i++) out[i]= srdivs(in1[i],in2);
-#define d2d0OpSlashd2(in1,size,in2,out) for(int i=0;i<size[0]*size[1];i++) out[i]= drdivs(in1[i],in2);
+/* Matrix / Matrix */
+
+#define s2s2OpSlashs2(in1,size1,in2,size2,out) srdivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define d2d2OpSlashd2(in1,size1,in2,size2,out) drdivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
-#define c2c0OpSlashc2(in1,size,in2,out) for(int i=0;i<size[0]*size[1];i++) out[i]= crdivs(in1[i],in2);
+#define c2c2OpSlashc2(in1,size1,in2,size2,out) crdivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
-#define z2z0OpSlashz2(in1,size,in2,out) for(int i=0;i<size[0]*size[1];i++) out[i]= zrdivs(in1[i],in2);
+#define c2s2OpSlashc2(in1,size1,in2,size2,out) crdivma(in1,size1[0],size1[1],FloatComplexMatrix(in2,0,size2[0]*size2[1]),size2[0],size2[1],out)
-#define s2c0OpSlashc2(in1,size,in2,out) for(int i=0;i<size[0]*size[1];i++) out[i]= crdivs(FloatComplex(in1[i],0),in2);
+#define s2c2OpSlashc2(in1,size1,in2,size2,out) crdivma(FloatComplexMatrix(in1,0,size1[0]*size1[1]),size1[0],size1[1],in2,size2[0],size2[1],out)
-#define d2z0OpSlashz2(in1,size,in2,out) for(int i=0;i<size[0]*size[1];i++) out[i]= zrdivs(DoubleComplex(in1[i],0),in2);
+#define z2z2OpSlashz2(in1,size1,in2,size2,out) zrdivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
-#define c2s0OpSlashc2(in1,size,in2,out) for(int i=0;i<size[0]*size[1];i++) out[i]= crdivs(in1[i],FloatComplex(in2,0));
+#define z2d2OpSlashc2(in1,size1,in2,size2,out) crdivma(in1,size1[0],size1[1],DoubleComplexMatrix(in2,0,size2[0]*size2[1]),size2[0],size2[1],out)
-#define z2d0OpSlashz2(in1,size,in2,out) for(int i=0;i<size[0]*size[1];i++) out[i]= zrdivs(in1[i],DoubleComplex(in2,0));
+#define d2z2OpSlashc2(in1,size1,in2,size2,out) crdivma(DoubleComplexMatrix(in1,0,size1[0]*size1[1]),size1[0],size1[1],in2,size2[0],size2[1],out)
#endif /* !__INT_OPSLASH_H__ */