#include "BSprivate.h"
/*+ BSperm_ivec - Permute an integer vector according to a permutation
Input Parameters:
. in_vec - the vector to permute
. permutation - the permutation
Output Parameters:
. out_vec - the permuted vector
Returns:
void
+*/
void BSperm_ivec(int *in_vec, int *out_vec, BSpermutation *permutation)
{
int i;
for (i=0;i<permutation->length;i++) {
out_vec[permutation->perm[i]] = in_vec[i];
}
}
/*+ BSiperm_ivec - Permute an integer vector according to an inverse permutation
Input Parameters:
. in_vec - the vector to permute
. permutation - the permutation
Output Parameters:
. out_vec - the permuted vector
Returns:
void
+*/
void BSiperm_ivec(int *in_vec, int *out_vec, BSpermutation *permutation)
{
int i;
for (i=0;i<permutation->length;i++) {
out_vec[i] = in_vec[permutation->perm[i]];
}
}
/*+ BSperm_dvec - Permute a DP vector according to a permutation
Input Parameters:
. in_vec - the vector to permute
. permutation - the permutation
Output Parameters:
. out_vec - the permuted vector
Returns:
void
+*/
void BSperm_dvec(FLOAT *in_vec, FLOAT *out_vec, BSpermutation *permutation)
{
int i;
for (i=0;i<permutation->length;i++) {
out_vec[permutation->perm[i]] = in_vec[i];
}
}
/*+ BSiperm_dvec - Permute a DP vector according to an inverse permutation
Input Parameters:
. in_vec - the vector to permute
. permutation - the permutation
Output Parameters:
. out_vec - the permuted vector
Returns:
void
+*/
void BSiperm_dvec(FLOAT *in_vec, FLOAT *out_vec, BSpermutation *permutation)
{
int i;
for (i=0;i<permutation->length;i++) {
out_vec[i] = in_vec[permutation->perm[i]];
}
}
/*+ BSperm2iperm - Compute an inverse permutation from a permutation
Input Parameters:
. permutation - the permutation
Output Parameters:
. permutation - the inverse permutation
Returns:
void
+*/
void BSperm2iperm(BSpermutation *permutation, BSpermutation *inv_permutation)
{
int i;
for (i=0;i<permutation->length;i++) {
inv_permutation->perm[permutation->perm[i]] = i;
}
}
syntax highlighted by Code2HTML, v. 0.9.1