source: git/factory/cf_random.h

spielwiese
Last change on this file was 3edea1, checked in by Hans Schoenemann <hannes@…>, 3 years ago
cygwin port: shared lib libfactory
  • Property mode set to 100644
File size: 1.9 KB
Line 
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**/
21class CFRandom {
22public:
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**/
31class GFRandom : public CFRandom
32{
33public:
34    GFRandom() {};
35    ~GFRandom() {}
36    CanonicalForm generate() const;
37    CFRandom * clone() const;
38};
39
40/**
41 * generate random elements in F_p
42**/
43class FFRandom : public CFRandom
44{
45public:
46    FFRandom() {}
47    ~FFRandom() {}
48    CanonicalForm generate() const;
49    CFRandom * clone() const;
50};
51
52/**
53 * generate random integers
54**/
55class IntRandom : public CFRandom
56{
57private:
58    int max;
59public:
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**/
70class AlgExtRandomF : public CFRandom {
71private:
72    Variable algext;
73    CFRandom * gen;
74    int n;
75    AlgExtRandomF();
76    AlgExtRandomF( const Variable & v, CFRandom * g, int nn );
77    AlgExtRandomF& operator= ( const AlgExtRandomF & );
78public:
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
87class CFRandomFactory {
88public:
89    static CFRandom * generate();
90};
91
92/// random integers with abs less than n
93int factoryrandom( int n );
94
95/// random seed initializer
96void FACTORY_PUBLIC factoryseed( int s );
97
98/*ENDPUBLIC*/
99
100#endif /* ! INCL_CF_RANDOM_H */
Note: See TracBrowser for help on using the repository browser.