diff options
-rw-r--r-- | macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci | 12 | ||||
-rw-r--r-- | src/c/matrixOperations/interfaces/int_spec.h | 35 | ||||
-rw-r--r-- | src/c/signalProcessing/interfaces/int_ifft.h | 4 | ||||
-rw-r--r-- | tests/unit_tests/test_double_Spec.sci | 41 |
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 |