Ticket #12262: 12262-rebase.patch

File 12262-rebase.patch, 18.5 KB (added by davidloeffler, 7 years ago)

roed's patch rebased for 5.0.beta8

  • sage/rings/finite_rings/constructor.py

    # HG changeset patch
    # User David Roe <roed@math.harvard.edu>
    # Date 1325752532 28800
    # Node ID 043f1d83401880139532d635c3191b0ad4ada0f1
    # Parent  43486464653c150ac9c7c4e1eb18adb72c287d48
    #12262: add doctests to various files in sage/rings/finite_rings
    
    diff --git a/sage/rings/finite_rings/constructor.py b/sage/rings/finite_rings/constructor.py
    a b  
    394394        """
    395395        EXAMPLES::
    396396       
    397             sage: K = GF(19)
     397            sage: K = GF(19) # indirect doctest
    398398            sage: TestSuite(K).run()
    399399        """
    400400        # IMPORTANT!  If you add a new class to the list of classes
  • sage/rings/finite_rings/element_base.pyx

    diff --git a/sage/rings/finite_rings/element_base.pyx b/sage/rings/finite_rings/element_base.pyx
    a b  
    9797            raise ValueError, "unknown algorithm"
    9898
    9999cdef class FinitePolyExtElement(FiniteRingElement):
    100    
     100    """
     101    Elements represented as polynomials modulo a given ideal.
     102
     103    TESTS::
     104
     105        sage: k.<a> = GF(64)
     106        sage: TestSuite(a).run()
     107    """
    101108    def _im_gens_(self, codomain, im_gens):
    102109        """
    103110        Used for applying homomorphisms of finite fields.
     
    106113       
    107114            sage: k.<a> = FiniteField(73^2, 'a')
    108115            sage: K.<b> = FiniteField(73^4, 'b')
    109             sage: phi = k.hom([ b^(73*73+1) ])
     116            sage: phi = k.hom([ b^(73*73+1) ]) # indirect doctest
    110117            sage: phi(0)
    111118            0
    112119            sage: phi(a)
  • sage/rings/finite_rings/element_givaro.pyx

    diff --git a/sage/rings/finite_rings/element_givaro.pyx b/sage/rings/finite_rings/element_givaro.pyx
    a b  
    756756    def __reduce__(self):
    757757        """
    758758        For pickling.
     759
     760        TESTS::
     761
     762            sage: k.<a> = GF(3^8)
     763            sage: TestSuite(a).run()
    759764        """
    760765        p, k = self.order().factor()[0]
    761766        if self.repr == 0:
     
    888893    def _repr_(FiniteField_givaroElement self):
    889894        """
    890895        EXAMPLE:
    891             sage: k.<FOOBAR> = GF(2^4)
     896            sage: k.<FOOBAR> = GF(3^4)
    892897            sage: FOOBAR #indirect doctest
    893898            FOOBAR
    894899
    895             sage: k.<FOOBAR> = GF(2^4,repr='log')
     900            sage: k.<FOOBAR> = GF(3^4,repr='log')
    896901            sage: FOOBAR
    897             1
     902            41
    898903           
    899             sage: k.<FOOBAR> = GF(2^4,repr='int')
     904            sage: k.<FOOBAR> = GF(3^4,repr='int')
    900905            sage: FOOBAR
    901             2
     906            3
    902907        """
    903908        return self._cache._element_repr(self)
    904909
    905910    def _element(self):
    906911        """
    907912        Returns the int interally representing this element.
     913
     914        EXAMPLES::
     915
     916            sage: k.<a> = GF(3^4)
     917            sage: (a^2 + 1)._element()
     918            58
    908919        """
    909920        return self.element
    910921
     
    10621073
    10631074        EXAMPLE:
    10641075            sage: k.<b> = GF(9**2)
    1065             sage: b^10 + 2*b
     1076            sage: b^10 + 2*b # indirect doctest
    10661077            2*b^3 + 2*b^2 + 2*b + 1
    10671078        """
    10681079        cdef int r
     
    10761087
    10771088        EXAMPLE:
    10781089            sage: k.<b> = GF(9**2)
    1079             sage: b^10 + 2*b
     1090            sage: b^10 + 2*b # indirect doctest
    10801091            2*b^3 + 2*b^2 + 2*b + 1
    10811092        """
    10821093        cdef int r
     
    10911102
    10921103        EXAMPLE:
    10931104            sage: k.<c> = GF(7**4)
    1094             sage: 3*c
     1105            sage: 3*c # indirect doctest
    10951106            3*c
    10961107            sage: c*c
    10971108            c^2
     
    11081119
    11091120        EXAMPLE:
    11101121            sage: k.<c> = GF(7**4)
    1111             sage: 3*c
     1122            sage: 3*c # indirect doctest
    11121123            3*c
    11131124            sage: c*c
    11141125            c^2
     
    11241135
    11251136        EXAMPLE:
    11261137            sage: k.<g> = GF(2**8)
    1127             sage: g/g
     1138            sage: g/g # indirect doctest
    11281139            1
    11291140
    11301141            sage: k(1) / k(0)
     
    11451156
    11461157        EXAMPLE:
    11471158            sage: k.<g> = GF(2**8)
    1148             sage: g/g
     1159            sage: g/g # indirect doctest
    11491160            1
    11501161
    11511162            sage: k(1) / k(0)
     
    11671178
    11681179        EXAMPLE:
    11691180            sage: k.<a> = GF(3**4)
    1170             sage: k(3) - k(1)
     1181            sage: k(3) - k(1) # indirect doctest
    11711182            2
    11721183            sage: 2*a - a^2
    11731184            2*a^2 + 2*a
     
    11831194
    11841195        EXAMPLE:
    11851196            sage: k.<a> = GF(3**4)
    1186             sage: k(3) - k(1)
     1197            sage: k(3) - k(1) # indirect doctest
    11871198            2
    11881199            sage: 2*a - a^2
    11891200            2*a^2 + 2*a
     
    13841395        """
    13851396        return self._cache.log_to_int(self.element)
    13861397
    1387     def _integer_(FiniteField_givaroElement self, Integer):
     1398    def _integer_(FiniteField_givaroElement self, ZZ=None):
    13881399        """
    13891400        Convert self to an integer if it is in the prime subfield.
    13901401
     
    13921403
    13931404            sage: k.<b> = GF(5^2); k
    13941405            Finite Field in b of size 5^2
    1395             sage: ZZ(k(4))
     1406            sage: k(4)._integer_()
    13961407            4
    13971408            sage: ZZ(b)
    13981409            Traceback (most recent call last):
  • sage/rings/finite_rings/element_ntl_gf2e.pyx

    diff --git a/sage/rings/finite_rings/element_ntl_gf2e.pyx b/sage/rings/finite_rings/element_ntl_gf2e.pyx
    a b  
    150150    the parent (see #12062).
    151151    """
    152152    def __init__(self, parent, k, modulus):
     153        """
     154        Initialization.
     155
     156        TESTS::
     157
     158            sage: k.<a> = GF(2^8)
     159        """
    153160        cdef GF2X_c ntl_m, ntl_tmp
    154161        cdef GF2_c c
    155162        cdef Py_ssize_t i
     
    473480            raise ValueError, "You must provide a parent to construct a finite field element"
    474481       
    475482    def __cinit__(FiniteField_ntl_gf2eElement self, parent=None ):
     483        """
     484        Restores the cache and constructs the underlying NTL element.
     485
     486        EXAMPLES::
     487
     488            sage: k.<a> = GF(2^8) # indirect doctest
     489        """
    476490        if parent is None:
    477491            return
    478492        if PY_TYPE_CHECK(parent, FiniteField_ntl_gf2e):
     
    637651        EXAMPLES::
    638652
    639653            sage: k.<a> = GF(2^16)
    640             sage: e = a^2 + a + 1
     654            sage: e = a^2 + a + 1 # indirect doctest
    641655            sage: f = a^15 + a^2 + 1
    642656            sage: e + f
    643657            a^15 + a
     
    653667        EXAMPLES::
    654668
    655669            sage: k.<a> = GF(2^16)
    656             sage: e = a^2 + a + 1
     670            sage: e = a^2 + a + 1 # indirect doctest
    657671            sage: f = a^15 + a^2 + 1
    658672            sage: e + f
    659673            a^15 + a
     
    668682        EXAMPLES::
    669683
    670684            sage: k.<a> = GF(2^16)
    671             sage: e = a^2 + a + 1
     685            sage: e = a^2 + a + 1 # indirect doctest
    672686            sage: f = a^15 + a^2 + 1
    673687            sage: e * f
    674688            a^15 + a^6 + a^5 + a^3 + a^2
     
    684698        EXAMPLES::
    685699
    686700            sage: k.<a> = GF(2^16)
    687             sage: e = a^2 * a + 1
     701            sage: e = a^2 * a + 1 # indirect doctest
    688702            sage: f = a^15 * a^2 + 1
    689703            sage: e * f
    690704            a^9 + a^7 + a + 1
     
    699713        EXAMPLES::
    700714
    701715            sage: k.<a> = GF(2^16)
    702             sage: e = a^2 + a + 1
     716            sage: e = a^2 + a + 1 # indirect doctest
    703717            sage: f = a^15 + a^2 + 1
    704718            sage: e / f
    705719            a^11 + a^8 + a^7 + a^6 + a^5 + a^3 + a^2 + 1
     
    721735        EXAMPLES::
    722736
    723737            sage: k.<a> = GF(2^16)
    724             sage: e = a^2 / a + 1
     738            sage: e = a^2 / a + 1 # indirect doctest
    725739            sage: f = a^15 / a^2 + 1
    726740            sage: e / f
    727741            a^15 + a^12 + a^10 + a^9 + a^6 + a^5 + a^3
     
    736750        EXAMPLES::
    737751
    738752            sage: k.<a> = GF(2^16)
    739             sage: e = a^2 - a + 1
     753            sage: e = a^2 - a + 1 # indirect doctest
    740754            sage: f = a^15 - a^2 + 1
    741755            sage: e - f
    742756            a^15 + a
     
    752766        EXAMPLES::
    753767
    754768            sage: k.<a> = GF(2^16)
    755             sage: e = a^2 - a + 1
     769            sage: e = a^2 - a + 1 # indirect doctest
    756770            sage: f = a^15 - a^2 + 1
    757771            sage: e - f
    758772            a^15 + a
  • sage/rings/finite_rings/finite_field_base.pyx

    diff --git a/sage/rings/finite_rings/finite_field_base.pyx b/sage/rings/finite_rings/finite_field_base.pyx
    a b  
    242242       
    243243        EXAMPLES::
    244244       
    245             sage: FiniteField(3**2, 'c') == FiniteField(3**3, 'c')
     245            sage: FiniteField(3**2, 'c') == FiniteField(3**3, 'c') # indirect doctest
    246246            False
    247247            sage: FiniteField(3**2, 'c') == FiniteField(3**2, 'c')
    248248            True
  • sage/rings/finite_rings/finite_field_ext_pari.py

    diff --git a/sage/rings/finite_rings/finite_field_ext_pari.py b/sage/rings/finite_rings/finite_field_ext_pari.py
    a b  
    443443
    444444            sage: from sage.rings.finite_rings.finite_field_ext_pari import FiniteField_ext_pari
    445445            sage: k = FiniteField_ext_pari(3^4, 'a')
    446             sage: b = k(5)
     446            sage: b = k(5) # indirect doctest
    447447            sage: b.parent()
    448448            Finite Field in a of size 3^4
    449449            sage: a = k.gen()
  • sage/rings/finite_rings/finite_field_givaro.py

    diff --git a/sage/rings/finite_rings/finite_field_givaro.py b/sage/rings/finite_rings/finite_field_givaro.py
    a b  
    7979           
    8080            sage: GF(2^3,'a') == copy(GF(2^3,'a'))
    8181            True
     82            sage: TestSuite(j).run()
    8283        """
    8384        self._kwargs = {}
    8485
     
    216217
    217218        Floats, ints, longs, Integer are interpreted modulo characteristic::
    218219           
    219             sage: k(2)
     220            sage: k(2) # indirect doctest
    220221            0
    221222
    222223            Floats coerce in:
     
    334335    def _coerce_map_from_(self, R):
    335336        """
    336337        Returns True if this finite field has a coercion map from R.
     338
     339        EXAMPLES::
     340
     341            sage: k.<a> = GF(3^8)
     342            sage: a + 1 # indirect doctest
     343            a + 1
     344            sage: a + int(1)
     345            a + 1
     346            sage: a + GF(3)(1)
     347            a + 1
    337348        """
    338349        from sage.rings.integer_ring import ZZ
    339350        from sage.rings.finite_rings.finite_field_base import is_FiniteField
  • sage/rings/finite_rings/finite_field_ntl_gf2e.py

    diff --git a/sage/rings/finite_rings/finite_field_ntl_gf2e.py b/sage/rings/finite_rings/finite_field_ntl_gf2e.py
    a b  
    99from sage.rings.finite_rings.integer_mod_ring import IntegerModRing_generic
    1010
    1111def late_import():
     12    """
     13    Imports various modules after startup.
     14
     15    EXAMPLES::
     16
     17       sage: sage.rings.finite_rings.finite_field_ntl_gf2e.late_import()
     18       sage: sage.rings.finite_rings.finite_field_ntl_gf2e.GF2 is None # indirect doctest
     19       False
     20    """
    1221    if globals().has_key("GF2"):
    1322        return
    1423    global ResidueField_generic, is_FiniteField, exists_conway_polynomial, conway_polynomial, Cache_ntl_gf2e, GF, GF2, is_Polynomial
     
    190199        EXAMPLES::
    191200
    192201            sage: k.<a> = GF(2^20)
    193             sage: k(1)
     202            sage: k(1) # indirect doctest
    194203            1
    195204            sage: k(int(2))
    196205            0
     
    222231    def _coerce_map_from_(self, R):
    223232        """
    224233        Coercion accepts elements of self.parent(), ints, and prime subfield elements.
     234
     235        EXAMPLES::
     236
     237            sage: k.<a> = GF(2^8)
     238            sage: a + int(1) # indirect doctest
     239            a + 1
     240            sage: a + 1
     241            a + 1
     242            sage: a + GF(2)(1)
     243            a + 1
    225244        """
    226245        if R is int or R is long or R is ZZ:
    227246            return True
  • sage/rings/finite_rings/homset.py

    diff --git a/sage/rings/finite_rings/homset.py b/sage/rings/finite_rings/homset.py
    a b  
    5252                raise TypeError, "images do not define a valid homomorphism"
    5353       
    5454    def _coerce_impl(self, x):
     55        """
     56        Coercion of other morphisms.
     57
     58        EXAMPLES::
     59
     60            sage: k.<a> = GF(25)
     61            sage: l.<b> = GF(625)
     62            sage: H = Hom(k, l)
     63            sage: G = loads(dumps(H))
     64            sage: H == G
     65            True
     66            sage: H is G # this should change eventually
     67            False
     68            sage: G.coerce(list(H)[0]) # indirect doctest
     69            Ring morphism:
     70              From: Finite Field in a of size 5^2
     71              To:   Finite Field in b of size 5^4
     72              Defn: a |--> 4*b^3 + 4*b^2 + 4*b + 3
     73        """
    5574        if not isinstance(x, FiniteFieldHomomorphism_im_gens):
    5675            raise TypeError
    5776        if x.parent() is self:
     
    6483        """
    6584        EXAMPLES::
    6685
    67             sage: Hom(GF(4, 'a'), GF(16, 'b'))
     86            sage: Hom(GF(4, 'a'), GF(16, 'b')) # indirect doctest
    6887            Set of field embeddings from Finite Field in a of size 2^2 to Finite Field in b of size 2^4
    6988            sage: Hom(GF(4, 'a'), GF(4, 'c'))
    7089            Set of field embeddings from Finite Field in a of size 2^2 to Finite Field in c of size 2^2
  • sage/rings/finite_rings/integer_mod_ring.py

    diff --git a/sage/rings/finite_rings/integer_mod_ring.py b/sage/rings/finite_rings/integer_mod_ring.py
    a b  
    116116        True
    117117    """
    118118    def create_key(self, order=0, category=None):
     119        """
     120        An integer mod ring is specified uniquely by its order.
     121
     122        EXAMPLES::
     123
     124            sage: Zmod.create_key(7)
     125            7
     126        """
    119127        if category is None:
    120128            return order
    121129        return (order, category)
     
    331339        """
    332340        EXAMPLES::
    333341       
    334             sage: macaulay2(Integers(7))  # optional - macaulay2
     342            sage: macaulay2(Integers(7))  # indirect doctest, optional - macaulay2
    335343            ZZ
    336344            --
    337345             7
     
    401409
    402410       
    403411    def _precompute_table(self):
     412        """
     413        Computes a table of elements so that elements are unique.
     414
     415        EXAMPLES::
     416
     417            sage: R = Zmod(500); R._precompute_table()
     418            sage: R(7) + R(13) is R(3) + R(17)
     419            True
     420        """
    404421        self._pyx_order.precompute_table(self)
    405422
    406423    def list_of_elements_of_multiplicative_group(self):
     424        """
     425        Returns a list of all invertible elements, as python ints.
     426
     427        EXAMPLES::
     428
     429            sage: R = Zmod(12)
     430            sage: L = R.list_of_elements_of_multiplicative_group(); L
     431            [1, 5, 7, 11]
     432            sage: type(L[0])
     433            <type 'int'>
     434        """
    407435        import sage.rings.fast_arith as a
    408436        if self.__order <= 46340:   # todo: don't hard code
    409437            gcd = a.arith_int().gcd_int
     
    773801        return self.__order
    774802   
    775803    def _repr_(self):
     804        """
     805        String representation.
     806
     807        EXAMPLES::
     808
     809            sage: Zmod(87) # indirect doctest
     810            Ring of integers modulo 87
     811        """
    776812        return "Ring of integers modulo %s"%self.__order
    777813       
    778814    def _latex_(self):
     815        """
     816        Latex representation.
     817
     818        EXAMPLES::
     819
     820            sage: latex(Zmod(87)) # indirect doctest
     821            \ZZ/87\ZZ
     822        """
    779823        return "\ZZ/%s\ZZ" % self.__order
    780824   
    781825    def modulus(self):
     
    804848            return self.__modulus
    805849
    806850    def order(self):
     851        """
     852        Returns the order of this ring.
     853
     854        EXAMPLES::
     855
     856            sage: Zmod(87).order()
     857            87
     858        """
    807859        return self.__order
    808860       
    809861    def cardinality(self):
     862        """
     863        Returns the cardinality of this ring.
     864
     865        EXAMPLES::
     866
     867            sage: Zmod(87).cardinality()
     868            87
     869        """
    810870        return self.order()
    811871
    812872    def _pari_order(self):
     873        """
     874        Returns the pari integer representing the order of this ring.
     875
     876        EXAMPLES::
     877
     878            sage: Zmod(87)._pari_order()
     879            87
     880        """
    813881        try:
    814882            return self.__pari_order
    815883        except AttributeError:
     
    823891            sage: K2 = GF(2)
    824892            sage: K3 = GF(3)
    825893            sage: K8 = GF(8,'a')
    826             sage: K8(5)
     894            sage: K8(5) # indirect doctest
    827895            1
    828896            sage: K8('a+1')
    829897            a + 1
     
    892960        EXAMPLES::
    893961       
    894962            sage: R = Integers(15)
    895             sage: f = R.coerce_map_from(Integers(450)); f
     963            sage: f = R.coerce_map_from(Integers(450)); f # indirect doctest
    896964            Natural morphism:
    897965              From: Ring of integers modulo 450
    898966              To:   Ring of integers modulo 15
     
    9801048    # them out from the unit_gens function.  They are only called by
    9811049    # the unit_gens function.
    9821050    def __unit_gens_primecase(self, p):
     1051        """
     1052        Assuming the modulus is prime, returns the smallest generator
     1053        of the group of units.
     1054
     1055        EXAMPLES::
     1056
     1057            sage: Zmod(17)._IntegerModRing_generic__unit_gens_primecase(17)
     1058            3
     1059        """
    9831060        if p==2:
    9841061            return integer_mod.Mod(1,p)
    9851062        P = prime_divisors(p-1)
     
    10031080        r"""
    10041081        Find smallest generator for
    10051082        `(\ZZ/p^r\ZZ)^*`.
     1083
     1084        EXAMPLES::
     1085
     1086            sage: Zmod(27)._IntegerModRing_generic__unit_gens_primepowercase(3,3)
     1087            [2]
    10061088        """
    10071089        if r==1:
    10081090            return [self.__unit_gens_primecase(p)]
     
    11411223            sage: R = Integers(12345678900)
    11421224            sage: R
    11431225            Ring of integers modulo 12345678900
    1144             sage: gap(R)
     1226            sage: gap(R) # indirect doctest
    11451227            (Integers mod 12345678900)
    11461228        """
    11471229        return 'ZmodnZ(%s)'%self.order()
     
    11531235            sage: R = Integers(12345678900)
    11541236            sage: R
    11551237            Ring of integers modulo 12345678900
    1156             sage: magma(R)                                          # optional - magma
     1238            sage: magma(R) # indirect doctest, optional - magma
    11571239            Residue class ring of integers modulo 12345678900
    11581240        """
    11591241        return 'Integers(%s)'%self.order()
     
    11941276    """
    11951277    INPUT: v - (list) a lift of elements of rings.IntegerMod(n), for
    11961278    various coprime moduli n.
     1279
     1280    EXAMPLES::
     1281
     1282        sage: from sage.rings.finite_rings.integer_mod_ring import crt
     1283        sage: crt([mod(3, 8),mod(1,19),mod(7, 15)])
     1284        1027
    11971285    """
    11981286    if len(v) == 0:
    11991287        return IntegerModRing(1)(1)