diff options
-rw-r--r-- | macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci | 2 | ||||
-rw-r--r-- | src/c/auxiliaryFunctions/interfaces/int_find.h | 65 | ||||
-rw-r--r-- | tests/unit_tests/test_double_Find.sci | 31 |
3 files changed, 82 insertions, 16 deletions
diff --git a/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci b/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci index ca6c05c4..1eca0f30 100644 --- a/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci +++ b/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci @@ -1397,7 +1397,7 @@ PrintStringInfo('d0d0'+ArgSeparator+'d0d0',ClassFileName,'file','y'); PrintStringInfo('d2d0'+ArgSeparator+'d2d2',ClassFileName,'file','y'); // --- Annotation Function And Function List Function. --- -FunctionName = 'find'; +FunctionName = 'find'; // 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/auxiliaryFunctions/interfaces/int_find.h b/src/c/auxiliaryFunctions/interfaces/int_find.h index 7d620e6c..c57f0148 100644 --- a/src/c/auxiliaryFunctions/interfaces/int_find.h +++ b/src/c/auxiliaryFunctions/interfaces/int_find.h @@ -62,14 +62,29 @@ #define z0d0findd0(in1,in2) z0findd0(in1) -#define s2s0finds2(in1,size,in2,out) s2finds2(in1,size,out_tmp);for(int i=0;i<in2;i++) out[i]=out_tmp[i]; - -#define d2d0findd2(in1,size,in2,out) d2findd2(in1,size,out_tmp);for(int i=0;i<in2;i++) out[i]=out_tmp[i]; - -#define c2s0finds2(in1,size,in2,out) c2finds2(in1,size,out_tmp);for(int i=0;i<in2;i++) out[i]=out_tmp[i]; - -#define z2d0findd2(in1,size,in2,out) z2findd2(in1,size,out_tmp);for(int i=0;i<in2;i++) out[i]=out_tmp[i]; - +#define s2s0finds2(in1,size,in2,out,sizeOut) {\ + float* out_tmp = out;\ + int i = 0 ;\ + s2finds2(in1,size,out_tmp,sizeOut);for( i=0;i<in2;i++){out[i]=out_tmp[i];}\ + } + +#define d2d0findd2(in1,size,in2,out,sizeOut) {\ + double* out_tmp = out;\ + int i = 0 ;\ + d2findd2(in1,size,out_tmp,sizeOut);for( i=0;i<in2;i++){out[i]=out_tmp[i];}\ + } + +#define c2s0finds2(in1,size,in2,out,sizeOut) {\ + floatComplex* out_tmp = out;\ + int i = 0 ;\ + c2finds2(in1,size,out_tmp,sizeOut);for( i=0;i<in2;i++){out[i]=out_tmp[i];}\ + } + +#define z2d0findd2(in1,size,in2,out,sizeOut) {\ + doubleComplex* out_tmp = out;\ + int i = 0 ;\ + z2findd2(in1,size,out_tmp,sizeOut);for( i=0;i<in2;i++){out[i]=out_tmp[i];}\ + } /* 2 inputs, 2 outputs */ #define s0s0finds0s0(in1,in2,out2) s0finds0s0(in1,out2) @@ -82,13 +97,33 @@ /*FIXME : prototypes are wrong*/ -#define s2s0finds2s2(in1,size,in2,out1,out2) s2finds2s2(in1,size,out1_tmp,out_tmp2);for(int i=0;i<in2;i++) {out1[i]=out1_tmp[i];out2[i]= out2_tmp[i];} - -#define d2d0findd2d2(in1,size,in2,out1,out2) d2findd2d2(in1,size,out1_tmp,out_tmp2);for(int i=0;i<in2;i++) {out1[i]=out1_tmp[i];out2[i]= out2_tmp[i];} - -#define c2s0finds2s2(in1,size,in2,out1,out2) c2finds2s2(in1,size,out1_tmp,out_tmp2);for(int i=0;i<in2;i++) {out1[i]=out1_tmp[i];out2[i]= out2_tmp[i];} - -#define z2d0findd2d2(in1,size,in2,out1,out2) z2findd2d2(in1,size,out1_tmp,out_tmp2);for(int i=0;i<in2;i++) {out1[i]=out1_tmp[i];out2[i]= out2_tmp[i];} +#define s2s0finds2s2(in1,size,in2,out1,sizeOut1,out2,sizeOut2) {\ + float* out1_tmp = out1;\ + float* out2_tmp = out2;\ + int i = 0 ;\ + s2finds2s2(in1,size,out1_tmp,sizeOut1,out2_tmp,sizeOut2);for( i=0;i<in2;i++) {out1[i]=out1_tmp[i];out2[i]= out2_tmp[i];}\ + } + +#define d2d0findd2d2(in1,size,in2,out1,sizeOut1,out2,sizeOut2) {\ + double* out1_tmp = out1;\ + double* out2_tmp = out2;\ + int i = 0 ;\ + d2findd2d2(in1,size,out1_tmp,sizeOut1,out2_tmp,sizeOut2);for( i=0;i<in2;i++) {out1[i]=out1_tmp[i];out2[i]= out2_tmp[i];}\ + } + +#define c2s0finds2s2(in1,size,in2,out1,sizeOut1,out2,sizeOut2) {\ + floatComplex* out1_tmp = out1;\ + floatComplex* out2_tmp = out2;\ + int i = 0 ;\ + c2finds2s2(in1,size,out1_tmp,sizeOut1,out_tmp2,sizeOut2);for( i=0;i<in2;i++) {out1[i]=out1_tmp[i];out2[i]= out2_tmp[i];}\ + } + +#define z2d0findd2d2(in1,size,in2,out1,sizeOut1,out2,sizeOut2) {\ + doubleComplex* out1_tmp = out1;\ + doubleComplex* out2_tmp = out2;\ + int i = 0 ;\ + z2findd2d2(in1,size,out1_tmp,sizeOut1,out2_tmp,sizeOut2);for( i=0;i<in2;i++) {out1[i]=out1_tmp[i];out2[i]= out2_tmp[i];}\ + } diff --git a/tests/unit_tests/test_double_Find.sci b/tests/unit_tests/test_double_Find.sci new file mode 100644 index 00000000..fd1d09a0 --- /dev/null +++ b/tests/unit_tests/test_double_Find.sci @@ -0,0 +1,31 @@ +function test_double_Find () + + disp (find( 1 == 3 )); // d0Findd0 + + a = [1 2 3; 4 5 6]; + b = [1 8 3; 9 5 6]; + disp (find( a == b )); // d2Findd2 + + [ z , j ] = find (1 == 3); // d0Findd0d0 + [ k , l ] = find (a == b); // d2Findd2d2 + + disp(z); + disp(j); + disp(k); + disp(l); + + disp ( find( 1 == 3 , 2 )); // d0d0Findd0 + + c = [1 2 3; 4 5 6]; + d = [1 8 3; 9 5 6]; + disp (find( c == d , 2 )); // d2d0Findd2 + + [ o , p ] = find (1 == 3 , 2); // d0d0Findd0d0 + [ q , s ] = find (c == d , 2); // d2d0Findd2d2 + + disp(o); + disp(p); + disp(q); + disp(s); + +endfunction |