# Purpose¶

The module `FactorZeroInterpolationPolynomial` factors a zero out of a multidimensional, scalar interpolation polynomial.

That is, it actually performs a polynomial division of the given polynomial and a linear polynomial, discarding the remainder. Since the divisor is linear in one of the variables, the remainder is in general a polynomial of the remaining variables.

The module can also be used to factor out more than one zero (in either the same or different variables). In this case, it acts as if just multiple instances of the module were concatenated.

If only one zero is factored out and the selected variable is denoted by s and the selected value is denoted by v, and if p1 is the input polynomial, p2 the output polynomial and p3 the polynomial that is created by the `PartiallyEvaluateInterpolationPolynomial` module with p1 as input and the same variable and value and the evaluation mode set to Values for Selected Variables Only, then the following equation will hold:

p1(x) = p2(x)(xs-v) + p3(x).

Note, however, that the `PartiallyEvaluateInterpolationPolynomial` will change the numbering of the variables after `s`, so that the above equation has to be interpreted in the correct way.

# Input Fields¶

## inputPolynomial¶

`name: ``inputPolynomial``, type: ``MLBase`

# Output Fields¶

## outputPolynomial¶

`name: ``outputPolynomial``, type: ``MLBase`

# Parameter Fields¶

## Visible Fields¶

### List of Variables¶

`name: ``variableList``, type: ``String`

Sets a comma-separated list of variable numbers with respect to which linear factors are to be factored out.

The numbering starts with 0. You may use the same number several times if you want to factor several linear factors in the same variable.

### List of Values¶

`name: ``valueList``, type: ``String`

Sets a comma-separated list of the zeros that are to be factored out.

Each value corresponds to a variable number. There must be the same number of values and variables.

### Auto apply¶

`name: ``autoApply``, type: ``Bool``, default: ``FALSE`

If checked, the module computes anew on any parameter or input change.

### Apply¶

`name: ``apply``, type: ``Trigger`

If pressed, the module computes anew.