@@ -2247,6 +2247,37 @@ def test_fmpz_mod_poly():
2247
2247
l = [- 1 ,- 2 ,- 3 ,- 4 ,- 5 ]
2248
2248
assert [f (x ) for x in l ] == f .multipoint_evaluate (l )
2249
2249
2250
+ # truncate things
2251
+
2252
+ f = R_test .random_element ()
2253
+ g = R_test .random_element ()
2254
+ h = R_test .random_element ()
2255
+ x = R_test .gen ()
2256
+
2257
+ f_trunc = f % x ** 3
2258
+
2259
+ assert f .equal_trunc (f_trunc , 3 )
2260
+ assert not f .equal_trunc ("A" , 3 )
2261
+ assert not f .equal_trunc (f_cmp , 3 )
2262
+
2263
+ assert raises (lambda : f .add_trunc ("A" , 1 ), TypeError )
2264
+ assert raises (lambda : f .add_trunc (f_cmp , 1 ), ValueError )
2265
+ assert f .add_trunc (g , 3 ) == (f + g ) % x ** 3
2266
+
2267
+ assert raises (lambda : f .sub_trunc ("A" , 1 ), TypeError )
2268
+ assert raises (lambda : f .sub_trunc (f_cmp , 1 ), ValueError )
2269
+ assert f .sub_trunc (g , 3 ) == (f - g ) % x ** 3
2270
+
2271
+ assert raises (lambda : f .mul_low ("A" , h ), TypeError )
2272
+ assert raises (lambda : f .mul_low (g , "A" ), TypeError )
2273
+ assert f .mul_low (g , 3 ) == (f * g ) % x ** 3
2274
+
2275
+ assert raises (lambda : f .mul_mod (f_cmp , h ), ValueError )
2276
+ assert raises (lambda : f .mul_mod (g , f_cmp ), ValueError )
2277
+ assert f .mul_mod (g , h ) == (f * g ) % h
2278
+
2279
+ assert raises (lambda : f .pow_trunc (- 1 , 5 ), ValueError )
2280
+
2250
2281
2251
2282
def test_fmpz_mod_mat ():
2252
2283
c11 = flint .fmpz_mod_ctx (11 )
0 commit comments