MeatAxe: Characteristic and Minimal Polynomials

MeatAxe 2.4

- Main Page
- Related Pages
- Modules
- Data Structures

Functions | Variables
Characteristic and Minimal Polynomials

## Functions
Poly_t * | CharPolFactor (const Matrix_t *mat)
| Characteristic Polynomial.
FPoly_t * | CharPol (const Matrix_t *mat)
| Characteristic Polynomial.
Poly_t * | MinPolFactor (Matrix_t *mat)
| Minimal Polynomial.
FPoly_t * | MinPol (Matrix_t *mat)
| Minimal polynomial.
## Variables
long | CharPolSeed = 0
| Seed for Characteristic Polynomial.

## Function Documentation

FPoly_t* CharPol | ( | const Matrix_t * | mat | ) |

Characteristic Polynomial.

This function calculates the characteristic polynomial of a matrix in factored form. The return value is a pointer to a FPoly_t structure containing the irreducible factors of the characteristic polynomial.

Parameters:

  mat | Pointer to the matrix.

Returns:
  The characteristic polynomial of mat or 0 on error.

Poly_t* CharPolFactor | ( | const Matrix_t * | mat | ) |

Characteristic Polynomial.

This function returns one factor of the characteristic polynomial of a given matrix. Further calls with a 0 argument return more factors or 0, if there are no more factors. Note that the factors obtained in this way are in general not irreducible.

Here is how CharPolFactor() works: If mat is different from 0, CharPolFactor() initializes its internal data and starts computing one cyclic subspace. The choice of starting vector for this first subspace depends on the global variable CharPolSeed. Usually, this variable has a value of 0, corresponding to the vector (1,0,...,0). Then, the polynomial of the matrix restricted to that cyclic subspace is constructed and returned to the caller.

If mat is 0 on the next call, CharPolFactor() resumes at the point where it returned the last time, calculates the next cyclic subspace and so on, until the complete space is exhausted.

Attention:
  Since the function uses static variables to store information across multiple calls, your program must not use CharPolFactor() on more than one matrix at the same time.

Parameters:

  mat | Pointer to the matrix.

Returns:
  A factor of the characteristic polynomial, or 0 if there are no more factors.

FPoly_t* MinPol | ( | Matrix_t * | mat | ) |

Minimal polynomial.

This function calculates the minimal polynomial of a matrix in factored form. The return value is a pointer to a FPoly_t structure containing the irreducible factors of the minimal polynomial.

Parameters:

  mat | Pointer to the matrix.

Returns:
  Minimal polynomial of mat, or 0 on error.

Poly_t* MinPolFactor | ( | Matrix_t * | mat | ) |

Minimal Polynomial.

This function returns one factor of the minimal polynomial of a given matrix. Further calls with a 0 argument return more factors or 0, if there are no more factors. Note that the factors obtained in this way are in general not irreducible.

If mat is different from 0, MinPolFactor() initializes its internal data and starts computing one cyclic subspace. Then, the polynomial of the matrix restricted to that cyclic subspace is constructed and returned to the caller.

If mat is 0 on the next call, MinPolFactor() resumes at the point where it returned the last time, calculates the next cyclic subspace and so on, until the complete space is exhausted.

Attention:
  Since the function stores information across multiple calls in static buffers, your program must not use MinPolFactor() on more than one matrix at the same time.

Parameters:

  mat | Pointer to the matrix, or 0.

Returns:
  One factor of the minmal polynomial or 0 if there are no more factors.

## Variable Documentation

long CharPolSeed = 0

Seed for Characteristic Polynomial.

This variable is used by CharPolFactor() to select the first seed vector. By default, CharPolSeed has the value 0, i.e., the first seed vector is (1,0,...,0). Assigning the value 1 selects the start vector (0,1,...,0) in all subsequent calls to CharPolFactor(). If CharPolSeed is out of bounds, CharPolFactor() will reset it to 0.