## Applying Permutations

Function: int gsl_permute (const size_t * p, double * data, size_t stride, size_t n)
This function applies the permutation p to the array data of size n with stride stride.

Function: int gsl_permute_inverse (const size_t * p, double * data, size_t stride, size_t n)
This function applies the inverse of the permutation p to the array data of size n with stride stride.

Function: int gsl_permute_vector (const gsl_permutation * p, gsl_vector * v)
This function applies the permutation p to the elements of the vector v, considered as a row-vector acted on by a permutation matrix from the right, @math{v' = v P}. The @math{j}-th column of the permutation matrix @math{P} is given by the @math{p_j}-th column of the identity matrix. The permutation p and the vector v must have the same length.

Function: int gsl_permute_vector_inverse (const gsl_permutation * p, gsl_vector * v)
This function applies the inverse of the permutation p to the elements of the vector v, considered as a row-vector acted on by an inverse permutation matrix from the right, @math{v' = v P^T}. Note that for permutation matrices the inverse is the same as the transpose. The @math{j}-th column of the permutation matrix @math{P} is given by the @math{p_j}-th column of the identity matrix. The permutation p and the vector v must have the same length.