# Getting started¶

## Installation¶

Installation with pip:

```
pip install multivar_horner
```

For efficiency this package is compiling the instructions required for polynomial evaluation to C by default.
If you don’t have a C compiler (`gcc`

or `cc`

) installed you also need to install numba for using an alternative method:

```
pip install multivar_horner[numba]
```

## Basics¶

Let’s consider this example multivariate polynomial:

\(p(x) = 5 + 1 x_1^3 x_2^1 + 2 x_1^2 x_3^1 + 3 x_1^1 x_2^1 x_3^1\)

Which can also be written as:

\(p(x) = 5 x_1^0 x_2^0 x_3^0 + 1 x_1^3 x_2^1 x_3^0 + 2 x_1^2 x_2^0 x_3^1 + 3 x_1^1 x_2^1 x_3^1\)

A polynomial is a sum of monomials. Our example polynomial has \(M = 4\) monomials and dimensionality \(N = 3\).

The coefficients of our example polynomial are: 5.0, 1.0, 2.0, 3.0

The exponent vectors of the corresponding monomials are:

[0, 0, 0]

[3, 1, 0]

[2, 0, 1]

[1, 1, 1]

To represent polynomials this package requires the coefficients and the exponent vectors as input.

This code shows how to compute the Horner factorisation of our example polynomial \(p\) and evaluating \(p\) at a point \(x\):

```
import numpy as np
from multivar_horner import HornerMultivarPolynomial
coefficients = np.array([[5.0], [1.0], [2.0], [3.0]], dtype=np.float64) # shape: (M,1)
exponents = np.array(
[[0, 0, 0], [3, 1, 0], [2, 0, 1], [1, 1, 1]], dtype=np.uint32
) # shape: (M,N)
p = HornerMultivarPolynomial(coefficients, exponents)
x = np.array([-2.0, 3.0, 1.0], dtype=np.float64) # shape: (1,N)
p_x = p(x) # -29.0
```

Note

with the default settings the input is required to have these data types and shapes

With the class `HornerMultivarPolynomial`

a polynomial can be represented in Horner factorisation.

With the class `HornerMultivarPolynomialOpt`

a polynomial can be represented in an optimal Horner factorisation.

With the class `MultivarPolynomial`

a polynomial can be represented in canonical form.

All available features of this package are explained HERE.

The API documentation can be found HERE.