diff options
8 files changed, 139 insertions, 41 deletions
diff --git a/src/Scilab2C/SCI2CTests/test999_WorkingDir/SCI2CInputParameters.sce b/src/Scilab2C/SCI2CTests/test999_WorkingDir/SCI2CInputParameters.sce index 84590e7b..52d8c7d5 100644 --- a/src/Scilab2C/SCI2CTests/test999_WorkingDir/SCI2CInputParameters.sce +++ b/src/Scilab2C/SCI2CTests/test999_WorkingDir/SCI2CInputParameters.sce @@ -23,7 +23,7 @@ UserSciCodeMainDir = '../SCI2CTests/test999_WorkingDir'; // --- Path + filename of the .sci main file of the code to be translated. ---
// It is the entry point.
-UserScilabMainFile = fullfile(UserSciCodeMainDir,'scilabcode\mainfunction.sci');
+UserScilabMainFile = fullfile(UserSciCodeMainDir,'scilabcode/mainfunction.sci');
// --- List of the paths containing the .sci files written by the user. ---
UserSciFilesPaths = ...
@@ -79,7 +79,7 @@ CopySciCodeIntoCCode = 1; // windows
// unix
// cygwin
-CCompilerPathStyle = 'cygwin';
+CCompilerPathStyle = 'unix';
// --- Path + File name of the main SCI2C library header file.
// Sci2CLibMainHeaderFName = 'D:\Nutricato\OpenProjects\FP6_hArtes\WP2_SCI2C\Software\svnhartes\src\Scilab2C\Scilab2C\CFiles\sci2cincludes\sci2clib.h';
diff --git a/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci b/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci index d02cdc22..1938b070 100644 --- a/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci +++ b/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci @@ -2,15 +2,15 @@ function mainfunction()
-s1 = 2; s2 = 3; +s1 = [1+%i; 2; 3; 4; 5] + +s2 = find(s1==3) + +disp(s2) + + -a = 2; b = 4; -A = ones(3,4); B = ones(3,4); -C = LinComb(s1,a,s2,b); // s1*a+s2*b -D = LinComb(s1,A,s2,B); // s1*A+s2*B -disp(C); -disp(D); endfunction diff --git a/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc b/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc index 406dcbab..ead23251 100644 --- a/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc +++ b/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc @@ -25,7 +25,6 @@ SWSRCS = \ $(CSRCDIR)/floatComplex.c \ $(CSRCDIR)/RealToComplex.c \ $(CSRCDIR)/conj.c \ - $(CSRCDIR)/disp.c \ $(CSRCDIR)/ones.c \ $(CSRCDIR)/zeros.c \ $(CSRCDIR)/OpApex.c \ @@ -39,8 +38,6 @@ SWSRCS = \ $(CSRCDIR)/OpStar.c \ $(CSRCDIR)/OpIns.c \ $(CSRCDIR)/OpExt.c \ - $(CSRCDIR)/OpRc.c \ - $(CSRCDIR)/OpCc.c \ $(CSRCDIR)/cos.c \ $(CSRCDIR)/cosh.c \ $(CSRCDIR)/sin.c \ @@ -101,7 +98,27 @@ SWSRCS = \ $(CSRCDIR)/dlog1ps.c \ $(CSRCDIR)/slog1pa.c \ $(CSRCDIR)/dlog1pa.c \ - + $(CSRCDIR)/dfinda.c \ + $(CSRCDIR)/sfinda.c \ + $(CSRCDIR)/cfinda.c \ + $(CSRCDIR)/zfinda.c\ + $(CSRCDIR)/scats.c \ + $(CSRCDIR)/scata.c \ + $(CSRCDIR)/dcats.c \ + $(CSRCDIR)/dcata.c \ + $(CSRCDIR)/ccats.c \ + $(CSRCDIR)/ccata.c \ + $(CSRCDIR)/zcats.c \ + $(CSRCDIR)/zcata.c \ + $(CSRCDIR)/sdisps.c \ + $(CSRCDIR)/sdispa.c \ + $(CSRCDIR)/ddisps.c \ + $(CSRCDIR)/ddispa.c\ + $(CSRCDIR)/cdisps.c \ + $(CSRCDIR)/cdispa.c\ + $(CSRCDIR)/zdisps.c \ + $(CSRCDIR)/zdispa.c + # $(CSRCDIR)/clog10s.c \ # $(CSRCDIR)/zlog10s.c \ # $(CSRCDIR)/clog10a.c \ diff --git a/src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpLogEq.c b/src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpLogEq.c index 77d3f728..4daaedd7 100644 --- a/src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpLogEq.c +++ b/src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpLogEq.c @@ -8,8 +8,12 @@ ** Copyright Raffaele Nutricato 2007 */ +/* Modified by Arnaud Torset */ + #include "OpLogEq.h" + +/* void s2s0OpLogEqs2(float* in1, int* in1Size, float in2, float* out) { int rows = 0; @@ -36,3 +40,28 @@ void d2d0OpLogEqd2(double* in1, int* in1Size, double in2, double* out) } } +void c2s0OpLogEqs2(floatComplex* in1, int* in1Size, float in2, float* out) +{ + int rows = 0; + int cols = 0; + for (rows = 0; rows < in1Size[0];rows++) + { + for (cols = 0; cols < in1Size[1];cols++) + { + out[rows*in1Size[1]+cols] = (float) ((creals(in1[rows*in1Size[1]+cols]) == in2) && (cimags(in1[rows*in1Size[1]+cols]) == 0) ); + } + } +} + +void z2d0OpLogEqd2(doubleComplex* in1, int* in1Size, double in2, double* out) +{ + int rows = 0; + int cols = 0; + for (rows = 0; rows < in1Size[0];rows++) + { + for (cols = 0; cols < in1Size[1];cols++) + { + out[rows*in1Size[1]+cols] = (double) ((zreals(in1[rows*in1Size[1]+cols]) == in2) && (zimags(in1[rows*in1Size[1]+cols]) == 0) ); + } + } +}*/ diff --git a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/OpLogEq.h b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/OpLogEq.h index f2920c4d..4a45878d 100644 --- a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/OpLogEq.h +++ b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/OpLogEq.h @@ -13,11 +13,46 @@ #include "floatComplex.h" #include "doubleComplex.h" -#define s0s0OpLogEqs0(in1,in2) \
- (float) (in1 == in2) -void s2s0OpLogEqs2(float* in1, int* in1Size, float in2, float* out); +#define s0s0OpLogEqs0(in1,in2) (float) (in1 == in2) +#define d0d0OpLogEqd0(in1,in2) (double) (in1 == in2) +#define c0c0OpLogEqs0(in1,in2) (float) ((creals(in1) == creals(in2)) && (cimags(in1) == cimags(in2))) +#define z0z0OpLogEqd0(in1,in2) (double) ((zreals(in1) == zreals(in2)) && (zimags(in1) == zimags(in2))) -#define d0d0OpLogEqd0(in1,in2) \
- (double) (in1 == in2) -void d2d0OpLogEqd2(double* in1, int* in1Size, double in2, double* out); +#define s0c0OpLogEqs0(in1,in2) (float) ((in1==creals(in2)) && (0==cimags(in2))) +#define d0z0OpLogEqd0(in1,in2) (double) ((in1==zreals(in2)) && (0==zimags(in2))) +#define c0s0OpLogEqs0(in1,in2) s0c0OpLogEqs0(in2,in1) +#define z0d0OpLogEqd0(in1,in2) d0z0OpLogEqd0(in2,in1) + + +void s2s0OpLogEqs2(float* in1,int *size1,float in2,float *out) +void c2s0OpLogEqs2(floatComplex* in1,int *size1,float in2,float* out) + +void d2d0OpLogEqd2(double* in1,int *size1,double in2,double* out) +void z2d0OpLogEqd2(doubleComplex* in1,int *size1,double in2,double* out) + +void s2c0OpLogEqs2(float* in1,int *size1,floatComplex in2,float* out) +void c2c0OpLogEqs2(floatComplex* in1,int *size1,floatComplex in2,float* out) + +void d2z0OpLogEqd2(double* in1,int *size1,doubleComplex in2,double* out) +void z2z0OpLogEqd2(doubleComplex* in1,int *size1,doubleComplex in2,double* out) + + +#define s0s2OpLogEqs2(in1,in2,in2Size,out) s2s0OpLogEqs2(in2,in2Size,in1,out) +#define c0s2OpLogEqs2(in1,in2,in2Size,out) s2c0OpLogEqs2(in2,in2Size,in1,out) +#define d0d2OpLogEqd2(in1,in2,in2Size,out) d2d0OpLogEqd2(in2,in2Size,in1,out) +#define z0d2OpLogEqd2(in1,in2,in2Size,out) d2z0OpLogEqd2(in2,in2Size,in1,out) +#define s0c2OpLogEqs2(in1,in2,in2Size,out) c2s0OpLogEqs2(in2,in2Size,in1,out) +#define c0c2OpLogEqs2(in1,in2,in2Size,out) c2c0OpLogEqs2(in2,in2Size,in1,out) +#define d0z2OpLogEqd2(in1,in2,in2Size,out) z2d0OpLogEqd2(in2,in2Size,in1,out) +#define z0z2OpLogEqd2(in1,in2,in2Size,out) z2z0OpLogEqd2(in2,in2Size,in1,out) +/* +void s2s2OpLogEqs2(float* in1, int* in1Size, float* in2, int* in2Size, float* out); +void d2d2OpLogEqd2(double* in1, int* in1Size, double* in2, int* in2Size, double* out); +void c2c2OpLogEqs2(floatComplex* in1, int* in1Size, floatComplex* in2, int* in2Size, float* out); +void z2z2OpLogEqd2(doubleComplex* in1, int* in1Size, doubleComplex* in2, int* in2Size, double* out); + +void s2c2OpLogEqs2(float* in1, int* in1Size, floatComplex* in2, int* in2Size, float* out); +void d2z2OpLogEqd2(double* in1, int* in1Size, doubleComplex* in2, int* in2Size, double* out); +#define c2s2OpLogEqs2(in1,in1Size,in2,in2Size,out) s2c2OpLogEqs2(in2,in2Size,in1,in1Size,out) +#define z2d2OpLogEqd2(in1,in1Size,in2,in2Size,out) d2z2OpLogEqd2(in2,in2Size,in1,in1Size,out)*/ #endif /* !__OPLOGGT_H__ */ diff --git a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/SCI2CMacroInterface.h b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/SCI2CMacroInterface.h index a129a410..68425800 100644 --- a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/SCI2CMacroInterface.h +++ b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/SCI2CMacroInterface.h @@ -219,7 +219,7 @@ zsinha(inptr, insizeptr[0]*insizeptr[1], outptr); // ---------------------
// --- Class DISP. ---
// ---------------------
-*/
+*//*
#define s0dispd0(invar) \
sdisps2 (invar, #invar );
@@ -245,7 +245,7 @@ cdispa2 (invar, insize, #invar ); zdispa2 (invar, insize, #invar );
#define i2dispd0(invar,insize) \
-idispa2 (invar, insize, #invar );
+idispa2 (invar, insize, #invar );*/
/*
// --------------------
// --- Class ZEROS. ---
@@ -277,4 +277,5 @@ ssonesss1(inptr1, inptr2, outptr); 1
#define s2oness2(inptr,insizeptr,outptr) \
-ssonesss1(insizeptr[0], insizeptr[1], outptr);
+ssonesss1(insizeptr[0], insizeptr[1], outptr); + diff --git a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h index 2e469230..50ec77cf 100644 --- a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h +++ b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h @@ -14,7 +14,6 @@ #include "RealToComplex.h"
#include "conj.h"
#include "cos.h"
-#include "disp.h"
#include "ones.h"
#include "zeros.h"
#include "OpApex.h"
@@ -28,11 +27,8 @@ #include "OpStar.h"
#include "OpIns.h"
#include "OpExt.h"
-#include "OpCc.h"
-#include "OpRc.h"
#include "sin.h"
#include "FileManagement.h"
-#include "Find.h"
#include "OpLogGt.h"
#include "OpLogLt.h"
#include "OpLogGe.h"
@@ -58,4 +54,14 @@ #include "int_sum.h"
#include "mean.h"
#include "int_mean.h"
-#include "pythag.h"
+#include "pythag.h" +/* interfacing find */ +#include "find.h" +#include "int_find.h" +/* interfacing cat */ +#include "cat.h" +#include "int_OpRc.h" +#include "int_OpCc.h" +/* interfacing disp */ +#include "disp.h" +#include "int_disp.h"
diff --git a/src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci b/src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci index 2af8c1ff..582aeef1 100644 --- a/src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci +++ b/src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci @@ -498,10 +498,10 @@ PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y'); PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y'); PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y'); PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y'); -PrintStringInfo('s2s0'+ArgSeparator+'s0',ClassFileName,'file','y');/* possible ? */ -PrintStringInfo('d2d0'+ArgSeparator+'d0',ClassFileName,'file','y');/* possible ? */ -PrintStringInfo('c2s0'+ArgSeparator+'c0',ClassFileName,'file','y');/* possible ? */ -PrintStringInfo('z2d0'+ArgSeparator+'z0',ClassFileName,'file','y');/* possible ? */ +PrintStringInfo('s2s0'+ArgSeparator+'s0',ClassFileName,'file','y'); //* possible ? */ +PrintStringInfo('d2d0'+ArgSeparator+'d0',ClassFileName,'file','y'); //* possible ? */ +PrintStringInfo('c2s0'+ArgSeparator+'c0',ClassFileName,'file','y'); //* possible ? */ +PrintStringInfo('z2d0'+ArgSeparator+'z0',ClassFileName,'file','y'); //* possible ? */ PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y'); PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y'); PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y'); @@ -762,7 +762,7 @@ PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'both','y'); ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls); PrintStringInfo('NIN= 2',ClassFileName,'file','y'); PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y'); -PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).TP= FA_TP_PREC(IN(1).TP,IN(2).TP)',ClassFileName,'file','y'); PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_OPDOTSTAR(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y'); PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_OPDOTSTAR(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y'); @@ -770,32 +770,36 @@ PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_OPDOTSTAR(IN(1).SZ,IN(2).SZ))',Clas ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls); PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y'); PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y'); -PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y'); -PrintStringInfo('z0z0'+ArgSeparator+'z0',ClassFileName,'file','y'); +PrintStringInfo('c0c0'+ArgSeparator+'s0',ClassFileName,'file','y'); +PrintStringInfo('z0z0'+ArgSeparator+'d0',ClassFileName,'file','y'); PrintStringInfo('g0g0'+ArgSeparator+'s0',ClassFileName,'file','y'); PrintStringInfo('g0g0'+ArgSeparator+'d0',ClassFileName,'file','y'); PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y'); PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y'); -PrintStringInfo('c2c0'+ArgSeparator+'c2',ClassFileName,'file','y'); -PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y'); +PrintStringInfo('c2c0'+ArgSeparator+'s2',ClassFileName,'file','y'); +PrintStringInfo('z2z0'+ArgSeparator+'d2',ClassFileName,'file','y'); PrintStringInfo('g2g0'+ArgSeparator+'s2',ClassFileName,'file','y'); PrintStringInfo('g2g0'+ArgSeparator+'d2',ClassFileName,'file','y'); PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y'); PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y'); -PrintStringInfo('c0c2'+ArgSeparator+'c2',ClassFileName,'file','y'); -PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y'); +PrintStringInfo('c0c2'+ArgSeparator+'s2',ClassFileName,'file','y'); +PrintStringInfo('z0z2'+ArgSeparator+'d2',ClassFileName,'file','y'); PrintStringInfo('g0g2'+ArgSeparator+'s2',ClassFileName,'file','y'); PrintStringInfo('g0g2'+ArgSeparator+'d2',ClassFileName,'file','y'); PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y'); PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y'); -PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y'); -PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y'); +PrintStringInfo('c2c2'+ArgSeparator+'s2',ClassFileName,'file','y'); +PrintStringInfo('z2z2'+ArgSeparator+'d2',ClassFileName,'file','y'); PrintStringInfo('g2g2'+ArgSeparator+'s2',ClassFileName,'file','y'); PrintStringInfo('g2g2'+ArgSeparator+'d2',ClassFileName,'file','y'); +PrintStringInfo('c2s0'+ArgSeparator+'s2',ClassFileName,'file','y'); +PrintStringInfo('z2d0'+ArgSeparator+'d2',ClassFileName,'file','y'); + + // --- Annotation Function And Function List Function. --- FunctionName = 'OpLogEq'; PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'both','y'); @@ -1104,7 +1108,8 @@ PrintStringInfo('z0z0'+ArgSeparator+'z2',ClassFileName,'file','y'); PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y'); PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y'); PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y'); - +PrintStringInfo('c0s0'+ArgSeparator+'c2',ClassFileName,'file','y'); +PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y'); // --- Annotation Function And Function List Function. --- FunctionName = 'OpRc'; PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'both','y'); @@ -1148,6 +1153,11 @@ PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y'); PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y'); PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y'); +PrintStringInfo('z0d0'+ArgSeparator+'z2',ClassFileName,'file','y'); +PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y'); +PrintStringInfo('c0s0'+ArgSeparator+'c2',ClassFileName,'file','y'); +PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y'); + // --- Annotation Function And Function List Function. --- FunctionName = 'OpCc'; PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'both','y'); |