summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortorset2009-01-29 15:32:39 +0000
committertorset2009-01-29 15:32:39 +0000
commit8d8ec5b2681da7579851dc0e44f2d2b909195e1e (patch)
treeb4bf9dae35549d5699dca75298379909ee9dc560 /src
parente1bbfe0b1363205c11bda68e88cb5246659e066a (diff)
downloadscilab2c-8d8ec5b2681da7579851dc0e44f2d2b909195e1e.tar.gz
scilab2c-8d8ec5b2681da7579851dc0e44f2d2b909195e1e.tar.bz2
scilab2c-8d8ec5b2681da7579851dc0e44f2d2b909195e1e.zip
Update
Diffstat (limited to 'src')
-rw-r--r--src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci70
-rw-r--r--src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc37
-rw-r--r--src/operations/interface/int_OpDotSlash.h45
-rw-r--r--src/operations/interface/int_OpSlash.h24
4 files changed, 92 insertions, 84 deletions
diff --git a/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci b/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci
index 0231faa2..d56328d1 100644
--- a/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci
+++ b/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci
@@ -1,56 +1,30 @@
//SCI2C: DEFAULT_PRECISION= DOUBLE
function mainfunction()
-//test multiplication
-
-//d0d0
-disp (5/3)
-//d0z0
-disp (1/%i)
-//z0d0
-disp (%i/5)
-//z0z0
-disp (%i/(3*%i))
-
-a=[1 2 3; 4 5 6]
+//test exp and expm
+
+//d0
+disp (exp(3))
+
+//z0
+disp (exp(3+%i*4))
+
+
+a=[1 2 3; 5 5 6]
c=[4 2 3 ;8 8 4; 3 4 5]
b=[1+%i,2+4*%i 3+1*%i; 4 5 6+2*%i]
d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5]
-e=[4 2 ;3 8 ;8-1*%i 4; 3+4*%i 4]
-
-//d2d2
-disp(a*c)
-disp(a.*a)
-//d2z2
-disp(a*d)
-disp(a.*b)
-//z2d2
-disp(e*a)
-disp(b.*a)
-//z2z2
-disp(b*d)
-disp(b.*b)
-
-
-
-
-//d2d0
-disp(a*1)
-//d0d2
-disp(1*a)
-//d2z0
-disp(a*%i)
-//z0d2
-disp(%i*a)
-
-
-//z2d0
-disp(b*1)
-//d0z2
-disp(1*b)
-//z2z0
-disp(b*%i)
-//z0z2
-disp(%i*b)
+
+//d2
+disp (exp(a))
+disp (exp(c))
+disp (expm(c))
+
+//z2
+disp (exp(b))
+disp (exp(d))
+disp (expm(d))
+
+
endfunction
diff --git a/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc b/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc
index 735f07f3..d88537e7 100644
--- a/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc
+++ b/src/Scilab2C/Scilab2C/CCodeGeneration/SCI2CMakefileTemplate.rc
@@ -70,14 +70,6 @@ SWSRCS = \
$(CSRCDIR)/dmeana.c \
$(CSRCDIR)/cmeana.c \
$(CSRCDIR)/zmeana.c \
- $(CSRCDIR)/sexps.c \
- $(CSRCDIR)/dexps.c \
- $(CSRCDIR)/cexps.c \
- $(CSRCDIR)/zexps.c \
- $(CSRCDIR)/sexpa.c \
- $(CSRCDIR)/dexpa.c \
- $(CSRCDIR)/cexpa.c \
- $(CSRCDIR)/zexpa.c \
$(CSRCDIR)/slog10s.c \
$(CSRCDIR)/dlog10s.c \
$(CSRCDIR)/slog10a.c \
@@ -260,8 +252,33 @@ SWSRCS = \
$(CSRCDIR)/cldivma.c \
$(CSRCDIR)/dldivma.c \
$(CSRCDIR)/sldivma.c \
- $(CSRCDIR)/zldivma.c
-
+ $(CSRCDIR)/zldivma.c \
+##### invesion #########\
+ $(CSRCDIR)/cinverma.c \
+ $(CSRCDIR)/dinverma.c \
+ $(CSRCDIR)/sinverma.c \
+ $(CSRCDIR)/zinverma.c \
+##### exp and expm #########\
+ $(CSRCDIR)/cexps.c \
+ $(CSRCDIR)/dexps.c \
+ $(CSRCDIR)/cexps.c \
+ $(CSRCDIR)/zexps.c \
+ $(CSRCDIR)/cexpa.c \
+ $(CSRCDIR)/dexpa.c \
+ $(CSRCDIR)/sexpa.c \
+ $(CSRCDIR)/zexpa.c \
+ $(CSRCDIR)/cexpma.c \
+ $(CSRCDIR)/dexpma.c \
+ $(CSRCDIR)/sexpma.c \
+ $(CSRCDIR)/zexpma.c \
+##### frexp #########\
+ $(CSRCDIR)/dfrexps.c \
+ $(CSRCDIR)/sfrexps.c \
+##### frexp #########\
+ $(CSRCDIR)/cinfnorma.c \
+ $(CSRCDIR)/dinfnorma.c \
+ $(CSRCDIR)/sinfnorma.c \
+ $(CSRCDIR)/zinfnorma.c
diff --git a/src/operations/interface/int_OpDotSlash.h b/src/operations/interface/int_OpDotSlash.h
index 87c79a81..a0f097de 100644
--- a/src/operations/interface/int_OpDotSlash.h
+++ b/src/operations/interface/int_OpDotSlash.h
@@ -38,62 +38,71 @@
#define s0s2OpDotSlashs2(in1,in2,size,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+ sinverma(in2,out,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*out[i];}
#define d0d2OpDotSlashd2(in1,in2,size,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+ dinverma(in2,out,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*out[i];}
#define c0c2OpDotSlashc2(in1,in2,size,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(in1,in2[i]);}
+ cinverma(in2,out,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,out[i]);}
#define z0z2OpDotSlashz2(in1,in2,size,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=zrdivs(in1,in2[i]);}
+ zinverma(in2,out,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,out[i]);}
#define s0c2OpDotSlashc2(in1,in2,size,out) c0c2OpDotSlashc2(FloatComplex(in1,0),in2,size,out)
-/* On transforme d0 en z0 */
-#define d0z2OpDotSlashz2(in1,in2,size,out) z0z2OpDotSlashz2(DoubleComplex(in1,0),in2,size,out)
+#define d0z2OpDotSlashz2(in1,in2,size,out) z0z2OpDotSlashz2(DoubleComplex(in1,0),in2,size,out)
+/* FIXME: malloc */
#define c0s2OpDotSlashc2(in1,in2,size,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(in1,FloatComplex(in2[i],0));}
+ float* temp = malloc((uint)(size[0]*size[1])*sizeof(float));\
+ sinverma(in2,temp,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,FloatComplex(temp[i],0));}
+/* FIXME: malloc */
#define z0d2OpDotSlashz2(in1,in2,size,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=zrdivs(in1,DoubleComplex(in2[i],0));}
+ double* temp = malloc((uint)(size[0]*size[1])*sizeof(double));\
+ dinverma(in2,temp,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,DoubleComplex(temp[i],0));}
/* Matrix / Scalar */
#define s2s0OpDotSlashs2(in1,size,in2,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
#define d2d0OpDotSlashd2(in1,size,in2,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
#define c2c0OpDotSlashc2(in1,size,in2,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(in1[i],in2);}
+ for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(in1[i],in2);}
#define z2z0OpDotSlashz2(in1,size,in2,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=zrdivs(in1[i],in2);}
+ for (i=0;i<size[0]*size[1];i++) out[i]=zrdivs(in1[i],in2);}
#define s2c0OpDotSlashc2(in1,size,in2,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(FloatComplex(in1[i],0),in2);}
+ for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(FloatComplex(in1[i],0),in2);}
#define d2z0OpDotSlashz2(in1,size,in2,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=zrdivs(DoubleComplex(in1[i],0),in2);}
+ for (i=0;i<size[0]*size[1];i++) out[i]=zrdivs(DoubleComplex(in1[i],0),in2);}
#define c2s0OpDotSlashc2(in1,size,in2,out) c2c0OpDotSlashc2(in1,size,FloatComplex(in2,0),out)
@@ -114,16 +123,16 @@
#define z2z2OpDotSlashz2(in1,size1,in2,size2,out) zrdiva(in1,in2,size2[0]*size2[1],out)
-#define c2s2OpDotSlashc2(in1,size1,in2,size2,out) {int i=0;\
+#define c2s2OpDotSlashc2(in1,size1,in2,size2,out) {int i=0;\
for (i=0;i<size1[0]*size2[1];i++) out[i]=crdivs(in1[i],FloatComplex(in2[i],0));}
-#define s2c2OpDotSlashc2(in1,size1,in2,size2,out) {int i=0;\
+#define s2c2OpDotSlashc2(in1,size1,in2,size2,out) {int i=0;\
for (i=0;i<size1[0]*size2[1];i++) out[i]=crdivs(FloatComplex(in1[i],0),in2[i]);}
-#define z2d2OpDotSlashz2(in1,size1,in2,size2,out) {int i=0;\
+#define z2d2OpDotSlashz2(in1,size1,in2,size2,out) {int i=0;\
for (i=0;i<size1[0]*size2[1];i++) out[i]=zrdivs(in1[i],DoubleComplex(in2[i],0));}
-#define d2z2OpDotSlashz2(in1,size1,in2,size2,out) {int i=0;\
+#define d2z2OpDotSlashz2(in1,size1,in2,size2,out) {int i=0;\
for (i=0;i<size1[0]*size2[1];i++) out[i]=zrdivs(DoubleComplex(in1[i],0),in2[i]);}
diff --git a/src/operations/interface/int_OpSlash.h b/src/operations/interface/int_OpSlash.h
index 40c135e5..440b05a0 100644
--- a/src/operations/interface/int_OpSlash.h
+++ b/src/operations/interface/int_OpSlash.h
@@ -38,19 +38,23 @@
#define s0s2OpSlashs2(in1,in2,size,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+ sinverma(in2,out,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*out[i];}
#define d0d2OpSlashd2(in1,in2,size,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+ dinverma(in2,out,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*out[i];}
#define c0c2OpSlashc2(in1,in2,size,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(in1,in2[i]);}
+ cinverma(in2,out,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,out[i]);}
#define z0z2OpSlashz2(in1,in2,size,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=zrdivs(in1,in2[i]);}
+ zinverma(in2,out,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,out[i]);}
@@ -60,13 +64,17 @@
#define d0z2OpSlashz2(in1,in2,size,out) z0z2OpSlashz2(DoubleComplex(in1,0),in2,size,out)
-
+/* FIXME: malloc */
#define c0s2OpSlashc2(in1,in2,size,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(in1,FloatComplex(in2[i],0));}
-
+ float* temp = malloc((uint)(size[0]*size[1])*sizeof(float));\
+ sinverma(in2,temp,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,FloatComplex(temp[i],0));}
+/* FIXME: malloc */
#define z0d2OpSlashz2(in1,in2,size,out) {int i=0;\
- for (i=0;i<size[0]*size[1];i++) out[i]=zrdivs(in1,DoubleComplex(in2[i],0));}
+ double* temp = malloc((uint)(size[0]*size[1])*sizeof(double));\
+ dinverma(in2,temp,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,DoubleComplex(temp[i],0));}
/* Matrix / Scalar */