#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;ilength;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;ilength;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;ilength;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;ilength;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;ilength;i++) { inv_permutation->perm[permutation->perm[i]] = i; } }