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