We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent c599a83 commit 59c557cCopy full SHA for 59c557c
Project.toml
@@ -1,7 +1,7 @@
1
name = "QuasiArrays"
2
uuid = "c4ea9172-b204-11e9-377d-29865faadc5c"
3
authors = ["Sheehan Olver <solver@mac.com>"]
4
-version = "0.4.8"
+version = "0.4.9"
5
6
[deps]
7
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
src/QuasiArrays.jl
@@ -10,7 +10,7 @@ import Base: @_inline_meta, DimOrInd, OneTo, @_propagate_inbounds_meta, @_noinli
10
index_shape, to_shape, unsafe_length, @nloops, @ncall, unalias, _unaliascopy,
11
to_index, to_indices, _to_subscript_indices, _splatmap, dataids,
12
compute_stride1, compute_offset1, fill_to_length
13
-import Base: Slice, IdentityUnitRange, ScalarIndex, RangeIndex, view, viewindexing, ensure_indexable, index_dimsum,
+import Base: Slice, IdentityUnitRange, ScalarIndex, RangeIndex, view, viewindexing, mightalias, ensure_indexable, index_dimsum,
14
check_parent_index_match, reindex, _isdisjoint, unsafe_indices, _unsafe_ind2sub,
15
_ind2sub, _sub2ind, _ind2sub_recurse, _lookup, SubArray,
16
parentindices, reverse, ndims, checkbounds, uncolon,
src/indices.jl
@@ -189,6 +189,10 @@ in(x, S::Inclusion) = x in S.domain
189
Base.issubset(S::Inclusion, d) = S.domain ⊆ d
190
Base.issubset(S::Inclusion, d::Inclusion) = S.domain ⊆ d.domain
191
192
+intersect(x::Inclusion...) = Inclusion{mapreduce(eltype,promote_type,x)}(intersect(map(domain,x)...))
193
+# use UnionDomain to support intervals
194
+union(x::Inclusion...) = Inclusion{mapreduce(eltype,promote_type,x)}(UnionDomain(map(domain,x)...))
195
+
196
checkindex(::Type{Bool}, inds::Inclusion{T}, i::T) where T = i ∈ inds
197
checkindex(::Type{Bool}, inds::Inclusion, i) = i ⊆ inds
198
checkindex(::Type{Bool}, inds::Inclusion, ::Colon) = true
src/lazyquasiarrays.jl
@@ -25,7 +25,7 @@ struct QuasiLazyLayout <: AbstractLazyLayout end
25
MemoryLayout(::Type{<:LazyQuasiArray}) = QuasiLazyLayout()
26
lazymaterialize(F, args::Union{AbstractQuasiArray,AbstractArray}...) = copy(ApplyQuasiArray(F, args...))
27
concretize(A::AbstractQuasiArray) = convert(QuasiArray, A)
28
-
+transposelayout(::QuasiLazyLayout) = QuasiLazyLayout()
29
30
# Inclusions are left lazy. This could be refined to only be the case where the cardinality is infinite
31
BroadcastStyle(::Type{<:Inclusion}) = LazyQuasiArrayStyle{1}()
src/matmul.jl
@@ -90,9 +90,11 @@ end
90
struct QuasiArrayLayout <: MemoryLayout end
91
MemoryLayout(::Type{<:AbstractQuasiArray}) = QuasiArrayLayout()
92
93
-copy(M::Mul{QuasiArrayLayout,QuasiArrayLayout}) = QuasiArray(M)
94
-copy(M::Mul{QuasiArrayLayout}) = QuasiArray(M)
95
-copy(M::Mul{<:Any,QuasiArrayLayout}) = QuasiArray(M)
+_quasi_mul(M, _) = QuasiArray(M)
+_quasi_mul(M, ::NTuple{N,OneTo{Int}}) where N = Array(QuasiArray(M))
+copy(M::Mul{QuasiArrayLayout,QuasiArrayLayout}) = _quasi_mul(M, axes(M))
96
+copy(M::Mul{QuasiArrayLayout}) = _quasi_mul(M, axes(M))
97
+copy(M::Mul{<:Any,QuasiArrayLayout}) = _quasi_mul(M, axes(M))
98
copy(M::Mul{<:AbstractLazyLayout,QuasiArrayLayout}) = ApplyQuasiArray(M)
99
copy(M::Mul{ApplyLayout{typeof(\)},QuasiArrayLayout}) = ApplyQuasiArray(M)
100
copy(M::Mul{QuasiArrayLayout,<:AbstractLazyLayout}) = ApplyQuasiArray(M)
src/quasiconcat.jl
@@ -17,8 +17,6 @@ function getindex(f::ApplyQuasiMatrix{T,typeof(hcat)}, k::Number, j::Number) whe
17
throw(BoundsError(f, (k,j)))
18
end
19
20
-union(x::Inclusion...) = Inclusion{mapreduce(eltype,promote_type,x)}(UnionDomain(map(domain,x)...))
21
22
"""
23
UnionVcat
24
0 commit comments