My Project  debian-1:4.1.2-p1+ds-2
ExtensionInfo.h
Go to the documentation of this file.
1 /*****************************************************************************\
2  * Computer Algebra System SINGULAR
3 \*****************************************************************************/
4 /** @file ExtensionInfo.h
5  *
6  * This file provides a class to store information about finite fields and
7  * extensions thereof.
8  *
9  *
10  * @author Martin Lee
11  *
12  **/
13 /*****************************************************************************/
14 
15 #ifndef EXTENSION_INFO_H
16 #define EXTENSION_INFO_H
17 
18 // #include "config.h"
19 
20 #include "canonicalform.h"
21 
22 /** @class ExtensionInfo ExtensionInfo.h "factory/ExtensionInfo.h"
23  * ExtensionInfo contains information about extension.
24  * If @a m_extension is true we are in an extension of some initial field.
25  * If the initial field is \f$ F_p \f$ and we pass to \f$ F_p (\alpha) \f$
26  * then @a m_alpha is an algebraic variable, @a m_beta= Variable(1),
27  * @a m_gamma= @a m_delta= 1, @a m_GFDegree= 0, @a m_GFName= 'Z'. If we pass
28  * to some GF (p^k) then @a m_alpha= Variable (1), @a m_beta= Variable(1),
29  * @a m_gamma= @a m_delta= 1, @a m_GFDegree= 1, @a m_GFName= 'Z'.
30  * @n If the initial field is \f$ F_p (\epsilon) \f$, then @a m_beta=
31  * \f$ \epsilon \f$, @a m_alpha an algebraic variable defining an extension of
32  * \f$ F_p (\epsilon) \f$, @a m_gamma is a primitive element of
33  * \f$ F_p (\alpha) \f$, @a m_delta is a primitive element of
34  * \f$ F_p (\beta) \f$, @a m_GFDegree= 0, @a m_GFName= 'Z'.
35  * @n If the initial field is GF(p^k), then @a m_alpha= Variable (1),
36  * @a m_beta= Variable (1), @a m_gamma= 1, @a m_delta= 1, @a m_GFDegree()= k,
37  * @a m_GFName= gf_name of the initial field.
38  * @n If @a m_extension is false and the current field is \f$ F_p \f$ then
39  * @a m_alpha= Variable (1), @a m_beta= Variable (1), @a m_gamma= 1,
40  * @a m_delta= 1, @a m_GFDegree= 1, @a m_GFName= 'Z'.
41  * @n If the current field is \f$ F_p (\alpha) \f$ then
42  * @a m_alpha is some algebraic variable, @a m_beta= Variable (1),
43  * @a m_gamma= 1, @a m_delta= 1, @a m_GFDegree= 0, @a m_GFName= 'Z'.
44  * @n If the current field is GF then @a m_alpha= Variable (1),
45  * @a m_beta= Variable (1), @a m_gamma= 1, @a m_delta= 1,
46  * @a m_GFDegree= getGFDegree(), @a m_GFName= gf_name.
47  *
48  * @sa facFqBivar.h, facFqFactorize.h
49  */
51 {
52 private:
53  /// an algebraic variable or Variable (1)
55  /// an algebraic variable or Variable (1)
57  /// a primitive element of \f$ F_p (\alpha) \f$ or 1
59  /// a primitive element of \f$ F_p (\beta) \f$ or 1
61  /// GF degree or 1
63  /// name of GF variable
64  char m_GFName;
65  /// indicates if we are in an extension of some initial field
67 public:
68  /// \f$ F_p \f$ as initial field, if @a extension is true we are in some GF
69  ExtensionInfo (const bool extension ///< [in] some bool
70  );
71  /// Construct an @a ExtensionInfo
72  ExtensionInfo (const Variable& alpha, ///< [in] some algebraic variable
73  const Variable& beta, ///< [in] some algebraic variable
74  const CanonicalForm& gamma, ///< [in] some primitive element
75  ///< of \f$ F_p (\alpha) \f$
76  const CanonicalForm& delta, ///< [in] some primitive element
77  ///< of \f$ F_p (\beta) \f$
78  const int nGFDegree, ///< [in] GFDegree of initial field
79  const char cGFName, ///< [in] name of GF variable of
80  ///< initial field
81  const bool extension ///< [in] some bool
82  );
83  /// \f$ F_p (\beta) \f$ as initial field and switch to an extension given by
84  /// @a alpha, needs primitive elements @a gamma and @a delta for maps
85  /// between \f$ F_p (\alpha) \subset F_p (\beta) \f$
86  ExtensionInfo (const Variable& alpha, ///< [in] some algebraic variable
87  const Variable& beta, ///< [in] some algebraic variable
88  const CanonicalForm& gamma, ///< [in] some primitive element
89  ///< of \f$ F_p (\alpha) \f$
90  const CanonicalForm& delta ///< [in] some primitive element
91  ///< of \f$ F_p (\beta) \f$
92  );
93  /// \f$ F_p (\alpha) \f$ as initial field, if @a extension is false.
94  /// Else initial field is \f$ F_p \f$
95  ExtensionInfo (const Variable& alpha, ///< [in] some algebraic variable
96  const bool extension ///< [in] some bool
97  );
98 
99  ExtensionInfo (const Variable& alpha ///< [in] some algebraic variable
100  );
101 
102  /// GF as initial field
103  ExtensionInfo (const int nGFDegree, ///< [in] GF degree of initial field
104  const char cGFName, ///< [in] name of GF variable
105  const bool extension ///< [in] some bool
106  );
107 
108  /// getter
109  ///
110  /// @return @a getAlpha() returns @a m_alpha
112  {
113  return m_alpha;
114  }
115  /// getter
116  ///
117  /// @return @a getBeta() returns @a m_beta
118  Variable getBeta () const
119  {
120  return m_beta;
121  }
122  /// getter
123  ///
124  /// @return @a getGamma() returns @a m_gamma
126  {
127  return m_gamma;
128  }
129  /// getter
130  ///
131  /// @return @a getDelta() returns @a m_delta
133  {
134  return m_delta;
135  }
136  /// getter
137  ///
138  /// @return @a getGFDegree() returns @a m_GFDegree
139  int getGFDegree() const
140  {
141  return m_GFDegree;
142  }
143  /// getter
144  ///
145  /// @return @a getGFName() returns @a m_GFName
146  char getGFName() const
147  {
148  return m_GFName;
149  }
150  /// getter
151  ///
152  /// @return @a isInextension() returns @a m_extension
153  bool isInExtension() const
154  {
155  return m_extension;
156  }
157 };
158 
159 #endif
160 /* EXTENSION_INFO_H */
161 
Header for factory's main class CanonicalForm.
factory's main class
Definition: canonicalform.h:83
ExtensionInfo contains information about extension.
Definition: ExtensionInfo.h:51
int getGFDegree() const
getter
bool isInExtension() const
getter
CanonicalForm m_delta
a primitive element of or 1
Definition: ExtensionInfo.h:60
int m_GFDegree
GF degree or 1.
Definition: ExtensionInfo.h:62
ExtensionInfo(const bool extension)
as initial field, if extension is true we are in some GF
CanonicalForm getGamma() const
getter
CanonicalForm getDelta() const
getter
char getGFName() const
getter
Variable getAlpha() const
getter
bool m_extension
indicates if we are in an extension of some initial field
Definition: ExtensionInfo.h:66
char m_GFName
name of GF variable
Definition: ExtensionInfo.h:64
Variable getBeta() const
getter
Variable m_beta
an algebraic variable or Variable (1)
Definition: ExtensionInfo.h:56
Variable m_alpha
an algebraic variable or Variable (1)
Definition: ExtensionInfo.h:54
CanonicalForm m_gamma
a primitive element of or 1
Definition: ExtensionInfo.h:58
factory's class for variables
Definition: factory.h:118
Variable alpha
Definition: facAbsBiFact.cc:52
Variable beta
Definition: facAbsFact.cc:99
bool delta(X x, Y y, D d)
Definition: TestSuite.h:160