# polylib::subresultant

Subresultants of two polynomials

### Use only in the MuPAD Notebook Interface.

This functionality does not run in MATLAB.

## Syntax

```polylib::subresultant(`f`, `g`, <`x`>, <`i`>)
polylib::subresultant(`fexpr`, `gexpr`, <`x`>, <`i`>)
```

## Description

`polylib::subresultant(f, g)` returns the table of subresultants of polynomials `f` and `g` with respect to their first variable.

`polylib::subresultant(f, g, i)` returns the `i`th subresultant of polynomials `f` and `g` with respect to their first variable.

`polylib::subresultant(f, g, x)` returns the table of subresultants of polynomials `f` and `g` with respect to the variable `x`.

`polylib::subresultant(f, g, x, i)` returns the `i`th subresultant of polynomials `f` and `g` with respect to the variable `x`.

`polylib::subresultant(fexpr, gexpr, x)` returns the table of subresultants of polynomial expressions `fexpr` and `gexpr` with respect to the variable `x`.

`polylib::subresultant(fexpr, gexpr, x, i)` returns the `i`th subresultant of polynomial expressions `fexpr` and `gexpr` with respect to the variable `x`.

`polylib::subresultant` returns a particular subresultant or a table of all subresultants.

The variables and coefficient rings of both input polynomials must be identical.

The 0th subresultant is the resultant of two polynomials. See Example 1

If you do not specify the variable when computing the subresultants of two polynomials, `polylib::subresultant` returns subresultants of the polynomials with respect to their first variable. See Example 2.

If you call `polylib::subresultant` for polynomial expressions, you must specify the variable with respect to which you want to compute subresultants. MuPAD® uses the `poly` function to convert polynomial expressions to polynomials with the specified variable. The system also converts computed subresultants back to polynomial expressions.

If `poly` cannot convert expressions to polynomials, `polylib::subresultant` returns `FAIL`.

If the degree of the polynomial `f` is less than the degree of the polynomial `g`, the `polylib::subresultant` function interchanges `f` and `g`.

If the coefficient ring is a domain, it must have a `_divide` method.

## Examples

### Example 1

If you do not specify which subresultant to return, `polylib::subresultant` returns the table of all subresultants:

```f := poly(3*x^4 + 3*x^3 + 4): g := poly(x^4 + x^3 + x^2 + x + 1): polylib::subresultant(f, g)```

You can specify the number of the subresultant that you want to compute. For example, compute the 0th subresultant of the polynomials `f` and `g`:

`polylib::subresultant(f, g, 0)`

The 0th subresultant is also the resultant of the polynomials:

`polylib::resultant(f, g)`

### Example 2

`polylib::subresultant` handles multivariate polynomials and polynomial expressions. When you compute subresultants of multivariate polynomials or polynomial expressions, you can specify the variable with respect to which you want to compute subresultants:

```f := poly(3*x^4*y + 4*z^2): g := poly(x^4 + x^3*y^3*z^3): polylib::subresultant(f, g, z)```

For multivariate polynomials, specifying the variable is not necessary. If you do not specify the variable when computing the subresultants of two polynomials, `polylib::subresultant` returns subresultants of the polynomials with respect to their first variable:

```f := poly(3*x^4*y + 4*z^2): g := poly(x^4 + x^3*y^3*z^3): polylib::subresultant(f, g)```

If you call `polylib::subresultant` for polynomial expressions, you must specify the variable with respect to which you want to compute subresultants:

```f := 3*x^4*y + 4*z^2: g := x^4 + x^3*y^3*z^3: polylib::subresultant(f, g)```
```Error: A variable is missing. [polylib::subresultant] ```
`polylib::subresultant(f, g, x)`

## Parameters

 `f`, `g` Polynomials over `Expr` (the ring of arbitrary MuPAD expressions) `fexpr`, `gexpr` Polynomial expressions `x` An indeterminate `i` A nonnegative integer

## Return Values

Subresultant of two polynomials (or polynomial expressions) or a table of subresultants.

`p`, `q`