00001 00002 /****************************************************************************** 00003 * MODULE : kronecker_integer.hpp 00004 * DESCRIPTION: Multiplication of integer polynomials 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_KRONECKER_INTEGER_HPP 00014 #define __MMX_KRONECKER_INTEGER_HPP 00015 #include <numerix/integer.hpp> 00016 00017 namespace mmx { 00018 00019 /****************************************************************************** 00020 * Low level Kronecker multiplication for integers 00021 ******************************************************************************/ 00022 00023 xnat max_bit_size (const integer* src, nat n); 00024 void encode_kronecker (integer& dest, const integer* src, nat n, xnat bits); 00025 void decode_kronecker (integer* dest, nat n, xnat bits, const integer& src); 00026 void direct_kronecker (integer& dest, const integer* src, nat n, xnat bits); 00027 void inverse_kronecker (integer* dest, nat n, xnat bits, const integer& src); 00028 void mul_kronecker (integer* dest, 00029 const integer* src1, nat n1, const integer* src2, nat n2); 00030 void square_kronecker (integer* dest, const integer* src1, nat n1); 00031 00032 } // namespace mmx 00033 #endif // __MMX_KRONECKER_INTEGER_HPP