Ian Jauslin
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jauslin <ian.jauslin@roma1.infn.it>2015-09-21 10:20:35 +0000
committerIan Jauslin <ian.jauslin@roma1.infn.it>2015-09-21 10:20:35 +0000
commite7aa6859f08565d58684fa4b9c40fed716f0ba17 (patch)
tree518d709e86c9314ef50034f10e4b85c802b9c15c
parentf13eacbc8e5ab714dd3544adab8189c313382c77 (diff)
Add '-C' flag to meantools-derivev1.3.1
Fix memory leak in meantools-derive
-rw-r--r--Changelog8
-rw-r--r--Makefile2
-rw-r--r--man/kondo_preprocess.12
-rw-r--r--man/meankondo.14
-rw-r--r--man/meantools-convert.12
-rw-r--r--man/meantools.17
-rw-r--r--man/numkondo.12
-rw-r--r--src/definitions.cpp2
-rw-r--r--src/meantools_deriv.c42
-rw-r--r--src/types.h1
10 files changed, 61 insertions, 11 deletions
diff --git a/Changelog b/Changelog
new file mode 100644
index 0000000..0cf1bbb
--- /dev/null
+++ b/Changelog
@@ -0,0 +1,8 @@
+1.3.1:
+
+ * '-C' flag in meantools-derive:
+ allows to pipe the output of meantools-derive directly into numkondo.
+
+ * Fixed memory leak in meantools-derive.
+
+
diff --git a/Makefile b/Makefile
index f6233fe..19fc350 100644
--- a/Makefile
+++ b/Makefile
@@ -18,7 +18,7 @@
# if static=1 then link libkondo statically but other libraries dynamically
STATIC=1
-VERSION=1.3
+VERSION=1.3.1
# products of the compilation
PROJECT_BINS= meankondo numkondo meantools kondo_preprocess meantools-convert
diff --git a/man/kondo_preprocess.1 b/man/kondo_preprocess.1
index e6e5c59..99712b1 100644
--- a/man/kondo_preprocess.1
+++ b/man/kondo_preprocess.1
@@ -1,5 +1,5 @@
.Dd $Mdocdate: April 14 2015 $
-.Dt kondo_preprocess 1.3
+.Dt kondo_preprocess 1.3.1
.Os
.Sh NAME
.Nm kondo_preprocess
diff --git a/man/meankondo.1 b/man/meankondo.1
index 0a299d7..865659c 100644
--- a/man/meankondo.1
+++ b/man/meankondo.1
@@ -1,5 +1,5 @@
.Dd $Mdocdate: April 13 2015 $
-.Dt meankondo 1.3
+.Dt meankondo 1.3.1
.Os
.Sh NAME
.Nm meankondo
@@ -44,7 +44,7 @@ as well as the following pre-processors, which generate configuration files for
.It Fl t Ar threads
The number of threads to use for the computation.
.It Fl C
-Format the ouptput so it can be piped to
+Format the output so it can be piped to
.Sy numkondo ,
that is, instead of printing the flow equation, print a full configuration file containing the flow equation as well as all the other entries of the configuration file that do not pertain to the computation of the flow equation.
.It Fl v
diff --git a/man/meantools-convert.1 b/man/meantools-convert.1
index 4f8b191..f73f3ce 100644
--- a/man/meantools-convert.1
+++ b/man/meantools-convert.1
@@ -1,5 +1,5 @@
.Dd $Mdocdate: June 12 2015 $
-.Dt meantools-convert 1.3
+.Dt meantools-convert 1.3.1
.Os
.Sh NAME
.Nm meantools-convert
diff --git a/man/meantools.1 b/man/meantools.1
index 376a4c1..e361123 100644
--- a/man/meantools.1
+++ b/man/meantools.1
@@ -1,5 +1,5 @@
.Dd $Mdocdate: April 14 2015 $
-.Dt meantools 1.3
+.Dt meantools 1.3.1
.Os
.Sh NAME
.Nm meantools
@@ -13,6 +13,7 @@
.Sy derive
.Op Fl d Ar nderivs
.Op Fl V Ar variables
+.Op Fl C
.Op Ar config_file
.Pp
.Nm
@@ -95,6 +96,10 @@ The variables that depend on the extra virtual parameter (defaults to all) (WARN
would interpret the argument as being a flag, for example, write '-V "0,-1"' instead of '-V "-1,0"').
.Pp
Can either be a ',' separated list if indices or 'all' to derive with respect to all available variables.
+.It Fl C
+Format the output so it can be piped to
+.Sy numkondo ,
+that is, instead of printing the flow equation, print a full configuration file containing the flow equation as well as all the other entries of the configuration file that do not pertain to the computation of the flow equation.
.El
.Pp
.Sy Configuration file:
diff --git a/man/numkondo.1 b/man/numkondo.1
index 9506cf4..e7b4807 100644
--- a/man/numkondo.1
+++ b/man/numkondo.1
@@ -1,5 +1,5 @@
.Dd $Mdocdate: April 14 2015 $
-.Dt numkondo 1.3
+.Dt numkondo 1.3.1
.Os
.Sh NAME
.Nm numkondo
diff --git a/src/definitions.cpp b/src/definitions.cpp
index 1884488..25715e5 100644
--- a/src/definitions.cpp
+++ b/src/definitions.cpp
@@ -17,7 +17,7 @@ limitations under the License.
#ifndef DEFINITIONS_GCC
#define DEFINITIONS_GCC
-#define VERSION "1.3"
+#define VERSION "1.3.1"
// number of entries in a configuration file
#define ARG_COUNT 10
diff --git a/src/meantools_deriv.c b/src/meantools_deriv.c
index 28d8641..b096380 100644
--- a/src/meantools_deriv.c
+++ b/src/meantools_deriv.c
@@ -46,6 +46,8 @@ int tool_deriv_read_args(int argc, const char* argv[], Str_Array* str_args, Mean
(*opts).deriv_derivs=1;
// derive with respect to all variables
(*opts).deriv_vars.length=-1;
+ // do not chain
+ (*opts).chain=0;
// loop over arguments
@@ -61,6 +63,10 @@ int tool_deriv_read_args(int argc, const char* argv[], Str_Array* str_args, Mean
case 'V':
flag=CP_FLAG_VARS;
break;
+ // chain
+ case 'C':
+ (*opts).chain=1;
+ break;
}
}
}
@@ -104,6 +110,8 @@ int tool_deriv(Str_Array str_args, Meantools_Options opts){
// flow equation for the derivatives
Grouped_Polynomial flow_equation_deriv;
int i;
+ // header of the entry
+ Char_Array arg_header;
// parse flow equation
@@ -142,6 +150,29 @@ int tool_deriv(Str_Array str_args, Meantools_Options opts){
// compute derivatives
flow_equation_derivative(opts.deriv_derivs, opts.deriv_vars, flow_equation, &flow_equation_deriv);
+ // print
+ // if chain then print config file
+ if(opts.chain==1){
+ for(i=0;i<str_args.length;i++){
+ // check whether to print the str_arg
+ get_str_arg_title(str_args.strs[i], &arg_header);
+ if (\
+ str_cmp(arg_header.str, "flow_equation")==0 &&\
+ str_cmp(arg_header.str, "symbols")==0 &&\
+ str_cmp(arg_header.str, "groups")==0 &&\
+ str_cmp(arg_header.str, "fields")==0 &&\
+ str_cmp(arg_header.str, "identities")==0 &&\
+ str_cmp(arg_header.str, "propagator")==0 &&\
+ str_cmp(arg_header.str, "input_polynomial")==0 &&\
+ str_cmp(arg_header.str, "id_table")==0 ){
+
+ printf("%s\n&\n",str_args.strs[i].str);
+ }
+ free_Char_Array(arg_header);
+ }
+ // print flow equation
+ printf("#!flow_equation\n");
+ }
grouped_polynomial_print(flow_equation_deriv,'%','%');
// free memory
@@ -164,12 +195,17 @@ int flow_equation_derivative(int n, Int_Array variables, Grouped_Polynomial flow
// output polynomial
grouped_polynomial_cpy(flow_equation, flow_equation_derivs);
- for(j=0,dflow=flow_equation;j<n;j++){
+ // init dflow to flow_equation
+ grouped_polynomial_cpy(flow_equation, &dflow);
+
+ for(j=0;j<n;j++){
// tmp flow contains the result of the previous derivative
grouped_polynomial_cpy(dflow, &tmpflow);
- // derive
+ // free dflow
+ free_Grouped_Polynomial(dflow);
+ // next derivative
flow_equation_derivx(tmpflow, indices, &dflow);
- // free
+ // free tmpflow
free_Grouped_Polynomial(tmpflow);
// add the derived indices as variables for the next derivative
diff --git a/src/types.h b/src/types.h
index 6b029d5..a5d47b9 100644
--- a/src/types.h
+++ b/src/types.h
@@ -212,6 +212,7 @@ typedef struct Meantools_Options{
int deriv_derivs;
Int_Array deriv_vars;
Char_Array eval_rccstring;
+ int chain;
} Meantools_Options;
typedef struct Kondopp_Options{