summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortorset2009-02-26 15:36:08 +0000
committertorset2009-02-26 15:36:08 +0000
commitf8241e9e6e96bed42178fe314d9e31e3920e290b (patch)
treefe5294dd0474e1fa0a557a32cd85fd5a8a8474b1
parent1ada0172dc98847da9bf6187cad039acb3464bac (diff)
downloadscilab2c-f8241e9e6e96bed42178fe314d9e31e3920e290b.tar.gz
scilab2c-f8241e9e6e96bed42178fe314d9e31e3920e290b.tar.bz2
scilab2c-f8241e9e6e96bed42178fe314d9e31e3920e290b.zip
Add Sci2C test for pow and matrixPow and modify interface, which were wrong
-rw-r--r--src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow_MatrixPow.sci50
-rw-r--r--src/elementaryFunctions/interfaces/int_OpDotHat.h24
-rw-r--r--src/elementaryFunctions/interfaces/int_OpHat.h10
3 files changed, 69 insertions, 15 deletions
diff --git a/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow_MatrixPow.sci b/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow_MatrixPow.sci
new file mode 100644
index 00000000..3706353b
--- /dev/null
+++ b/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow_MatrixPow.sci
@@ -0,0 +1,50 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test Hat_DotHat
+
+disp(4.1^3.5);
+disp(4.1.^3.5);
+
+disp(4.4^(3.2+%i*1.1));
+disp(4.4.^(3.2+%i*1.1));
+
+disp((3.2+%i*1.1)^4.4);
+disp((3.2+%i*1.1).^4.4);
+
+disp((3.2+%i*1.1)^(4.4+2.6*%i));
+disp((3.2+%i*1.1).^(4.4+2.6*%i));
+
+a=[1.2 4.1 3.9; 3.7 2.6 8.1];
+b=a+[2.5 3.9 8.7; 2.5 0.2 3.3]*%i;
+
+disp(1.2^a)
+disp(1.2.^a)
+
+disp(1.2^b)
+disp(1.2.^b)
+
+disp((1.2+%i*1.1)^a)
+disp((1.2+%i*1.1).^a)
+
+disp((1.2+%i*1.1)^b)
+disp((1.2+%i*1.1).^b)
+
+disp(a.^a)
+disp(a.^b)
+
+disp(b.^a)
+disp(b.^b)
+
+c=[1.2 1.3; 1.4 5.1];
+
+disp(c^2.1);
+disp(c^(2.1+%i*4.6));
+
+d=c+[4.1 2.1; 4.6 5.1]*%i;
+
+disp(d^2.1);
+disp(d^(2.1+%i*4.6));
+
+endfunction
diff --git a/src/elementaryFunctions/interfaces/int_OpDotHat.h b/src/elementaryFunctions/interfaces/int_OpDotHat.h
index 4c2c37a1..6e023ee1 100644
--- a/src/elementaryFunctions/interfaces/int_OpDotHat.h
+++ b/src/elementaryFunctions/interfaces/int_OpDotHat.h
@@ -60,7 +60,7 @@
}
#define d0z2OpDotHatz2(in1, in2, size, out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=zpows(DoubleComplex(in1,0),in2[i]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zpows(DoubleComplex(in1,0),in2[i]);\
}
#define c0s2OpDotHatc2(in1, in2, size, out) {int i=0;\
@@ -75,15 +75,15 @@
/* Matrix - Scalar */
#define s2s0OpDotHats2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=spows(in1[i],in2);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=spows(in1[i],in2);\
}
#define d2d0OpDotHatd2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=dpows(in1[i],in2);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=dpows(in1[i],in2);\
}
#define c2c0OpDotHatc2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=cpows(in1[i],in2);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cpows(in1[i],in2);\
}
#define z2z0OpDotHatz2(in1,size,in2,out) {int i=0;\
@@ -91,19 +91,19 @@
}
#define s2c0OpDotHatc2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=cpows(FloatComplex(in1[i],0),in2);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cpows(FloatComplex(in1[i],0),in2);\
}
#define d2z0OpDotHatc2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=zpows(DoubleComplex(in1[i],0),in2);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zpows(DoubleComplex(in1[i],0),in2);\
}
#define c2s0OpDotHatc2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=cpows(in1[i],FloatComplex(in2,0));\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cpows(in1[i],FloatComplex(in2,0));\
}
#define z2d0OpDotHatz2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=zpows(in1[i],DoubleComplex(in2,0));\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zpows(in1[i],DoubleComplex(in2,0));\
}
@@ -117,19 +117,19 @@
#define z2z2OpDotHatz2(in1, size1, in2, size2, out) zpowa(in1, size1[0]*size2[1], in2, out)
#define s2c2OpDotHatc2(in1, size1, in2, size2, out) {int i=0;\
- for (i=0;i<size1[0]*size2[1],i++) out[i]=cpows(FloatComplex(in1[i],0),in2[i]);\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=cpows(FloatComplex(in1[i],0),in2[i]);\
}
#define c2s2OpDotHatc2(in1, size1, in2, size2, out) {int i=0;\
- for (i=0;i<size1[0]*size2[1],i++) out[i]=cpows(in1[i],FloatComplex(in2[i],0));\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=cpows(in1[i],FloatComplex(in2[i],0));\
}
#define d2z2OpDotHatz2(in1, size1, in2, size2, out) {int i=0;\
- for (i=0;i<size1[0]*size2[1],i++) out[i]=zpows(FloatComplex(in1[i],0),in2[i]);\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=zpows(DoubleComplex(in1[i],0),in2[i]);\
}
#define z2d2OpDotHatz2(in1, size1, in2, size2, out) {int i=0;\
- for (i=0;i<size1[0]*size2[1],i++) out[i]=zpows(in1[i],FloatComplex(in2[i],0));\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=zpows(in1[i],DoubleComplex(in2[i],0));\
}
diff --git a/src/elementaryFunctions/interfaces/int_OpHat.h b/src/elementaryFunctions/interfaces/int_OpHat.h
index 8858eafc..8cc8849c 100644
--- a/src/elementaryFunctions/interfaces/int_OpHat.h
+++ b/src/elementaryFunctions/interfaces/int_OpHat.h
@@ -61,7 +61,7 @@
}
#define d0z2OpHatz2(in1, in2, size, out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=zpows(DoubleComplex(in1,0),in2[i]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zpows(DoubleComplex(in1,0),in2[i]);\
}
#define c0s2OpHatc2(in1, in2, size, out) {int i=0;\
@@ -86,18 +86,22 @@
/* FIXME : malloc here */
#define s2c0OpHatc2(in1,size,in2,out) {float* tmp;\
+ tmp = malloc((uint)(size[0]*size[1])*sizeof(float));\
szerosa(tmp,size[0],size[1]);\
cpowma(FloatComplexMatrix(in1,tmp,size[0]*size[1]),size[0],in2,out);\
+ free(tmp);\
}
-#define d2z0OpHatc2(in1,size,in2,out) {double* tmp;\
+#define d2z0OpHatz2(in1,size,in2,out) {double* tmp;\
+ tmp = malloc((uint)(size[0]*size[1])*sizeof(double));\
dzerosa(tmp,size[0],size[1]);\
zpowma(DoubleComplexMatrix(in1,tmp,size[0]*size[1]),size[0],in2,out);\
+ free(tmp);\
}
#define c2s0OpHatc2(in1,size,in2,out) cpowma(in1,size[0],FloatComplex(in2,0),out);
-#define z2d0OpHatz2(in1,size,in2,out) zpowma(in1,size[0],DoubleCompelx(in2,0),out);
+#define z2d0OpHatz2(in1,size,in2,out) zpowma(in1,size[0],DoubleComplex(in2,0),out);