NAME

get_string_why_int_vector_is_not_permutation - Explain why input is not 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 get_string_why_int_vector_is_not_permutation
(
	const Int_vector *vp,
	int start_value,
	char *out_buf,
	size_t buf_size
);

DESCRIPTION

This is a helper function complementing int_vector_is_permutation(). Once you know an int vector is NOT a permutation, as defined for that function, you can use this function to offer one reason why. The output is supplied as a C-style string written into the buffer provided by 'out_buf' and 'buf_size.' If the input is, in fact, a permutation, then the output string is the empty string. Lazy programmers can thus even use this function as a roundabout way to avoid calling int_vector_is_permutation().

RETURNS

This returns ERROR if we cannot allocate the auxiliary array this routine needs, if the output pointer out_buf equals NULL, or if buf_size is zero; also, an error string is generated. Otherwise this returns NO_ERROR.

RELATED

int_vector_is_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 , int_vector_is_permutation