Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/calcunits/QCalcUnit.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations) (download) (as text)
Wed Aug 3 10:14:23 2011 UTC (12 years, 9 months ago) by kaityo
File MIME type: text/x-chdr
File size: 2057 byte(s)
First commit
1 //---------------------------------------------------------------------------
2 // Calc unit
3 //---------------------------------------------------------------------------
4 #ifndef QCalcUnitH
5 #define QCalcUnitH
6 //---------------------------------------------------------------------------
7 #include <string>
8 #include <sstream>
9
10 #ifdef __USE__MPI
11 #include <mpi.h>
12 #endif //__USE__MPI
13
14 #include "QBits.h"
15 //---------------------------------------------------------------------------
16 class QCalcUnit
17 {
18 protected :
19 //---
20 // for MPI
21 //---
22 #ifdef __USE__MPI
23 static int gMdata; // the number of the states which each process treats
24 static int gNqubits;
25 static int gProcMask;
26 static int gProcBit;
27 static int gMyID;
28 static int gNumprocs;
29 #endif //__USE__MPI
30
31
32 public:
33 virtual void Calc(QBits *qBits) = 0;
34 virtual std::string GetName(void) const = 0;
35 static unsigned int insert0(unsigned int i0, unsigned int BitNum);
36 static unsigned int insert1(unsigned int i0, unsigned int BitNum);
37 static void swap(double &x,double &y) {
38 double tmp = x;
39 x = y;
40 y = tmp;
41 };
42 static void swap(int &x,int &y) {
43 int tmp = x;
44 x = y;
45 y = tmp;
46 };
47
48 //---
49 // for MPI
50 //---
51
52 static inline int getOriginalID(int id);
53 static inline int getProcFromID(int id);
54 static bool setup(const double R[], const double I[],
55 const unsigned int &ix0, const unsigned int &ix1,
56 double &r0, double &i0,
57 double &r1, double &i1);
58 static void store(double R[], double I[],
59 const unsigned int &ix0, const unsigned int &ix1,
60 const double &r0, const double &i0,
61 const double &r1, const double &i1);
62 static void showdata(double R[], double I[]);
63
64 static int initmpi(int N, int myid, int numprocs);
65 static void initdata(double R[], double I[]);
66
67 };
68 //---------------------------------------------------------------------------
69 #endif //QCalcUnitH

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26