11module QuasiArrays
2- using Base, LinearAlgebra, LazyArrays, ArrayLayouts, DomainSets
2+ using Base, LinearAlgebra, LazyArrays, ArrayLayouts, DomainSets, FillArrays, StaticArrays
33import Base: getindex, size, axes, axes1, length, == , isequal, iterate, CartesianIndices, LinearIndices,
44 Indices, IndexStyle, getindex, setindex!, parent, vec, convert, similar, copy, copyto!, zero,
55 map, eachindex, eltype, first, last, firstindex, lastindex, in, reshape, permutedims, all,
@@ -8,7 +8,7 @@ import Base: @_inline_meta, DimOrInd, OneTo, @_propagate_inbounds_meta, @_noinli
88 DimsInteger, error_if_canonical_getindex, @propagate_inbounds , _return_type,
99 _maybetail, tail, _getindex, _maybe_reshape, index_ndims, _unsafe_getindex,
1010 index_shape, to_shape, unsafe_length, @nloops , @ncall , unalias, _unaliascopy,
11- to_index, to_indices, _to_subscript_indices, _splatmap, dataids,
11+ to_index, to_indices, _to_subscript_indices, _splatmap, dataids,
1212 compute_stride1, compute_offset1, fill_to_length
1313import Base: Slice, IdentityUnitRange, ScalarIndex, RangeIndex, view, viewindexing, mightalias, ensure_indexable, index_dimsum,
1414 check_parent_index_match, reindex, _isdisjoint, unsafe_indices, _unsafe_ind2sub,
@@ -24,19 +24,22 @@ import Base: exp, log, sqrt,
2424 acos, asin, atan, acsc, asec, acot,
2525 acosh, asinh, atanh, acsch, asech, acoth
2626import Base: Array, Matrix, Vector
27- import Base: union, intersect
27+ import Base: union, intersect, sort, sort!
28+ import Base: conj, real, imag
29+ import Base: sum, cumsum, diff
30+ import Base: ones, zeros, one, zero, fill
2831
2932import Base. Broadcast: materialize, materialize!, BroadcastStyle, AbstractArrayStyle, Style, broadcasted, Broadcasted, Unknown,
30- newindex, broadcastable, preprocess, _eachindex, _broadcast_getindex,
31- DefaultArrayStyle, axistype, throwdm, instantiate, combine_eltypes, eltypes
33+ newindex, broadcastable, preprocess, _eachindex, _broadcast_getindex, broadcast_shape,
34+ DefaultArrayStyle, axistype, throwdm, instantiate, combine_eltypes, eltypes
3235
3336import LinearAlgebra: transpose, adjoint, checkeltype_adjoint, checkeltype_transpose, Diagonal,
3437 AbstractTriangular, pinv, inv, promote_leaf_eltypes, power_by_squaring,
35- integerpow, schurpow, tr, factorize, copy_oftype
38+ integerpow, schurpow, tr, factorize, copy_oftype, rank
3639
37- import ArrayLayouts: indextype, concretize
40+ import ArrayLayouts: indextype, concretize, fillzeros, OnesLayout, AbstractFillLayout, FillLayout, ZerosLayout
3841import LazyArrays: MemoryLayout, UnknownLayout, Mul, ApplyLayout, BroadcastLayout,
39- InvOrPInv, ApplyStyle, AbstractLazyLayout, LazyLayout,
42+ InvOrPInv, ApplyStyle, AbstractLazyLayout, LazyLayout,
4043 MulStyle, MulAddStyle, LazyArrayApplyStyle, combine_mul_styles, DefaultArrayApplyStyle,
4144 Applied, flatten, _flatten, arguments, _mat_mul_arguments, _vec_mul_arguments, _mul_arguments,
4245 rowsupport, colsupport, tuple_type_memorylayouts, applylayout, broadcastlayout,
@@ -50,7 +53,7 @@ export AbstractQuasiArray, AbstractQuasiMatrix, AbstractQuasiVector, materialize
5053 QuasiArray, QuasiMatrix, QuasiVector, QuasiDiagonal, Inclusion,
5154 QuasiAdjoint, QuasiTranspose, ApplyQuasiArray, ApplyQuasiMatrix, ApplyQuasiVector,
5255 BroadcastQuasiArray, BroadcastQuasiMatrix, BroadcastQuasiVector, indextype,
53- QuasiKron, quasikron, UnionVcat, SubQuasiArray
56+ QuasiKron, quasikron, UnionVcat, SubQuasiArray, QuasiFill, QuasiZeros, QuasiOnes, QuasiEye
5457
5558import Base. Broadcast: broadcast_preserving_zero_d
5659
@@ -70,6 +73,7 @@ const AbstractQuasiOrArray{T} = Union{AbstractArray{T},AbstractQuasiArray{T}}
7073
7174
7275cardinality (d) = length (d)
76+ cardinality (d:: UnionDomain ) = + (cardinality .(d. domains)... )
7377
7478size (A:: AbstractQuasiArray ) = map (cardinality, axes (A))
7579axes (A:: AbstractQuasiArray ) = error (" Override axes for $(typeof (A)) " )
@@ -96,6 +100,7 @@ include("matmul.jl")
96100include (" inv.jl" )
97101include (" quasiadjtrans.jl" )
98102include (" quasidiagonal.jl" )
103+ include (" quasifill.jl" )
99104include (" dense.jl" )
100105
101106include (" quasikron.jl" )
0 commit comments