Ticket #11530: 11530_pari_init-v2.patch

File 11530_pari_init-v2.patch, 1.7 KB (added by rbeezer, 2 years ago)

Simon's patch, with minor modifications

  • sage/rings/finite_rings/element_base.pyx

    # HG changeset patch
    # User Simon King <simon.king@uni-jena.de>
    # Date 1308724342 -7200
    # Node ID 3c3ab5b6421b9183a1b900b2dc28ab51c3b3eeab
    # Parent  6ca08864b80c1e04599ba23ba295bfcf6a61f19b
    #11530: Proper use of a custom variable name in _pari_init_ of finite field elements
    
    diff -r 6ca08864b80c -r 3c3ab5b6421b sage/rings/finite_rings/element_base.pyx
    a b  
    338338            'Mod(b, Mod(1, 5)*b^2 + Mod(4, 5)*b + Mod(2, 5))' 
    339339            sage: (2*b+3)._pari_init_() 
    340340            'Mod(2*b + 3, Mod(1, 5)*b^2 + Mod(4, 5)*b + Mod(2, 5))'         
     341 
     342        TESTS: 
     343 
     344        The following tests against a bug fixed in trac ticket #11530:: 
     345 
     346            sage: F.<d> = GF(3^2) 
     347            sage: d._pari_() 
     348            Mod(d, Mod(1, 3)*d^2 + Mod(2, 3)*d + Mod(2, 3)) 
     349            sage: d._pari_init_("p") 
     350            'Mod(p, Mod(1, 3)*p^2 + Mod(2, 3)*p + Mod(2, 3))' 
     351            sage: d._pari_init_("M") 
     352            'Mod(M, Mod(1, 3)*M^2 + Mod(2, 3)*M + Mod(2, 3))' 
     353            sage: d._pari_init_("b") 
     354            'Mod(b, Mod(1, 3)*b^2 + Mod(2, 3)*b + Mod(2, 3))' 
     355 
    341356        """ 
    342         g = self.parent()._finite_field_ext_pari_modulus_as_str() 
    343         f = str(self.polynomial()) 
    344         s = 'Mod(%s, %s)'%(f, g) 
    345357        if var is None: 
    346             return s 
    347         return s.replace(self.parent().variable_name(), var) 
     358            var = self.parent().variable_name() 
     359        g = repr(self.parent().modulus()._pari_with_name(var)) 
     360        f = str(self.polynomial(var)) 
     361        return 'Mod({0}, {1})'.format(f, g) 
    348362 
    349363    def charpoly(self, var='x', algorithm='matrix'): 
    350364        """