summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci2
-rw-r--r--src/c/auxiliaryFunctions/interfaces/int_find.h65
-rw-r--r--tests/unit_tests/test_double_Find.sci31
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