Main Page   Namespace List   Compound List   File List   Compound Members   File Members  

alias.h

Go to the documentation of this file.
00001 
00002 /* Copyright(C) (2002) (ID - IMAG) <Florent.Morata@imag.fr> */
00003 
00004 /*
00005  *  This program is free software; you can redistribute it and/or modify
00006  *  it under the terms of the GNU General Public License as published by
00007  *  the Free Software Foundation; either version 2 of the License, or
00008  *  (at your option) any later version.
00009  *
00010  *  This program is distributed in the hope that it will be useful,
00011  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  *  GNU Library General Public License for more details.
00014  *
00015  *  You should have received a copy of the GNU General Public License
00016  *  along with this program; if not, write to the Free Software
00017  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00018  */
00019  
00020  
00029 #ifndef _ALIAS_H_
00030 #define _ALIAS_H_
00031 
00032 #include <vector>
00033 #include <string>
00034 #include <fstream>
00035 #include <cmath>
00036 
00038 using namespace std;
00039 
00040 #include "hbf.h"
00041 
00043 const double EPS = 1e-12;
00044 
00046 typedef vector<int>::iterator iteri;
00048 typedef vector<double>::iterator iterd;
00049 
00051 typedef double Threshold;
00053 typedef int Index;
00054 
00055 
00061 class Alias{
00062  private:
00066   struct AliasStruct{
00068     Threshold t;
00070     Index col;
00072     Index alias;
00073   };
00074   
00076   typedef struct AliasStruct stock;
00078   vector<stock> S;
00079   
00080   
00081  public:
00082   
00083   int size() const;
00084   double threshold(const int i) const;
00085   int col(const int i) const;
00086   int alias(const int i) const;
00087   void init(const int d);
00088   void mk_walker(const int d);
00089   void transpose(const int d);
00090   int read(const string path);
00091   void write_construct(const string file_name,const int d);
00092   int walk(const double rand,const int j,const int n,const int d,const int i);
00093 };
00094 
00095 
00096 
00097 #include "alias.inl"
00098 
00099 
00100 #endif
00101 

Generated on Tue Dec 10 12:44:42 2002 for PSI_SAMPLE by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002