PolyBoRi
|
00001 /* 00002 * nf.h 00003 * PolyBoRi 00004 * 00005 * Created by Michael Brickenstein on 25.04.06. 00006 * Copyright 2006 The PolyBoRi Team. See LICENSE file. 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