Skip to content
9 changes: 7 additions & 2 deletions src/timereversed.jl
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,15 @@ dual(c::TimeReversed{I}) where {I <: Sector} = TimeReversed{I}(dual(c.a))
function ⊗(c1::TimeReversed{I}, c2::TimeReversed{I}) where {I <: Sector}
return SectorSet{TimeReversed{I}}(TimeReversed{I}, c1.a ⊗ c2.a)
end
function Base.IteratorSize(::Type{SectorValues{TimeReversed{I}}}) where {I <: Sector}

# capture product sectors as well
Comment thread
borisdevos marked this conversation as resolved.
Outdated
function Base.IteratorSize(::Type{SectorValues{TimeReversed{I}}}) where {I}
Comment thread
lkdvos marked this conversation as resolved.
return Base.IteratorSize(values(I))
end
function Base.length(::SectorValues{TimeReversed{I}}) where {I <: Sector}
function Base.size(::SectorValues{TimeReversed{I}}) where {I}
return size(values(I))
end
function Base.length(::SectorValues{TimeReversed{I}}) where {I}
return length(values(I))
end
function Base.getindex(::SectorValues{TimeReversed{I}}, i::Int) where {I <: Sector}
Expand Down
11 changes: 10 additions & 1 deletion test/testsuite.jl
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,16 @@ function test_sector(I::Type)
end
end

smallset(::Type{I}) where {I <: Sector} = take(values(I), 5)
function smallset(::Type{I}, size::Int = 5) where {I <: Sector}
vals = values(I)
Base.IteratorSize(vals) === Base.IsInfinite() && return take(vals, size)
L = length(vals)
set = Random.randsubseq(collect(vals), min(size, L) / L) # contains between size and length(values(I)) sectors
while length(set) < min(size, L)
Random.randsubseq!(set, collect(vals), min(size, L) / L)
end
Comment thread
borisdevos marked this conversation as resolved.
Outdated
return set # returns all sectors if L < size
end
Comment thread
borisdevos marked this conversation as resolved.
Outdated
function smallset(::Type{ProductSector{Tuple{I1, I2}}}) where {I1, I2}
iter = product(smallset(I1), smallset(I2))
s = collect(i ⊠ j for (i, j) in iter if dim(i) * dim(j) <= 6)
Expand Down