new version of `join` broken
Closed this issue · 0 comments
henripal commented
Hi!
f1 = Factor([:a], [1;1])
f2 = Factor([:a], [1;1])
join(*, f1, f2)
throws an error while
join(*, f1, f1)
works fine.
This is due to lines 20-24 of index_join.jl
:
common = intersect(ϕ1.dimensions, ϕ2.dimensions)
index_common1 = indexin(common, ϕ1.dimensions)
index_common2 = indexin(common, ϕ2.dimensions)
if [size(ϕ1)[index_common1]...] != [size(ϕ2)[index_common2]...]
here, common
correctly identifies that the dimensions are identical, but the indexin
implementation is dictionary based, and the hashes of the identical dimensions in f1
and f2
are different, so the second indexin will return 0 and cause a bounds error when trying to index the size
.
Not sure the best way to fix this?