Skip to content

Commit 2fc39bc

Browse files
committed
fix: irreducibility of constant polynomials over finite fields
1 parent fc77b13 commit 2fc39bc

14 files changed

+28
-0
lines changed

src/flint/fmpz_mod_poly.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,7 @@ end
645645

646646
function is_irreducible(x::ZZModPolyRingElem)
647647
!is_probable_prime(modulus(x)) && error("Modulus not prime in is_irreducible")
648+
is_constant(x) && return false
648649
return Bool(@ccall libflint.fmpz_mod_poly_is_irreducible(x::Ref{ZZModPolyRingElem}, x.parent.base_ring.ninv::Ref{fmpz_mod_ctx_struct})::Cint)
649650
end
650651

src/flint/fq_default_poly.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,7 @@ end
513513
################################################################################
514514

515515
function is_irreducible(x::FqPolyRingElem)
516+
is_constant(x) && return false
516517
return Bool(@ccall libflint.fq_default_poly_is_irreducible(x::Ref{FqPolyRingElem}, base_ring(parent(x))::Ref{FqField})::Int32)
517518
end
518519

src/flint/fq_nmod_poly.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,7 @@ end
519519
################################################################################
520520

521521
function is_irreducible(x::fqPolyRepPolyRingElem)
522+
is_constant(x) && return false
522523
return Bool(@ccall libflint.fq_nmod_poly_is_irreducible(x::Ref{fqPolyRepPolyRingElem}, base_ring(parent(x))::Ref{fqPolyRepField})::Int32)
523524
end
524525

src/flint/fq_poly.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,7 @@ end
519519
################################################################################
520520

521521
function is_irreducible(x::FqPolyRepPolyRingElem)
522+
is_constant(x) && return false
522523
return Bool(@ccall libflint.fq_poly_is_irreducible(x::Ref{FqPolyRepPolyRingElem}, base_ring(parent(x))::Ref{FqPolyRepField})::Int32)
523524
end
524525

src/flint/gfp_fmpz_poly.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ end
242242
################################################################################
243243

244244
function is_irreducible(x::FpPolyRingElem)
245+
is_constant(x) && return false
245246
return Bool(@ccall libflint.fmpz_mod_poly_is_irreducible(x::Ref{FpPolyRingElem}, x.parent.base_ring.ninv::Ref{fmpz_mod_ctx_struct})::Cint)
246247
end
247248

src/flint/gfp_poly.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ end
302302
################################################################################
303303

304304
function is_irreducible(x::fpPolyRingElem)
305+
is_constant(x) && return false
305306
return Bool(@ccall libflint.nmod_poly_is_irreducible(x::Ref{fpPolyRingElem})::Int32)
306307
end
307308

src/flint/nmod_poly.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,6 +641,7 @@ end
641641

642642
function is_irreducible(x::zzModPolyRingElem)
643643
!is_prime(modulus(x)) && error("Modulus not prime in is_irreducible")
644+
is_constant(x) && return false
644645
return Bool(@ccall libflint.nmod_poly_is_irreducible(x::Ref{zzModPolyRingElem})::Int32)
645646
end
646647

test/flint/fmpz_mod_poly-test.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,9 @@ end
498498
f = x^2 + 2x + 1
499499

500500
@test is_irreducible(f) == false
501+
502+
@test !is_irreducible(x^0)
503+
@test !is_irreducible(0*x^0)
501504
end
502505

503506
@testset "ZZModPolyRingElem.is_squarefree" begin

test/flint/fq_default_poly-test.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,9 @@ end
490490
@test is_irreducible(x)
491491

492492
@test is_irreducible(x^16+2*x^9+x^8+x^2+x+1)
493+
494+
@test !is_irreducible(x^0)
495+
@test !is_irreducible(0*x^0)
493496
end
494497

495498
@testset "FqPolyRingElem.is_squarefree" begin

test/flint/fq_nmod_poly-test.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,9 @@ end
501501
@test is_irreducible(x)
502502

503503
@test is_irreducible(x^16+2*x^9+x^8+x^2+x+1)
504+
505+
@test !is_irreducible(x^0)
506+
@test !is_irreducible(0*x^0)
504507
end
505508

506509
@testset "fqPolyRepPolyRingElem.is_squarefree" begin

0 commit comments

Comments
 (0)