diff --git a/src/fmpz_mod_poly.h b/src/fmpz_mod_poly.h index 3ec6339b7b..ac714fed51 100644 --- a/src/fmpz_mod_poly.h +++ b/src/fmpz_mod_poly.h @@ -202,11 +202,7 @@ int fmpz_mod_poly_is_one(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t FLINT_ return poly->length == 1 && poly->coeffs[0] == WORD(1); } -FMPZ_MOD_POLY_INLINE -int fmpz_mod_poly_is_gen(const fmpz_mod_poly_t op, const fmpz_mod_ctx_t FLINT_UNUSED(ctx)) -{ - return op->length == 2 && op->coeffs[1] == WORD(1) && op->coeffs[0] == WORD(0); -} +int fmpz_mod_poly_is_gen(const fmpz_mod_poly_t op, const fmpz_mod_ctx_t ctx); int fmpz_mod_poly_is_unit(const fmpz_mod_poly_t op, const fmpz_mod_ctx_t ctx); diff --git a/src/fmpz_mod_poly/attributes.c b/src/fmpz_mod_poly/attributes.c index c8c658f660..4f6f50b987 100644 --- a/src/fmpz_mod_poly/attributes.c +++ b/src/fmpz_mod_poly/attributes.c @@ -12,8 +12,15 @@ #include "fmpz_mod.h" #include "fmpz_mod_poly.h" +int fmpz_mod_poly_is_gen(const fmpz_mod_poly_t op, const fmpz_mod_ctx_t ctx) +{ + return (*fmpz_mod_ctx_modulus(ctx) == UWORD(1)) || + (op->length == 2 && op->coeffs[1] == WORD(1) && op->coeffs[0] == WORD(0)); +} + /* bogus for non-prime modulus */ int fmpz_mod_poly_is_unit(const fmpz_mod_poly_t op, const fmpz_mod_ctx_t ctx) { - return (op->length == 1) && fmpz_mod_is_invertible(op->coeffs + 0, ctx); + return (*fmpz_mod_ctx_modulus(ctx) == UWORD(1)) || + (op->length == 1 && fmpz_mod_is_invertible(op->coeffs + 0, ctx)); }