summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACosh.sci4
-rw-r--r--src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci61
-rw-r--r--src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc7
-rw-r--r--src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h2
-rw-r--r--src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci22
-rw-r--r--src/elementaryFunctions/interfaces/int_OpDotHat.h31
-rw-r--r--src/elementaryFunctions/interfaces/int_OpHat.h45
7 files changed, 109 insertions, 63 deletions
diff --git a/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACosh.sci b/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACosh.sci
index 18106179..08739198 100644
--- a/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACosh.sci
+++ b/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACosh.sci
@@ -8,8 +8,8 @@ function mainfunction()
disp (acosh(7));
disp (acosh(2+11*%i))
-c=[4 2 3 ;8 8 4; 3 4 5]
-d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5]
+c=[4 2 3 ;8 8 4; 3 4 5];
+d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5];
disp (acosh(c))
disp (acosh(d))
diff --git a/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci b/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci
index 02b5c3a7..57a21ec9 100644
--- a/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci
+++ b/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci
@@ -1,20 +1,57 @@
-//SCI2C: DEFAULT_PRECISION= DOUBLE
+//SCI2C: DEFAULT_PRECISION= FLOAT
+
+//test pow
function mainfunction()
-
-disp(real(4));
-disp(imag(4));
+//scalar^scalar
+disp(3.2^5.1)
+disp(3.2^(5.1+%i*1.4))
+disp((2.1+%i*0.3)^6.4)
+disp((2.1+%i*0.3)^(5.1+%i*1.4))
+
+//scalar.^scalar
+disp(3.2.^5.1)
+disp(3.2.^(5.1+%i*1.4))
+disp((2.1+%i*0.3).^6.4)
+disp((2.1+%i*0.3).^(5.1+%i*1.4))
+
+//scalar^matrice
+
+a=[1.2 6.1 3.6; 1.7 4.9 7.1];
+b=a+%i*[1.8 2.9 3.6; 5.5 7.3 4.1];
+
+disp(2.1^a)
+disp(2.3^b)
+disp((3.5+%i*2.5)^a)
+disp((3.5+%i*2.5)^b)
+
+//scalar.^matrice
+disp(2.1.^a)
+disp(2.3.^b)
+disp((3.5+%i*2.5).^a)
+disp((3.5+%i*2.5).^b)
+
+//matrix^scalar
+//matrice carrée attendue ici
+c=[1.2 6.1 ; 4.9 7.1];
+d=c+%i*[1.8 2.9 ; 5.5 7.3];
+disp(c^3.2)
+disp(c^(3.2+%i*5.4))
+disp(d^3.2)
+disp(d^(3.2+%i*5.4))
-disp(real(1+2*%i));
-disp(imag(1+2*%i));
+//matrix.^scalar
+disp(a.^3.2)
+disp(a.^(3.2+%i*5.4))
+disp(b.^3.2)
+disp(b.^(3.2+%i*5.4))
-a=[4 2 7 5;4 8 6 1];
-disp(real(a));
-disp(imag(a));
+//matrix.^matrix
+disp(a.^a)
+disp(a.^b)
+disp(b.^a)
+disp(b.^b)
-b=a+%i*2*a
-disp(real(b));
-disp(imag(b));
endfunction
diff --git a/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc b/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc
index 4c38ac68..1881282a 100644
--- a/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc
+++ b/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc
@@ -24,7 +24,6 @@ SWSRCS = \
$(CSRCDIR)/doubleComplex.c \
$(CSRCDIR)/floatComplex.c \
$(CSRCDIR)/RealToComplex.c \
- $(CSRCDIR)/OpDotHat.c \
$(CSRCDIR)/OpEqual.c \
$(CSRCDIR)/OpIns.c \
$(CSRCDIR)/OpExt.c \
@@ -432,7 +431,11 @@ SWSRCS = \
$(CSRCDIR)/drowmina.c \
$(CSRCDIR)/drowmaxa.c \
$(CSRCDIR)/dcolumnmina.c \
- $(CSRCDIR)/dcolumnmaxa.c
+ $(CSRCDIR)/dcolumnmaxa.c \
+ $(CSRCDIR)/cpowma.c \
+ $(CSRCDIR)/dpowma.c \
+ $(CSRCDIR)/spowma.c \
+ $(CSRCDIR)/zpowma.c
diff --git a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h
index 9d4a3726..1381f0e5 100644
--- a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h
+++ b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h
@@ -8,7 +8,6 @@
#include "doubleComplex.h"
#include "floatComplex.h"
#include "RealToComplex.h"
-#include "OpDotHat.h"
#include "OpEqual.h"
#include "OpIns.h"
#include "OpExt.h"
@@ -116,6 +115,7 @@
#include "int_log1p.h"
/* interfacing pow */
#include "pow.h"
+#include "matrixPow.h"
#include "int_OpHat.h"
#include "int_OpDotHat.h"
/* interfacing sin */
diff --git a/src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci b/src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci
index cd44510b..3b9a8e93 100644
--- a/src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci
+++ b/src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci
@@ -721,8 +721,8 @@ PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
PrintStringInfo('z0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
-PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
-PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
PrintStringInfo('c2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
@@ -731,18 +731,18 @@ PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
PrintStringInfo('c0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
-PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
-PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
-PrintStringInfo('s2c0'+ArgSeparator+'s2',ClassFileName,'file','y');
-PrintStringInfo('d2z0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
-PrintStringInfo('s0c2'+ArgSeparator+'s2',ClassFileName,'file','y');
-PrintStringInfo('d0z2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
PrintStringInfo('c0s2'+ArgSeparator+'c2',ClassFileName,'file','y');
PrintStringInfo('z0d2'+ArgSeparator+'z2',ClassFileName,'file','y');
@@ -751,6 +751,12 @@ PrintStringInfo('d0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
PrintStringInfo('c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+
// --- Annotation Function And Function List Function. ---
FunctionName = 'OpDotHat';
PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'both','y');
diff --git a/src/elementaryFunctions/interfaces/int_OpDotHat.h b/src/elementaryFunctions/interfaces/int_OpDotHat.h
index 49910c82..4c2c37a1 100644
--- a/src/elementaryFunctions/interfaces/int_OpDotHat.h
+++ b/src/elementaryFunctions/interfaces/int_OpDotHat.h
@@ -25,9 +25,9 @@
#define z0z0OpDotHatz0(in1, in2) zpows(in1, in2)
-#define c0s0OpDotHatc0(in1, in2) cpows(in1, FloatComplex(in2,0))
+#define s0c0OpDotHatc0(in1, in2) cpows(FloatComplex(in1,0), in2)
-#define z0z0OpDotHatz0(in1, in2) zpows(in1, in2)
+#define c0s0OpDotHatc0(in1, in2) cpows(in1, FloatComplex(in2,0))
#define d0z0OpDotHatz0(in1, in2) zpows(DoubleComplex(in1,0), in2)
@@ -107,15 +107,32 @@
}
-/* FIXME : miss mixed types prototypes */
/* Matrix - Matrix */
-#define s2s2OpDotHats2(in1, size, in2, out) spowa(in1, size[0]*size[1], in2, out)
+#define s2s2OpDotHats2(in1, size1, in2, size2, out) spowa(in1, size1[0]*size2[1], in2, out)
+
+#define d2d2OpDotHatd2(in1, size1, in2, size2, out) dpowa(in1, size1[0]*size2[1], in2, out)
-#define d2d2OpDotHatd2(in1, size, in2, out) dpowa(in1, size[0]*size[1], in2, out)
+#define c2c2OpDotHatc2(in1, size1, in2, size2, out) cpowa(in1, size1[0]*size2[1], in2, out)
+
+#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]);\
+ }
+
+#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));\
+ }
+
+#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]);\
+ }
+
+#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));\
+ }
-#define c2c2OpDotHatc2(in1, size, in2, out) cpowa(in1, size[0]*size[1], in2, out)
-#define z2z2OpDotHatz2(in1, size, in2, out) zpowa(in1, size[0]*size[1], in2, out)
#endif /* !__INT_OPDOTHAT_H__ */
diff --git a/src/elementaryFunctions/interfaces/int_OpHat.h b/src/elementaryFunctions/interfaces/int_OpHat.h
index 18765bed..8858eafc 100644
--- a/src/elementaryFunctions/interfaces/int_OpHat.h
+++ b/src/elementaryFunctions/interfaces/int_OpHat.h
@@ -74,49 +74,32 @@
/* Matrix - Scalar */
+/* Matrices must be square */
-#define s2s0OpHats2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=spows(in1[i],in2);\
- }
+#define s2s0OpHats2(in1,size,in2,out) spowma(in1,size[0],in2,out);
-#define d2d0OpHatd2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=dpows(in1[i],in2);\
- }
+#define d2d0OpHatd2(in1,size,in2,out) dpowma(in1,size[0],in2,out);
-#define c2c0OpHatc2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=cpows(in1[i],in2);\
- }
+#define c2c0OpHatc2(in1,size,in2,out) cpowma(in1,size[0],in2,out);
-#define z2z0OpHatz2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=zpows(in1[i],in2);\
- }
+#define z2z0OpHatz2(in1,size,in2,out) zpowma(in1,size[0],in2,out);
-#define s2c0OpHatc2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=cpows(FloatComplex(in1[i],0),in2);\
+/* FIXME : malloc here */
+#define s2c0OpHatc2(in1,size,in2,out) {float* tmp;\
+ szerosa(tmp,size[0],size[1]);\
+ cpowma(FloatComplexMatrix(in1,tmp,size[0]*size[1]),size[0],in2,out);\
}
-#define d2z0OpHatc2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=zpows(DoubleComplex(in1[i],0),in2);\
+#define d2z0OpHatc2(in1,size,in2,out) {double* tmp;\
+ dzerosa(tmp,size[0],size[1]);\
+ zpowma(DoubleComplexMatrix(in1,tmp,size[0]*size[1]),size[0],in2,out);\
}
-#define c2s0OpHatc2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=cpows(in1[i],FloatComplex(in2,0));\
- }
-
-#define z2d0OpHatz2(in1,size,in2,out) {int i=0;\
- for (i=0,i<size[0]*size[1];i++) out[i]=zpows(in1[i],DoubleComplex(in2,0));\
- }
-
-
-/* FIXME : miss mixed types prototypes */
-/* Matrix - Matrix */
-#define s2s2OpHats2(in1, size, in2, out) spowma(in1, size[0]*size[1], in2, out)
+#define c2s0OpHatc2(in1,size,in2,out) cpowma(in1,size[0],FloatComplex(in2,0),out);
-#define d2d2OpHatd2(in1, size, in2, out) dpowma(in1, size[0]*size[1], in2, out)
+#define z2d0OpHatz2(in1,size,in2,out) zpowma(in1,size[0],DoubleCompelx(in2,0),out);
-#define c2c2OpHatc2(in1, size, in2, out) cpowma(in1, size[0]*size[1], in2, out)
-#define z2z2OpHatz2(in1, size, in2, out) zpowma(in1, size[0]*size[1], in2, out)