union(): upgrade it to support boolean, sparse boolean, and sparse numerical inputs
Reported by Samuel GOUGEON (@sgougeon)
BUG DESCRIPTION:
----------------
union(): upgrade it to support boolean, sparse boolean, and sparse numeric inputs
With 6.0.2:
--> [T, F] = (%t, %f);
--> a = [T T F T F T
> F F F F T T
> T F F F F T ];
--> b = [F F T T F F
> T T T T T T
> T F T T T F ];
--> union(a, b, "c")
in builtin gsort
at line 94 of function unique ( SCI\modules\elementary_functions\macros\unique.sci line 80 )
at line 35 of function union ( SCI\modules\elementary_functions\macros\union.sci line 25 )
Function not defined for given argument type(s),
check arguments or define function %b_gsort for overloading.
With 6.1.0:
--> union(sparse(a), sparse(b), "c") // boolean sparse
in builtin gsort
at line 197 of function unique ( SCI\modules\elementary_functions\macros\unique.sci line 209 )
at line 35 of function union ( SCI\modules\elementary_functions\macros\union.sci line 48 )
Function not defined for given argument type(s),
check arguments or define function %spb_gsort for overloading.
--> union(sparse(a*1), sparse(b*1), "c") // real sparse
at line 31 of function %sp_gsort ( SCI\modules\elementary_functions\macros\%sp_gsort.sci line 44 )
in builtin gsort
at line 197 of function unique ( SCI\modules\elementary_functions\macros\unique.sci line 209 )
at line 35 of function union ( SCI\modules\elementary_functions\macros\union.sci line 48 )
gsort: Wrong size for input argument #1: sparse vectors expected.
ERROR LOG:
----------
Please see above.
HOW TO REPRODUCE THE BUG:
-------------------------
[T, F] = (%t, %f);
a = [T T F T F T
F F F F T T
T F F F F T ];
b = [F F T T F F
T T T T T T
T F T T T F ];
union(a, b, "c")
union(sparse(a), sparse(b), "c")
union(sparse(a*1), sparse(b*1), "c")
OTHER INFORMATION:
------------------
Upstream contributions:
https://codereview.scilab.org/21484 : gsort() for all sparse in all modes
https://codereview.scilab.org/21509 : unique() + with 2D sparse