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