i4lib
    
    
    
      i4lib,
      a MATLAB code which
      contains many utility routines for integer 32 bit arithmetic.
    
    
      Licensing:
    
    
      The information on this web page is distributed under the MIT license.
    
    
      Languages:
    
    
      i4lib is available in
      a C version and
      a C++ version and
      a Fortran77 version and
      a Fortran90 version and
      a MATLAB version and
      an Octave version and
      a Python version.
    
    
      Related Programs:
    
    
      
      i4lib_test
    
    
      
      c8lib,
      a MATLAB code which
      implements certain elementary functions for "C8"
      or complex 64 bit variables;
    
    
      
      l4lib,
      a MATLAB code which
      contains many utility routines, using one byte logical (L4)
      variables.
    
    
      
      quaternions,
      a MATLAB code which
      carries out some simple arithmetic operations for quaternions.
    
    
      
      r8lib,
      a MATLAB code which
      contains many utility routines, using real 64 bit arithmetic.
    
    
      Reference:
    
    
      
        - 
          Milton Abramowitz, Irene Stegun,
          Handbook of Mathematical Functions,
          National Bureau of Standards, 1964,
          ISBN: 0-486-61272-4,
          LC: QA47.A34.
         
        - 
          Thomas Cormen, Charles Leiserson, Ronald Rivest,
          Introduction to Algorithms,
          MIT Press, 2001,
          ISBN: 0262032937,
          LC: QA76.C662.
         
        - 
          Albert Nijenhuis, Herbert Wilf,
          Combinatorial Algorithms for Computers and Calculators,
          Second Edition,
          Academic Press, 1978,
          ISBN: 0-12-519260-6,
          LC: QA164.N54.
         
      
    
    
      Source Code:
    
    
      
        - 
          boolean_to_string.m,
          returns "True" or "False", given a boolean value.
        
 
        - 
          get_key.m,
          returns a random key for the random number generator.
        
 
        - 
          i4_abs.m,
          returns the absolute value of an I4;
        
 
        - 
          i4_and.m,
          returns the AND of two I4's;
        
 
        - 
          i4_bclr.m,
          sets a given bit of an I4 to 0.
        
 
        - 
          i4_bit_hi1.m,
          returns the location of the highest 1 bit in an I4;
        
 
        - 
          i4_bit_lo0.m,
          returns the location of the lowest 0 bit in an I4;
        
 
        - 
          i4_bit_lo1.m,
          returns the location of the lowest 1 bit in an I4;
        
 
        - 
          i4_bit_reverse.m,
          reverses the bits of an I4.
        
 
        - 
          i4_bset.m,
          sets a given bit of an I4 to 1.
        
 
        - 
          i4_btest.m,
          is true if bit POS of I is a 1.
        
 
        - 
          i4_btest_test.m
        
 
        - 
          i4_ceiling.m,
          rounds an R8 up to the nearest I4;
        
 
        - 
          i4_characteristic.m,
          gives the characteristic for an I4;
        
 
        - 
          i4_choose.m,
          computes the binomial coefficient C(N,K) as an I4;
        
 
        - 
          i4_choose_check.m,
          checks whether the binomial coefficient C(N,K) can be computed
          without overflow;
        
 
        - 
          i4_choose_log.m,
          computes the logarithm of the binomial coefficient C(N,K);
        
 
        - 
          i4_div_rounded.m,
          computes the rounded result of I4 division.
        
 
        - 
          i4_division.m,
          computes the rounded result of I4 division.
        
 
        - 
          i4_divp.m,
          returns the smallest multiple of J greater than or equal to an I4;
        
 
        - 
          i4_factorial.m,
          computes the factorial of an I4;
        
 
        - 
          i4_factorial_log.m,
          computes the logarithm of N!;
        
 
        - 
          i4_factorial2.m,
          computes the double factorial as an I4;
        
 
        - 
          i4_factorial2_values.m,
          returns selected values of the double factorial function..
        
 
        - 
          i4_fall.m,
          computes a falling factorial as an I4.
        
 
        - 
          i4_fall_values.m,
          returns selected values of the falling factorial function..
        
 
        - 
          i4_floor.m,
          computes the "floor" of an I4.
        
 
        - 
          i4_fraction.m,
          computes a ratio and returns an I4 result.
        
 
        - 
          i4_gcd.m,
          returns the greatest common divisor of two I4's;
        
 
        - 
          i4_gcdb.m,
          returns the greatest common divisor of the form K^N of two I4's;
        
 
        - 
          i4_huge.m,
          returns a huge I4;
        
 
        - 
          i4_huge_normalizer.m,
          returns the "normalizer" for I4_HUGE.
        
 
        - 
          i4_is_even.m,
          is true if an I4 is even;
        
 
        - 
          i4_is_integer.m,
          is true if an I4 is an integer value;
        
 
        - 
          i4_is_odd.m,
          is true if an I4 is odd;
        
 
        - 
          i4_is_power_of_2.m,
          is true if an I4 is a power of 2;
        
 
        - 
          i4_is_power_of_10.m,
          is true if an I4 is a power of 10;
        
 
        - 
          i4_is_prime.m,
          is true if an I4 is prime number;
        
 
        - 
          i4_lcm.m,
          returns the least common multiple of two I4's;
        
 
        - 
          i4_lcm_12n.m,
          returns the least common multiple of the integer from 1 to N;
        
 
        - 
          i4_log_2.m,
          returns the integer part of the logarithm base 2 of an I4;
        
 
        - 
          i4_log_10.m,
          returns the integer part of the logarithm base 10 of an I4;
        
 
        - 
          i4_log_i4.m,
          logarithm of an I4 to an I4 base;
        
 
        - 
          i4_log_r8.m,
          logarithm of an I4 to an R8 base;
        
 
        - 
          i4_mant.m,
          returns the mantissa of a real number as an I4;
        
 
        - 
          i4_max.m,
          returns the maximum of two I4's;
        
 
        - 
          i4_min.m,
          returns the minimum of two I4's;
        
 
        - 
          i4_mod_inv.m,
          computes the inverse of an I4 modulo another I4.
        
 
        - 
          i4_moddiv.m,
          breaks an I4 into a multiple of a divisor and a remainder;
        
 
        - 
          i4_modp.m,
          returns the nonnegative remainder of I4 division;
        
 
        - 
          i4_not.m,
          returns the NOT of an I4 with respect to a maximum value;
        
 
        - 
          i4_or.m,
          returns the OR of two I4's;
        
 
        - 
          i4_power.m,
          returns the value of the J-th power of an I4;
        
 
        - 
          i4_rise.m,
          computes a rising factorial as an I4;
        
 
        - 
          i4_rise_values.m,
          returns selected values of the rising factorial function;
        
 
        - 
          i4_sign.m,
          returns the sign of an I4.
        
 
        - 
          i4_sign3.m,
          returns the three-way sign of an I4.
        
 
        - 
          i4_swap.m,
          swaps two I4's.
        
 
        - 
          i4_swap3.m,
          swaps three I4's;
        
 
        - 
          i4_to_angle.m,
          maps I4's to points on a circle;
        
 
        - 
          i4_to_digits_binary.m,
          determines the last N binary digits of an I4;
        
 
        - 
          i4_to_digits_decimal.m,
          determines the last N decimal digits of an I4;
        
 
        - 
          i4_to_fac.m,
          converts an I4 into a product of prime factors;
        
 
        - 
          i4_to_halton.m,
          converts an I4 to the I-th Halton number;
        
 
        - 
          i4_to_isbn.m,
          converts an I4 to its ISBN representation;
        
 
        - 
          i4_to_l4.m,
          converts an I4 to an L4;
        
 
        - 
          i4_to_pascal.m,
          converts an I4 to a pair of indices in Pascal's triangle;
        
 
        - 
          i4_to_pascal_degree.m,
          converts an I4 to the degree (sum) of the corresponding pair 
          of indices in Pascal's triangle;
        
 
        - 
          i4_to_triangle_lower.m,
          converts an I4 to a pair of indices in a lower triangle;
        
 
        - 
          i4_to_triangle_upper.m,
          converts an I4 to a pair of indices in an upper triangle;
        
 
        - 
          i4_uniform_ab.m,
          returns a pseudorandom I4 between A and B;
        
 
        - 
          i4_unswap3.m,
          unswaps three I4's;
        
 
        - 
          i4_walsh_1d.m,
          evaluates the Walsh function;
        
 
        - 
          i4_width.m,
          returns the printing "width" of an I4;
        
 
        - 
          i4_wrap.m,
          forces an I4 to lie between given limits;
        
 
        - 
          i4_xor.m,
          returns the exclusive OR of two I4's;
        
 
        - 
          i4block_print.m,
          prints an I4BLOCK;
        
 
        - 
          i4col_compare.m,
          compares two columns of an I4COL;
        
 
        - 
          i4col_find.m,
          searches an I4COL for a given column vector;
        
 
        - 
          i4col_find_item.m,
          searches an I4COL for a given scalar value;
        
 
        - 
          i4col_find_pair_wrap.m,
          wrap-searches an I4COL for a pair of values;
        
 
        - 
          i4col_first_index.m,
          indexes the first occurrence of values in an I4COL.
        
 
        - 
          i4col_sort_a.m,
          ascending sorts the columns of an I4COL;
        
 
        - 
          i4col_sort_d.m,
          descending sorts the columns of an I4COL;
        
 
        - 
          i4col_sort2_a.m,
          ascending sorts the elements of each column of an I4COL;
        
 
        - 
          
          i4col_sorted_singleton_count.m,
          counts the number of singletons in a sorted I4COL;
        
 
        - 
          i4col_sorted_unique.m,
          returns the unique elements in a sorted I4COL;
        
 
        - 
          i4col_sorted_unique_count.m,
          counts the number of unique elements in a sorted I4COL;
        
 
        - 
          
          i4col_swap.m,
          swaps two columns of an I4COL;
        
 
        - 
          
          i4i4_sort_a.m,
          ascending sorts a pair of integers;
        
 
        - 
          
          i4i4i4_sort_a.m,
          ascending sorts a triple of integers;
        
 
        - 
          
          i4int_to_r8int.m,
          maps an I4 interval to an R8 interval;
        
 
        - 
          i4list_print.m,
          prints an I4LIST.
        
 
        - 
          i4mat_border_add.m,
          adds a "border" to an I4MAT.
        
 
        - 
          i4mat_border_cut.m,
          cuts the "border" of an I4MAT.
        
 
        - 
          i4mat_elim.m,
          performs exact Gauss elimination on an I4MAT;
        
 
        - 
          i4mat_flip_cols.m,
          flips the columns in an I4MAT;
        
 
        - 
          i4mat_flip_rows.m,
          flips the rows in an I4MAT;
        
 
        - 
          i4mat_histogram.m,
          returns a histogram of the entries of an I4MAT;
        
 
        - 
          i4mat_indicator.m,
          returns the indicator matrix as an I4MAT.
        
 
        - 
          i4mat_is_binary.m,
          is true if an I4MAT has only 0 and 1 entries;
        
 
        - 
          i4mat_is_integer.m,
          is TRUE if all entries of an I4MAT are actually integers;
        
 
        - 
          i4mat_l1_inverse.m,
          returns the inverse of a unit lower triangular I4MAT;
        
 
        - 
          i4mat_max.m,
          returns the maximum element in an I4MAT.
        
 
        - 
          i4mat_max_index.m,
          returns the location of the maximum element of an I4MAT;
        
 
        - 
          i4mat_min.m,
          returns the minimum element in an I4MAT.
        
 
        - 
          i4mat_min_index.m,
          returns the location of the minimum element of an I4MAT;
        
 
        - 
          i4mat_perm.m,
          applies a permutation to the rows and columns of an I4MAT;
        
 
        - 
          i4mat_perm_uniform.m,
          selects a random permutation of an I4MAT;
        
 
        - 
          i4mat_perm2.m,
          applies a row and a column permutation to an I4MAT;
        
 
        - 
          i4mat_perm2_uniform.m,
          selects random row and column permutations of an I4MAT;
        
 
        - 
          i4mat_print.m,
          prints an I4MAT;
        
 
        - 
          i4mat_print_some.m,
          prints some of an I4MAT;
        
 
        - 
          i4mat_product_elementwise.m,
          computes the elementwise product of two I4MAT's.
        
 
        - 
          i4mat_rank.m,
          computes the rank of an I4MAT;
        
 
        - 
          i4mat_ref.m,
          returns the integer row echelon form of an I4MAT.
        
 
        - 
          i4mat_row_reduce.m,
          divides out a common factor in one row of an I4MAT.
        
 
        - 
          i4mat_row_swap.m,
          swaps two rows of an I4MAT.
        
 
        - 
          i4mat_rref.m,
          returns the integer reduced row echelon form of an I4MAT.
        
 
        - 
          i4mat_rref_solve_binary.m,
          seeks binary solutions (if any) of an integer row reduced echelon form 
          linear system.
        
 
        - 
          i4mat_rref_solve_binary_nz.m,
          seeks binary solutions (if any) of an integer row reduced echelon form 
          linear system, but only consider solutions with exactly NZ nonzeros.
        
 
        - 
          i4mat_rref_system.m,
          considers an underdetermined integer linear system A*x=b, 
          and uses the integer row reduced echelon form (IRREF)
          to find the solvable augmented linear system, with degrees of 
          freedom indicated.
        
 
        - 
          i4mat_sum.m,
          returns the sum of the entries of an I4MAT.
        
 
        - 
          i4mat_transpose.m,
          transposes an I4MAT;
        
 
        - 
          i4mat_transpose_print.m,
          prints an I4MAT, transposed;
        
 
        - 
          
          i4mat_transpose_print_some.m,
          prints some of an I4MAT, transposed;
        
 
        - 
          i4mat_u_solve.m,
          solves an upper triangular linear system involving only integer values.
        
 
        - 
          i4mat_u1_inverse.m,
          returns the inverse of a unit upper triangular I4MAT;
        
 
        - 
          i4mat_uniform_ab.m,
          returns an I4MAT of pseudorandom values;
        
 
        - 
          i4mat_width.m,
          returns the printing width of an I4MAT;
        
 
        - 
          i4row_compare.m,
          compares two rows of an I4ROW.
        
 
        - 
          i4row_find_item.m,
          searches the rows of an I4ROW for a given value.
        
 
        - 
          i4row_find_pair_wrap.m,
          searches the rows of an I4ROW for a given pair of values.
        
 
        - 
          i4row_max.m,
          returns the row maximums of an I4ROW.
        
 
        - 
          i4row_mean.m,
          returns the row means of an I4ROW.
        
 
        - 
          i4row_min.m,
          returns the row minimums of an I4ROW.
        
 
        - 
          i4row_sort_a.m,
          ascending sorts the rows of an I4ROW.
        
 
        - 
          
          i4row_sort_rotate_ascending.m,
          ascending sorts each row of an i4row, with respect to the
          lexicographic ordering, and allowing only rotations of vector
          elements.
        
 
        - 
          i4row_sort_d.m,
          descending sorts the rows of an I4ROW.
        
 
        - 
          i4row_sort2_d.m,
          descending sorts the rows of an I4ROW.
        
 
        - 
          i4row_sorted_unique.m,
          returns the unique rows of an I4ROW.
        
 
        - 
          
          i4row_sorted_unique_count.m,
          counts the unique rows of an I4ROW.
        
 
        - 
          i4row_sum.m,
          returns the row sums of an I4ROW.
        
 
        - 
          i4row_swap.m,
          swaps two rows of an I4ROW.
        
 
        - 
          i4row_variance.m,
          returns the row variances of an I4ROW.
        
 
        - 
          i4rows_to_i4mat.m,
          copies data from a rowwise vector to a columnwise doubly-indexed
          array.
        
 
        - 
          i4vec_add.m,
          returns C = A + B for I4VEC's.
        
 
        - 
          i4vec_amax.m,
          returns the maximum absolute value of an entry in an I4VEC;
        
 
        - 
          i4vec_amax_index.m,
          returns the index of the maximum absolute value
          of an entry in an I4VEC;
        
 
        - 
          i4vec_amin.m,
          returns the minimum absolute value of an entry in an I4VEC;
        
 
        - 
          i4vec_amin_index.m,
          returns the index of the minimum absolute value
          of an entry in an I4VEC;
        
 
        - 
          i4vec_aminz.m,
          returns the minimum nonzero absolute value of an entry in an
          I4VEC;
        
 
        - 
          i4vec_aminz_index.m,
          returns the index of the minimum nonzero absolute value
          of an entry in an I4VEC;
        
 
        - 
          i4vec_ascend_sub.m,
          returns the longest ascending subsequence of an I4VEC;
        
 
        - 
          i4vec_binary_next.m,
          returns the next binary vector.
        
 
        - 
          i4vec_bracket.m,
          searches a sorted I4VEC for successive brackets of a value;
        
 
        - 
          i4vec_choose.m,
          evaluates the generalized binomial coefficient.
        
 
        - 
          i4vec_compare.m,
          compares two I4VEC's;
        
 
        - 
          i4vec_concatenate.m,
          concatenates two I4VEC's;
        
 
        - 
          i4vec_cum.m,
          returns the cumulative sums of an I4VEC;
        
 
        - 
          i4vec_cum0.m,
          returns the cumulative sums of an I4VEC;
        
 
        - 
          i4vec_decrement.m,
          decrements an I4VEC;
        
 
        - 
          i4vec_direct_product.m,
          forms the elements of the direct product of I4VEC's.
        
 
        - 
          i4vec_direct_product2.m,
          forms the elements of the direct product of I4VEC's.
        
 
        - 
          i4vec_dot_product.m,
          computes the dot product of two I4VEC's.
        
 
        - 
          i4vec_eq.m,
          is TRUE if A1 == A2.
        
 
        - 
          i4vec_find.m,
          indexes the first occurrence of a specific value in an I4VEC.
        
 
        - 
          i4vec_first_index.m,
          indexes the first occurrence of values in an I4VEC.
        
 
        - 
          i4vec_frac.m,
          finds the K-th smallest entry of an I4VEC;
        
 
        - 
          i4vec_gcd.m,
          returns the greatest common divisor of the entries of an
          I4VEC;
        
 
        - 
          i4vec_ge.m,
          is TRUE if A1 ≥ A2, for integer vectors A1 and A2,
          with respect to the lexicographic ordering.
        
 
        - 
          i4vec_gt.m,
          is TRUE if A1 %gt; A2, for integer vectors A1 and A2,
          with respect to the lexicographic ordering.
        
 
        - 
          i4vec_heap_a.m,
          sets an I4VEC to a ascending heap;
        
 
        - 
          i4vec_heap_d.m,
          sets an I4VEC to a descending heap;
        
 
        - 
          i4vec_heap_d_extract.m,
          extracts the maximum value from a descending heap.
        
 
        - 
          i4vec_heap_d_insert.m,
          inserts a new value into a descending heap.
        
 
        - 
          i4vec_heap_d_max.m,
          returns the maximum value in a descending heap of integers.
        
 
        - 
          i4vec_histogram.m,
          returns a histogram of the entries of an I4VEC;
        
 
        - 
          i4vec_histogram_masked.m,
          returns a histogram of a masked I4VEC;
        
 
        - 
          i4vec_identity_row.m,
          returns a row of the identity matrix as an I4VEC.
        
 
        - 
          i4vec_imin.m,
          returns the index of the minimum entry in an I4VEC.
        
 
        - 
          i4vec_increment.m,
          increments an I4VEC;
        
 
        - 
          i4vec_index.m,
          returns the first location of a given value in an I4VEC.
        
 
        - 
          i4vec_index_delete_all.m,
          deletes all occurrences of a value from an indexed sorted list;
        
 
        - 
          i4vec_index_delete_dupes.m,
          deletes duplicates from an indexed sorted list.
        
 
        - 
          i4vec_index_delete_one.m,
          deletes one copy of a value from an indexed sorted list.
        
 
        - 
          i4vec_index_insert.m,
          inserts a value in an indexed sorted list.
        
 
        - 
          i4vec_index_insert_unique.m,
          inserts a unique value in an indexed sorted list.
        
 
        - 
          i4vec_index_order.m,
          sorts an integer vector using an index vector.
        
 
        - 
          i4vec_index_search.m,
          searches for a value in an indexed sorted list.
        
 
        - 
          i4vec_indexed_heap_d.m,
          creates a descending heap from an indexed I4VEC.
        
 
        - 
          i4vec_indexed_heap_d_extract.m,
          extracts from heap descending indexed I4VEC.
        
 
        - 
          i4vec_indexed_heap_d_insert.m,
          inserts value into heap descending indexed I4VEC.
        
 
        - 
          i4vec_indexed_heap_d_max.m,
          maximum value in heap descending indexed I4VEC.
        
 
        - 
          i4vec_indicator0.m,
          sets an I4VEC to the indicator vector.
        
 
        - 
          i4vec_indicator1.m,
          sets an I4VEC to the indicator vector.
        
 
        - 
          i4vec_insert.m,
          inserts a value at a particular location in an I4VEC.
        
 
        - 
          i4vec_is_ascending.m,
          is true if an I4VEC is ascending;
        
 
        - 
          i4vec_is_binary.m,
          is true if an I4VEC has only 0 and 1 entries;
        
 
        - 
          i4vec_is_coprime.m,
          is true if all pairs of entries of an I4VEC are coprime;
        
 
        - 
          i4vec_is_descending.m,
          is true if an I4VEC is descending;
        
 
        - 
          i4vec_is_distinct.m,
          is true if the entries of an I4VEC are distinct;
        
 
        - 
          i4vec_is_equal.m,
          is true if two I4VEC's are equal.
        
 
        - 
          i4vec_is_even_all.m,
          is true if all entries of an I4VEC are even.
        
 
        - 
          i4vec_is_even_any.m,
          is true if any entries of an I4VEC are even.
        
 
        - 
          i4vec_is_integer.m,
          is true if an I4VEC is all integer values;
        
 
        - 
          i4vec_is_lt_any.m,
          is true if any A is less than B, for I4VEC's.
        
 
        - 
          
          i4vec_is_negative_any.m,
          is true if any entry of an I4VEC is negative;
        
 
        - 
          i4vec_is_nonpositive_all.m,
          is true if all entries of an I4VEC are nonpositive;
        
 
        - 
          
          i4vec_is_nonzero_any.m,
          is true if any entry of an I4VEC is nonzero;
        
 
        - 
          i4vec_is_odd_all.m,
          is true if all entries of an I4VEC are odd.
        
 
        - 
          i4vec_is_odd_any.m,
          is true if any entries of an I4VEC are odd.
        
 
        - 
          i4vec_is_one.m,
          is true if all entries of an I4VEC are 1;
        
 
        - 
          i4vec_is_permutation.m,
          is true if I4VEC is a permutation of the integer 1 through N.
        
 
        - 
          i4vec_is_zero.m,
          is true if all entries of an I4VEC are 0;
        
 
        - 
          i4vec_lcm.m,
          returns the lowest common multiple of the entries of an I4VEC;
        
 
        - 
          i4vec_le.m,
          is TRUE if A1 ≤ A2, for integer vectors A1 and A2,
          with respect to the lexicographic ordering.
        
 
        - 
          i4vec_lt.m,
          is TRUE if A1 < A2, for integer vectors A1 and A2,
          with respect to the lexicographic ordering.
        
 
        - 
          i4vec_max.m,
          returns the maximum entry in an I4VEC;
        
 
        - 
          i4vec_max_index.m,
          returns the index of the maximum entry in an I4VEC;
        
 
        - 
          i4vec_max_index_last.m,
          returns the index of the last maximum entry in an I4VEC;
        
 
        - 
          i4vec_mean.m,
          returns the mean of an I4VEC;
        
 
        - 
          i4vec_mean_i4.m,
          returns the I4 mean of an I4VEC;
        
 
        - 
          i4vec_median.m,
          returns the median of an I4VEC;
        
 
        - 
          i4vec_merge_a.m,
          merges two ascending-sorted I4VEC's;
        
 
        - 
          i4vec_min.m,
          returns the minimum entry in an I4VEC;
        
 
        - 
          i4vec_min_index.m,
          returns the index of the minimum entry in an I4VEC;
        
 
        - 
          i4vec_min_mv.m,
          determines U(1:N) /\ V for vectors U and a single vector V.
        
 
        - 
          i4vec_ne.m,
          is TRUE if A1 =/= A2, for integer vectors A1 and A2.
        
 
        - 
          i4vec_negone.m,
          returns an I4VEC of -1's;
        
 
        - 
          i4vec_nonzero_count.m,
          counts the nonzero entries in an I4VEC;
        
 
        - 
          i4vec_nonzero_first.m,
          left shifts the nonzero entries in an I4VEC;
        
 
        - 
          i4vec_norm_l0.m,
          returns the l0 "norm" of an I4VEC;
        
 
        - 
          i4vec_one.m,
          returns an I4VEC of 1's;
        
 
        - 
          i4vec_order_type.m,
          determines if an I4VEC is (non)strictly ascending/descending;
        
 
        - 
          i4vec_part.m,
          partitions an integer into N nearly equal parts;
        
 
        - 
          i4vec_part_quick_a.m,
          reorders an I4VEC as part of a quicksort;
        
 
        - 
          i4vec_permute.m,
          permutes an I4VEC in place;
        
 
        - 
          i4vec_permute_uniform.m,
          randomly permutes an I4VEC in place;
        
 
        - 
          i4vec_print.m,
          prints an I4VEC;
        
 
        - 
          i4vec_print_mask.m,
          prints masked elements of an I4VEC;
        
 
        - 
          i4vec_print_part.m,
          prints part of an I4VEC;
        
 
        - 
          i4vec_print_select.m,
          prints selected elements of an I4VEC;
        
 
        - 
          i4vec_print_some.m,
          prints some of an I4VEC;
        
 
        - 
          i4vec_red.m,
          divides out common factors in an I4VEC;
        
 
        - 
          i4vec_reverse.m,
          reverses the order of the entries of an I4VEC;
        
 
        - 
          i4vec_rotate.m,
          "rotates" the entries of an I4VEC by M positions;
        
 
        - 
          i4vec_run_count.m,
          counts the runs in an I4VEC;
        
 
        - 
          i4vec_search_binary_a.m,
          uses binary search on an ascending sorted I4VEC;
        
 
        - 
          i4vec_search_binary_d.m,
          uses binary search on a descending sorted I4VEC;
        
 
        - 
          i4vec_shift_circular.m,
          performs a circular shift on an I4VEC.
        
 
        - 
          i4vec_sort_bubble_a.m,
          ascending sorts an I4VEC using bubble sort;
        
 
        - 
          i4vec_sort_bubble_d.m,
          descending sorts an I4VEC using bubble sort;
        
 
        - 
          i4vec_sort_heap_a.m,
          ascending sorts an I4VEC using heap sort;
        
 
        - 
          i4vec_sort_heap_d.m,
          descending sorts an I4VEC using heap sort;
        
 
        - 
          i4vec_sort_heap_index_a.m,
          computes an index vector to ascending sort an I4VEC;
        
 
        - 
          i4vec_sort_heap_index_d.m,
          computes an index vector to descending sort an I4VEC;
        
 
        - 
          i4vec_sort_insert_a.m,
          ascending sorts an I4VEC using insertion sort;
        
 
        - 
          i4vec_sort_insert_d.m,
          descending sorts an I4VEC using insertion sort;
        
 
        - 
          i4vec_sort_quick_a.m,
          ascending sorts an I4VEC using quick sort;
        
 
        - 
          i4vec_sort_shell_a.m,
          ascending sorts an I4VEC using Shell's sort;
        
 
        - 
          i4vec_sorted_undex.m,
          returns unique sorted indexes for a sorted I4VEC.
        
 
        - 
          i4vec_sorted_unique.m,
          returns the unique elements in a sorted I4VEC;
        
 
        - 
          i4vec_sorted_unique_count.m,
          counts the number of unique elements in a sorted I4VEC;
        
 
        - 
          i4vec_sorted_unique_hist.m,
          creates a histogram of the unique elements in a sorted I4VEC;
        
 
        - 
          i4vec_split_unsort.m,
          "splits" an unsorted I4VEC based on a splitting value;
        
 
        - 
          i4vec_std.m,
          returns the standard deviation of an I4VEC;
        
 
        - 
          i4vec_sum.m,
          sums the entries of an I4VEC.
        
 
        - 
          i4vec_sum_vec.m,
          computes the pairwise sum of two I4VEC's.
        
 
        - 
          i4vec_swap.m,
          swaps two I4VEC's;
        
 
        - 
          i4vec_transpose_print.m,
          prints an I4VEC "transposed";
        
 
        - 
          i4vec_undex.m,
          returns unique sorted indexes for an I4VEC.
        
 
        - 
          i4vec_uniform_ab.m,
          returns a pseudorandom I4VEC in a given range;
        
 
        - 
          i4vec_unique_count.m,
          counts the number of unique elements in an unsorted I4VEC;
        
 
        - 
          i4vec_unique_index.m
        
 
        - 
          i4vec_value_index.m,
          indexes I4VEC entries equal to a given value;
        
 
        - 
          i4vec_value_num.m,
          counts I4VEC entries equal to a given value;
        
 
        - 
          i4vec_variance.m,
          returns the variance of an I4VEC;
        
 
        - 
          i4vec_width.m,
          returns the "width" of an I4VEC;
        
 
        - 
          i4vec_wrap.m,
          wraps the entries of an I4VEC between LO and HI;
        
 
        - 
          i4vec2_compare.m,
          compares pairs of integers stored in two vectors;
        
 
        - 
          i4vec2_print.m,
          prints a pair of I4VECs.
        
 
        - 
          i4vec2_sort_a.m,
          ascending sorts an I4VEC2;
        
 
        - 
          i4vec2_sort_d.m,
          descending sorts an I4VEC2;
        
 
        - 
          i4vec2_sort_insert_a.m,
          uses insertion to ascending sort an I4VEC2;
        
 
        - 
          i4vec2_sorted_unique.m,
          finds unique elements in a sorted I4VEC2;
        
 
        - 
          
          i4vec2_sorted_unique_count.m,
          counts unique elements in a sorted I4VEC2;
        
 
        - 
          
          intspace.m,
          returns N roughly equally spaced integers between A and B;
        
 
        - 
          ksub_next4.m,
          selects the next subset of size K from a set of size N.
        
 
        - 
          l4_to_i4.m,
          converts an L4 to an I4;
        
 
        - 
          l4_xor.m,
          evaluates the exclusive OR of two L4's.
        
 
        - 
          pascal_to_i4.m,
          converts a pair of indices in Pascal's triangle to a linear index;
        
 
        - 
          perm0_check.m,
          checks a permutation of (0,...,N-1)
        
 
        - 
          perm0_uniform.m,
          selects a random permutation of 0, ...,N-1;
        
 
        - 
          perm1_check.m,
          checks a permutation of (1,...,N);
        
 
        - 
          perm1_uniform.m,
          selects a random permutation of 1, ..., N;
        
 
        - 
          permutation_symbol.m,
          evaluates the Levi-Civita permutation symbol.
        
 
        - 
          prime.m,
          a list of prime numbers.
        
 
        - 
          r8_uniform_ab.m,
          returns a random R8 between given limits.
        
 
        - 
          r8vec_is_integer.m,
          is true if all entries of an R8VEC are integers;
        
 
        - 
          r8vec_print.m,
          prints an R8VEC;
        
 
        - 
          sort_heap_external.m,
          external sorts a list of values into ascending order;
        
 
        - 
          triangle_lower_to_i4.m,
          converts a pair of indices in a lower triangle to an I4.
        
 
        - 
          triangle_upper_to_i4.m,
          converts a pair of indices in an upper triangle to an I4.
        
 
      
    
    
    
      Last revised on 23 June 2024.