[70c40f] | 1 | /*****************************************************************************\ |
---|
| 2 | * Computer Algebra System SINGULAR |
---|
| 3 | \*****************************************************************************/ |
---|
[d87069] | 4 | /** @file cfNTLzzpEXGCD.h |
---|
[70c40f] | 5 | * |
---|
| 6 | * This file defines functions for univariate GCD and extended GCD |
---|
| 7 | * over Z/p[t]/(f)[x] for reducible f |
---|
| 8 | * |
---|
[7b4793] | 9 | * @note the following code is slightly modified code out of |
---|
| 10 | * lzz_pEX.h from Victor Shoup's NTL. Below is NTL's copyright notice. |
---|
| 11 | * |
---|
[70c40f] | 12 | * ABSTRACT: Langemyr, McCallum "The Computation of Polynomial Greatest Common |
---|
| 13 | * Divisors over an algebraic number fields" |
---|
| 14 | * |
---|
| 15 | * @author Martin Lee |
---|
| 16 | * |
---|
| 17 | |
---|
[473102] | 18 | |
---|
[70c40f] | 19 | COPYRIGHT NOTICE |
---|
| 20 | for NTL 5.5 |
---|
| 21 | (modified for Singular 2-0-6 - 3-1) |
---|
| 22 | |
---|
| 23 | NTL -- A Library for Doing Number Theory |
---|
| 24 | Copyright (C) 1996-2009 Victor Shoup |
---|
| 25 | |
---|
| 26 | The most recent version of NTL is available at http://www.shoup.net |
---|
| 27 | |
---|
| 28 | This program is free software; you can redistribute it and/or |
---|
| 29 | modify it under the terms of the GNU General Public License |
---|
| 30 | as published by the Free Software Foundation; either version 2 |
---|
| 31 | of the License, or (at your option) any later version. |
---|
| 32 | |
---|
| 33 | This program is distributed in the hope that it will be useful, |
---|
| 34 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
| 35 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
| 36 | GNU General Public License for more details. |
---|
| 37 | |
---|
| 38 | You should have received a copy of the GNU General Public License |
---|
| 39 | along with this program; if not, write to the Free Software |
---|
| 40 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
---|
| 41 | |
---|
| 42 | This entire copyright notice should be placed in an appropriately |
---|
[fea494] | 43 | conspicuous place accompanying all distributions of software that |
---|
[70c40f] | 44 | make use of NTL. |
---|
| 45 | |
---|
| 46 | The above terms apply to all of the software modules distributed with NTL, |
---|
[fea494] | 47 | i.e., all source files in either the ntl-xxx.tar.gz or WinNTL-xxx.zip |
---|
| 48 | distributions. In general, the individual files do not contain |
---|
[70c40f] | 49 | copyright notices. |
---|
| 50 | |
---|
| 51 | Note that the quad_float package is derived from the doubledouble package, |
---|
| 52 | originally developed by Keith Briggs, and also licensed unger the GNU GPL. |
---|
| 53 | The files quad_float.c and quad_float.h contain more detailed copyright |
---|
| 54 | notices. |
---|
| 55 | |
---|
| 56 | Note that the traditional long integer package used by NTL, lip.c, is derived |
---|
| 57 | from---and represents an extensive modification of--- |
---|
| 58 | a package originally developed and copyrighted by Arjen Lenstra, |
---|
[fea494] | 59 | who has agreed to renounce any copyright claims on the particular |
---|
[70c40f] | 60 | version of the long integer package appearing in NTL, so that the |
---|
| 61 | this package now is covered by the GNU GPL as well. |
---|
| 62 | |
---|
| 63 | Note that the alternative long integer package used by NTL is GMP, |
---|
| 64 | which is written by Torbjorn Granlund <tege@swox.com>. |
---|
| 65 | GMP is licensed under the terms of the GNU Lesser General Public License. |
---|
| 66 | |
---|
[fea494] | 67 | Note that NTL makes use of the RSA Data Security, Inc. MD5 Message |
---|
[70c40f] | 68 | Digest Algorithm. |
---|
| 69 | |
---|
| 70 | Note that prior to version 4.0, NTL was distributed under the following terms: |
---|
| 71 | NTL is freely available for research and educational purposes. |
---|
| 72 | I don't want to attach any legalistic licensing restrictions on |
---|
| 73 | users of NTL. |
---|
| 74 | However, NTL should not be linked in a commercial program |
---|
| 75 | (although using data in a commercial |
---|
| 76 | product produced by a program that used NTL is fine). |
---|
| 77 | |
---|
| 78 | The hope is that the GNU GPL is actually less restrictive than these |
---|
| 79 | older terms; however, in any circumstances such that GNU GPL is more |
---|
| 80 | restrictive, then the following rule is in force: |
---|
| 81 | versions prior to 4.0 may continue to be used under the old terms, |
---|
| 82 | but users of versions 4.0 or later should adhere to the terms of the GNU GPL. |
---|
| 83 | **/ |
---|
| 84 | |
---|
| 85 | |
---|
[d87069] | 86 | #ifndef CF_NTL_ZZ_PEX_GCD_H |
---|
| 87 | #define CF_NTL_ZZ_PEX_GCD_H |
---|
[70c40f] | 88 | |
---|
[3c702a] | 89 | // #include "config.h" |
---|
[70c40f] | 90 | |
---|
| 91 | #ifdef HAVE_NTL |
---|
| 92 | #include "NTLconvert.h" |
---|
| 93 | #endif |
---|
| 94 | |
---|
| 95 | #ifdef HAVE_NTL |
---|
| 96 | /// compute the GCD x of a and b, fail is set to true if a zero divisor is |
---|
| 97 | /// encountered |
---|
| 98 | void tryNTLGCD(zz_pEX& x, ///<[in,out] GCD of a and b |
---|
| 99 | const zz_pEX& a,///<[in] s.a. |
---|
| 100 | const zz_pEX& b,///<[in] s.a. |
---|
| 101 | bool& fail ///<[in,out] s.a. |
---|
| 102 | ); |
---|
| 103 | |
---|
| 104 | /// compute the extended GCD d=s*a+t*b, fail is set to true if a zero divisor is |
---|
| 105 | /// encountered |
---|
| 106 | void tryNTLXGCD(zz_pEX& d, ///<[in,out] GCD of a and b |
---|
| 107 | zz_pEX& s, ///<[in,out] s. a. |
---|
| 108 | zz_pEX& t, ///<[in,out] s. a. |
---|
| 109 | const zz_pEX& a,///<[in] s. a. |
---|
| 110 | const zz_pEX& b,///<[in] s. a. |
---|
| 111 | bool& fail ///<[in,out] s. a. |
---|
| 112 | ); |
---|
| 113 | #endif |
---|
| 114 | |
---|
| 115 | #endif |
---|