// ISS_FUNC.H
// Function declarations
// © 2021 Peter J. Meyer
// Functions which take a fixed number of arguments.
void adjust_direction_table(int parity); // DIRTABLE.C
int all_sites_visited(void); // Q&A.C
void allocate_arrays(void); // ALLOC.C
void allocate_memory_for_stack(void); // STACK1.C
void analyse_data(void); // MEAS.C
void assign_initial_spins(void); // INITSPIN.C
void calculate_transition_probabilities(void); // TRANSIT.C
void check_if_output_file_exists(void); // FILE_IO.C
void check_stack_is_empty(char *location); // STACK1.C
void copy_sites(void); // S&B.C
void copy_spin_assignment(void); // SPINS.C
void display_array_allocation_error(int errno, int err_flag); // ERRMSG.C
void display_array_free_error(int errno); // ERRMSG.C
void display_copyright(void); // TEXTOUT.C
void display_file_error_message(char *operation,
char *file_type, char *filename); // ERRMSG.C
void display_input_data_error(char *parameter); // ERRMSG.C
void display_input_data_format(void); // TEXTOUT.C
void display_map(char *filepath,int context); // DISP_LAT.C
void display_missing_data_message(char *parameter); // ERRMSG.C
void display_startup_info(void); // TEXTOUT.C
void display_syntax(void); // TEXTOUT.C
void do_checkerboard_ssf_sweep(void); // SINGLE.C
void do_random_ssf_sweep(void); // SINGLE.C
int file_exists(char *filepath); // FILE_IO.C
void flip_initial_spin_to_up(void); // SPINFLIP.C
int flip_spin(int s); // SPINFLIP.C
void free_arrays(void); // ALLOC.C
int get_abs_internal_energy(void); // SPINS.C
int get_abs_magnetization(int distinguished_spin_value); // SPINS.C
double get_autocorrelation(void); // AUTOCORR.C
double get_critical_temperature(void); // CRITTEMP.C
void get_exe_name(char *argv[]); // READ.C
int get_percolation_threshold(void); // PERC.C
void init_ran1(unsigned int seed); // RAN1.C
int inverse_direction(int parity, int r); // DIRTABLE.C
void mark_all_sites_unvisited(void); // S&B.C
void mark_all_sites_unvisited_and_clear_path(void); // S&B.C
void missing_code(char *file, int linenum); // ERRMSG.C
void move_str_left(char *str1, char *str2); // CHAR_AUX.C
double norm_internal_energy(void); // MEAS.C
double magnetization_per_spin(void); // MEAS.C
unsigned long num_ran1_calls(void); // RAN1.C
int open_bonds(void); // BONDS.C
int open_file(char *filename, char *mode, FILE **file); // FILE_IO.C
void perform_equilibrations(void); // EQUIL.C
void perform_single_spin_flip_sweep(void); // SINGLE.C
void perform_swendsen_wang_sweep(void); // SW-WANG.C
void perform_wolff_sweep(void); // WOLFF.C
void precompute_nn_sites(void); // PRECOMP.C
int read_command_line(int i, char *argv[]); // READ.C
void read_input_data(void); // READ.C
int read_line(FILE *input_file); // FILE_IO.C
void remove_leading_spaces(char *str); // CHAR_AUX.C
void remove_outer_spaces(char *str); // CHAR_AUX.C
void remove_trailing_spaces(char *str); // CHAR_AUX.C
void remove_trailing_zeros(char *num_str); // CHAR_AUX.C
void restore_spin_assignment(void); // SPINS.C
int save_measurements(void); // FILE_IO.C
int save_spin_assignment(void); // FILE_IO.C
char *seconds_to_time_str(unsigned long num_seconds,
char *time_str); // CHAR_AUX.C
void set_critical_temperatures(void); // CRITTEMP.C
void set_direction_table(void); // DIRTABLE.C
void set_directionalities(void); // DIRTABLE.C
void set_parameters(void); // SETPARAM.C
void set_up_filenames(void); // FILE_IO.C
void set_up_configuration(void); // S&B.C
void show_notice(void); // TEXTOUT.C
void skip_spaces(char** pp); // CHAR_AUX.C
char *sltoa_commas(long x, char *str); // CHAR_AUX.C
void spaces(char *str, int num_spaces); // CHAR_AUX.C
int stack_empty(void); // STACK1.C
char *system_date(char *date_str, int format); // CHAR_AUX.C
char *system_time(char *time_str, int seconds); // CHAR_AUX.C
void trace_all_clusters(struct _all_cluster_trace_data *actd); // CLUSTERS.C
char *ultoa_commas(unsigned long x, char *str); // CHAR_AUX.C
void update_measurements(int time_slice_num); // EQUIL.C
void write_equilibration_results(void); // RESULTS.C
void write_percolation_results(int num_iterations_done); // RESULTS.C
void write_stack_data(FILE *of); // STACK1.C
// Functions which take a variable number of arguments.
void clear_stack(void); // STACK1.C
void do_ising_spin_flip(int spin, int i, int j, ...); // SPINFLIP.C
void do_q_state_potts_spin_flip(int spint, int new_spin,
int i, int j, ...); // SPINFLIP.C
int get_nn_site_in_dir(int r, int i, int j, ...); // Q&A.C
void get_nn_sites(int i, int j, ...); // Q&A.C
int initial_spin_at_occupied_site(int i, int j, ...); // SPINS.C
int nn_spin_sum(int i, int j, ...); // SPINS.C
int pop_from_stack(short int *iptr, short int *jptr, ...); // STACK1.C
int pop_from_stack_with_r(short int *rptr,
short int *iptr, short int *jptr, ...); // STACK1.C
int push_onto_stack(short int i, short int j, ...); // STACK1.C
int push_onto_stack_with_r(short int r,
short int i, short int j, ...); // STACK1.C
int spin_at_occupied_site(int i, int j, ...); // SPINS.C
int spin_at_site(int i, int j, ...); // SPINS.C
int sum_kronecker_deltas(int spin_value, int i, int j, ...); // SPINS.C
void zero_measurements(void); // MEAS.C
// Functions with names #defined in ISS_DEF.H.
void INIT_PRNG1(unsigned int seed); // RAN1.C
double PRNG1(void); // RAN1.C
double NUM_PRNG1_CALLS(void); // RAN1.C
void RESET_NUM_PRNG1_CALLS(void); // RAN1.C
int PRNG1_PERIOD_EXCEEDED(void); // RAN1.C