| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
typedef unsigned int ap_dim_t; |
typedef struct ap_dimension_t {
size_t intdim; /* Number of integer dimensions */
size_t realdim; /* Number of real dimensions */
} ap_dimension_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;
|
The semantics is the following:
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.
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.
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;
|
ap_abstract0_apply_dimchange2,
ap_environment_dimchange2, and
ap_abstract1_change_environment..
typedef struct ap_dimperm_t {
ap_dim_t* dim; /* Array assumed to be of size size */
size_t size;
} ap_dimperm_t;
|
Represents the permutation i -> dimperm.p[i] for
0<=i<dimperm.size.
Manipulating changes of dimensions Manipulating permutations of dimensions
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |