@@ -27,7 +27,7 @@ import Base: AbstractArray, AbstractMatrix, AbstractVector,
2727 similar, @_gc_preserve_end , @_gc_preserve_begin ,
2828 @nexprs , @ncall , @ntuple , tuple_type_tail,
2929 all, any, isbitsunion, issubset, replace_in_print_matrix, replace_with_centered_mark,
30- strides, unsafe_convert, first_index, unalias
30+ strides, unsafe_convert, first_index, unalias, union
3131
3232import Base. Broadcast: BroadcastStyle, AbstractArrayStyle, Broadcasted, broadcasted,
3333 combine_eltypes, DefaultArrayStyle, instantiate, materialize,
@@ -54,7 +54,8 @@ export materialize, materialize!, MulAdd, muladd!, Ldiv, Rdiv, Lmul, Rmul, Dot,
5454 DiagonalLayout, ScalarLayout, SymTridiagonalLayout, TridiagonalLayout, BidiagonalLayout,
5555 HermitianLayout, SymmetricLayout, TriangularLayout,
5656 UnknownLayout, AbstractBandedLayout, ApplyBroadcastStyle, ConjLayout, AbstractFillLayout, DualLayout,
57- colsupport, rowsupport, layout_getindex, QLayout, LayoutArray, LayoutMatrix, LayoutVector
57+ colsupport, rowsupport, layout_getindex, QLayout, LayoutArray, LayoutMatrix, LayoutVector,
58+ RangeCumsum
5859
5960struct ApplyBroadcastStyle <: BroadcastStyle end
6061@inline function copyto! (dest:: AbstractArray , bc:: Broadcasted{ApplyBroadcastStyle} )
@@ -104,6 +105,7 @@ include("factorizations.jl")
104105@inline sub_materialize (_, V, _) = Array (V)
105106@inline sub_materialize (L, V) = sub_materialize (L, V, axes (V))
106107@inline sub_materialize (V:: SubArray ) = sub_materialize (MemoryLayout (V), V)
108+ @inline sub_materialize (V:: AbstractArray ) = V # Anything not a SubArray is already materialized
107109
108110@inline layout_getindex (A, I... ) = sub_materialize (view (A, I... ))
109111
@@ -178,6 +180,7 @@ copyto!(dest::AbstractArray{<:Any,N}, src::SubArray{<:Any,N,<:LayoutArray}) wher
178180copyto! (dest:: LayoutMatrix , src:: AdjOrTrans{<:Any,<:LayoutArray} ) = _copyto! (dest, src)
179181copyto! (dest:: LayoutMatrix , src:: SubArray{<:Any,2,<:AdjOrTrans{<:Any,<:LayoutArray}} ) = _copyto! (dest, src)
180182copyto! (dest:: AbstractMatrix , src:: AdjOrTrans{<:Any,<:LayoutArray} ) = _copyto! (dest, src)
183+ copyto! (dest:: SubArray{<:Any,2,<:LayoutArray} , src:: AdjOrTrans{<:Any,<:LayoutArray} ) = _copyto! (dest, src)
181184copyto! (dest:: SubArray{<:Any,2,<:LayoutMatrix} , src:: SubArray{<:Any,2,<:AdjOrTrans{<:Any,<:LayoutArray}} ) = _copyto! (dest, src)
182185copyto! (dest:: AbstractMatrix , src:: SubArray{<:Any,2,<:AdjOrTrans{<:Any,<:LayoutArray}} ) = _copyto! (dest, src)
183186# ambiguity from sparsematrix.jl
@@ -281,6 +284,6 @@ Base.print_matrix_row(io::IO,
281284 axes_print_matrix_row (axes (X), io, X, A, i, cols, sep)
282285
283286
284-
287+ include ( " cumsum.jl " )
285288
286289end
0 commit comments