1"""Polynomial manipulation algorithms and algebraic objects."""
2
3from .polytools import (Poly, PurePoly,
4                        parallel_poly_from_expr, degree, LC,
5                        LM, LT, div, rem, quo,
6                        exquo, half_gcdex, gcdex, invert, subresultants,
7                        resultant, discriminant, cofactors, gcd,
8                        lcm, terms_gcd, trunc, monic, content,
9                        primitive, compose, decompose,
10                        sqf_norm, sqf_part, sqf_list, sqf, factor_list,
11                        factor, count_roots, real_roots, nroots,
12                        cancel, reduced, groebner, GroebnerBasis, poly)
13from .polyfuncs import symmetrize, horner, interpolate, viete
14from .rationaltools import together
15from .polyerrors import (BasePolynomialError,
16                         ExactQuotientFailed, PolynomialDivisionFailed,
17                         OperationNotSupported, HeuristicGCDFailed,
18                         HomomorphismFailed, IsomorphismFailed,
19                         ExtraneousFactors, EvaluationFailed,
20                         RefinementFailed, CoercionFailed, NotInvertible,
21                         NotReversible, NotAlgebraic, DomainError,
22                         PolynomialError, UnificationFailed,
23                         GeneratorsError, GeneratorsNeeded, ComputationFailed,
24                         UnivariatePolynomialError, MultivariatePolynomialError,
25                         PolificationFailed, OptionError, FlagError)
26from .numberfields import (minimal_polynomial,
27                           primitive_element, field_isomorphism)
28from .monomials import Monomial, itermonomials
29from .orderings import (lex, grlex, grevlex, ilex,
30                        igrlex, igrevlex)
31from .rootoftools import RootOf, RootSum
32from .polyroots import roots
33from .constructor import construct_domain
34from .specialpolys import (swinnerton_dyer_poly,
35                           cyclotomic_poly, symmetric_poly,
36                           random_poly, interpolating_poly)
37from .orthopolys import (jacobi_poly, chebyshevt_poly,
38                         chebyshevu_poly, hermite_poly, legendre_poly,
39                         laguerre_poly, spherical_bessel_fn)
40from .partfrac import apart, apart_list, assemble_partfrac_list
41from .polyoptions import Options
42from .rings import PolynomialRing, ring
43from .fields import FractionField, field
44from .univar import UnivarPolynomialRing
45
46
47__all__ = ('Poly', 'PurePoly',
48           'parallel_poly_from_expr', 'degree', 'LC',
49           'LM', 'LT', 'div', 'rem', 'quo', 'exquo', 'half_gcdex',
50           'gcdex', 'invert', 'subresultants', 'resultant', 'discriminant',
51           'cofactors', 'gcd', 'lcm', 'terms_gcd',
52           'trunc', 'monic', 'content', 'primitive', 'compose', 'decompose',
53           'sqf_norm', 'sqf_part', 'sqf_list', 'sqf', 'factor_list',
54           'factor', 'count_roots', 'real_roots', 'nroots', 'cancel',
55           'reduced', 'groebner', 'GroebnerBasis', 'poly', 'symmetrize',
56           'horner', 'interpolate', 'viete', 'together', 'BasePolynomialError',
57           'ExactQuotientFailed', 'PolynomialDivisionFailed',
58           'OperationNotSupported', 'HeuristicGCDFailed',
59           'HomomorphismFailed', 'IsomorphismFailed', 'ExtraneousFactors',
60           'EvaluationFailed', 'RefinementFailed', 'CoercionFailed',
61           'NotInvertible', 'NotReversible', 'NotAlgebraic', 'DomainError',
62           'PolynomialError', 'UnificationFailed', 'GeneratorsError',
63           'GeneratorsNeeded', 'ComputationFailed', 'UnivariatePolynomialError',
64           'MultivariatePolynomialError', 'PolificationFailed', 'OptionError',
65           'FlagError', 'minimal_polynomial', 'primitive_element',
66           'field_isomorphism', 'Monomial', 'itermonomials', 'lex', 'grlex',
67           'grevlex', 'ilex', 'igrlex', 'igrevlex', 'RootOf', 'RootSum',
68           'roots', 'construct_domain', 'swinnerton_dyer_poly',
69           'cyclotomic_poly', 'symmetric_poly', 'random_poly',
70           'interpolating_poly', 'jacobi_poly', 'chebyshevt_poly',
71           'chebyshevu_poly', 'hermite_poly', 'legendre_poly',
72           'laguerre_poly', 'spherical_bessel_fn', 'apart', 'apart_list',
73           'assemble_partfrac_list', 'Options', 'PolynomialRing', 'ring',
74           'FractionField', 'field', 'UnivarPolynomialRing')
75