mirror of
https://github.com/kalmarek/PropertyT.jl.git
synced 2024-11-26 17:05:27 +01:00
remove iterator for FinField
This commit is contained in:
parent
d3a228cfa7
commit
75c249abb8
@ -1,44 +1,5 @@
|
||||
include("Projections.jl")
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# Iterator protocol for Nemo.FinField
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
mutable struct FFEltsIter{T<:Generic.FinField}
|
||||
all::Int
|
||||
field::T
|
||||
|
||||
function FFEltsIter{T}(F::T) where {T}
|
||||
return new(Int(characteristic(F)^degree(F)), F)
|
||||
end
|
||||
end
|
||||
FFEltsIter(F::T) where {T<:Nemo.FinField} = FFEltsIter{T}(F)
|
||||
|
||||
import Base: start, next, done, eltype, length
|
||||
|
||||
Base.start(A::FFEltsIter) = (zero(A.field), 0)
|
||||
Base.next(A::FFEltsIter, state) = next_ffelem(state...)
|
||||
Base.done(A::FFEltsIter, state) = state[2] >= A.all
|
||||
Base.eltype(::Type{FFEltsIter}) = elem_type(A.field)
|
||||
Base.length(A::FFEltsIter) = A.all
|
||||
|
||||
function next_ffelem(f::Nemo.FinFieldElem, c::Int)
|
||||
if c == 0
|
||||
return (f, (f, 1))
|
||||
elseif c == 1
|
||||
f = one(parent(f))
|
||||
return (f, (f, 2))
|
||||
else
|
||||
f = gen(parent(f))*f
|
||||
return (f, (f, c+1))
|
||||
end
|
||||
end
|
||||
|
||||
import Nemo.elements
|
||||
elements(F::Nemo.FinField) = FFEltsIter(F)
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# Orbit stuff
|
||||
|
Loading…
Reference in New Issue
Block a user