ndd_definable_closure


[ Synopsis | Description | Return values | Diagnostics | See also | Back to the NDD package documentation ]

Synopsis

#include "lash-ndd.h"

int ndd_definable_closure(uint1 r, linear_transf *tr, int *pb, uint4 *pm, uint4 *pp);

Description

This function tests whether the transformation matrix A of the linear transformation *tr has a nonzero integer power p such that Ap is diagonalizable and has all its eigenvalues in the set { 0, rm }, where m is a positive or zero integer. It has been shown that this condition being true implies that the effect of unbounded repeated iterations of *tr can be applied to sets of vectors represented by NDDs.

This function does not modify *tr.

Return values

If the test succeeds, then the function writes 1 at the location pb, and sets respectively *pp and *pm to the values of p and m that have been determined. If the test fails, then the function writes 0 at the location pb. In the case of an error, the function returns -1 and does not set *pb, *pm or *pp. Otherwise, it returns 0 and sets lash_errno.

Diagnostics

LASH_ERR_NOT_INIT
The package has not been initialized.
LASH_ERR_NO_MEM
Not enough memory.
LASH_ERR_OVERFLOW
Arithmetic overflow.
LASH_ERR_BAD_VALUE
Invalid parameter value.
LASH_ERR_CORRUPT
Corrupt transformation structure.

See also

linear_transf, ndd_image_by_star_transf.

[ Synopsis | Description | Return values | Diagnostics | See also | Back to the NDD package documentation ]