Ticket #12173: fmpz.patch

File fmpz.patch, 9.4 KB (added by fredrik.johansson, 10 years ago)
  • sage/algebras/quatalg/quaternion_algebra_element.pyx

    # HG changeset patch
    # User Fredrik Johansson <fredrik.johansson@gmail.com>
    # Date 1324249877 0
    # Node ID d41c48599d0c5cbe6ec39d30e2b8a38bfe00a23d
    # Parent  eff613554034a6ea4aea3fc3d72d612da8fb2253
    fix interface changes between flint1 and flint2 in fmpz and fmpz_poly functions (except for fmpz_poly.pxi and the rational polynomials module, which still need updating)
    
    diff --git a/sage/algebras/quatalg/quaternion_algebra_element.pyx b/sage/algebras/quatalg/quaternion_algebra_element.pyx
    a b  
    19881988        # Implementation-wise, we compute the GCD's one at a time,
    19891989        # and quit if it ever becomes one
    19901990 
    1991         cdef fmpz_t content = fmpz_init(fmpz_poly_max_limbs(self.x)) # TODO: think about how big this should be (probably the size of d)
    1992                                                                      # Note that we have to allocate this here, and not
    1993                                                                      # as a global variable, because fmpz_t's do not
    1994                                                                      # self allocate memory
     1991        cdef fmpz_t content
     1992        fmpz_init(content)
    19951993        fmpz_poly_content(content, self.x)
    1996         fmpz_to_mpz(U1, content)
     1994        fmpz_get_mpz(U1, content)
    19971995        mpz_gcd(U1, self.d, U1)
    19981996        if mpz_cmp_ui(U1, 1) != 0:
    19991997            fmpz_poly_content(content, self.y)
    2000             fmpz_to_mpz(U2, content)
     1998            fmpz_get_mpz(U2, content)
    20011999            mpz_gcd(U1, U1, U2)
    20022000            if mpz_cmp_ui(U1, 1) != 0:
    20032001                fmpz_poly_content(content, self.z)
    2004                 fmpz_to_mpz(U2, content)
     2002                fmpz_get_mpz(U2, content)
    20052003                mpz_gcd(U1, U1, U2)
    20062004                if mpz_cmp_ui(U1, 1) != 0:
    20072005                    fmpz_poly_content(content, self.w)
    2008                     fmpz_to_mpz(U2, content)
     2006                    fmpz_get_mpz(U2, content)
    20092007                    mpz_gcd(U1, U1, U2)
    20102008                    if mpz_cmp_ui(U1, 1) != 0:
    20112009                        fmpz_poly_scalar_div_mpz(self.x, self.x, U1)
  • sage/graphs/matchpoly.pyx

    diff --git a/sage/graphs/matchpoly.pyx b/sage/graphs/matchpoly.pyx
    a b  
    350350    """
    351351    cdef int i, j, k, edge1, edge2, new_edge1, new_edge2, new_nedges
    352352    cdef int *edges1, *edges2, *new_edges1, *new_edges2
    353     cdef fmpz_t coeff
     353    cdef fmpz * coeff
    354354
    355355    if nverts == 3:
    356356        coeff = fmpz_poly_get_coeff_ptr(pol, 3)
    357357        if coeff is NULL:
    358358            fmpz_poly_set_coeff_ui(pol, 3, 1)
    359359        else:
    360             fmpz_add_ui_inplace(coeff, 1)
     360            fmpz_add_ui(coeff, coeff, 1)
    361361        coeff = fmpz_poly_get_coeff_ptr(pol, 1)
    362362        if coeff is NULL:
    363363            fmpz_poly_set_coeff_ui(pol, 1, nedges)
    364364        else:
    365             fmpz_add_ui_inplace(coeff, nedges)
     365            fmpz_add_ui(coeff, coeff, nedges)
    366366        return
    367367
    368368    if nedges == 0:
     
    370370        if coeff is NULL:
    371371            fmpz_poly_set_coeff_ui(pol, nverts, 1)
    372372        else:
    373             fmpz_add_ui_inplace(coeff, 1)
     373            fmpz_add_ui(coeff, coeff, 1)
    374374        return
    375375   
    376376    edges1 = edges[2*depth]
  • sage/libs/flint/fmpz.pxi

    diff --git a/sage/libs/flint/fmpz.pxi b/sage/libs/flint/fmpz.pxi
    a b  
    11include "../ntl/decl.pxi"
    22
    33cdef extern from "FLINT/fmpz.h":
    4    
    5     ctypedef void * fmpz_t
     4
     5    ctypedef long fmpz
     6    ctypedef fmpz * fmpz_t
    67    ctypedef void * mpz_t
    78
    8     fmpz_t fmpz_init(unsigned long limbs)
     9    void fmpz_init(fmpz_t f)
    910    void fmpz_clear(fmpz_t f)
    1011    void fmpz_print(fmpz_t f)
    1112    int fmpz_is_one(fmpz_t f)
    1213
    13     void fmpz_add_ui_inplace(fmpz_t output, unsigned long x)
    14     void fmpz_sub_ui_inplace(fmpz_t output, unsigned long x)
    15    
    16     void fmpz_to_mpz(mpz_t rop, fmpz_t op)
     14    void fmpz_add_ui(fmpz_t f, fmpz_t g, fmpz_t h)
     15    void fmpz_add_si(fmpz_t f, fmpz_t g, fmpz_t h)
     16
     17    void fmpz_get_mpz(mpz_t rop, fmpz_t op)
     18    void fmpz_set_fmpz(fmpz_t rop, mpz_t op)
  • sage/libs/flint/fmpz_poly.pyx

    diff --git a/sage/libs/flint/fmpz_poly.pyx b/sage/libs/flint/fmpz_poly.pyx
    a b  
    5252        cdef long c
    5353        cdef Integer w
    5454        if PY_TYPE_CHECK(v, str):
    55             if fmpz_poly_from_string(self.poly, v):
     55            if not fmpz_poly_set_string(self.poly, v):
    5656                return
    5757            else:
    5858                raise ValueError, "Unable to create Fmpz_poly from that string."
     
    114114            sage: f = Fmpz_poly([0,1]); f^7
    115115            8  0 0 0 0 0 0 0 1
    116116        """
    117         cdef char* ss = fmpz_poly_to_string(self.poly)
     117        cdef char* ss = fmpz_poly_get_str(self.poly)
    118118        cdef object s = ss
    119119        sage_free(ss)
    120120        return s
     
    245245        if not PY_TYPE_CHECK(self, Fmpz_poly):
    246246            raise TypeError
    247247        cdef Fmpz_poly res = <Fmpz_poly>PY_NEW(Fmpz_poly)
    248         fmpz_poly_power(res.poly, (<Fmpz_poly>self).poly, nn)
     248        fmpz_poly_pow(res.poly, (<Fmpz_poly>self).poly, nn)
    249249        return res
    250250       
    251251    def pow_truncate(self, exp, n):
     
    266266            raise ValueError, "Exponent must be at least 0"
    267267        cdef long exp_c = exp, nn = n
    268268        cdef Fmpz_poly res = <Fmpz_poly>PY_NEW(Fmpz_poly)
    269         fmpz_poly_power_trunc_n(res.poly, (<Fmpz_poly>self).poly, exp_c, nn)
     269        fmpz_poly_pow_trunc(res.poly, (<Fmpz_poly>self).poly, exp_c, nn)
    270270        return res
    271271       
    272272    def __floordiv__(left, right):
     
    328328        """
    329329        cdef Fmpz_poly res = <Fmpz_poly>PY_NEW(Fmpz_poly)
    330330
    331         fmpz_poly_left_shift(res.poly, self.poly, n)
     331        fmpz_poly_shift_left(res.poly, self.poly, n)
    332332
    333333        return res
    334334
     
    344344        """
    345345        cdef Fmpz_poly res = <Fmpz_poly>PY_NEW(Fmpz_poly)
    346346
    347         fmpz_poly_right_shift(res.poly, self.poly, n)
     347        fmpz_poly_shift_right(res.poly, self.poly, n)
    348348
    349349        return res
    350350
  • sage/modular/modsym/apply.pyx

    diff --git a/sage/modular/modsym/apply.pyx b/sage/modular/modsym/apply.pyx
    a b  
    5454        fmpz_poly_set_coeff_si(self.g, 1, c)
    5555
    5656        # h = (f**i)*(g**(j-i))
    57         fmpz_poly_power(self.ff, self.f, i)
    58         fmpz_poly_power(self.gg, self.g, j-i)
     57        fmpz_poly_pow(self.ff, self.f, i)
     58        fmpz_poly_pow(self.gg, self.g, j-i)
    5959        fmpz_poly_mul(ans, self.ff, self.gg)
    6060
    6161        return 0
  • sage/rings/polynomial/polynomial_integer_dense_flint.pyx

    diff --git a/sage/rings/polynomial/polynomial_integer_dense_flint.pyx b/sage/rings/polynomial/polynomial_integer_dense_flint.pyx
    a b  
    285285            sage: (123456789123456789123456789123456789123456789*t).content()
    286286            123456789123456789123456789123456789123456789
    287287        """
    288         cdef fmpz_t c = fmpz_init(fmpz_poly_limbs(self.__poly))
     288        cdef fmpz_t c
     289        fmpz_init(c)
    289290        fmpz_poly_content(c, self.__poly)
    290291        cdef Integer z = PY_NEW(Integer)
    291         fmpz_to_mpz(z.value, c)
     292        fmpz_get_mpz(z.value, c)
    292293        fmpz_clear(c)
    293294        return z
    294295
     
    662663        """
    663664        cdef Polynomial_integer_dense_flint ss = self._new()
    664665        cdef Polynomial_integer_dense_flint tt = self._new()
    665         cdef unsigned long bound = fmpz_poly_resultant_bound(self.__poly,
    666                 (<Polynomial_integer_dense_flint>right).__poly)
    667         cdef fmpz_t r = fmpz_init(bound/FLINT_BITS+2)
     666        cdef fmpz_t r
     667        fmpz_init(r)
    668668
    669669        sig_on()
    670670        fmpz_poly_xgcd(r, ss.__poly, tt.__poly, self.__poly,
    671671                (<Polynomial_integer_dense_flint>right).__poly)
    672672        sig_off()
    673673        cdef Integer rr = PY_NEW(Integer)
    674         fmpz_to_mpz(rr.value, r)
     674        fmpz_get_mpz(rr.value, r)
    675675        fmpz_clear(r)
    676676
    677677        if rr.is_zero():
     
    780780                return res
    781781        if exp < 0:
    782782            sig_on()
    783             fmpz_poly_power(res.__poly, self.__poly, -nn)
     783            fmpz_poly_pow(res.__poly, self.__poly, -nn)
    784784            sig_off()
    785785            return ~res
    786786        else:
     
    790790                sig_off()
    791791            else:
    792792                sig_on()
    793                 fmpz_poly_power(res.__poly, self.__poly, nn)
     793                fmpz_poly_pow(res.__poly, self.__poly, nn)
    794794                sig_off()
    795795            return res
    796796
     
    11061106
    11071107        if not ZZ_IsOne(content):
    11081108            fac_py = self._new()
    1109             tcontent = fmpz_init(ZZ_limbs(content))
     1109            fmpz_init(tcontent)
    11101110            ZZ_to_fmpz(tcontent, content)
    11111111            fmpz_poly_set_coeff_fmpz(fac_py.__poly, 0, tcontent)
    11121112            results.append( (fac_py,1) )
     
    12781278        elif self.parent() is not other.parent():
    12791279            raise TypeError
    12801280
    1281         cdef unsigned long bound = fmpz_poly_resultant_bound(self.__poly,
    1282                 (<Polynomial_integer_dense_flint>other).__poly)
    1283         cdef fmpz_t res = fmpz_init(bound/FLINT_BITS + 2)
     1281        cdef fmpz_t res
     1282        fmpz_init(res)
    12841283        cdef Integer x = PY_NEW(Integer)
    12851284
    12861285        sig_on()
    12871286        fmpz_poly_resultant(res, self.__poly,
    12881287                (<Polynomial_integer_dense_flint>other).__poly)
    12891288        sig_off()
    1290         fmpz_to_mpz(x.value, res)
     1289        fmpz_get_mpz(x.value, res)
    12911290        fmpz_clear(res)
    12921291        return x
    12931292