~ubuntu-branches/ubuntu/vivid/aeolus/vivid

« back to all changes in this revision

Viewing changes to rngen.h

  • Committer: Bazaar Package Importer
  • Author(s): Alessio Treglia
  • Date: 2010-04-19 19:12:51 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20100419191251-hgarjfcdfl7c0ryl
Tags: 0.8.4-3
debian/patches/01-makefile.patch: Drop -march=native flag, it isn't valid
for Debian packages as the results are unpredictable, thanks to
Bastian Blank for reporting this (Closes: #578278).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
  Copyright (C) 2003-2008 Fons Adriaensen <fons@kokkinizita.net>
3
 
    
4
 
  This program is free software; you can redistribute it and/or modify
5
 
  it under the terms of the GNU General Public License as published by
6
 
  the Free Software Foundation; either version 2 of the License, or
7
 
  (at your option) any later version.
8
 
 
9
 
  This program is distributed in the hope that it will be useful,
10
 
  but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 
  GNU General Public License for more details.
13
 
 
14
 
  You should have received a copy of the GNU General Public License
15
 
  along with this program; if not, write to the Free Software
16
 
  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
 
*/
18
 
 
19
 
 
20
 
#ifndef __RNGEN_H
21
 
#define __RNGEN_H
22
 
 
23
 
 
24
 
#include "prbsgen.h"
25
 
 
26
 
 
27
 
class Rngen
28
 
{
29
 
public:
30
 
 
31
 
    Rngen (void);
32
 
 
33
 
    void init (uint32_t seed);
34
 
 
35
 
    uint32_t irand (void)
36
 
    {
37
 
        uint32_t r;
38
 
 
39
 
        if (++_i == 55) _i = 0;
40
 
        if (_i < 24) r = _a [_i] += _a [_i + 31];
41
 
        else         r = _a [_i] += _a [_i - 24];
42
 
        return r;
43
 
    }
44
 
 
45
 
    double  urand (void) { return irand () / _p32; }
46
 
    double  grand (void);
47
 
    void    grand (double *x, double *y);
48
 
    float   urandf (void) { return irand () / _p32f; }
49
 
    float   grandf (void);
50
 
    void    grandf (float  *x, float *y);
51
 
 
52
 
    ~Rngen (void);
53
 
    Rngen (const Rngen&);           // disabled, not to be used
54
 
    Rngen& operator=(const Rngen&); // disabled, not to be used
55
 
 
56
 
private:
57
 
  
58
 
    uint32_t  _a [55];
59
 
    int       _i;
60
 
    bool      _md;
61
 
    bool      _mf;
62
 
    double    _vd;
63
 
    float     _vf;
64
 
 
65
 
    static const double  _p31;
66
 
    static const double  _p32;
67
 
    static const float   _p31f;
68
 
    static const float   _p32f;
69
 
};
70
 
 
71
 
 
72
 
#endif