diff --git a/src/Exports.jl b/src/Exports.jl index fd14b9369a..1cad20e2ee 100644 --- a/src/Exports.jl +++ b/src/Exports.jl @@ -136,7 +136,7 @@ export degree_fmpz export degrees export degrees_fit_int export degrees_fmpz -#export denominator! # not exported for now to avoid clash with Hecke +export denominator! export derivative export det export det_divisor @@ -464,7 +464,7 @@ export nullspace_right_rational export number_field export number_of_partitions export numpart -#export numerator! # not exported for now to avoid clash with Hecke +export numerator! export oct export one export one! diff --git a/src/flint/fmpq.jl b/src/flint/fmpq.jl index 2e5b0a5209..39bca1ca01 100644 --- a/src/flint/fmpq.jl +++ b/src/flint/fmpq.jl @@ -1059,13 +1059,17 @@ function set!(c::QQFieldElemOrPtr, a::Union{Integer,ZZRingElemOrPtr}) return c end -function numerator!(z::ZZRingElem, y::QQFieldElem) - @ccall libflint.fmpq_numerator(z::Ref{ZZRingElem}, y::Ref{QQFieldElem})::Nothing +function numerator!(z::ZZRingElemOrPtr, y::QQFieldElemOrPtr) + GC.@preserve y begin + set!(z, _num_ptr(y)) + end return z end function denominator!(z::ZZRingElemOrPtr, y::QQFieldElemOrPtr) - @ccall libflint.fmpq_denominator(z::Ref{ZZRingElem}, y::Ref{QQFieldElem})::Nothing + GC.@preserve y begin + set!(z, _den_ptr(y)) + end return z end diff --git a/test/flint/fmpq-test.jl b/test/flint/fmpq-test.jl index 8c97e742e3..e348d33eb5 100644 --- a/test/flint/fmpq-test.jl +++ b/test/flint/fmpq-test.jl @@ -193,6 +193,14 @@ end @test denominator(QQFieldElem(2, 3)) == 3 + z = ZZRingElem() + @test numerator!(z, QQFieldElem(2, 3)) == 2 + @test z == 2 + + z = ZZRingElem() + @test denominator!(z, QQFieldElem(2, 3)) == 3 + @test z == 3 + @test characteristic(R) == 0 @test nbits(QQFieldElem(12, 1)) == 5