@@ -547,14 +547,15 @@ cdef class IntegerMod_abstract(FiniteRingElement):
547
547
548
548
EXAMPLES::
549
549
550
+ sage: # needs sage. libs. gap
550
551
sage: a = Mod( 2,19)
551
- sage: gap( a) # needs sage . libs . gap
552
+ sage: gap( a)
552
553
Z( 19)
553
- sage: gap( Mod( 3, next_prime( 10000))) # needs sage . libs . gap
554
+ sage: gap( Mod( 3, next_prime( 10000)))
554
555
Z( 10007) ^ 6190
555
- sage: gap( Mod( 3, next_prime( 100000))) # needs sage . libs . gap
556
+ sage: gap( Mod( 3, next_prime( 100000)))
556
557
ZmodpZObj( 3, 100003 )
557
- sage: gap( Mod( 4, 48)) # needs sage . libs . gap
558
+ sage: gap( Mod( 4, 48))
558
559
ZmodnZObj( 4, 48 )
559
560
"""
560
561
return ' %s *One(ZmodnZ(%s ))' % (self , self .__modulus.sageInteger)
@@ -565,11 +566,12 @@ cdef class IntegerMod_abstract(FiniteRingElement):
565
566
566
567
EXAMPLES::
567
568
569
+ sage: # optional - magma
568
570
sage: a = Integers(15)(4)
569
- sage: b = magma(a) # optional - magma
570
- sage: b.Type() # optional - magma
571
+ sage: b = magma(a)
572
+ sage: b.Type()
571
573
RngIntResElt
572
- sage: b^2 # optional - magma
574
+ sage: b^2
573
575
1
574
576
"""
575
577
return ' %s !%s ' % (self .parent()._magma_init_(magma), self )
@@ -585,14 +587,14 @@ cdef class IntegerMod_abstract(FiniteRingElement):
585
587
sage: a._axiom_init_()
586
588
'4 :: IntegerMod(15)'
587
589
588
- sage: aa = axiom(a); aa # optional - axiom
590
+ sage: aa = axiom(a); aa # optional - axiom
589
591
4
590
- sage: aa.type() # optional - axiom
592
+ sage: aa.type() # optional - axiom
591
593
IntegerMod 15
592
594
593
- sage: aa = fricas(a); aa # optional - fricas
595
+ sage: aa = fricas(a); aa # optional - fricas
594
596
4
595
- sage: aa.typeOf() # optional - fricas
597
+ sage: aa.typeOf() # optional - fricas
596
598
IntegerMod(15)
597
599
598
600
"""
@@ -654,12 +656,13 @@ cdef class IntegerMod_abstract(FiniteRingElement):
654
656
655
657
EXAMPLES::
656
658
659
+ sage: # needs sage. libs. pari
657
660
sage: r = Integers( 125)
658
- sage: b = r. multiplicative_generator( ) ^ 3 # needs sage . libs . pari
659
- sage: a = b^ 17 # needs sage . libs . pari
660
- sage: a. log( b) # needs sage . libs . pari
661
+ sage: b = r. multiplicative_generator( ) ^ 3
662
+ sage: a = b^ 17
663
+ sage: a. log( b)
661
664
17
662
- sage: a. log( ) # needs sage . libs . pari
665
+ sage: a. log( )
663
666
51
664
667
665
668
A bigger example::
@@ -702,12 +705,13 @@ cdef class IntegerMod_abstract(FiniteRingElement):
702
705
703
706
We test against a bug ( side effect on PARI) fixed in :trac:`9438`::
704
707
708
+ sage: # needs sage. libs. pari
705
709
sage: R. <a, b> = QQ[]
706
- sage: pari( b) # needs sage . libs . pari
710
+ sage: pari( b)
707
711
b
708
- sage: GF( 7) ( 5) . log( ) # needs sage . rings . finite_rings
712
+ sage: GF( 7) ( 5) . log( )
709
713
5
710
- sage: pari( b) # needs sage . libs . pari
714
+ sage: pari( b)
711
715
b
712
716
713
717
We test that :trac:`23927` is fixed::
@@ -1034,22 +1038,24 @@ cdef class IntegerMod_abstract(FiniteRingElement):
1034
1038
1035
1039
sage: Mod( 3, 17) . is_square( )
1036
1040
False
1037
- sage: Mod( 9, 17) . is_square( ) # needs sage. libs. pari
1041
+
1042
+ sage: # needs sage. libs. pari
1043
+ sage: Mod( 9, 17) . is_square( )
1038
1044
True
1039
- sage: Mod( 9, 17* 19^ 2) . is_square( ) # needs sage . libs . pari
1045
+ sage: Mod( 9, 17* 19^ 2) . is_square( )
1040
1046
True
1041
- sage: Mod( -1, 17^ 30) . is_square( ) # needs sage . libs . pari
1047
+ sage: Mod( -1, 17^ 30) . is_square( )
1042
1048
True
1043
- sage: Mod( 1/9, next_prime( 2^ 40)) . is_square( ) # needs sage . libs . pari
1049
+ sage: Mod( 1/9, next_prime( 2^ 40)) . is_square( )
1044
1050
True
1045
- sage: Mod( 1/25, next_prime( 2^ 90)) . is_square( ) # needs sage . libs . pari
1051
+ sage: Mod( 1/25, next_prime( 2^ 90)) . is_square( )
1046
1052
True
1047
1053
1048
1054
TESTS::
1049
1055
1050
- sage: Mod( 1/25, 2^ 8) . is_square( ) # needs sage. libs. pari
1056
+ sage: Mod( 1/25, 2^ 8) . is_square( ) # needs sage. libs. pari
1051
1057
True
1052
- sage: Mod( 1/25, 2^ 40) . is_square( ) # needs sage. libs. pari
1058
+ sage: Mod( 1/25, 2^ 40) . is_square( ) # needs sage. libs. pari
1053
1059
True
1054
1060
1055
1061
sage: for p,q,r in cartesian_product_iterator( [[3,5 ],[11,13 ],[17,19 ]]) : # long time, needs sage. libs. pari
@@ -1130,16 +1136,18 @@ cdef class IntegerMod_abstract(FiniteRingElement):
1130
1136
86
1131
1137
sage: mod( 7, 18) . sqrt( )
1132
1138
5
1133
- sage: a = mod( 14, 5^ 60) . sqrt( ) # needs sage. libs. pari
1134
- sage: a* a # needs sage. libs. pari
1139
+
1140
+ sage: # needs sage. libs. pari
1141
+ sage: a = mod( 14, 5^ 60) . sqrt( )
1142
+ sage: a* a
1135
1143
14
1136
1144
sage: mod( 15, 389) . sqrt( extend=False)
1137
1145
Traceback ( most recent call last) :
1138
1146
...
1139
1147
ValueError: self must be a square
1140
- sage: Mod( 1/9, next_prime( 2^ 40)) . sqrt( ) ^ ( -2) # needs sage . libs . pari
1148
+ sage: Mod( 1/9, next_prime( 2^ 40)) . sqrt( ) ^ ( -2)
1141
1149
9
1142
- sage: Mod( 1/25, next_prime( 2^ 90)) . sqrt( ) ^ ( -2) # needs sage . libs . pari
1150
+ sage: Mod( 1/25, next_prime( 2^ 90)) . sqrt( ) ^ ( -2)
1143
1151
25
1144
1152
1145
1153
::
@@ -1154,7 +1162,8 @@ cdef class IntegerMod_abstract(FiniteRingElement):
1154
1162
sage: y = x. sqrt( ) ; y
1155
1163
sqrt359
1156
1164
sage: y. parent( )
1157
- Univariate Quotient Polynomial Ring in sqrt359 over Ring of integers modulo 360 with modulus x^ 2 + 1
1165
+ Univariate Quotient Polynomial Ring in sqrt359 over
1166
+ Ring of integers modulo 360 with modulus x^ 2 + 1
1158
1167
sage: y^ 2
1159
1168
359
1160
1169
@@ -1173,15 +1182,16 @@ cdef class IntegerMod_abstract(FiniteRingElement):
1173
1182
1174
1183
::
1175
1184
1185
+ sage: # needs sage. libs. pari
1176
1186
sage: R = Integers( 5* 13^ 3* 37) ; R
1177
1187
Ring of integers modulo 406445
1178
- sage: v = R( -1) . sqrt( all=True) ; v # needs sage . libs . pari
1188
+ sage: v = R( -1) . sqrt( all=True) ; v
1179
1189
[78853, 111808, 160142, 193097, 213348, 246303, 294637, 327592 ]
1180
- sage: [x^2 for x in v ] # needs sage . libs . pari
1190
+ sage: [x^2 for x in v ]
1181
1191
[406444, 406444, 406444, 406444, 406444, 406444, 406444, 406444 ]
1182
- sage: v = R( 169) . sqrt( all=True) ; min( v) , -max( v) , len( v) # needs sage . libs . pari
1192
+ sage: v = R( 169) . sqrt( all=True) ; min( v) , -max( v) , len( v)
1183
1193
( 13, 13, 104)
1184
- sage: all( x^ 2 == 169 for x in v) # needs sage . libs . pari
1194
+ sage: all( x^ 2 == 169 for x in v)
1185
1195
True
1186
1196
1187
1197
::
@@ -1391,17 +1401,20 @@ cdef class IntegerMod_abstract(FiniteRingElement):
1391
1401
5
1392
1402
sage: K( 23) . nth_root( 3)
1393
1403
29
1394
- sage: mod( 225, 2^ 5* 3^ 2) . nth_root( 4, all=True) # needs sage. rings. padics
1404
+
1405
+ sage: # needs sage. rings. padics
1406
+ sage: mod( 225, 2^ 5* 3^ 2) . nth_root( 4, all=True)
1395
1407
[225, 129, 33, 63, 255, 159, 9, 201, 105, 279, 183, 87, 81,
1396
1408
273, 177, 207, 111, 15, 153, 57, 249, 135, 39, 231 ]
1397
- sage: mod( 275, 2^ 5* 7^ 4) . nth_root( 7, all=True) # needs sage . rings . padics
1409
+ sage: mod( 275, 2^ 5* 7^ 4) . nth_root( 7, all=True)
1398
1410
[58235, 25307, 69211, 36283, 3355, 47259, 14331 ]
1399
- sage: mod( 1,8) . nth_root( 2, all=True) # needs sage . rings . padics
1411
+ sage: mod( 1,8) . nth_root( 2, all=True)
1400
1412
[1, 7, 5, 3 ]
1401
1413
sage: mod( 4,8) . nth_root( 2, all=True)
1402
1414
[2, 6 ]
1403
- sage: mod( 1,16) . nth_root( 4, all=True) # needs sage . rings . padics
1415
+ sage: mod( 1,16) . nth_root( 4, all=True)
1404
1416
[1, 15, 13, 3, 9, 7, 5, 11 ]
1417
+
1405
1418
sage: ( mod( 22,31) ^ 200) . nth_root( 200)
1406
1419
5
1407
1420
sage: mod( 3,6) . nth_root( 0, all=True)
@@ -1582,7 +1595,7 @@ cdef class IntegerMod_abstract(FiniteRingElement):
1582
1595
1583
1596
TESTS::
1584
1597
1585
- sage: for n in range(2,100): # long time
1598
+ sage: for n in range(2,100): # long time
1586
1599
....: K = Integers(n)
1587
1600
....: elist = list(range(1,min(2*n+2,100)))
1588
1601
....: for e in random_sublist(elist, 5/len(elist)):
@@ -2914,16 +2927,18 @@ cdef class IntegerMod_int(IntegerMod_abstract):
2914
2927
86
2915
2928
sage: mod( 7, 18) . sqrt( )
2916
2929
5
2917
- sage: a = mod( 14, 5^ 60) . sqrt( ) # needs sage. libs. pari
2918
- sage: a* a # needs sage. libs. pari
2930
+
2931
+ sage: # needs sage. libs. pari
2932
+ sage: a = mod( 14, 5^ 60) . sqrt( )
2933
+ sage: a* a
2919
2934
14
2920
2935
sage: mod( 15, 389) . sqrt( extend=False)
2921
2936
Traceback ( most recent call last) :
2922
2937
...
2923
2938
ValueError: self must be a square
2924
- sage: Mod( 1/9, next_prime( 2^ 40)) . sqrt( ) ^ ( -2) # needs sage . libs . pari
2939
+ sage: Mod( 1/9, next_prime( 2^ 40)) . sqrt( ) ^ ( -2)
2925
2940
9
2926
- sage: Mod( 1/25, next_prime( 2^ 90)) . sqrt( ) ^ ( -2) # needs sage . libs . pari
2941
+ sage: Mod( 1/25, next_prime( 2^ 90)) . sqrt( ) ^ ( -2)
2927
2942
25
2928
2943
2929
2944
::
@@ -2960,15 +2975,16 @@ cdef class IntegerMod_int(IntegerMod_abstract):
2960
2975
2961
2976
::
2962
2977
2978
+ sage: # needs sage. libs. pari
2963
2979
sage: R = Integers( 5* 13^ 3* 37) ; R
2964
2980
Ring of integers modulo 406445
2965
- sage: v = R( -1) . sqrt( all=True) ; v # needs sage . libs . pari
2981
+ sage: v = R( -1) . sqrt( all=True) ; v
2966
2982
[78853, 111808, 160142, 193097, 213348, 246303, 294637, 327592 ]
2967
- sage: [x^2 for x in v ] # needs sage . libs . pari
2983
+ sage: [x^2 for x in v ]
2968
2984
[406444, 406444, 406444, 406444, 406444, 406444, 406444, 406444 ]
2969
- sage: v = R( 169) . sqrt( all=True) ; min( v) , -max( v) , len( v) # needs sage . libs . pari
2985
+ sage: v = R( 169) . sqrt( all=True) ; min( v) , -max( v) , len( v)
2970
2986
( 13, 13, 104)
2971
- sage: all( x^ 2 == 169 for x in v) # needs sage . libs . pari
2987
+ sage: all( x^ 2 == 169 for x in v)
2972
2988
True
2973
2989
2974
2990
Modulo a power of 2::
0 commit comments