@@ -2479,58 +2479,64 @@ def test_division_matrix():
24792479
24802480
24812481def _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
25352541def 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