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

### Change of dimension of vectors

#### At the end

Function: void vector_add_dimensions (pkint_t* q2, const pkint_t* q1, size_t size, int dimsup)
If dimsup is positive, adds `dimsup` dimensions at the end of q1 and puts the result in q2; If dimsup is negative, deletes the `-dimsup` last dimensions of q1 and puts the result in q2. q2 is supposed to have a sufficient size.

#### Anywhere

Function: void vector_add_dimensions_multi (pkint_t* q2, const pkint_t* q1, size_t size, const dimsup_t* tab, int multi)
Fills the vector q2 by inserting new columns with null values in vector q1, according to the array tab of size multi.

For each element `dimsup` of that array, `dimsup.nbdims` dimensions are inserted starting from rank `dimsup.pos` (of the initial vector). The coefficient `q1[polka_dec+dimsup.pos]` is pushed on the right. For instance, if the array tab is `[(0,2);(1,1);(2,3)]`,

the vector
`[d,b, a_0, a_1, a_2,a_3,...,a_{d-1}]`
becomes
`[d,b,0,0,a_0,0,a_1,0,0,0,a_2,a_3,...,a_{d-1}]`.
If the strict option is set, `[d,b,s,a_0,...,a_{d-1}]` becomes `[d,b,s,0,0,a_0,0,a_1,0,0,0,,a_2,a_3,...,a_{d-1}]`.

The array tab is supposed to be sorted in ascending order w.r.t. `tab[i].pos`. q2 is supposed to have a sufficient size.

Function: void vector_remove_dimensions_multi (pkint_t* q2, const pkint_t* q1, size_t size, const dimsup_t* tab, int multi)
Fills the vector q2 by deleting some columns in vector q1, according to the array tab of size multi.

For each element `dimsup` of that array, `dimsup.nbdims` dimensions are deleted starting from rank `dimsup.pos` (of the initial vector). For instance, if the array tab is `[(0,2);(3,1);(5,3)]`,

the vector
`[d,b,a_0,a_1,a_2,a_3,a_4,a_5,a_6,a_7,a_8,...,a_{d-1}]`
becomes
`[d,b, a_2, a_4, a_8, ...,a_{d-1}]`.
The array tab is supposed to be sorted in ascending order w.r.t. `tab[i].pos`. q2 is supposed to have a sufficient size.

#### Change of dimensions together with permutation

Function: void vector_add_permute_dimensions (pkint_t* newq, const pkint_t* q, size_t size, int dimsup, const int* permut)
dimsup is supposed to be positive or null. Add dimsup dimensions to q and apply the permutation permutation. The result is stored in newq. The array permutation is supposed to be of size `size+dimsup-polka_dec`.

The permutation permutation defines a permutation (i.e., a bijection) from `[0..(size+dimsup-polka_dec)-1` to itself. BE CAUTIOUS: value `0` in the permutation means columns `polka_dec`.

Function: void vector_permute_remove_dimensions (pkint_t* newq, const pkint_t* q, size_t size, int dimsup, const int* permut)
dimsup is supposed to be strictly positive. Apply the permutation permutation to q, then delete the last dimsup dimensions. The result is stored in newq. The array permutation is supposed to of size `size-dimsup-polka_dec`.

The permutation permutation defines a permutation (i.e., a bijection) from `[0..(size-polka_dec)-1` to itself. BE CAUTIOUS: value `0` in the permutation means columns `polka_dec`.

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

This document was generated on October, 27 2006 using texi2html