diff --git a/Project.toml b/Project.toml index 9fca97b98..94a4d84f0 100644 --- a/Project.toml +++ b/Project.toml @@ -13,7 +13,7 @@ SHA = "ea8e919c-243c-51af-8825-aaa63cd721ce" TOML = "fa267f1f-6049-4f14-aa54-33bafae1ed76" [compat] -AbstractAlgebra = "0.44.2" +AbstractAlgebra = "0.44.8" FLINT_jll = "^300.100.100" Libdl = "1.6" LinearAlgebra = "1.6" diff --git a/src/flint/fmpz.jl b/src/flint/fmpz.jl index 2680eeca0..f487809a9 100644 --- a/src/flint/fmpz.jl +++ b/src/flint/fmpz.jl @@ -425,12 +425,16 @@ function divexact(x::ZZRingElem, y::ZZRingElem; check::Bool=true) return z end -function divides(x::ZZRingElem, y::ZZRingElem) - z = ZZRingElem() +function AbstractAlgebra.divides!(z::ZZRingElem, x::ZZRingElem, y::ZZRingElem) res = @ccall libflint.fmpz_divides(z::Ref{ZZRingElem}, x::Ref{ZZRingElem}, y::Ref{ZZRingElem})::Bool return res, z end +function AbstractAlgebra.divides(x::ZZRingElem, y::ZZRingElem) + z = ZZRingElem() + return divides!(z, x, y) +end + divides(x::ZZRingElem, y::Integer) = divides(x, ZZRingElem(y)) @doc raw""" diff --git a/src/flint/fq_default.jl b/src/flint/fq_default.jl index 305837b42..06dd43738 100644 --- a/src/flint/fq_default.jl +++ b/src/flint/fq_default.jl @@ -601,21 +601,25 @@ end function set!(z::FqFieldElem, a::FqFieldElemOrPtr) @ccall libflint.fq_default_set(z::Ref{FqFieldElem}, a::Ref{FqFieldElem}, parent(z)::Ref{FqField})::Nothing z.poly = nothing + return z end function set!(z::FqFieldElem, a::Int) @ccall libflint.fq_default_set_si(z::Ref{FqFieldElem}, a::Int, parent(z)::Ref{FqField})::Nothing z.poly = nothing + return z end function set!(z::FqFieldElem, a::UInt) @ccall libflint.fq_default_set_ui(z::Ref{FqFieldElem}, a::UInt, parent(z)::Ref{FqField})::Nothing z.poly = nothing + return z end function set!(z::FqFieldElem, a::ZZRingElemOrPtr) @ccall libflint.fq_default_set_fmpz(z::Ref{FqFieldElem}, a::Ref{ZZRingElem}, parent(z)::Ref{FqField})::Nothing z.poly = nothing + return z end set!(z::FqFieldElem, a::Integer) = set!(z, flintify(a)) @@ -623,26 +627,31 @@ set!(z::FqFieldElem, a::Integer) = set!(z, flintify(a)) function set!(z::FqFieldElem, a::ZZPolyRingElemOrPtr) @ccall libflint.fq_default_set_fmpz_poly(z::Ref{FqFieldElem}, a::Ref{ZZPolyRingElem}, parent(z)::Ref{FqField})::Nothing z.poly = nothing + return z end function set!(z::FqFieldElem, a::zzModPolyRingElemOrPtr) @ccall libflint.fq_default_set_nmod_poly(z::Ref{FqFieldElem}, a::Ref{zzModPolyRingElem}, parent(z)::Ref{FqField})::Nothing z.poly = nothing + return z end function set!(z::FqFieldElem, a::fpPolyRingElemOrPtr) @ccall libflint.fq_default_set_nmod_poly(z::Ref{FqFieldElem}, a::Ref{fpPolyRingElem}, parent(z)::Ref{FqField})::Nothing z.poly = nothing + return z end function set!(z::FqFieldElem, a::ZZModPolyRingElemOrPtr) @ccall libflint.fq_default_set_fmpz_mod_poly(z::Ref{FqFieldElem}, a::Ref{ZZModPolyRingElem}, parent(z)::Ref{FqField})::Nothing z.poly = nothing + return z end function set!(z::FqFieldElem, a::FpPolyRingElemOrPtr) @ccall libflint.fq_default_set_fmpz_mod_poly(z::Ref{FqFieldElem}, a::Ref{FpPolyRingElem}, parent(z)::Ref{FqField})::Nothing z.poly = nothing + return z end #