@@ -13,16 +13,13 @@ axes(c::RangeCumsum) = axes(c.range)
13
13
== (a:: RangeCumsum , b:: RangeCumsum ) = a. range == b. range
14
14
BroadcastStyle (:: Type{<:RangeCumsum{<:Any,RR}} ) where RR = BroadcastStyle (RR)
15
15
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)])
16
18
17
19
Base. @propagate_inbounds function getindex (c:: RangeCumsum{<:Any,<:AbstractRange} , k:: Integer )
18
20
@boundscheck checkbounds (c, k)
19
21
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 )
26
23
end
27
24
28
25
Base. @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]
31
28
32
29
first (r:: RangeCumsum ) = first (r. range)
33
30
last (r:: RangeCumsum ) = sum (r. range)
34
- diff (r:: RangeCumsum ) = r. range[2 : end ]
31
+ diff (r:: RangeCumsum ) = r. range[firstindex (r) + 1 : end ]
35
32
isempty (r:: RangeCumsum ) = isempty (r. range)
36
33
37
34
union (a:: RangeCumsum{<:Any,<:OneTo} , b:: RangeCumsum{<:Any,<:OneTo} ) =
0 commit comments