Ticket #12262: 12262.patch

File 12262.patch, 18.7 KB (added by roed, 8 years ago)
  • sage/rings/finite_rings/constructor.py

    # HG changeset patch
    # User David Roe <roed@math.harvard.edu>
    # Date 1325752532 28800
    # Node ID 34fd399744dc543576214ebf93d04ec44f22a535
    # Parent  1655f5cff4e1950aa64bad4ea9d741ccde7f773b
    Adds 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  
    390390        """
    391391        EXAMPLES::
    392392       
    393             sage: K = GF(19)
     393            sage: K = GF(19) # indirect doctest
    394394            sage: TestSuite(K).run()
    395395        """
    396396        # 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  
    9696            raise ValueError, "unknown algorithm"
    9797
    9898cdef class FinitePolyExtElement(FiniteRingElement):
    99    
     99    """
     100    Elements represented as polynomials modulo a given ideal.
     101
     102    TESTS::
     103
     104        sage: k.<a> = GF(64)
     105        sage: TestSuite(a).run()
     106    """
    100107    def _im_gens_(self, codomain, im_gens):
    101108        """
    102109        Used for applying homomorphisms of finite fields.
     
    105112       
    106113            sage: k.<a> = FiniteField(73^2, 'a')
    107114            sage: K.<b> = FiniteField(73^4, 'b')
    108             sage: phi = k.hom([ b^(73*73+1) ])
     115            sage: phi = k.hom([ b^(73*73+1) ]) # indirect doctest
    109116            sage: phi(0)
    110117            0
    111118            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:
     
    885890    def _repr_(FiniteField_givaroElement self):
    886891        """
    887892        EXAMPLE:
    888             sage: k.<FOOBAR> = GF(2^4)
     893            sage: k.<FOOBAR> = GF(3^4)
    889894            sage: FOOBAR #indirect doctest
    890895            FOOBAR
    891896
    892             sage: k.<FOOBAR> = GF(2^4,repr='log')
     897            sage: k.<FOOBAR> = GF(3^4,repr='log')
    893898            sage: FOOBAR
    894             1
     899            41
    895900           
    896             sage: k.<FOOBAR> = GF(2^4,repr='int')
     901            sage: k.<FOOBAR> = GF(3^4,repr='int')
    897902            sage: FOOBAR
    898             2
     903            3
    899904        """
    900905        return self._cache._element_repr(self)
    901906
    902907    def _element(self):
    903908        """
    904909        Returns the int interally representing this element.
     910
     911        EXAMPLES::
     912
     913            sage: k.<a> = GF(3^4)
     914            sage: (a^2 + 1)._element()
     915            58
    905916        """
    906917        return self.element
    907918
     
    10591070
    10601071        EXAMPLE:
    10611072            sage: k.<b> = GF(9**2)
    1062             sage: b^10 + 2*b
     1073            sage: b^10 + 2*b # indirect doctest
    10631074            2*b^3 + 2*b^2 + 2*b + 1
    10641075        """
    10651076        cdef int r
     
    10731084
    10741085        EXAMPLE:
    10751086            sage: k.<b> = GF(9**2)
    1076             sage: b^10 + 2*b
     1087            sage: b^10 + 2*b # indirect doctest
    10771088            2*b^3 + 2*b^2 + 2*b + 1
    10781089        """
    10791090        cdef int r
     
    10881099
    10891100        EXAMPLE:
    10901101            sage: k.<c> = GF(7**4)
    1091             sage: 3*c
     1102            sage: 3*c # indirect doctest
    10921103            3*c
    10931104            sage: c*c
    10941105            c^2
     
    11051116
    11061117        EXAMPLE:
    11071118            sage: k.<c> = GF(7**4)
    1108             sage: 3*c
     1119            sage: 3*c # indirect doctest
    11091120            3*c
    11101121            sage: c*c
    11111122            c^2
     
    11211132
    11221133        EXAMPLE:
    11231134            sage: k.<g> = GF(2**8)
    1124             sage: g/g
     1135            sage: g/g # indirect doctest
    11251136            1
    11261137
    11271138            sage: k(1) / k(0)
     
    11421153
    11431154        EXAMPLE:
    11441155            sage: k.<g> = GF(2**8)
    1145             sage: g/g
     1156            sage: g/g # indirect doctest
    11461157            1
    11471158
    11481159            sage: k(1) / k(0)
     
    11641175
    11651176        EXAMPLE:
    11661177            sage: k.<a> = GF(3**4)
    1167             sage: k(3) - k(1)
     1178            sage: k(3) - k(1) # indirect doctest
    11681179            2
    11691180            sage: 2*a - a^2
    11701181            2*a^2 + 2*a
     
    11801191
    11811192        EXAMPLE:
    11821193            sage: k.<a> = GF(3**4)
    1183             sage: k(3) - k(1)
     1194            sage: k(3) - k(1) # indirect doctest
    11841195            2
    11851196            sage: 2*a - a^2
    11861197            2*a^2 + 2*a
     
    13811392        """
    13821393        return self._cache.log_to_int(self.element)
    13831394
    1384     def _integer_(FiniteField_givaroElement self, Integer):
     1395    def _integer_(FiniteField_givaroElement self, ZZ=None):
    13851396        """
    13861397        Coerce self to an integer.
    13871398
    13881399        EXAMPLES:
    13891400            sage: k.<b> = GF(5^2); k
    13901401            Finite Field in b of size 5^2
    1391             sage: ZZ(k(4))
     1402            sage: k(4)._integer_()
    13921403            4
    13931404            sage: ZZ(b)
    13941405            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  
    141141
    142142cdef class Cache_ntl_gf2e(SageObject):
    143143    def __init__(self, parent, k, modulus):
     144        """
     145        Initialization.
     146
     147        TESTS::
     148
     149            sage: k.<a> = GF(2^8)
     150        """
    144151        cdef GF2X_c ntl_m, ntl_tmp
    145152        cdef GF2_c c
    146153        cdef Py_ssize_t i
     
    462469            raise ValueError, "You must provide a parent to construct a finite field element"
    463470       
    464471    def __cinit__(FiniteField_ntl_gf2eElement self, parent=None ):
     472        """
     473        Restores the cache and constructs the underlying NTL element.
     474
     475        EXAMPLES::
     476
     477            sage: k.<a> = GF(2^8) # indirect doctest
     478        """
    465479        if parent is None:
    466480            return
    467481        if PY_TYPE_CHECK(parent, FiniteField_ntl_gf2e):
     
    626640        EXAMPLES::
    627641
    628642            sage: k.<a> = GF(2^16)
    629             sage: e = a^2 + a + 1
     643            sage: e = a^2 + a + 1 # indirect doctest
    630644            sage: f = a^15 + a^2 + 1
    631645            sage: e + f
    632646            a^15 + a
     
    642656        EXAMPLES::
    643657
    644658            sage: k.<a> = GF(2^16)
    645             sage: e = a^2 + a + 1
     659            sage: e = a^2 + a + 1 # indirect doctest
    646660            sage: f = a^15 + a^2 + 1
    647661            sage: e + f
    648662            a^15 + a
     
    657671        EXAMPLES::
    658672
    659673            sage: k.<a> = GF(2^16)
    660             sage: e = a^2 + a + 1
     674            sage: e = a^2 + a + 1 # indirect doctest
    661675            sage: f = a^15 + a^2 + 1
    662676            sage: e * f
    663677            a^15 + a^6 + a^5 + a^3 + a^2
     
    673687        EXAMPLES::
    674688
    675689            sage: k.<a> = GF(2^16)
    676             sage: e = a^2 * a + 1
     690            sage: e = a^2 * a + 1 # indirect doctest
    677691            sage: f = a^15 * a^2 + 1
    678692            sage: e * f
    679693            a^9 + a^7 + a + 1
     
    688702        EXAMPLES::
    689703
    690704            sage: k.<a> = GF(2^16)
    691             sage: e = a^2 + a + 1
     705            sage: e = a^2 + a + 1 # indirect doctest
    692706            sage: f = a^15 + a^2 + 1
    693707            sage: e / f
    694708            a^11 + a^8 + a^7 + a^6 + a^5 + a^3 + a^2 + 1
     
    710724        EXAMPLES::
    711725
    712726            sage: k.<a> = GF(2^16)
    713             sage: e = a^2 / a + 1
     727            sage: e = a^2 / a + 1 # indirect doctest
    714728            sage: f = a^15 / a^2 + 1
    715729            sage: e / f
    716730            a^15 + a^12 + a^10 + a^9 + a^6 + a^5 + a^3
     
    725739        EXAMPLES::
    726740
    727741            sage: k.<a> = GF(2^16)
    728             sage: e = a^2 - a + 1
     742            sage: e = a^2 - a + 1 # indirect doctest
    729743            sage: f = a^15 - a^2 + 1
    730744            sage: e - f
    731745            a^15 + a
     
    741755        EXAMPLES::
    742756
    743757            sage: k.<a> = GF(2^16)
    744             sage: e = a^2 - a + 1
     758            sage: e = a^2 - a + 1 # indirect doctest
    745759            sage: f = a^15 - a^2 + 1
    746760            sage: e - f
    747761            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  
    240240       
    241241        EXAMPLES::
    242242       
    243             sage: FiniteField(3**2, 'c') == FiniteField(3**3, 'c')
     243            sage: FiniteField(3**2, 'c') == FiniteField(3**3, 'c') # indirect doctest
    244244            False
    245245            sage: FiniteField(3**2, 'c') == FiniteField(3**2, 'c')
    246246            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  
    99    """
    1010    def __call__(self, im_gens, check=True):
    1111        """
    12         EXAMPLES:
     12        EXAMPLES::
     13
    1314            sage: R.<t> = ZZ[]
    1415            sage: E.<a> = GF(25, modulus = t^2 - 2)
    1516            sage: F.<b> = GF(625)
     
    5152                raise TypeError, "images do not define a valid homomorphism"
    5253       
    5354    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        """
    5474        if not isinstance(x, FiniteFieldHomomorphism_im_gens):
    5575            raise TypeError
    5676        if x.parent() is self:
     
    6282    def _repr_(self):
    6383        """
    6484        EXAMPLES:
    65             sage: Hom(GF(4, 'a'), GF(16, 'b'))
     85            sage: Hom(GF(4, 'a'), GF(16, 'b')) # indirect doctest
    6686            Set of field embeddings from Finite Field in a of size 2^2 to Finite Field in b of size 2^4
    6787            sage: Hom(GF(4, 'a'), GF(4, 'c'))
    6888            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  
    114114        True
    115115    """
    116116    def create_key(self, order=0):
     117        """
     118        An integer mod ring is specified uniquely by its order.
     119
     120        EXAMPLES::
     121
     122            sage: Zmod.create_key(7)
     123            7
     124        """
    117125        return order
    118126       
    119127    def create_object(self, version, order):
     
    300308        """
    301309        EXAMPLES::
    302310       
    303             sage: macaulay2(Integers(7))  # optional - macaulay2
     311            sage: macaulay2(Integers(7))  # indirect doctest, optional - macaulay2
    304312            ZZ
    305313            --
    306314             7
     
    369377
    370378       
    371379    def _precompute_table(self):
     380        """
     381        Computes a table of elements so that elements are unique.
     382
     383        EXAMPLES::
     384
     385            sage: R = Zmod(500); R._precompute_table()
     386            sage: R(7) + R(13) is R(3) + R(17)
     387            True
     388        """
    372389        self._pyx_order.precompute_table(self)
    373390
    374391    def list_of_elements_of_multiplicative_group(self):
     392        """
     393        Returns a list of all invertible elements, as python ints.
     394
     395        EXAMPLES::
     396
     397            sage: R = Zmod(12)
     398            sage: L = R.list_of_elements_of_multiplicative_group(); L
     399            [1, 5, 7, 11]
     400            sage: type(L[0])
     401            <type 'int'>
     402        """
    375403        import sage.rings.fast_arith as a
    376404        if self.__order <= 46340:   # todo: don't hard code
    377405            gcd = a.arith_int().gcd_int
     
    736764        return self.__order
    737765   
    738766    def _repr_(self):
     767        """
     768        String representation.
     769
     770        EXAMPLES::
     771
     772            sage: Zmod(87) # indirect doctest
     773            Ring of integers modulo 87
     774        """
    739775        return "Ring of integers modulo %s"%self.__order
    740776       
    741777    def _latex_(self):
     778        """
     779        Latex representation.
     780
     781        EXAMPLES::
     782
     783            sage: latex(Zmod(87)) # indirect doctest
     784            \ZZ/87\ZZ
     785        """
    742786        return "\ZZ/%s\ZZ" % self.__order
    743787   
    744788    def modulus(self):
     
    767811            return self.__modulus
    768812
    769813    def order(self):
     814        """
     815        Returns the order of this ring.
     816
     817        EXAMPLES::
     818
     819            sage: Zmod(87).order()
     820            87
     821        """
    770822        return self.__order
    771823       
    772824    def cardinality(self):
     825        """
     826        Returns the cardinality of this ring.
     827
     828        EXAMPLES::
     829
     830            sage: Zmod(87).cardinality()
     831            87
     832        """
    773833        return self.order()
    774834
    775835    def _pari_order(self):
     836        """
     837        Returns the pari integer representing the order of this ring.
     838
     839        EXAMPLES::
     840
     841            sage: Zmod(87)._pari_order()
     842            87
     843        """
    776844        try:
    777845            return self.__pari_order
    778846        except AttributeError:
     
    786854            sage: K2 = GF(2)
    787855            sage: K3 = GF(3)
    788856            sage: K8 = GF(8,'a')
    789             sage: K8(5)
     857            sage: K8(5) # indirect doctest
    790858            1
    791859            sage: K8('a+1')
    792860            a + 1
     
    855923        EXAMPLES::
    856924       
    857925            sage: R = Integers(15)
    858             sage: f = R.coerce_map_from(Integers(450)); f
     926            sage: f = R.coerce_map_from(Integers(450)); f # indirect doctest
    859927            Natural morphism:
    860928              From: Ring of integers modulo 450
    861929              To:   Ring of integers modulo 15
     
    9431011    # them out from the unit_gens function.  They are only called by
    9441012    # the unit_gens function.
    9451013    def __unit_gens_primecase(self, p):
     1014        """
     1015        Assuming the modulus is prime, returns the smallest generator
     1016        of the group of units.
     1017
     1018        EXAMPLES::
     1019
     1020            sage: Zmod(17)._IntegerModRing_generic__unit_gens_primecase(17)
     1021            3
     1022        """
    9461023        if p==2:
    9471024            return integer_mod.Mod(1,p)
    9481025        P = prime_divisors(p-1)
     
    9661043        r"""
    9671044        Find smallest generator for
    9681045        `(\ZZ/p^r\ZZ)^*`.
     1046
     1047        EXAMPLES::
     1048
     1049            sage: Zmod(27)._IntegerModRing_generic__unit_gens_primepowercase(3,3)
     1050            [2]
    9691051        """
    9701052        if r==1:
    9711053            return [self.__unit_gens_primecase(p)]
     
    11041186            sage: R = Integers(12345678900)
    11051187            sage: R
    11061188            Ring of integers modulo 12345678900
    1107             sage: gap(R)
     1189            sage: gap(R) # indirect doctest
    11081190            (Integers mod 12345678900)
    11091191        """
    11101192        return 'ZmodnZ(%s)'%self.order()
     
    11161198            sage: R = Integers(12345678900)
    11171199            sage: R
    11181200            Ring of integers modulo 12345678900
    1119             sage: magma(R)                                          # optional - magma
     1201            sage: magma(R) # indirect doctest, optional - magma
    11201202            Residue class ring of integers modulo 12345678900
    11211203        """
    11221204        return 'Integers(%s)'%self.order()
     
    11571239    """
    11581240    INPUT: v - (list) a lift of elements of rings.IntegerMod(n), for
    11591241    various coprime moduli n.
     1242
     1243    EXAMPLES::
     1244
     1245        sage: from sage.rings.finite_rings.integer_mod_ring import crt
     1246        sage: crt([mod(3, 8),mod(1,19),mod(7, 15)])
     1247        1027
    11601248    """
    11611249    if len(v) == 0:
    11621250        return IntegerModRing(1)(1)