00001 00002 /****************************************************************************** 00003 * MODULE : polynomial_modular_integer.hpp 00004 * DESCRIPTION: Multiplying modular polynomials by lifting and reduction 00005 * COPYRIGHT : (C) 2009 Joris van der Hoeven and Gregoire Lecerf 00006 ******************************************************************************* 00007 * This software falls under the GNU general public license and comes WITHOUT 00008 * ANY WARRANTY WHATSOEVER. See the file $TEXMACS_PATH/LICENSE for more details. 00009 * If you don't have this file, write to the Free Software Foundation, Inc., 00010 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00011 ******************************************************************************/ 00012 00013 #ifndef __MMX_POLYNOMIAL_MODULAR_INTEGER_HPP 00014 #define __MMX_POLYNOMIAL_MODULAR_INTEGER_HPP 00015 #include <numerix/modular_integer.hpp> 00016 #include <algebramix/polynomial_integer.hpp> 00017 #include <algebramix/polynomial_modular.hpp> 00018 00019 namespace mmx { 00020 00021 /****************************************************************************** 00022 * Use Kronecker multiplication by default for polynomials over modular integers 00023 ******************************************************************************/ 00024 00025 DEFINE_VARIANT (polynomial_modular_integer, 00026 polynomial_modular<polynomial_dicho<polynomial_naive> >) 00027 00028 template<typename V, typename W> 00029 struct polynomial_variant_helper<modular<modulus<integer,V>,W> > { 00030 typedef polynomial_modular_integer PV; 00031 }; 00032 00033 } // namespace mmx 00034 #endif // __MMX_POLYNOMIAL_MODULAR_INTEGER_HPP