1 #ifndef CoCoA_RingFpDouble_H 2 #define CoCoA_RingFpDouble_H 3 4 // Copyright (c) 2005-2009,2011 John Abbott 5 6 // This file is part of the source of CoCoALib, the CoCoA Library. 7 8 // CoCoALib is free software: you can redistribute it and/or modify 9 // it under the terms of the GNU General Public License as published by 10 // the Free Software Foundation, either version 3 of the License, or 11 // (at your option) any later version. 12 13 // CoCoALib is distributed in the hope that it will be useful, 14 // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 // GNU General Public License for more details. 17 18 // You should have received a copy of the GNU General Public License 19 // along with CoCoALib. If not, see <http://www.gnu.org/licenses/>. 20 21 #include "CoCoA/GlobalManager.H" 22 23 namespace CoCoA 24 { 25 26 class BigInt; // fwd decl -- defined in BigInt.H 27 class MachineInt; // fwd decl -- defined in MachineInt.H 28 class QuotientRing; // fwd decl -- defined in QuotientRing.H 29 class ideal; // fwd decl -- defined in ring.H 30 class ring; // fwd decl -- defined in ring.H 31 32 QuotientRing NewRingFpDouble(const MachineInt& p, GlobalSettings::ResidueSetting ResidueChoice = DefaultResidueSetting()); 33 QuotientRing NewRingFpDouble(const BigInt& P); 34 QuotientRing NewRingFpDouble(const ideal& I); 35 36 bool IsGoodForRingFpDouble(const MachineInt& p); 37 bool IsGoodForRingFpDouble(const BigInt& P); 38 bool IsGoodForRingFpDouble(const ideal& I); 39 40 } // end of namespace CoCoA 41 42 43 // RCS header/log 44 // $Header: /Volumes/Home_1/cocoa/cvs-repository/CoCoALib-0.99/include/CoCoA/RingFpDouble.H,v 1.8 2011/11/09 13:50:01 bigatti Exp $ 45 // $Log: RingFpDouble.H,v $ 46 // Revision 1.8 2011/11/09 13:50:01 bigatti 47 // -- renamed MachineInteger --> MachineInt 48 // 49 // Revision 1.7 2011/08/14 15:52:17 abbott 50 // Changed ZZ into BigInt (phase 1: just the library sources). 51 // 52 // Revision 1.6 2011/05/19 14:38:27 abbott 53 // Updated small prime finite field impls to allow user to specify 54 // separately for each whether to use symmetric or non-negative 55 // residues for export operations (myExport and printing). 56 // 57 // Revision 1.5 2011/03/22 20:00:38 abbott 58 // Added IsGoodForXXX fns to test whether a given arg is suitable as 59 // characteristic for the given type of small prime finite field. 60 // 61 // Revision 1.4 2009/09/24 16:21:24 abbott 62 // Replaced include directive by forward declarations. 63 // 64 // Revision 1.3 2008/12/17 12:11:52 abbott 65 // Changed type from long to MachineInt in operations which use a machine integer 66 // in place of a RingElem. The change is "superficial" but affects many files. 67 // 68 // Revision 1.2 2007/10/30 17:14:11 abbott 69 // Changed licence from GPL-2 only to GPL-3 or later. 70 // New version for such an important change. 71 // 72 // Revision 1.1.1.1 2007/03/09 15:16:11 abbott 73 // Imported files 74 // 75 // Revision 1.5 2007/03/02 10:47:53 cocoa 76 // First stage of RingZ modifications -- tests do not compile currently, Anna will fix this. 77 // 78 // Revision 1.4 2006/12/06 17:21:56 cocoa 79 // -- removed #include "config.H" 80 // 81 // Revision 1.3 2006/10/06 10:15:53 cocoa 82 // In response to Susan's bug: a fiasco when compiling with CoCoA_MEMPOOL_DEBUG 83 // set wrongly. Moved several implementation classes out of their header files 84 // into the implementation files. Several functions had to be uninlined. 85 // Also corrected position of #include, etc. 86 // 87 // Revision 1.2 2006/08/07 21:23:25 cocoa 88 // Removed almost all publicly visible references to SmallExponent_t; 89 // changed to long in all PPMonoid functions and SparsePolyRing functions. 90 // DivMask remains to sorted out. 91 // 92 // Revision 1.1.1.1 2006/05/30 11:39:37 cocoa 93 // Imported files 94 // 95 // Revision 1.7 2006/05/29 16:22:37 cocoa 96 // Third time lucky??? 97 // Added myIsInteger member function to all rings (NYI for RingFloat). 98 // 99 // Revision 1.6 2006/05/12 16:10:58 cocoa 100 // Added OpenMathFwd.H, and tidied OpenMath.H. 101 // Many consequential but trivial changes. 102 // 103 // Revision 1.5 2006/04/21 15:01:36 cocoa 104 // Changed default implementation of RingBase::myGcd -- it now gives a SERIOUS 105 // error. All fields must now handle a call to gcd explicitly: they can use 106 // the new myGcdInField function. It's now cleaner than it was. 107 // 108 // Revision 1.4 2006/03/15 18:09:31 cocoa 109 // Changed names of member functions which print out their object 110 // into myOutputSelf -- hope this will appease the Intel C++ compiler. 111 // 112 // Revision 1.3 2006/03/14 15:01:49 cocoa 113 // Improved the implementation of ring member fns for computing powers. 114 // Should keep Intel C++ compiler quieter too. 115 // 116 // Revision 1.2 2006/03/12 21:28:34 cocoa 117 // Major check in after many changes 118 // 119 // Revision 1.1.1.1 2005/10/17 10:46:54 cocoa 120 // Imported files 121 // 122 // Revision 1.2 2005/10/14 15:25:07 cocoa 123 // Major tidying and cleaning to small prime finite fields. 124 // Several consequential changes. Improved their documentation. 125 // 126 // Added Makefile and script to include/CoCoA/ directory to 127 // keep library.H up to date. 128 // 129 // Revision 1.1 2005/10/11 16:37:30 cocoa 130 // Added new small prime finite field class (see RingFpDouble). 131 // 132 // Cleaned makefiles and configuration script. 133 // 134 // Tidied PPMonoid code (to eliminate compiler warnings). 135 // 136 // Fixed bug in RingFloat::myIsInteger. 137 // 138 139 #endif 140