Skip to content

Commit b5956a8

Browse files
committed
lazy broadcasting for Frequencies
1 parent 4686dc3 commit b5956a8

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

src/definitions.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,12 @@ Base.step(x::Frequencies) = x.multiplier
415415

416416
Base.copy(x::Frequencies) = x
417417

418+
# Retain the lazy representation upon scalar multiplication
419+
Broadcast.broadcasted(::Base.Broadcast.DefaultArrayStyle{1}, ::typeof(*), f::Frequencies, x::Number) =
420+
Frequencies(f.n_nonnegative, f.n, f.multiplier * x)
421+
Broadcast.broadcasted(s::Base.Broadcast.DefaultArrayStyle{1}, ::typeof(*), x::Number, f::Frequencies) =
422+
Broadcast.broadcasted(s, *, f, x)
423+
418424
"""
419425
fftfreq(n, fs=1)
420426
Return the discrete Fourier transform (DFT) sample frequencies for a DFT of length `n`. The returned

test/runtests.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,13 @@ end
101101
@test eltype(fftfreq(5, ComplexF64(2))) == ComplexF64
102102

103103
@test_throws ArgumentError Frequencies(12, 10, 1)
104+
105+
@testset "scaling" begin
106+
@test fftfreq(4, 1) * 2 === fftfreq(4, 2)
107+
@test fftfreq(4, 1) .* 2 === fftfreq(4, 2)
108+
@test 2 * fftfreq(4, 1) === fftfreq(4, 2)
109+
@test 2 .* fftfreq(4, 1) === fftfreq(4, 2)
110+
end
104111
end
105112

106113
@testset "normalization" begin

0 commit comments

Comments
 (0)