Package defining mathematical single-variable polynomials.

# Python package defining single-variable polynomials and operations with them    ## Installation

`pip install py-polynomial`

## Quick examples

### Flexible initialization

```>>> from polynomial import Polynomial

>>> a = Polynomial(1, 2, 3, 4)
>>> str(a)
x^3 + 2x^2 + 3x + 4

>>> b = Polynomial([4 - x for x in range(4)])
>>> str(b)
4x^3 + 3x^2 + 2x + 1
```

### First derivative

```>>> b.derivative
Polynomial(12, 6, 2)

>>> str(b.derivative)
12x^2 + 6x + 2
```

### Second or higher derivative

```>>> str(b.nth_derivative(2))
24x + 6
```

```>>> str(a + b)
5x^3 + 5x^2 + 5x + 5
```

### Calculating value for a given x

```>>> (a + b).calculate(5)
780
```

### Multiplication

```>>> p = Polynomial(1, 2) * Polynomial(1, 2)
>>> p
Polynomial(1, 4, 4)
```

### Accessing coefficient by degree

```>>> p = -4
>>> p
Polynomial(1, 4, -4)
```

### Slicing

```>>> p[1:] = [4, -1]
>>> p
Polynomial(-1, 4, -4)
```

### Accessing coefficients by name convention

```>>> (p.a, p.b, p.c)
(-1, 4, -4)

>>> p.a, p.c = 1, 4
>>> (p.A, p.B, p.C)
(1, 4, 4)
```

### Division and remainder

```>>> q, remainder = divmod(p, Polynomial(1, 2))
>>> q
Polynomial(1.0, 2.0)
>>> remainder
Polynomial()

>>> p // Polynomial(1, 2)
Polynomial(1.0, 2.0)

>>> P(1, 2, 3) % Polynomial(1, 2)
Polynomial(3)
```

### Check whether it contains given terms

```>>> Polynomial(2, 1) in Polynomial(4, 3, 2, 1)
True
```

### Definite integral

```>>> Polynomial(3, 2, 1).integral(0, 1)
3
```

### Misc

```>>> str(Polynomial("abc"))
ax^2 + bx + c
```

### Roots and discriminants

```>>> from polynomial import QuadraticTrinomial, Monomial
>>> y = QuadraticTrinomial(1, -2, 1)
>>> str(y)
x^2 - 2x + 1

>>> y.discriminant
0

>>> y.real_roots
(1, 1)

>>> y.real_factors
(1, Polynomial(1, -1), Polynomial(1, -1))

>>> str(Monomial(5, 3))
5x^3

>>> y += Monomial(9, 2)
>>> y
Polynomial(10, -2, 1)

>>> str(y)
10x^2 - 2x + 1

>>> (y.a, y.b, y.c)
(10, -2, 1)

>>> (y.A, y.B, y.C)
(10, -2, 1)

>>> y.complex_roots
((0.1 + 0.3j), (0.1 - 0.3j))
```

## Project details

This version 0.6.0 0.5.2 0.5.1 0.5.0 0.4.1 0.4.0 0.3.1 0.3 0.2 0.1