00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <algorithm>
00012 #include <vector>
00013 #include <queue>
00014
00015 #include "SlimgbReduction.h"
00016 #include "groebner_alg.h"
00017
00018
00019 #ifdef PBORI_HAVE_M4RI
00020 extern "C"{
00021 #include <m4ri/m4ri.h>
00022
00023 #ifndef __M4RI_TWOPOW
00024 #define __M4RI_TWOPOW TWOPOW
00025 #endif
00026 }
00027 #endif
00028 #ifndef PBORI_GB_NF_H
00029 #define PBORI_GB_NF_H
00030 BEGIN_NAMESPACE_PBORIGB
00031
00032 class ReductionStrategy;
00033 int select_no_deg_growth(const ReductionStrategy& strat, const Monomial& m);
00034
00035 typedef SlimgbReduction<SLIMGB_SIMPLEST> slimgb_reduction_type;
00036
00037 std::vector<Polynomial> parallel_reduce(std::vector<Polynomial> inp, GroebnerStrategy& strat, int average_steps, double delay_f);
00038
00039 Polynomial nf3(const ReductionStrategy& strat, Polynomial p, Monomial rest_lead);
00040 Polynomial nf3_short(const ReductionStrategy& strat, Polynomial p);
00041
00042 Polynomial plug_1(const Polynomial& p, const MonomialSet& m_plus_ones);
00043 MonomialSet mod_mon_set(const MonomialSet& as, const MonomialSet &vs);
00044
00045 Polynomial cheap_reductions(const ReductionStrategy& strat, Polynomial p);
00046
00047 Polynomial nf3_lexbuckets(const GroebnerStrategy& strat, Polynomial p, Monomial rest_lead);
00048 Polynomial nf3_no_deg_growth(const ReductionStrategy& strat, Polynomial p, Monomial rest_lead);
00049 Polynomial nf3_degree_order(const ReductionStrategy& strat, Polynomial p, Monomial lead);
00050 Polynomial nf3_short(const ReductionStrategy& strat, Polynomial p);
00051
00052
00053 END_NAMESPACE_PBORIGB
00054 #endif