From a2d32c0ec869210bd6ba08107a0fd13e3401c3dd Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Wed, 31 Jan 2007 14:31:15 +0100 Subject: [PATCH] partial_reducer: specialize list version of base --- genfun_constructor.cc | 5 +++++ genfun_constructor.h | 1 + reducer.h | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/genfun_constructor.cc b/genfun_constructor.cc index d28dc4c..fc429a1 100644 --- a/genfun_constructor.cc +++ b/genfun_constructor.cc @@ -60,6 +60,11 @@ void partial_reducer::base(const QQ& c, const vec_ZZ& num, const mat_ZZ& den_f) gf->add(c, num, den_f); } +void partial_reducer::base(const vec_QQ& c, const mat_ZZ& num, const mat_ZZ& den_f) +{ + gf->add(new short_rat(c, num, den_f)); +} + void partial_bfcounter::base(mat_ZZ& factors, bfc_vec& v) { mat_ZZ den; diff --git a/genfun_constructor.h b/genfun_constructor.h index 83efa64..9053c5f 100644 --- a/genfun_constructor.h +++ b/genfun_constructor.h @@ -60,6 +60,7 @@ struct partial_reducer : public reducer, public gf_base { ~partial_reducer() { } virtual void base(const QQ& c, const vec_ZZ& num, const mat_ZZ& den_f); + virtual void base(const vec_QQ& c, const mat_ZZ& num, const mat_ZZ& den_f); virtual void split(const mat_ZZ& num, vec_ZZ& num_s, mat_ZZ& num_p, const mat_ZZ& den_f, vec_ZZ& den_s, mat_ZZ& den_r); diff --git a/reducer.h b/reducer.h index 1c858b1..2d9ab34 100644 --- a/reducer.h +++ b/reducer.h @@ -78,7 +78,7 @@ struct reducer : public np_base { barvinok_options *options); void reduce(const vec_QQ& c, const mat_ZZ& num, const mat_ZZ& den_f); virtual void base(const QQ& c, const vec_ZZ& num, const mat_ZZ& den_f) = 0; - void base(const vec_QQ& c, const mat_ZZ& num, const mat_ZZ& den_f); + virtual void base(const vec_QQ& c, const mat_ZZ& num, const mat_ZZ& den_f); virtual void split(const mat_ZZ& num, vec_ZZ& num_s, mat_ZZ& num_p, const mat_ZZ& den_f, vec_ZZ& den_s, mat_ZZ& den_r) = 0; virtual gen_fun *get_gf() { -- 2.11.4.GIT