[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Dimensions and related operations (`ap_dimension.h')

datatype: ap_dim_t
typedef unsigned int ap_dim_t;
Datatype for dimensions.

Special value used for sparse representations, means: "to be ignored". Also used as a result when an error occurs.

datatype: ap_dimension_t
typedef struct ap_dimension_t {
  size_t intdim;  /* Number of integer dimensions */
  size_t realdim; /* Number of real dimensions */
} ap_dimension_t;
Datatype for specifying the dimensionality of an abstract value.

datatype: ap_dimchange_t
typedef struct ap_dimchange_t {
  ap_dim_t* dim;  /* Assumed to be an array of size intdim+realdim */
  size_t intdim ; /* Number of integer dimensions to add/remove */
  size_t realdim; /* Number of real dimensions to add/remove */
} ap_dimchange_t;
Datatype for specifying change of dimension.

The semantics is the following:

Addition of dimensions

dimchange.dim[k] means: add one dimension at dimension k and shift the already existing dimensions greater than or equal to k one step on the right (or increment them).

if k is equal to the size of the vector, then it means: add a dimension at the end.

Repetion are allowed, and means that one inserts more than one dimensions.

Example: linexpr0_add_dimensions([i0 i1 r0 r1], { [0 1 2 2 4],3,1 }) returns [0 i0 0 i1 0 0 r0 r1 0], considered as a vector with 5 integer dimensions and 4 real dimensions.

Removal of dimensions

dimchange.dim[k]: remove the dimension k and shift the dimensions greater than k one step on the left (or decrement them).

Repetitions are meaningless (and are not correct specification).

Example: linexpr0_remove_dimensions([i0 i1 i2 r0 r1 r2], { [0 2 4],2,1 }) returns [i1 r0 r2], considered as a vector with 1 integer dimensions and 2 real dimensions.

datatype: ap_dimchange2_t
typedef struct ap_dimchange_2t {
  ap_dimchange_t* add;    /* If not NULL, specifies the adding new dimensions */
  ap_dimchange_t* remove; /* If not NULL, specifies the removal of dimensions */
} ap_dimchange2_t;
Datatype for specifying a transformation composed of the addition and the removal of dimensions. Used by functions ap_abstract0_apply_dimchange2, ap_environment_dimchange2, and ap_abstract1_change_environment..

datatype: ap_dimperm_t
typedef struct ap_dimperm_t {
  ap_dim_t* dim; /* Array assumed to be of size size */
  size_t size;
} ap_dimperm_t;
Datatype for permutations.

Represents the permutation i -> dimperm.p[i] for 0<=i<dimperm.size.

Manipulating changes of dimensions  
Manipulating permutations of dimensions  

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on September, 10 2009 using texi2html