Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemath
GitHub Repository: sagemath/sagesmc
Path: blob/master/src/sage/libs/flint/fmpz_poly.pxi
8817 views
include "fmpz.pxi"
include "sage/libs/ntl/decl.pxi"

from sage.libs.flint.nmod_poly cimport nmod_poly_t

cdef extern from "flint/fmpz_poly.h":
    ctypedef void* fmpz_poly_t

    void fmpz_poly_init(fmpz_poly_t poly)
    void fmpz_poly_init2(fmpz_poly_t poly, unsigned long alloc)
    void fmpz_poly_realloc(fmpz_poly_t poly, unsigned long alloc)

    void fmpz_poly_fit_length(fmpz_poly_t poly, unsigned long alloc)

    void fmpz_poly_clear(fmpz_poly_t poly)

    long fmpz_poly_degree(fmpz_poly_t poly)
    unsigned long fmpz_poly_length(fmpz_poly_t poly)

    void fmpz_poly_set_length(fmpz_poly_t poly, unsigned long length)
    void fmpz_poly_truncate(fmpz_poly_t poly, unsigned long length)

    void fmpz_poly_set(fmpz_poly_t result, fmpz_poly_t poly)
    void fmpz_poly_zero(fmpz_poly_t poly)
    void fmpz_poly_set_coeff_si(fmpz_poly_t poly, unsigned long n, long x)
    void fmpz_poly_set_coeff_ui(fmpz_poly_t poly, unsigned long n, \
            unsigned long x)
    void fmpz_poly_set_coeff_mpz(fmpz_poly_t poly, unsigned long n, mpz_t x)
    void fmpz_poly_set_coeff_fmpz(fmpz_poly_t poly, unsigned long n, fmpz_t x)

    void fmpz_poly_get_coeff_mpz(mpz_t x, fmpz_poly_t poly, unsigned long n)
    void fmpz_poly_get_coeff_mpz_read_only(mpz_t x, fmpz_poly_t poly, \
            unsigned long n)
    fmpz* fmpz_poly_get_coeff_ptr(fmpz_poly_t poly, unsigned long n)

    void fmpz_poly_get_nmod_poly(nmod_poly_t res, fmpz_poly_t poly)

    void fmpz_poly_add(fmpz_poly_t output, fmpz_poly_t input1, \
            fmpz_poly_t input2)
    void fmpz_poly_sub(fmpz_poly_t output, fmpz_poly_t input1, \
            fmpz_poly_t input2)
    void fmpz_poly_neg(fmpz_poly_t output, fmpz_poly_t input1)

    void fmpz_poly_mul(fmpz_poly_t output, fmpz_poly_t input1, \
            fmpz_poly_t input2)
    void fmpz_poly_mul_trunc_n(fmpz_poly_t output, fmpz_poly_t input1, \
            fmpz_poly_t input2, unsigned long trunc)
    void fmpz_poly_mul_trunc_left_n(fmpz_poly_t output, fmpz_poly_t input1, \
            fmpz_poly_t input2, unsigned long trunc)

    void fmpz_poly_scalar_mul_ui(fmpz_poly_t output, fmpz_poly_t input, \
            unsigned long x)
    void fmpz_poly_scalar_mul_si(fmpz_poly_t output, fmpz_poly_t input, long x)

    void fmpz_poly_scalar_mul_mpz(fmpz_poly_t output, fmpz_poly_t poly, \
            mpz_t x)
    void fmpz_poly_scalar_mul_fmpz(fmpz_poly_t output, fmpz_poly_t poly, \
            fmpz_t x)

    void fmpz_poly_scalar_divexact_ui(fmpz_poly_t output, fmpz_poly_t poly, \
            unsigned long x)
    void fmpz_poly_scalar_divexact_si(fmpz_poly_t output, fmpz_poly_t poly, \
            long x)
    void fmpz_poly_scalar_divexact_mpz(fmpz_poly_t output, fmpz_poly_t poly, \
            mpz_t x)
    void fmpz_poly_scalar_divexact_fmpz(fmpz_poly_t output, fmpz_poly_t poly, \
            fmpz_t x)

    void fmpz_poly_scalar_fdiv_ui(fmpz_poly_t output, fmpz_poly_t poly, \
            unsigned long x)
    void fmpz_poly_scalar_fdiv_mpz(fmpz_poly_t output, fmpz_poly_t poly, \
            mpz_t x)

    void fmpz_poly_div(fmpz_poly_t Q, fmpz_poly_t A, fmpz_poly_t B)
    void fmpz_poly_divrem(fmpz_poly_t Q, fmpz_poly_t R, fmpz_poly_t A, \
            fmpz_poly_t B)

    void fmpz_poly_pseudo_div(fmpz_poly_t Q, unsigned long *d, fmpz_poly_t A, \
            fmpz_poly_t B)
    void fmpz_poly_pseudo_divrem(fmpz_poly_t Q, fmpz_poly_t R, \
            unsigned long *d, fmpz_poly_t A, fmpz_poly_t B)

    int fmpz_poly_equal(fmpz_poly_t poly1, fmpz_poly_t poly2)

    int fmpz_poly_set_str(fmpz_poly_t poly, char* s)
    char* fmpz_poly_get_str(fmpz_poly_t poly)
    void fmpz_poly_print(fmpz_poly_t poly)
    bint fmpz_poly_read(fmpz_poly_t poly)

    void fmpz_poly_pow(fmpz_poly_t output, fmpz_poly_t poly, \
            unsigned long exp)
    void fmpz_poly_pow_trunc(fmpz_poly_t output, fmpz_poly_t poly, \
            unsigned long exp, unsigned long n)

    void fmpz_poly_shift_left(fmpz_poly_t output, fmpz_poly_t poly, \
            unsigned long n)
    void fmpz_poly_shift_right(fmpz_poly_t output, fmpz_poly_t poly, \
            unsigned long n)

    void fmpz_poly_derivative(fmpz_poly_t der, fmpz_poly_t poly)

    void fmpz_poly_content(fmpz_t c, fmpz_poly_t poly)
    void fmpz_poly_primitive_part(fmpz_poly_t prim, fmpz_poly_t poly)

    void fmpz_poly_gcd(fmpz_poly_t res, fmpz_poly_t poly1, fmpz_poly_t poly2)

    void fmpz_poly_xgcd(fmpz_t r, fmpz_poly_t s, fmpz_poly_t t, \
            fmpz_poly_t a, fmpz_poly_t b)

    unsigned long fmpz_poly_resultant_bound(fmpz_poly_t a, fmpz_poly_t b)
    void fmpz_poly_resultant(fmpz_t r, fmpz_poly_t a, fmpz_poly_t b)

    void fmpz_poly_invmod(fmpz_t d, fmpz_poly_t H, fmpz_poly_t poly1, \
            fmpz_poly_t poly2)
    void fmpz_poly_derivative(fmpz_poly_t der, fmpz_poly_t poly)
    void fmpz_poly_evaluate_fmpz(fmpz_t output, fmpz_poly_t poly, fmpz_t val)
    void fmpz_poly_compose(fmpz_poly_t output, fmpz_poly_t f, fmpz_poly_t g)

    unsigned long fmpz_poly_max_limbs(fmpz_poly_t poly)