summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci12
-rw-r--r--src/c/matrixOperations/interfaces/int_spec.h35
-rw-r--r--src/c/signalProcessing/interfaces/int_ifft.h4
-rw-r--r--tests/unit_tests/test_double_Spec.sci41
4 files changed, 79 insertions, 13 deletions
diff --git a/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci b/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
index 40cd1146..28adf2c9 100644
--- a/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
+++ b/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
@@ -2243,6 +2243,14 @@ PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+//added combination
+
+PrintStringInfo('d2d0'+ArgSeparator+'d0d2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z0z2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2z2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z0z2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z0z2',ClassFileName,'file','y');
+
// --- Annotation Function And Function List Function. ---
FunctionName = 'convol';
@@ -2283,7 +2291,7 @@ PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
// --- Annotation Function And Function List Function. ---
-FunctionName = 'ifft';
+FunctionName = 'ifft';
PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'both','y');
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
@@ -2777,7 +2785,7 @@ PrintStringInfo('c2'+ArgSeparator+'c2c2',ClassFileName,'file','y');
PrintStringInfo('z2'+ArgSeparator+'z2z2',ClassFileName,'file','y');
// --- Annotation Function And Function List Function. ---
-FunctionName = 'spec';
+FunctionName = 'spec'; // AS : Done
PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'both','y');
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
diff --git a/src/c/matrixOperations/interfaces/int_spec.h b/src/c/matrixOperations/interfaces/int_spec.h
index a2d9e840..e25d7219 100644
--- a/src/c/matrixOperations/interfaces/int_spec.h
+++ b/src/c/matrixOperations/interfaces/int_spec.h
@@ -15,19 +15,27 @@
#ifndef __INT_SPEC_H__
#define __INT_SPEC_H__
-/* Only eigenvalues */
+/* Only eigenvalues */
-#define s0specc0(in) sspecs(in)
+#define s0specc0(in) FloatComplex (sspecs(in) , 0)
-#define d0specz0(in) dspecs(in)
+#define d0specz0(in) DoubleComplex ( dspecs(in) , 0)
#define c0specc0(in) cspecs(in)
#define z0specz0(in) zspecs(in)
-#define s2specc2(in,size,out) sspeca(in, size[0], out)
+#define s2specc2(in,size,out) {float* ZEROS;\
+ ZEROS=malloc((uint)(size[0]*size[0]*sizeof(float)));\
+ szerosa(ZEROS,size[0],size[0]);\
+ sspeca(FloatComplexMatrix(in,ZEROS,size[0]*size[0]), size[0], out);\
+ }
-#define d2specz2(in,size,out) dspeca(in, size[0], out)
+#define d2specz2(in,size,out) {double* ZEROS;\
+ ZEROS=malloc((uint)(size[0]*size[0]*sizeof(double)));\
+ dzerosa(ZEROS,size[0],size[0]);\
+ zspeca(DoubleComplexMatrix(in,ZEROS,size[0]*size[0]), size[0] , out);\
+ }
#define c2specc2(in,size,out) cspeca(in, size[0], out)
@@ -35,17 +43,26 @@
/* Eigenvalues and eigenvectors */
-#define s0specc0c0(in,out) sspec2s(in,out)
+#define s0specc0c0(in,out) cspec2s(FloatComplex( in,0) ,out)
-#define d0specz0z0(in,out) dspec2s(in,out)
+#define d0specz0z0(in,out) zspec2s(DoubleComplex(in,0) ,out)
#define c0specc0c0(in,out) cspec2s(in,out)
#define z0specz0z0(in,out) zspec2s(in,out)
-#define s2specc2c2(in,size,out1,out2) sspec2a(in, size[0], out2, out1)
+#define s2specc2c2(in,size,out1,out2) {float* ZEROS;\
+ ZEROS=malloc((uint)(size[0]*size[0]*sizeof(float)));\
+ szerosa(ZEROS,size[0],size[0]);\
+ cspec2a(FloatComplexMatrix(in,ZEROS,size[0]*size[0]), size[0] , out1 , out2 );\
+ }
+
+#define d2specz2z2(in,size,out1,out2) {double* ZEROS;\
+ ZEROS=malloc((uint)(size[0]*size[0]*sizeof(double)));\
+ dzerosa(ZEROS,size[0],size[0]);\
+ zspec2a(DoubleComplexMatrix(in,ZEROS,size[0]*size[0]), size[0] , out1 , out2 );\
+ }
-#define d2specz2z2(in,size,out1,out2) dspec2a(in, size[0], out2, out1)
#define c2specc2c2(in,size,out1,out2) cspec2a(in, size[0], out2, out1)
diff --git a/src/c/signalProcessing/interfaces/int_ifft.h b/src/c/signalProcessing/interfaces/int_ifft.h
index e541b0ee..78e63753 100644
--- a/src/c/signalProcessing/interfaces/int_ifft.h
+++ b/src/c/signalProcessing/interfaces/int_ifft.h
@@ -38,13 +38,13 @@
/* FIXME : malloc here */
#define s2ifftc2(in,size,out) {float* ZEROS;\
- ZEROS=malloc((uint)(size[0]*size[1]*sizeof(float));\
+ ZEROS=malloc((uint)(size[0]*size[1]*sizeof(float)));\
szerosa(ZEROS,size[0],size[1]);\
cifftma(FloatComplexMatrix(in,ZEROS,size[0]*size[1]), size[0], size[1], out);\
}
/* FIXME : malloc here */
#define d2ifftz2(in,size,out) {double* ZEROS;\
- ZEROS=malloc((uint)(size[0]*size[1]*sizeof(double));\
+ ZEROS=malloc((uint)(size[0]*size[1]*sizeof(double)));\
dzerosa(ZEROS,size[0],size[1]);\
zifftma(DoubleComplexMatrix(in,ZEROS,size[0]*size[1]), size[0], size[1], out);\
}
diff --git a/tests/unit_tests/test_double_Spec.sci b/tests/unit_tests/test_double_Spec.sci
new file mode 100644
index 00000000..61cca50f
--- /dev/null
+++ b/tests/unit_tests/test_double_Spec.sci
@@ -0,0 +1,41 @@
+function test_double_Spec()
+
+
+ disp(spec(45)) ; // d0Spec
+ disp(spec(4+3*%i)); // z0Spec
+
+ a = [1 2 3; -4 5 98 ; 7 8 5] ;
+ b = [1 2 3; -4 5 98 ; 7 -100000 5] ;
+
+
+ disp(spec(a));
+ disp(spec(b));
+
+ disp(spec(a*%i));
+ // 2 outputs
+
+ [aa bb] = spec(45) ; // d0Spec
+ disp(aa);
+ disp(bb);
+
+ [cc dd] = spec(4+3*%i); // z0Spec
+
+ disp(cc);
+ disp(dd);
+
+ a = [1 2 3; -4 5 98 ; 7 8 5] ;
+ b = [1 2 3; -4 5 98 ; 7 -100000 5] ;
+
+
+ [ee ff] = spec(a);
+ disp(ee);
+ disp(ff);
+ [gg hh] = spec(b);
+ disp(gg);
+ disp(hh);
+
+ [ii jj] = spec(a*%i);
+ disp(ii);
+ disp(jj);
+
+endfunction