summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Scilab2C/SCI2CTests/test999_WorkingDir/SCI2CInputParameters.sce4
-rw-r--r--src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci14
-rw-r--r--src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc25
-rw-r--r--src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpLogEq.c29
-rw-r--r--src/Scilab2C/Scilab2C/CFiles/sci2cincludes/OpLogEq.h47
-rw-r--r--src/Scilab2C/Scilab2C/CFiles/sci2cincludes/SCI2CMacroInterface.h7
-rw-r--r--src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h16
-rw-r--r--src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci38
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');