NAME

int_vector_is_permutation - Test if input contains a permutation

SYNOPSIS

#include "l/l_int_vector.h"

Example compile flags (system dependent):
  -DLINUX_X86_64 -DLINUX_X86_64_OPTERON  -DGNU_COMPILER 
   -I/home/kobus/include
   -L/home/kobus/misc/load/linux_x86_64_opteron -L/usr/lib/x86_64-linux-gnu
  -lKJB                               -lfftw3  -lgsl -lgslcblas -ljpeg  -lSVM -lstdc++                    -lpthread -lSLATEC -lg2c    -lacml -lacml_mv -lblas -lg2c      -lncursesw 


int int_vector_is_permutation
(
	const Int_vector *vp,
	int start_value,
	int *result
);

DESCRIPTION

This is a predicate that tests whether the contents of the Int_vector constitute a permutation (possibly with an offset value). If the input pointer vp equals NULL or *vp contains zero elements, the result is trivially true. Otherwise, suppose vp -> size equals N. Informally, this tests whether the vector is a "shuffling" of the integers
 start_value, start_value+1, . . ., start_value+N-1
without any repetitions or missing numbers. To be more formal, this tests whether the function p is a permutation (a.k.a. a bijection, a.k.a. a one-to-one mapping from D onto D) where p and D are defined like so: | p : D --> D
 D = {0, 1, 2, . . ., N-1}
 p(i) = vp -> elements[i] - start_value

RETURNS This returns ERROR if we cannot allocate the auxiliary array this routine needs, or if output parameter 'result' equals NULL. Otherwise this returns NO_ERROR and sets *result to TRUE or FALSE. TRUE indicates that the input is a permutation (relative to start_value) as defined above.

RELATED

get_string_why_int_vector_is_not_permutation

DISCLAIMER

This software is not adequatedly tested. It is recomended that results are checked independantly where appropriate.

AUTHOR

Andrew Predoehl

DOCUMENTER

Andrew Predoehl

SEE ALSO

get_zero_int_vector , get_unity_int_vector , get_initialized_int_vector , ra_get_target_int_vector , create_int_vector , free_int_vector , vp_get_indexed_int_vector , get_zero_indexed_int_vector , get_target_indexed_int_vector , add_int_vectors , subtract_int_vectors , ow_add_int_vectors , ow_subtract_int_vectors , get_random_index_vector , split_int_vector_vector , split_int_vector , copy_int_vector_vector , copy_int_vector , copy_int_vector_section , read_int_vector , fp_read_int_vector , fp_read_raw_int_vector , fp_read_int_vector_with_header , fp_read_ascii_int_vector , fp_read_vector_length_header , write_col_int_vector , fp_write_col_int_vector , fp_write_col_int_vector_with_title , write_col_int_vector_with_header , fp_write_col_int_vector_with_header , write_row_int_vector , fp_write_row_int_vector , fp_write_row_int_vector_with_title , fp_write_vector_length_header , write_raw_int_vector , fp_write_raw_int_vector , get_target_int_vector_vector , free_int_vector_vector , get_target_int_v3 , free_int_v3 , int_vector_binary_search , int_vector_linear_search , sum_int_vector_elements , read_int_vector_vector , fp_read_int_vector_vector , fp_read_raw_int_vector_vector , fp_read_formatted_int_vector_vector , write_int_vector_vector , fp_write_int_vector_vector , write_raw_int_vector_vector , fp_write_raw_int_vector_vector , fp_write_raw_int_vector_vector_header , sget_int_vector , sget_positive_int_vector , sget_non_negative_int_vector , ow_copy_int_vector , min_int_vector_element , max_int_vector_element , get_max_int_vector_element , get_min_int_vector_element , multiply_int_vector_by_int_scalar , ow_multiply_int_vector_by_int_scalar , add_int_scalar_to_int_vector , int_set_difference , is_element_in_int_vector , get_int_dot_product , int_vector_magnitude , sum_int_vector_squared_elements , check_same_int_vector_lengths , max_abs_int_vector_difference , get_string_why_int_vector_is_not_permutation