cf_random.h
Go to the documentation of this file.
1 /* emacs edit mode for this file is -*- C++ -*- */
2 
3 /**
4  * @file cf_random.h
5  *
6  * generate random integers, random elements of finite fields
7 **/
8 
9 #ifndef INCL_CF_RANDOM_H
10 #define INCL_CF_RANDOM_H
11 
12 // #include "config.h"
13 
14 #include "canonicalform.h"
15 
16 /*BEGINPUBLIC*/
17 
18 /**
19  * virtual class for random element generation
20 **/
21 class CFRandom {
22 public:
23  virtual ~CFRandom() {}
24  virtual CanonicalForm generate() const { return 0; }
25  virtual CFRandom * clone() const { return new CFRandom(); }
26 };
27 
28 /**
29  * generate random elements in GF
30 **/
31 class GFRandom : public CFRandom
32 {
33 public:
34  GFRandom() {};
35  ~GFRandom() {}
36  CanonicalForm generate() const;
37  CFRandom * clone() const;
38 };
39 
40 /**
41  * generate random elements in F_p
42 **/
43 class FFRandom : public CFRandom
44 {
45 public:
46  FFRandom() {}
47  ~FFRandom() {}
48  CanonicalForm generate() const;
49  CFRandom * clone() const;
50 };
51 
52 /**
53  * generate random integers
54 **/
55 class IntRandom : public CFRandom
56 {
57 private:
58  int max;
59 public:
60  IntRandom();
61  IntRandom( int m );
62  ~IntRandom();
63  CanonicalForm generate() const;
64  CFRandom * clone() const;
65 };
66 
67 /**
68  * generate random elements in F_p(alpha)
69 **/
70 class AlgExtRandomF : public CFRandom {
71 private:
74  int n;
75  AlgExtRandomF();
76  AlgExtRandomF( const Variable & v, CFRandom * g, int nn );
77  AlgExtRandomF& operator= ( const AlgExtRandomF & );
78 public:
79  AlgExtRandomF( const AlgExtRandomF & );
80  AlgExtRandomF( const Variable & v );
81  AlgExtRandomF( const Variable & v1, const Variable & v2 );
82  ~AlgExtRandomF();
83  CanonicalForm generate() const;
84  CFRandom * clone() const;
85 };
86 
88 public:
89  static CFRandom * generate();
90 };
91 
92 /// random integers with abs less than n
93 int factoryrandom( int n );
94 
95 /// random seed initializer
96 void factoryseed( int s );
97 
98 /*ENDPUBLIC*/
99 
100 #endif /* ! INCL_CF_RANDOM_H */
CFRandom * gen
Definition: cf_random.h:73
const CanonicalForm int s
Definition: facAbsFact.cc:55
generate random elements in GF
Definition: cf_random.h:31
FFRandom()
Definition: cf_random.h:46
virtual ~CFRandom()
Definition: cf_random.h:23
factory's class for variables
Definition: factory.h:117
factory's main class
Definition: canonicalform.h:77
virtual CFRandom * clone() const
Definition: cf_random.h:25
generate random integers
Definition: cf_random.h:55
g
Definition: cfModGcd.cc:4031
int max
Definition: cf_random.h:58
int factoryrandom(int n)
random integers with abs less than n
Definition: cf_random.cc:168
GFRandom()
Definition: cf_random.h:34
virtual CanonicalForm generate() const
Definition: cf_random.h:24
int m
Definition: cfEzgcd.cc:121
void factoryseed(int s)
random seed initializer
Definition: cf_random.cc:176
generate random elements in F_p
Definition: cf_random.h:43
Variable algext
Definition: cf_random.h:72
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:37
generate random elements in F_p(alpha)
Definition: cf_random.h:70
~FFRandom()
Definition: cf_random.h:47
~GFRandom()
Definition: cf_random.h:35
virtual class for random element generation
Definition: cf_random.h:21
Header for factory&#39;s main class CanonicalForm.