diff --git a/src/flint/fmpz_mod_poly.jl b/src/flint/fmpz_mod_poly.jl index 0658b758a..58123e64d 100644 --- a/src/flint/fmpz_mod_poly.jl +++ b/src/flint/fmpz_mod_poly.jl @@ -645,6 +645,7 @@ end function is_irreducible(x::ZZModPolyRingElem) !is_probable_prime(modulus(x)) && error("Modulus not prime in is_irreducible") + is_constant(x) && return false return Bool(@ccall libflint.fmpz_mod_poly_is_irreducible(x::Ref{ZZModPolyRingElem}, x.parent.base_ring.ninv::Ref{fmpz_mod_ctx_struct})::Cint) end diff --git a/src/flint/fq_default_poly.jl b/src/flint/fq_default_poly.jl index 5e6670f24..8e8abc0fa 100644 --- a/src/flint/fq_default_poly.jl +++ b/src/flint/fq_default_poly.jl @@ -513,6 +513,7 @@ end ################################################################################ function is_irreducible(x::FqPolyRingElem) + is_constant(x) && return false return Bool(@ccall libflint.fq_default_poly_is_irreducible(x::Ref{FqPolyRingElem}, base_ring(parent(x))::Ref{FqField})::Int32) end diff --git a/src/flint/fq_nmod_poly.jl b/src/flint/fq_nmod_poly.jl index 69c1da09b..c6e60ddde 100644 --- a/src/flint/fq_nmod_poly.jl +++ b/src/flint/fq_nmod_poly.jl @@ -519,6 +519,7 @@ end ################################################################################ function is_irreducible(x::fqPolyRepPolyRingElem) + is_constant(x) && return false return Bool(@ccall libflint.fq_nmod_poly_is_irreducible(x::Ref{fqPolyRepPolyRingElem}, base_ring(parent(x))::Ref{fqPolyRepField})::Int32) end diff --git a/src/flint/fq_poly.jl b/src/flint/fq_poly.jl index ab033b5dc..e57406092 100644 --- a/src/flint/fq_poly.jl +++ b/src/flint/fq_poly.jl @@ -519,6 +519,7 @@ end ################################################################################ function is_irreducible(x::FqPolyRepPolyRingElem) + is_constant(x) && return false return Bool(@ccall libflint.fq_poly_is_irreducible(x::Ref{FqPolyRepPolyRingElem}, base_ring(parent(x))::Ref{FqPolyRepField})::Int32) end diff --git a/src/flint/gfp_fmpz_poly.jl b/src/flint/gfp_fmpz_poly.jl index 991a7ca2d..456564c1f 100644 --- a/src/flint/gfp_fmpz_poly.jl +++ b/src/flint/gfp_fmpz_poly.jl @@ -242,6 +242,7 @@ end ################################################################################ function is_irreducible(x::FpPolyRingElem) + is_constant(x) && return false return Bool(@ccall libflint.fmpz_mod_poly_is_irreducible(x::Ref{FpPolyRingElem}, x.parent.base_ring.ninv::Ref{fmpz_mod_ctx_struct})::Cint) end diff --git a/src/flint/gfp_poly.jl b/src/flint/gfp_poly.jl index 36d68ce52..0945a49e6 100644 --- a/src/flint/gfp_poly.jl +++ b/src/flint/gfp_poly.jl @@ -302,6 +302,7 @@ end ################################################################################ function is_irreducible(x::fpPolyRingElem) + is_constant(x) && return false return Bool(@ccall libflint.nmod_poly_is_irreducible(x::Ref{fpPolyRingElem})::Int32) end diff --git a/src/flint/nmod_poly.jl b/src/flint/nmod_poly.jl index bd4bab902..677f23571 100644 --- a/src/flint/nmod_poly.jl +++ b/src/flint/nmod_poly.jl @@ -641,6 +641,7 @@ end function is_irreducible(x::zzModPolyRingElem) !is_prime(modulus(x)) && error("Modulus not prime in is_irreducible") + is_constant(x) && return false return Bool(@ccall libflint.nmod_poly_is_irreducible(x::Ref{zzModPolyRingElem})::Int32) end diff --git a/test/flint/fmpz_mod_poly-test.jl b/test/flint/fmpz_mod_poly-test.jl index c6f8b729c..6a877662f 100644 --- a/test/flint/fmpz_mod_poly-test.jl +++ b/test/flint/fmpz_mod_poly-test.jl @@ -498,6 +498,9 @@ end f = x^2 + 2x + 1 @test is_irreducible(f) == false + + @test !is_irreducible(x^0) + @test !is_irreducible(0*x^0) end @testset "ZZModPolyRingElem.is_squarefree" begin diff --git a/test/flint/fq_default_poly-test.jl b/test/flint/fq_default_poly-test.jl index 448f6cda2..720d86a94 100644 --- a/test/flint/fq_default_poly-test.jl +++ b/test/flint/fq_default_poly-test.jl @@ -490,6 +490,9 @@ end @test is_irreducible(x) @test is_irreducible(x^16+2*x^9+x^8+x^2+x+1) + + @test !is_irreducible(x^0) + @test !is_irreducible(0*x^0) end @testset "FqPolyRingElem.is_squarefree" begin diff --git a/test/flint/fq_nmod_poly-test.jl b/test/flint/fq_nmod_poly-test.jl index 4dae83da0..104e35c6c 100644 --- a/test/flint/fq_nmod_poly-test.jl +++ b/test/flint/fq_nmod_poly-test.jl @@ -501,6 +501,9 @@ end @test is_irreducible(x) @test is_irreducible(x^16+2*x^9+x^8+x^2+x+1) + + @test !is_irreducible(x^0) + @test !is_irreducible(0*x^0) end @testset "fqPolyRepPolyRingElem.is_squarefree" begin diff --git a/test/flint/fq_poly-test.jl b/test/flint/fq_poly-test.jl index 2cd14ee5d..14e0274ea 100644 --- a/test/flint/fq_poly-test.jl +++ b/test/flint/fq_poly-test.jl @@ -502,6 +502,9 @@ end @test is_irreducible(x) @test is_irreducible(x^16+2*x^9+x^8+x^2+x+1) + + @test !is_irreducible(x^0) + @test !is_irreducible(0*x^0) end @testset "FqPolyRepPolyRingElem.is_squarefree" begin diff --git a/test/flint/gfp_fmpz_poly-test.jl b/test/flint/gfp_fmpz_poly-test.jl index fbbdf4c4e..bf895af3d 100644 --- a/test/flint/gfp_fmpz_poly-test.jl +++ b/test/flint/gfp_fmpz_poly-test.jl @@ -497,6 +497,9 @@ end f = x^2 + 2x + 1 @test is_irreducible(f) == false + + @test !is_irreducible(x^0) + @test !is_irreducible(0*x^0) end @testset "FpPolyRingElem.is_squarefree" begin diff --git a/test/flint/gfp_poly-test.jl b/test/flint/gfp_poly-test.jl index de0bb91b9..480e4ae83 100644 --- a/test/flint/gfp_poly-test.jl +++ b/test/flint/gfp_poly-test.jl @@ -564,6 +564,9 @@ end @test is_irreducible(x) @test is_irreducible(x^16+2*x^9+x^8+x^2+x+1) + + @test !is_irreducible(x^0) + @test !is_irreducible(0*x^0) end @testset "fpPolyRingElem.is_squarefree" begin diff --git a/test/flint/nmod_poly-test.jl b/test/flint/nmod_poly-test.jl index aa200ea02..e78a6d8b6 100644 --- a/test/flint/nmod_poly-test.jl +++ b/test/flint/nmod_poly-test.jl @@ -587,6 +587,9 @@ end @test is_irreducible(x) @test is_irreducible(x^16+2*x^9+x^8+x^2+x+1) + + @test !is_irreducible(x^0) + @test !is_irreducible(0*x^0) end @testset "zzModPolyRingElem.is_squarefree" begin