diff options
author | torset | 2009-02-20 09:53:57 +0000 |
---|---|---|
committer | torset | 2009-02-20 09:53:57 +0000 |
commit | 6ddc586d9c2a7e18a7eb7a204009553dc0628063 (patch) | |
tree | 6f11ada0f32e861ac509704938e98fefd50a1a15 /src | |
parent | de8c151417c691067ba9c46747195d80c23f256c (diff) | |
download | scilab2c-6ddc586d9c2a7e18a7eb7a204009553dc0628063.tar.gz scilab2c-6ddc586d9c2a7e18a7eb7a204009553dc0628063.tar.bz2 scilab2c-6ddc586d9c2a7e18a7eb7a204009553dc0628063.zip |
Diffstat (limited to 'src')
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) |