OSDN Git Service

revises makefile of htdocs
[qcad/qcad.git] / calcunits / QBits.h
1 //---------------------------------------------------------------------------\r
2 //  Represent bits states\r
3 //---------------------------------------------------------------------------\r
4 #ifndef QBITS_H\r
5 #define QBITS_H\r
6 //---------------------------------------------------------------------------\r
7 #include <iostream>\r
8 #include <sstream>\r
9 #include <stdio.h>\r
10 #include <string.h>\r
11 \r
12 using namespace std;\r
13 \r
14 class QResultInfo{\r
15 public:\r
16     char header[4];\r
17     char filename[256];\r
18     int bitnumber;\r
19     QResultInfo(void)\r
20     {\r
21         header[0] = 'q';\r
22         header[1] = 'd';\r
23         header[2] = 'a';\r
24         header[3] = 't';\r
25         bitnumber = 0;\r
26         for (int i=0;i<256;i++)\r
27         {\r
28             filename[i] = 0;\r
29         }\r
30     }\r
31 };\r
32 \r
33 //---------------------------------------------------------------------------\r
34 \r
35 class QBits\r
36 {\r
37     friend std::ostream &operator<<(std::ostream &os, const QBits &qb);\r
38     friend std::ostream &operator<<(std::ostream &os, const QBits *qb);\r
39 \r
40 public:\r
41     QBits(void);\r
42     QBits(const int n);\r
43     QBits(char * filename);\r
44     QBits(const QBits &qubits);\r
45     ~QBits();\r
46 \r
47     void Init(void);\r
48     bool Allocate(int n);\r
49     int    GetNumberOfQBits(void)  const {\r
50         return mNumberOfQbits;\r
51     }\r
52     int    GetNumberOfStates(void) const {\r
53         return mNumberOfStates;\r
54     }\r
55     void   Measure(int index){\r
56         mMeasured[index] = true;\r
57     };\r
58     bool   isMeasured(int index){\r
59         return mMeasured[index];\r
60     };\r
61     int    GetNumberOfMeasured(void);\r
62     string GetMeasuredString(int index);\r
63 \r
64 \r
65     double &NthStateR(const int nth) const;\r
66     double &NthStateI(const int nth) const;\r
67     double *GetBitsR(void) {\r
68         return mBitsR;\r
69     }\r
70     double *GetBitsI(void) {\r
71         return mBitsI;\r
72     }\r
73     double GetAbsoluteValue(int index);\r
74     double GetMeasuredValue(int index);\r
75 \r
76     void PerformMeasurement(void);\r
77     void SaveMeasurementToStream(ostream &os);\r
78 \r
79     void LoadFromFile(const char *filename);\r
80     void SaveToFile(const char *filename);\r
81     void SaveAsText(const char *filename);\r
82     void SaveToStream(ostream &ss);\r
83     bool IsValid(void){\r
84         return bValid;\r
85     };\r
86 \r
87 private:\r
88 \r
89     bool bValid;\r
90     int mNumberOfQbits;  //n\r
91     int mNumberOfStates; //2^n\r
92     double *mBitsR;         //Re\r
93     double *mBitsI;         //Im\r
94 \r
95     double *mBitsM;// Measured Values\r
96 \r
97     bool *mMeasured; //Measured Flag\r
98 \r
99 };\r
100 \r
101 std::ostream &operator<<(std::ostream &os, const QBits &qb);\r
102 std::ostream &operator<<(std::ostream &os, const QBits *qb);\r
103 //---------------------------------------------------------------------------\r
104 #endif //QBITS_H\r