00001 00002 /****************************************************************************** 00003 * MODULE : polynomial_crt.hpp 00004 * DESCRIPTION: Multi-modular operations for polynomials 00005 * COPYRIGHT : (C) 2009 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_CRT_HPP 00014 #define __MMX_POLYNOMIAL_CRT_HPP 00015 #include <algebramix/crt_polynomial.hpp> 00016 namespace mmx { 00017 00018 /****************************************************************************** 00019 * Variant for matrices with CRT based operations 00020 ******************************************************************************/ 00021 00022 template<typename V> 00023 struct polynomial_crt: public V { 00024 typedef typename V::Vec Vec; 00025 typedef typename V::Naive Naive; 00026 typedef typename V::Positive Positive; 00027 typedef polynomial_crt<typename V::No_simd> No_simd; 00028 typedef polynomial_crt<typename V::No_thread> No_thread; 00029 typedef polynomial_crt<typename V::No_scaled> No_scaled; 00030 }; 00031 00032 template<typename F, typename V, typename W> 00033 struct implementation<F,V,polynomial_crt<W> >: 00034 public implementation<F,V,W> {}; 00035 00036 } // namespace mmx 00037 #endif // __MMX_POLYNOMIAL_CRT_HPP