BUG DESCRIPTION:
----------------
Neither [;] nor [,] are implemented between types 5 and 6
---------------------------------------------------------
--> [sprand(3,4,0.5) < 0.5 ; sprand(3,4,0.5)]
Undefined operation for the given operands.
check or define function %spb_f_sp for overloading.
--> [sprand(3,4,0.5) ; sprand(3,4,0.5) < 0.5]
Undefined operation for the given operands.
check or define function %sp_f_spb for overloading.
Same situation for [,].
Neither [;] nor [,] are implemented between types 1 and 6
---------------------------------------------------------
--> [sprand(3,4,0.5) < 0.5 ; rand(3,4)]
Undefined operation for the given operands.
check or define function %spb_f_s for overloading.
--> [rand(3,4) ; sprand(3,4,0.5) < 0.5]
Undefined operation for the given operands.
check or define function %s_f_spb for overloading.
Same situation for [,].
Suggestion and rationale:
* When one operand is boolean and the other numeric, booleans must be converted into 0|1. This is what is already done for many operators.
* When one operand is sparse and not the other, the result must be sparse. This is what is already done between boolean and sparse boolean, or between numeric and sparse numeric.
ERROR LOG:
----------
messages for overloading. See above.
HOW TO REPRODUCE THE BUG:
-------------------------
// [ ; ]
[sprand(3,4,0.5) < 0.5 ; sprand(3,4,0.5)]
[sprand(3,4,0.5) ; sprand(3,4,0.5) < 0.5]
[sprand(3,4,0.5) < 0.5 ; rand(3,4)]
[rand(3,4) ; sprand(3,4,0.5) < 0.5]
// [ , ]
[sprand(3,4,0.5) < 0.5 , sprand(3,4,0.5)]
[sprand(3,4,0.5) , sprand(3,4,0.5) < 0.5]
[sprand(3,4,0.5) < 0.5 , rand(3,4)]
[rand(3,4) , sprand(3,4,0.5) < 0.5]
OTHER INFORMATION:
------------------
30 ans d'existence, et on en est encore là...