Ian Jauslin
167980ea43
The update to version 1.5 is rather substantial, and introduces some minor backward-incompatibilities: * The header "#!symbols" has been replaced by "#!virtual_fields" * Multiplying polynomials using the '*' symbol is no longer supported (or, rather, the symbolic capabilities of meankondo were enhanced, and the syntax has been changed). * 'meantools exp' has been removed (its functionality is now handled by other means) * 'meantoolds derive' has been replaced by 'meantools differentiate' * The symbolic capabilities were enhanced: polynomials can now be multiplied, added, exponentiated, and their logarithms can be taken directly in the configuration file. * The flow equation can now be processed after being computed using the various "#!postprocess_*" entries. * Deprecated kondo_preprocess. * Compute the mean using an LU decomposition if possible. * More detailed checks for syntax errors in configuration file. * Check that different '#!group' entries are indeed uncorrelated. * New flags in meankondo: '-p' and '-A'. * New tool: meantools expand. * Improve conversion to LaTeX using meantools-convert * Assign terms randomly to different threads. * Multiple bug fixes
147 lines
4.2 KiB
C
147 lines
4.2 KiB
C
/*
|
|
Copyright 2015-2022 Ian Jauslin
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
/* Array structures */
|
|
|
|
#ifndef ARRAY_H
|
|
#define ARRAY_H
|
|
|
|
#include "types.h"
|
|
|
|
// init
|
|
int init_Int_Array(Int_Array* array, int memory);
|
|
int free_Int_Array(Int_Array array);
|
|
|
|
// copy
|
|
int int_array_cpy(Int_Array input, Int_Array* output);
|
|
int int_array_cpy_noinit(Int_Array input, Int_Array* output);
|
|
|
|
// resize memory
|
|
int int_array_resize(Int_Array* array, int newsize);
|
|
|
|
// add a value
|
|
int int_array_append(int val, Int_Array* output);
|
|
// add a value only if it is not already present
|
|
int int_array_append_unique(int val, Int_Array* output);
|
|
// concatenate
|
|
int int_array_concat(Int_Array input, Int_Array* output);
|
|
// concat but only add values that are not already present in the array
|
|
int int_array_concat_unique(Int_Array input, Int_Array* output);
|
|
|
|
// find (does not assume the array is sorted)
|
|
int int_array_find(int val, Int_Array array);
|
|
int int_array_find_err(int val, Int_Array array);
|
|
|
|
// sort
|
|
int int_array_sort(Int_Array array, int begin, int end);
|
|
|
|
// compare Int_Array's
|
|
int int_array_cmp(Int_Array array1, Int_Array array2);
|
|
|
|
// check whether an array is a sub-array of another
|
|
int int_array_is_subarray_ordered(Int_Array input, Int_Array test_array);
|
|
|
|
// print array
|
|
int int_array_print(Int_Array array);
|
|
// read array
|
|
int int_array_read(Char_Array str, Int_Array* array);
|
|
|
|
|
|
// Char_Array
|
|
|
|
// init
|
|
int init_Char_Array(Char_Array* array, int memory);
|
|
int free_Char_Array(Char_Array array);
|
|
|
|
// copy
|
|
int char_array_cpy(Char_Array input, Char_Array* output);
|
|
int char_array_cpy_noinit(Char_Array input, Char_Array* output);
|
|
|
|
// resize memory
|
|
int char_array_resize(Char_Array* array, int newsize);
|
|
|
|
// add a value
|
|
int char_array_append(char val, Char_Array* output);
|
|
int char_array_append_str(char* str, Char_Array* output);
|
|
// concatenate
|
|
int char_array_concat(Char_Array input, Char_Array* output);
|
|
|
|
// substring
|
|
int char_array_substring(Char_Array str, int begin, int end, Char_Array* substr);
|
|
|
|
// convert to char*
|
|
int char_array_to_str(Char_Array input, char** output);
|
|
// noinit (changes the size of input if needed)
|
|
char* char_array_to_str_noinit(Char_Array* input);
|
|
// convert from char*
|
|
int str_to_char_array(char* str, Char_Array* output);
|
|
|
|
// compare char_array's
|
|
int char_array_cmp(Char_Array char_array1, Char_Array char_array2);
|
|
// compare a char_array and a char*
|
|
int char_array_cmp_str(Char_Array char_array, char* str);
|
|
|
|
// format strings
|
|
int char_array_snprintf(Char_Array* output, char* fmt, ...);
|
|
|
|
// replace '*' with given character
|
|
int replace_star(char c, Char_Array str, Char_Array* out);
|
|
|
|
|
|
// Str_Array
|
|
|
|
// init
|
|
int init_Str_Array(Str_Array* array, int memory);
|
|
int free_Str_Array(Str_Array array);
|
|
|
|
// copy
|
|
int str_array_cpy(Str_Array input, Str_Array* output);
|
|
int str_array_cpy_noinit(Str_Array input, Str_Array* output);
|
|
|
|
// resize memory
|
|
int str_array_resize(Str_Array* array, int newsize);
|
|
|
|
// add a value
|
|
int str_array_append(Char_Array val, Str_Array* output);
|
|
int str_array_append_noinit(Char_Array val, Str_Array* output);
|
|
// concatenate
|
|
int str_array_concat(Str_Array input, Str_Array* output);
|
|
int str_array_concat_noinit(Str_Array input, Str_Array* output);
|
|
|
|
|
|
// Labels
|
|
|
|
// allocate memory
|
|
int init_Labels(Labels* labels,int size);
|
|
// free memory
|
|
int free_Labels(Labels labels);
|
|
|
|
// resize the memory allocated to a labels table
|
|
int resize_labels(Labels* labels,int new_size);
|
|
|
|
// copy a labels table
|
|
int labels_cpy(Labels input, Labels* output);
|
|
int labels_cpy_noinit(Labels input, Labels* output);
|
|
|
|
// append an element to a labels table
|
|
int labels_append(Char_Array label, int index, Labels* output);
|
|
int labels_append_noinit(Char_Array label, int index, Labels* output);
|
|
|
|
// concatenate two labels tables
|
|
int labels_concat(Labels input, Labels* output);
|
|
|
|
#endif
|