@@ -1609,7 +1609,12 @@ _div(ind, d::Integer) = div(ind, d), 1, d
16091609_div (ind, r:: AbstractUnitRange ) = (d = unsafe_length (r); (div (ind, d), first (r), d))
16101610
16111611# Vectorized forms
1612- function sub2ind {N,T<:Integer} (inds:: Union{Dims{N},Indices{N}} , I:: AbstractVector{T} ...)
1612+ function sub2ind {T<:Integer} (inds:: Indices{1} , I1:: AbstractVector{T} , I:: AbstractVector{T} ...)
1613+ throw (ArgumentError (" Linear indexing is not defined for one-dimensional arrays" ))
1614+ end
1615+ sub2ind {T<:Integer} (inds:: Tuple{OneTo} , I1:: AbstractVector{T} , I:: AbstractVector{T} ...) = _sub2ind_vecs (inds, I1, I... )
1616+ sub2ind {T<:Integer} (inds:: Union{DimsInteger,Indices} , I1:: AbstractVector{T} , I:: AbstractVector{T} ...) = _sub2ind_vecs (inds, I1, I... )
1617+ function _sub2ind_vecs (inds, I:: AbstractVector... )
16131618 I1 = I[1 ]
16141619 Iinds = indices1 (I1)
16151620 for j = 2 : length (I)
@@ -1633,7 +1638,7 @@ sub2ind_vec(inds, i, I) = (@_inline_meta; _sub2ind_vec(inds, (), i, I...))
16331638_sub2ind_vec (inds, out, i, I1, I... ) = (@_inline_meta ; _sub2ind_vec (inds, (out... , I1[i]), i, I... ))
16341639_sub2ind_vec (inds, out, i) = (@_inline_meta ; sub2ind (inds, out... ))
16351640
1636- function ind2sub {N,T<:Integer} (inds:: Union{Dims {N},Indices{N}} , ind:: AbstractVector{T} )
1641+ function ind2sub {N,T<:Integer} (inds:: Union{DimsInteger {N},Indices{N}} , ind:: AbstractVector{T} )
16371642 M = length (ind)
16381643 t = ntuple (n-> similar (ind),Val{N})
16391644 for (i,idx) in enumerate (ind) # FIXME : change to eachindexvalue
0 commit comments