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. * Created vim files to implement syntax highlighting for configuration files. * Multiple bug fixes
114 lines
2.8 KiB
C
114 lines
2.8 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.
|
|
*/
|
|
|
|
/*
|
|
meantools
|
|
|
|
Utility to perform various operations on flow equations
|
|
|
|
*/
|
|
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
// pre-compiler definitions
|
|
#include "definitions.cpp"
|
|
|
|
// grouped representation of polynomials
|
|
#include "grouped_polynomial.h"
|
|
// command line parser
|
|
#include "cli_parser.h"
|
|
// parse input file
|
|
#include "parse_file.h"
|
|
// arrays
|
|
#include "array.h"
|
|
// string functions
|
|
#include "istring.h"
|
|
// tools
|
|
#include "meantools_deriv.h"
|
|
#include "meantools_eval.h"
|
|
#include "meantools_expand.h"
|
|
|
|
#define DERIV_COMMAND 1
|
|
#define EVAL_COMMAND 2
|
|
#define EXPAND_COMMAND 3
|
|
|
|
// read cli arguments
|
|
int read_args_meantools(int argc,const char* argv[], Str_Array* str_args, Meantools_Options* opts);
|
|
// print usage message
|
|
int print_usage_meantools();
|
|
|
|
|
|
int main (int argc, const char* argv[]){
|
|
// string arguments
|
|
Str_Array str_args;
|
|
// options
|
|
Meantools_Options opts;
|
|
|
|
// read command-line arguments
|
|
read_args_meantools(argc,argv,&str_args, &opts);
|
|
|
|
switch(opts.command){
|
|
case DERIV_COMMAND: tool_deriv(str_args,opts);
|
|
break;
|
|
case EVAL_COMMAND: tool_eval(str_args,opts);
|
|
break;
|
|
case EXPAND_COMMAND: tool_expand(str_args,opts);
|
|
break;
|
|
}
|
|
|
|
//free memory
|
|
free_Str_Array(str_args);
|
|
return(0);
|
|
}
|
|
|
|
|
|
// parse command-line arguments
|
|
int read_args_meantools(int argc,const char* argv[], Str_Array* str_args, Meantools_Options* opts){
|
|
|
|
// if there are no arguments
|
|
if(argc==1){
|
|
print_usage_meantools();
|
|
exit(-1);
|
|
}
|
|
|
|
if(str_cmp((char*)argv[1],"differentiate")==1){
|
|
(*opts).command=DERIV_COMMAND;
|
|
tool_deriv_read_args(argc, argv, str_args, opts);
|
|
}
|
|
else if(str_cmp((char*)argv[1],"eval")==1){
|
|
(*opts).command=EVAL_COMMAND;
|
|
tool_eval_read_args(argc, argv, str_args, opts);
|
|
}
|
|
else if(str_cmp((char*)argv[1],"expand")==1){
|
|
(*opts).command=EXPAND_COMMAND;
|
|
tool_expand_read_args(argc, argv, str_args, opts);
|
|
}
|
|
else{
|
|
print_usage_meantools();
|
|
exit(-1);
|
|
}
|
|
|
|
return(0);
|
|
}
|
|
|
|
// print usage message
|
|
int print_usage_meantools(){
|
|
printf("\nusage:\n meantools differentiate [-d derivatives] [-V variables] [-C] [config_file]\n meantools eval [-R values] [-P precision] [-E max_exponent] [config_file]\n meantools expand [-N namespace] [config_file]\n\n");
|
|
return(0);
|
|
}
|