Skip to content

Commit 55108d3

Browse files
authored
Multiply RangeCumSum by a number (#211)
* Multiply RangeCumSum by a number * Add tests for both orderings * Test for types
1 parent 636ca3c commit 55108d3

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

Diff for: Project.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ArrayLayouts"
22
uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
33
authors = ["Sheehan Olver <[email protected]>"]
4-
version = "1.6.2"
4+
version = "1.7.0"
55

66
[deps]
77
FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b"

Diff for: src/cumsum.jl

+7
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,10 @@ sort!(a::RangeCumsum{<:Any,<:Base.OneTo}) = a
3838
sort(a::RangeCumsum{<:Any,<:Base.OneTo}) = a
3939

4040
convert(::Type{RangeCumsum{T,R}}, r::RangeCumsum) where {T,R} = RangeCumsum{T,R}(convert(R, r.range))
41+
42+
function Broadcast.broadcasted(::Broadcast.DefaultArrayStyle{1}, ::typeof(*), x::Number, r::RangeCumsum)
43+
RangeCumsum(x * r.range)
44+
end
45+
function Broadcast.broadcasted(::Broadcast.DefaultArrayStyle{1}, ::typeof(*), r::RangeCumsum, x::Number)
46+
RangeCumsum(r.range * x)
47+
end

Diff for: test/test_cumsum.jl

+16
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,22 @@ include("infinitearrays.jl")
3737

3838
r = RangeCumsum(InfiniteArrays.OneToInf())
3939
@test axes(r, 1) == InfiniteArrays.OneToInf()
40+
41+
@testset "multiplication by a number" begin
42+
function test_broadcast(n, r)
43+
w = Vector(r)
44+
@test n * r isa RangeCumsum
45+
@test n * r n * w
46+
@test r * n isa RangeCumsum
47+
@test r * n w * n
48+
end
49+
for p in (Base.OneTo(4), -4:4, -4:2:4, -1.0:3.0:5.0)
50+
r = RangeCumsum(p)
51+
test_broadcast(3, r)
52+
test_broadcast(3.5, r)
53+
test_broadcast(3.5 + 2im, r)
54+
end
55+
end
4056
end
4157

4258
end

0 commit comments

Comments
 (0)