@@ -13,16 +13,13 @@ axes(c::RangeCumsum) = axes(c.range)
1313== (a:: RangeCumsum , b:: RangeCumsum ) = a. range == b. range
1414BroadcastStyle (:: Type{<:RangeCumsum{<:Any,RR}} ) where RR = BroadcastStyle (RR)
1515
16+ _getindex (r:: AbstractUnitRange{<:Integer} , k) = k * (2 first (r) + k - 1 ) ÷ 2
17+ Base. @propagate_inbounds _getindex (r:: AbstractRange , k) = sum (r[range (firstindex (r), length= k)])
1618
1719Base. @propagate_inbounds function getindex (c:: RangeCumsum{<:Any,<:AbstractRange} , k:: Integer )
1820 @boundscheck checkbounds (c, k)
1921 r = c. range
20- k * (first (r) + r[k]) ÷ 2
21- end
22- Base. @propagate_inbounds function getindex (c:: RangeCumsum{<:Any,<:AbstractUnitRange} , k:: Integer )
23- @boundscheck checkbounds (c, k)
24- r = c. range
25- k * (2 first (r) + k - 1 ) ÷ 2
22+ _getindex (r, k- firstindex (r)+ 1 )
2623end
2724
2825Base. @propagate_inbounds getindex (c:: RangeCumsum , kr:: OneTo ) = RangeCumsum (c. range[kr])
@@ -31,7 +28,7 @@ Base.@propagate_inbounds view(c::RangeCumsum, kr::OneTo) = c[kr]
3128
3229first (r:: RangeCumsum ) = first (r. range)
3330last (r:: RangeCumsum ) = sum (r. range)
34- diff (r:: RangeCumsum ) = r. range[2 : end ]
31+ diff (r:: RangeCumsum ) = r. range[firstindex (r) + 1 : end ]
3532isempty (r:: RangeCumsum ) = isempty (r. range)
3633
3734union (a:: RangeCumsum{<:Any,<:OneTo} , b:: RangeCumsum{<:Any,<:OneTo} ) =
0 commit comments