Skip to content

Commit 3730225

Browse files
committed
test: Add nmod_poly with modulus=9 test case
1 parent ad81966 commit 3730225

1 file changed

Lines changed: 52 additions & 49 deletions

File tree

src/flint/test/test_all.py

Lines changed: 52 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2479,58 +2479,64 @@ def test_division_matrix():
24792479

24802480

24812481
def _all_polys():
2482-
return [
2483-
# (poly_type, scalar_type, is_field, characteristic)
24842482

2483+
# (poly_type, scalar_type, is_field, characteristic)
2484+
FMPZ = (flint.fmpz_poly, flint.fmpz, False, flint.fmpz(0))
2485+
FMPQ = (flint.fmpq_poly, flint.fmpq, True, flint.fmpz(0))
2486+
2487+
def NMOD(n):
2488+
return (
2489+
lambda *a: flint.nmod_poly(*a, n),
2490+
lambda x: flint.nmod(x, n),
2491+
flint.fmpz(n).is_prime(),
2492+
flint.fmpz(n)
2493+
)
2494+
2495+
def FMPZ_MOD(n):
2496+
return (
2497+
lambda *a: flint.fmpz_mod_poly(*a, flint.fmpz_mod_poly_ctx(n)),
2498+
lambda x: flint.fmpz_mod(x, flint.fmpz_mod_ctx(n)),
2499+
flint.fmpz(n).is_prime(),
2500+
flint.fmpz(n)
2501+
)
2502+
2503+
def FQ_DEFAULT(n, k):
2504+
return (
2505+
lambda *a: flint.fq_default_poly(*a, flint.fq_default_poly_ctx(n, k)),
2506+
lambda x: flint.fq_default(x, flint.fq_default_ctx(n, k)),
2507+
True,
2508+
flint.fmpz(n)
2509+
)
2510+
2511+
ALL_POLYS = [
24852512
# Z and Q
2486-
(flint.fmpz_poly, flint.fmpz, False, flint.fmpz(0)),
2487-
(flint.fmpq_poly, flint.fmpq, True, flint.fmpz(0)),
2513+
FMPZ,
2514+
FMPQ,
24882515

24892516
# Z/pZ (p prime)
2490-
(lambda *a: flint.nmod_poly(*a, 17), lambda x: flint.nmod(x, 17), True, flint.fmpz(17)),
2491-
(lambda *a: flint.fmpz_mod_poly(*a, flint.fmpz_mod_poly_ctx(163)),
2492-
lambda x: flint.fmpz_mod(x, flint.fmpz_mod_ctx(163)),
2493-
True, flint.fmpz(163)),
2494-
(lambda *a: flint.fmpz_mod_poly(*a, flint.fmpz_mod_poly_ctx(2**127 - 1)),
2495-
lambda x: flint.fmpz_mod(x, flint.fmpz_mod_ctx(2**127 - 1)),
2496-
True, flint.fmpz(2**127 - 1)),
2497-
(lambda *a: flint.fmpz_mod_poly(*a, flint.fmpz_mod_poly_ctx(2**255 - 19)),
2498-
lambda x: flint.fmpz_mod(x, flint.fmpz_mod_ctx(2**255 - 19)),
2499-
True, flint.fmpz(2**255 - 19)),
2517+
NMOD(17),
2518+
FMPZ_MOD(163),
2519+
FMPZ_MOD(2**127 - 1),
2520+
FMPZ_MOD(2**255 - 19),
25002521

25012522
# GF(p^k) (p prime)
2502-
(lambda *a: flint.fq_default_poly(*a, flint.fq_default_poly_ctx(2**127 - 1)),
2503-
lambda x: flint.fq_default(x, flint.fq_default_ctx(2**127 - 1)),
2504-
True, flint.fmpz(2**127 - 1)),
2505-
(lambda *a: flint.fq_default_poly(*a, flint.fq_default_poly_ctx(2**127 - 1, 2)),
2506-
lambda x: flint.fq_default(x, flint.fq_default_ctx(2**127 - 1, 2)),
2507-
True, flint.fmpz(2**127 - 1)),
2508-
(lambda *a: flint.fq_default_poly(*a, flint.fq_default_poly_ctx(65537)),
2509-
lambda x: flint.fq_default(x, flint.fq_default_ctx(65537)),
2510-
True, flint.fmpz(65537)),
2511-
(lambda *a: flint.fq_default_poly(*a, flint.fq_default_poly_ctx(65537, 5)),
2512-
lambda x: flint.fq_default(x, flint.fq_default_ctx(65537, 5)),
2513-
True, flint.fmpz(65537)),
2514-
(lambda *a: flint.fq_default_poly(*a, flint.fq_default_poly_ctx(11)),
2515-
lambda x: flint.fq_default(x, flint.fq_default_ctx(11)),
2516-
True, flint.fmpz(11)),
2517-
(lambda *a: flint.fq_default_poly(*a, flint.fq_default_poly_ctx(11, 5)),
2518-
lambda x: flint.fq_default(x, flint.fq_default_ctx(11, 5)),
2519-
True, flint.fmpz(11)),
2523+
FQ_DEFAULT(2**127 - 1, 1),
2524+
FQ_DEFAULT(2**127 - 1, 2),
2525+
FQ_DEFAULT(65537, 1),
2526+
FQ_DEFAULT(65537, 5),
2527+
FQ_DEFAULT(11, 1),
2528+
FQ_DEFAULT(11, 5),
25202529

25212530
# Z/nZ (n composite)
2522-
(lambda *a: flint.nmod_poly(*a, 16), lambda x: flint.nmod(x, 16), False, flint.fmpz(16)),
2523-
(lambda *a: flint.fmpz_mod_poly(*a, flint.fmpz_mod_poly_ctx(164)),
2524-
lambda x: flint.fmpz_mod(x, flint.fmpz_mod_ctx(164)),
2525-
False, flint.fmpz(164)),
2526-
(lambda *a: flint.fmpz_mod_poly(*a, flint.fmpz_mod_poly_ctx(2**127)),
2527-
lambda x: flint.fmpz_mod(x, flint.fmpz_mod_ctx(2**127)),
2528-
False, flint.fmpz(2**127)),
2529-
(lambda *a: flint.fmpz_mod_poly(*a, flint.fmpz_mod_poly_ctx(2**255)),
2530-
lambda x: flint.fmpz_mod(x, flint.fmpz_mod_ctx(2**255)),
2531-
False, flint.fmpz(2**255)),
2531+
NMOD(9),
2532+
NMOD(16),
2533+
FMPZ_MOD(164),
2534+
FMPZ_MOD(2**127),
2535+
FMPZ_MOD(2**255),
25322536
]
25332537

2538+
return ALL_POLYS
2539+
25342540

25352541
def test_polys():
25362542
for P, S, is_field, characteristic in _all_polys():
@@ -2724,13 +2730,10 @@ def setbad(obj, i, val):
27242730
assert raises(lambda: P([1, 2]) / 2, DomainError)
27252731
else:
27262732
# Z/nZ for n not prime
2727-
if characteristic % 2 == 0:
2728-
assert raises(lambda: P([1, 1]) // 2, DomainError)
2729-
assert raises(lambda: P([1, 1]) % 2, DomainError)
2730-
assert raises(lambda: P([2, 2]) / 2, DomainError)
2731-
assert raises(lambda: P([1, 2]) / 2, DomainError)
2732-
else:
2733-
1/0
2733+
assert raises(lambda: P([1, 1]) // 2, DomainError)
2734+
assert raises(lambda: P([1, 1]) % 2, DomainError)
2735+
assert raises(lambda: P([2, 2]) / 2, DomainError)
2736+
assert raises(lambda: P([1, 2]) / 2, DomainError)
27342737

27352738
assert raises(lambda: P([1, 2, 1]) // None, TypeError)
27362739
assert raises(lambda: P([1, 2, 1]) % None, TypeError)

0 commit comments

Comments
 (0)