[ < ] [ > ]   [ << ] [ 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