From 48a4147533cfea9f46048d47aa0c45e7910b6eed Mon Sep 17 00:00:00 2001 From: torset Date: Wed, 21 Jan 2009 10:47:05 +0000 Subject: adjusting some functions --- .../test999_WorkingDir/scilabcode/mainfunction.sci | 4 +-- .../CCodeGeneration/SCI2CMakefileTemplate.rc | 34 +++++++++++++++--- src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpDotStar.c | 42 +++++++++++----------- src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpLogEq.c | 34 ++++++++++++++++-- .../Scilab2C/CFiles/sci2cincludes/OpLogEq.h | 18 +++++----- .../CFiles/sci2cincludes/SCI2CMacroInterface.h | 20 +++++------ .../Scilab2C/CFiles/sci2cincludes/sci2clib.h | 13 +++++-- .../ToolInitialization/INIT_FillSCI2LibCDirs.sci | 6 +++- src/auxiliaryFunctions/find/cfinda.c | 8 +++-- src/auxiliaryFunctions/find/dfinda.c | 8 +++-- src/auxiliaryFunctions/find/sfinda.c | 10 ++++-- src/auxiliaryFunctions/find/zfinda.c | 8 +++-- src/string/disp/sdispa.c | 1 + 13 files changed, 144 insertions(+), 62 deletions(-) diff --git a/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci b/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci index 1938b070..5a998ad9 100644 --- a/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci +++ b/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci @@ -1,8 +1,8 @@ -//SCI2C: DEFAULT_PRECISION= DOUBLE +//SCI2C: DEFAULT_PRECISION= FLOAT function mainfunction() -s1 = [1+%i; 2; 3; 4; 5] +s1 = [1; 1; 1; 3; 7] s2 = find(s1==3) diff --git a/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc b/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc index ead23251..5e9b723b 100644 --- a/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc +++ b/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc @@ -33,9 +33,6 @@ SWSRCS = \ $(CSRCDIR)/OpDotHat.c \ $(CSRCDIR)/OpDotSlash.c \ $(CSRCDIR)/OpEqual.c \ - $(CSRCDIR)/OpPlus.c \ - $(CSRCDIR)/OpMinus.c \ - $(CSRCDIR)/OpStar.c \ $(CSRCDIR)/OpIns.c \ $(CSRCDIR)/OpExt.c \ $(CSRCDIR)/cos.c \ @@ -117,7 +114,36 @@ SWSRCS = \ $(CSRCDIR)/cdisps.c \ $(CSRCDIR)/cdispa.c\ $(CSRCDIR)/zdisps.c \ - $(CSRCDIR)/zdispa.c + $(CSRCDIR)/zdispa.c\ + $(CSRCDIR)/cmuls.c\ + $(CSRCDIR)/cmula.c \ + $(CSRCDIR)/dmuls.c\ + $(CSRCDIR)/dmula.c \ + $(CSRCDIR)/smuls.c\ + $(CSRCDIR)/smula.c \ + $(CSRCDIR)/zmuls.c\ + $(CSRCDIR)/zmula.c \ + $(CSRCDIR)/cadds.c\ + $(CSRCDIR)/cadda.c \ + $(CSRCDIR)/dadds.c\ + $(CSRCDIR)/dadda.c \ + $(CSRCDIR)/sadds.c\ + $(CSRCDIR)/sadda.c \ + $(CSRCDIR)/zadds.c\ + $(CSRCDIR)/zadda.c\ + $(CSRCDIR)/cdiffs.c\ + $(CSRCDIR)/cdiffa.c \ + $(CSRCDIR)/ddiffs.c\ + $(CSRCDIR)/ddiffa.c \ + $(CSRCDIR)/sdiffs.c\ + $(CSRCDIR)/sdiffa.c \ + $(CSRCDIR)/zdiffs.c\ + $(CSRCDIR)/sfilla.c\ + $(CSRCDIR)/dfilla.c \ + $(CSRCDIR)/conesa.c\ + $(CSRCDIR)/donesa.c\ + $(CSRCDIR)/sonesa.c\ + $(CSRCDIR)/zonesa.c # $(CSRCDIR)/clog10s.c \ # $(CSRCDIR)/zlog10s.c \ diff --git a/src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpDotStar.c b/src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpDotStar.c index c39e256a..853b4f22 100644 --- a/src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpDotStar.c +++ b/src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpDotStar.c @@ -9,7 +9,7 @@ */ #include "OpDotStar.h" - +#include "multiplication.h" float ssOpDotStarss1(float x1, float x2){ return(x1*x2); } @@ -49,17 +49,17 @@ void ddOpDotStaraa1(double* x1,double* x2, int size, double* y){ floatComplex s0c0OpDotStarc0(float x2,floatComplex x1) { - return(ctimess(x1,FloatComplex(x2,0))); + return(cmuls(x1,FloatComplex(x2,0))); } floatComplex c0s0OpDotStarc0(floatComplex x1,float x2) { - return(ctimess(x1,FloatComplex(x2,0))); + return(cmuls(x1,FloatComplex(x2,0))); } floatComplex c0c0OpDotStarc0(floatComplex x1, floatComplex x2) { - return(ctimess(x1,x2)); + return(cmuls(x1,x2)); } void c0s2OpDotStarc2(floatComplex x1,float* x2, int* x2Size, floatComplex* y) @@ -69,7 +69,7 @@ void c0s2OpDotStarc2(floatComplex x1,float* x2, int* x2Size, floatComplex* y) size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ctimess(x1,FloatComplex(x2[i],0)); + y[i] = cmuls(x1,FloatComplex(x2[i],0)); } } @@ -80,7 +80,7 @@ void c2c0OpDotStarc2(floatComplex* x2, int* x2Size, floatComplex x1,floatComplex size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ctimess(x1,x2[i]); + y[i] = cmuls(x1,x2[i]); } } @@ -91,7 +91,7 @@ void s2c0OpDotStarc2(float* x2, int* x2Size, floatComplex x1,floatComplex* y) size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ctimess(x1,FloatComplex(x2[i],0)); + y[i] = cmuls(x1,FloatComplex(x2[i],0)); } } @@ -102,7 +102,7 @@ void s0c2OpDotStarc2(float x1,floatComplex* x2, int* x2Size, floatComplex* y) size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ctimess(FloatComplex(x1,0),x2[i]); + y[i] = cmuls(FloatComplex(x1,0),x2[i]); } } @@ -113,7 +113,7 @@ void c0c2OpDotStarc2(floatComplex x1,floatComplex* x2, int* x2Size, floatComplex size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ctimess(x1,x2[i]); + y[i] = cmuls(x1,x2[i]); } } @@ -123,7 +123,7 @@ void c2s2OpDotStarc2(floatComplex* x1,int* x1Size,float* x2, int* x2Size, floatC int size; size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ctimess(x1[i],FloatComplex(x2[i],0)); + y[i] = cmuls(x1[i],FloatComplex(x2[i],0)); } } @@ -134,24 +134,24 @@ void c2c2OpDotStarc2(floatComplex* x1,int* x1Size,floatComplex* x2, int* x2Size, int size; size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ctimess(x1[i],x2[i]); + y[i] = cmuls(x1[i],x2[i]); } } doubleComplex z0d0OpDotStarz0(doubleComplex x1, double x2) { - return(ztimess(x1,DoubleComplex(x2,0))); + return(zmuls(x1,DoubleComplex(x2,0))); } doubleComplex d0z0OpDotStarz0(double x2,doubleComplex x1) { - return(ztimess(x1,DoubleComplex(x2,0))); + return(zmuls(x1,DoubleComplex(x2,0))); } doubleComplex z0z0OpDotStarz0(doubleComplex x1, doubleComplex x2) { - return(ztimess(x1,x2)); + return(zmuls(x1,x2)); } void z0d2OpDotStarz2(doubleComplex x1,double* x2, int* x2Size, doubleComplex* y) @@ -161,7 +161,7 @@ void z0d2OpDotStarz2(doubleComplex x1,double* x2, int* x2Size, doubleComplex* y) size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ztimess(x1,DoubleComplex(x2[i],0)); + y[i] = zmuls(x1,DoubleComplex(x2[i],0)); } } @@ -172,7 +172,7 @@ void d2z0OpDotStarz2(double* x2, int* x2Size, doubleComplex x1, doubleComplex* y size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ztimess(x1,DoubleComplex(x2[i],0)); + y[i] = zmuls(x1,DoubleComplex(x2[i],0)); } } @@ -183,7 +183,7 @@ void z2z0OpDotStarz2(doubleComplex* x2, int* x2Size, doubleComplex x1, doubleCom size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ztimess(x1,x2[i]); + y[i] = zmuls(x1,x2[i]); } } @@ -193,7 +193,7 @@ void d0z2OpDotStarz2(double x1,doubleComplex* x2, int* x2Size, doubleComplex* y) size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ztimess(DoubleComplex(x1,0),x2[i]); + y[i] = zmuls(DoubleComplex(x1,0),x2[i]); } } @@ -203,7 +203,7 @@ void z0z2OpDotStarz2(doubleComplex x1,doubleComplex* x2, int* x2Size, doubleComp size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ztimess(x1,x2[i]); + y[i] = zmuls(x1,x2[i]); } } @@ -213,7 +213,7 @@ void z2d2OpDotStarz2(doubleComplex* x1,int* x1Size,double* x2, int* x2Size, doub int size; size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ztimess(x1[i],DoubleComplex(x2[i],0)); + y[i] = zmuls(x1[i],DoubleComplex(x2[i],0)); } } @@ -223,6 +223,6 @@ void z2z2OpDotStarz2(doubleComplex* x1,int* x1Size,doubleComplex* x2, int* x2Siz int size; size = x2Size[0]*x2Size[1]; for (i = 0; i < size; ++i) { - y[i] = ztimess(x1[i],x2[i]); + y[i] = zmuls(x1[i],x2[i]); } } diff --git a/src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpLogEq.c b/src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpLogEq.c index 4daaedd7..a926f057 100644 --- a/src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpLogEq.c +++ b/src/Scilab2C/Scilab2C/CFiles/sci2ccode/OpLogEq.c @@ -13,7 +13,7 @@ #include "OpLogEq.h" -/* + void s2s0OpLogEqs2(float* in1, int* in1Size, float in2, float* out) { int rows = 0; @@ -64,4 +64,34 @@ void z2d0OpLogEqd2(doubleComplex* in1, int* in1Size, double in2, double* out) out[rows*in1Size[1]+cols] = (double) ((zreals(in1[rows*in1Size[1]+cols]) == in2) && (zimags(in1[rows*in1Size[1]+cols]) == 0) ); } } -}*/ +} + + +void c2c0OpLogEqs2(floatComplex* in1, int* in1Size, floatComplex 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]) == creals(in2)) && (cimags(in1[rows*in1Size[1]+cols]) == cimags(in2)) ); + } + } +} + + +void z2z0OpLogEqd2(doubleComplex* in1, int* in1Size, doubleComplex 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] = (float) ((zreals(in1[rows*in1Size[1]+cols]) == zreals(in2)) && (zimags(in1[rows*in1Size[1]+cols]) == zimags(in2)) ); + } + } +} + + diff --git a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/OpLogEq.h b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/OpLogEq.h index 4a45878d..17e0af35 100644 --- a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/OpLogEq.h +++ b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/OpLogEq.h @@ -6,6 +6,8 @@ ** ** Copyright Raffaele Nutricato */ +/* Modified by Arnaud Torset */ + #ifndef __OPLOGEQ_H__ #define __OPLOGEQ_H__ @@ -24,17 +26,17 @@ #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 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 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 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) +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) diff --git a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/SCI2CMacroInterface.h b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/SCI2CMacroInterface.h index 68425800..a2f16d4e 100644 --- a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/SCI2CMacroInterface.h +++ b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/SCI2CMacroInterface.h @@ -21,7 +21,7 @@ dOpEquala1(inptr, insizeptr[0]*insizeptr[1], outptr); // --- Class OPSTAR. --- // --------------------- */ -/* --- OpStar. --- */ +/* --- OpStar. --- #define s0s0OpStars0(in1,in2) \ ssOpStarss1(in1,in2); @@ -29,8 +29,8 @@ ssOpStarss1(in1,in2); ssOpStarsa1(in1,inptr2, insizeptr2[0]*insizeptr2[1], outptr); #define s2s0OpStars2(inptr2,insizeptr2,in1,outptr) \ -ssOpStarsa1(in1,inptr2, insizeptr2[0]*insizeptr2[1], outptr); -/*questa su e' una macro */ +ssOpStarsa1(in1,inptr2, insizeptr2[0]*insizeptr2[1], outptr);*/ +/*questa su e' una macro #define s2s2OpStars2(inptr1,insizeptr1,inptr2,insizeptr2,outptr) \ ssOpStaraa1(inptr1,insizeptr1[0],insizeptr1[1], inptr2, insizeptr2[1], outptr); @@ -42,11 +42,11 @@ ddOpStarss1(in1,in2); ddOpStarsa1(in1,inptr2, (insizeptr2[0]) * (insizeptr2[1]), outptr) #define d2d0OpStard2(inptr2,insizeptr2,in1,outptr) \ -ddOpStarsa1(in1,inptr2, (insizeptr2[0]) * (insizeptr2[1]), outptr) -/*questa su e' una macro */ +ddOpStarsa1(in1,inptr2, (insizeptr2[0]) * (insizeptr2[1]), outptr)*/ +/*questa su e' una macro #define d2d2OpStard2(inptr1,insizeptr1,inptr2,insizeptr2,outptr) \ -ddOpStaraa1(inptr1,insizeptr1[0],insizeptr1[1], inptr2, insizeptr2[1], outptr); +ddOpStaraa1(inptr1,insizeptr1[0],insizeptr1[1], inptr2, insizeptr2[1], outptr);*/ /* // --------------------- @@ -54,7 +54,7 @@ ddOpStaraa1(inptr1,insizeptr1[0],insizeptr1[1], inptr2, insizeptr2[1], outptr); // --------------------- */ /* --- OpPlus. ---*/ -/*RN volendo puoi fare una sola macro del tipo sa1() che serve per tutte le operazioni*/ +/*RN volendo puoi fare una sola macro del tipo sa1() che serve per tutte le operazioni #define s0s0OpPluss0(in1,in2) \ ssOpPlusss1(in1,in2); @@ -65,8 +65,8 @@ ssOpPlussa1(in1,inptr2, insizeptr2[0]*insizeptr2[1], outptr); ssOpPlusaa1(inptr1,inptr2, insizeptr1[0]*insizeptr1[1], outptr) #define s2s0OpPluss2(inptr2,insizeptr2,in1,outptr) \ -ssOpPlussa1(in1,inptr2, insizeptr2[0]*insizeptr2[1], outptr); -/*questa su e' una macro */ +ssOpPlussa1(in1,inptr2, insizeptr2[0]*insizeptr2[1], outptr);*/ +/*questa su e' una macro #define d0d0OpPlusd0(in1,in2) \ ddOpPlusss1(in1,in2); @@ -78,7 +78,7 @@ ddOpPlusaa1(inptr1,inptr2, insizeptr1[0]*insizeptr1[1], outptr); ddOpPlussa1(in1,inptr2, (insizeptr2[0]) * (insizeptr2[1]), outptr) #define d2d0OpPlusd2(inptr2,insizeptr2,in1,outptr) \ -ddOpPlussa1(in1,inptr2, (insizeptr2[0]) * (insizeptr2[1]), outptr) +ddOpPlussa1(in1,inptr2, (insizeptr2[0]) * (insizeptr2[1]), outptr)*/ /*questa su e' una macro */ diff --git a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h index 50ec77cf..0c962388 100644 --- a/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h +++ b/src/Scilab2C/Scilab2C/CFiles/sci2cincludes/sci2clib.h @@ -18,7 +18,6 @@ #include "zeros.h" #include "OpApex.h" #include "OpColon.h" -#include "OpDotStar.h" #include "OpDotSlash.h" #include "OpDotHat.h" #include "OpEqual.h" @@ -64,4 +63,14 @@ #include "int_OpCc.h" /* interfacing disp */ #include "disp.h" -#include "int_disp.h" +#include "int_disp.h" /* interfacing multiplication */ +#include "multiplication.h" +#include "int_OpStar.h" +/* interfacing addition */ +#include "addition.h" +#include "int_OpPlus.h" /* interfacing subtraction */ +#include "subtraction.h" +#include "int_OpMinus.h" +/* interfacing fill */ +#include "fill.h" /* interfacing ones */ +#include "ones.h" diff --git a/src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci b/src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci index 582aeef1..6e7f9b4d 100644 --- a/src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci +++ b/src/Scilab2C/Scilab2C/ToolInitialization/INIT_FillSCI2LibCDirs.sci @@ -799,7 +799,6 @@ 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'); @@ -1158,6 +1157,11 @@ PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y'); PrintStringInfo('c0s0'+ArgSeparator+'c2',ClassFileName,'file','y'); PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y'); +PrintStringInfo('s0c0'+ArgSeparator+'c2',ClassFileName,'file','y'); +PrintStringInfo('s2c0'+ArgSeparator+'c2',ClassFileName,'file','y'); +PrintStringInfo('d0z0'+ArgSeparator+'z2',ClassFileName,'file','y'); +PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y'); + // --- Annotation Function And Function List Function. --- FunctionName = 'OpCc'; PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'both','y'); diff --git a/src/auxiliaryFunctions/find/cfinda.c b/src/auxiliaryFunctions/find/cfinda.c index 95cb24fd..87655c0b 100644 --- a/src/auxiliaryFunctions/find/cfinda.c +++ b/src/auxiliaryFunctions/find/cfinda.c @@ -14,15 +14,17 @@ void cfinda(floatComplex* z, int size, float *out, int *indiceOut) { int i = 0; - *indiceOut = 0; + int indice = *indiceOut; + + indice = 0; /* Initialisation de out à -1 */ for (i=0;i