FLINT fmpz_poly class wrapper - C/C++ Library Interfaces

Skip to content
Back to top
View this page
Edit this page

# FLINT fmpz_poly class wrapper

AUTHORS:

- Robert Bradshaw (2007-09-15) Initial version.

- William Stein (2007-10-02) update for new flint; add arithmetic and creation of coefficients of arbitrary size.

class sage.libs.flint.fmpz_poly_sage.Fmpz_poly

  Bases: `SageObject`

  Construct a new fmpz_poly from a sequence, constant coefficient, or string (in the same format as it prints).

  EXAMPLES:

  Sage

      sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
      sage: Fmpz_poly([1,2,3])
      3  1 2 3
      sage: Fmpz_poly(5)
      1  5
      sage: Fmpz_poly(str(Fmpz_poly([3,5,7])))
      3  3 5 7

  Python

      >>> from sage.all import *
      >>> from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
      >>> Fmpz_poly([Integer(1),Integer(2),Integer(3)])
      3  1 2 3
      >>> Fmpz_poly(Integer(5))
      1  5
      >>> Fmpz_poly(str(Fmpz_poly([Integer(3),Integer(5),Integer(7)])))
      3  3 5 7

  degree()

    The degree of `self`.

    EXAMPLES:

    Sage

        sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        sage: f = Fmpz_poly([1,2,3]); f
        3  1 2 3
        sage: f.degree()
        2
        sage: Fmpz_poly(range(1000)).degree()
        999
        sage: Fmpz_poly([2,0]).degree()
        0

    Python

        >>> from sage.all import *
        >>> from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        >>> f = Fmpz_poly([Integer(1),Integer(2),Integer(3)]); f
        3  1 2 3
        >>> f.degree()
        2
        >>> Fmpz_poly(range(Integer(1000))).degree()
        999
        >>> Fmpz_poly([Integer(2),Integer(0)]).degree()
        0

  derivative()

    Return the derivative of `self`.

    EXAMPLES:

    Sage

        sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        sage: f = Fmpz_poly([1,2,6])
        sage: f.derivative().list() == [2, 12]
        True

    Python

        >>> from sage.all import *
        >>> from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        >>> f = Fmpz_poly([Integer(1),Integer(2),Integer(6)])
        >>> f.derivative().list() == [Integer(2), Integer(12)]
        True

  div_rem(other)

    Return `self / other, self % other`.

    EXAMPLES:

    Sage

        sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        sage: f = Fmpz_poly([1,3,4,5])
        sage: g = f^23
        sage: g.div_rem(f)[1]
        0
        sage: g.div_rem(f)[0] - f^22
        0
        sage: f = Fmpz_poly([1..10])
        sage: g = Fmpz_poly([1,3,5])
        sage: q, r = f.div_rem(g)
        sage: q*f+r
        17  1 2 3 4 4 4 10 11 17 18 22 26 30 23 26 18 20
        sage: g
        3  1 3 5
        sage: q*g+r
        10  1 2 3 4 5 6 7 8 9 10

    Python

        >>> from sage.all import *
        >>> from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        >>> f = Fmpz_poly([Integer(1),Integer(3),Integer(4),Integer(5)])
        >>> g = f**Integer(23)
        >>> g.div_rem(f)[Integer(1)]
        0
        >>> g.div_rem(f)[Integer(0)] - f**Integer(22)
        0
        >>> f = Fmpz_poly((ellipsis_range(Integer(1),Ellipsis,Integer(10))))
        >>> g = Fmpz_poly([Integer(1),Integer(3),Integer(5)])
        >>> q, r = f.div_rem(g)
        >>> q*f+r
        17  1 2 3 4 4 4 10 11 17 18 22 26 30 23 26 18 20
        >>> g
        3  1 3 5
        >>> q*g+r
        10  1 2 3 4 5 6 7 8 9 10

  left_shift(n)

    Left shift `self` by \(n\).

    EXAMPLES:

    Sage

        sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        sage: f = Fmpz_poly([1,2])
        sage: f.left_shift(1).list() == [0,1,2]
        True

    Python

        >>> from sage.all import *
        >>> from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        >>> f = Fmpz_poly([Integer(1),Integer(2)])
        >>> f.left_shift(Integer(1)).list() == [Integer(0),Integer(1),Integer(2)]
        True

  list()

    Return `self` as a list of coefficients, lowest terms first.

    EXAMPLES:

    Sage

        sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        sage: f = Fmpz_poly([2,1,0,-1])
        sage: f.list()
        [2, 1, 0, -1]

    Python

        >>> from sage.all import *
        >>> from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        >>> f = Fmpz_poly([Integer(2),Integer(1),Integer(0),-Integer(1)])
        >>> f.list()
        [2, 1, 0, -1]

  pow_truncate(exp, n)

    Return `self` raised to the power of `exp` mod \(x^n\).

    EXAMPLES:

    Sage

        sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        sage: f = Fmpz_poly([1,2])
        sage: f.pow_truncate(10,3)
        3  1 20 180
        sage: f.pow_truncate(1000,3)
        3  1 2000 1998000

    Python

        >>> from sage.all import *
        >>> from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        >>> f = Fmpz_poly([Integer(1),Integer(2)])
        >>> f.pow_truncate(Integer(10),Integer(3))
        3  1 20 180
        >>> f.pow_truncate(Integer(1000),Integer(3))
        3  1 2000 1998000

  pseudo_div(other)
  pseudo_div_rem(other)
  right_shift(n)

    Right shift `self` by \(n\).

    EXAMPLES:

    Sage

        sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        sage: f = Fmpz_poly([1,2])
        sage: f.right_shift(1).list() == [2]
        True

    Python

        >>> from sage.all import *
        >>> from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        >>> f = Fmpz_poly([Integer(1),Integer(2)])
        >>> f.right_shift(Integer(1)).list() == [Integer(2)]
        True

  truncate(n)

    Return the truncation of `self` at degree \(n\).

    EXAMPLES:

    Sage

        sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        sage: f = Fmpz_poly([1,1])
        sage: g = f**10; g
        11  1 10 45 120 210 252 210 120 45 10 1
        sage: g.truncate(5)
        5  1 10 45 120 210

    Python

        >>> from sage.all import *
        >>> from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
        >>> f = Fmpz_poly([Integer(1),Integer(1)])
        >>> g = f**Integer(10); g
        11  1 10 45 120 210 252 210 120 45 10 1
        >>> g.truncate(Integer(5))
        5  1 10 45 120 210