Skip to content

Commit 23389a5

Browse files
committed
test: Add nmod_poly with modulus=9 test case
1 parent 6f04cdd commit 23389a5

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
@@ -2485,58 +2485,64 @@ def test_division_matrix():
24852485

24862486

24872487
def _all_polys():
2488-
return [
2489-
# (poly_type, scalar_type, is_field, characteristic)
24902488

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

24952522
# Z/pZ (p prime)
2496-
(lambda *a: flint.nmod_poly(*a, 17), lambda x: flint.nmod(x, 17), True, flint.fmpz(17)),
2497-
(lambda *a: flint.fmpz_mod_poly(*a, flint.fmpz_mod_poly_ctx(163)),
2498-
lambda x: flint.fmpz_mod(x, flint.fmpz_mod_ctx(163)),
2499-
True, flint.fmpz(163)),
2500-
(lambda *a: flint.fmpz_mod_poly(*a, flint.fmpz_mod_poly_ctx(2**127 - 1)),
2501-
lambda x: flint.fmpz_mod(x, flint.fmpz_mod_ctx(2**127 - 1)),
2502-
True, flint.fmpz(2**127 - 1)),
2503-
(lambda *a: flint.fmpz_mod_poly(*a, flint.fmpz_mod_poly_ctx(2**255 - 19)),
2504-
lambda x: flint.fmpz_mod(x, flint.fmpz_mod_ctx(2**255 - 19)),
2505-
True, flint.fmpz(2**255 - 19)),
2523+
NMOD(17),
2524+
FMPZ_MOD(163),
2525+
FMPZ_MOD(2**127 - 1),
2526+
FMPZ_MOD(2**255 - 19),
25062527

25072528
# GF(p^k) (p prime)
2508-
(lambda *a: flint.fq_default_poly(*a, flint.fq_default_poly_ctx(2**127 - 1)),
2509-
lambda x: flint.fq_default(x, flint.fq_default_ctx(2**127 - 1)),
2510-
True, flint.fmpz(2**127 - 1)),
2511-
(lambda *a: flint.fq_default_poly(*a, flint.fq_default_poly_ctx(2**127 - 1, 2)),
2512-
lambda x: flint.fq_default(x, flint.fq_default_ctx(2**127 - 1, 2)),
2513-
True, flint.fmpz(2**127 - 1)),
2514-
(lambda *a: flint.fq_default_poly(*a, flint.fq_default_poly_ctx(65537)),
2515-
lambda x: flint.fq_default(x, flint.fq_default_ctx(65537)),
2516-
True, flint.fmpz(65537)),
2517-
(lambda *a: flint.fq_default_poly(*a, flint.fq_default_poly_ctx(65537, 5)),
2518-
lambda x: flint.fq_default(x, flint.fq_default_ctx(65537, 5)),
2519-
True, flint.fmpz(65537)),
2520-
(lambda *a: flint.fq_default_poly(*a, flint.fq_default_poly_ctx(11)),
2521-
lambda x: flint.fq_default(x, flint.fq_default_ctx(11)),
2522-
True, flint.fmpz(11)),
2523-
(lambda *a: flint.fq_default_poly(*a, flint.fq_default_poly_ctx(11, 5)),
2524-
lambda x: flint.fq_default(x, flint.fq_default_ctx(11, 5)),
2525-
True, flint.fmpz(11)),
2529+
FQ_DEFAULT(2**127 - 1, 1),
2530+
FQ_DEFAULT(2**127 - 1, 2),
2531+
FQ_DEFAULT(65537, 1),
2532+
FQ_DEFAULT(65537, 5),
2533+
FQ_DEFAULT(11, 1),
2534+
FQ_DEFAULT(11, 5),
25262535

25272536
# Z/nZ (n composite)
2528-
(lambda *a: flint.nmod_poly(*a, 16), lambda x: flint.nmod(x, 16), False, flint.fmpz(16)),
2529-
(lambda *a: flint.fmpz_mod_poly(*a, flint.fmpz_mod_poly_ctx(164)),
2530-
lambda x: flint.fmpz_mod(x, flint.fmpz_mod_ctx(164)),
2531-
False, flint.fmpz(164)),
2532-
(lambda *a: flint.fmpz_mod_poly(*a, flint.fmpz_mod_poly_ctx(2**127)),
2533-
lambda x: flint.fmpz_mod(x, flint.fmpz_mod_ctx(2**127)),
2534-
False, flint.fmpz(2**127)),
2535-
(lambda *a: flint.fmpz_mod_poly(*a, flint.fmpz_mod_poly_ctx(2**255)),
2536-
lambda x: flint.fmpz_mod(x, flint.fmpz_mod_ctx(2**255)),
2537-
False, flint.fmpz(2**255)),
2537+
NMOD(9),
2538+
NMOD(16),
2539+
FMPZ_MOD(164),
2540+
FMPZ_MOD(2**127),
2541+
FMPZ_MOD(2**255),
25382542
]
25392543

2544+
return ALL_POLYS
2545+
25402546

25412547
def test_polys():
25422548
for P, S, is_field, characteristic in _all_polys():
@@ -2730,13 +2736,10 @@ def setbad(obj, i, val):
27302736
assert raises(lambda: P([1, 2]) / 2, DomainError)
27312737
else:
27322738
# Z/nZ for n not prime
2733-
if characteristic % 2 == 0:
2734-
assert raises(lambda: P([1, 1]) // 2, DomainError)
2735-
assert raises(lambda: P([1, 1]) % 2, DomainError)
2736-
assert raises(lambda: P([2, 2]) / 2, DomainError)
2737-
assert raises(lambda: P([1, 2]) / 2, DomainError)
2738-
else:
2739-
1/0
2739+
assert raises(lambda: P([1, 1]) // 2, DomainError)
2740+
assert raises(lambda: P([1, 1]) % 2, DomainError)
2741+
assert raises(lambda: P([2, 2]) / 2, DomainError)
2742+
assert raises(lambda: P([1, 2]) / 2, DomainError)
27402743

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

0 commit comments

Comments
 (0)