1 //---------------------------------------------------------------------------
\r
2 // Represent bits states
\r
3 //---------------------------------------------------------------------------
\r
6 //---------------------------------------------------------------------------
\r
12 using namespace std;
\r
26 for (int i=0;i<256;i++)
\r
33 //---------------------------------------------------------------------------
\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
43 QBits(char * filename);
\r
44 QBits(const QBits &qubits);
\r
48 bool Allocate(int n);
\r
49 int GetNumberOfQBits(void) const {
\r
50 return mNumberOfQbits;
\r
52 int GetNumberOfStates(void) const {
\r
53 return mNumberOfStates;
\r
55 void Measure(int index){
\r
56 mMeasured[index] = true;
\r
58 bool isMeasured(int index){
\r
59 return mMeasured[index];
\r
61 int GetNumberOfMeasured(void);
\r
62 string GetMeasuredString(int index);
\r
65 double &NthStateR(const int nth) const;
\r
66 double &NthStateI(const int nth) const;
\r
67 double *GetBitsR(void) {
\r
70 double *GetBitsI(void) {
\r
73 double GetAbsoluteValue(int index);
\r
74 double GetMeasuredValue(int index);
\r
76 void PerformMeasurement(void);
\r
77 void SaveMeasurementToStream(ostream &os);
\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
90 int mNumberOfQbits; //n
\r
91 int mNumberOfStates; //2^n
\r
92 double *mBitsR; //Re
\r
93 double *mBitsI; //Im
\r
95 double *mBitsM;// Measured Values
\r
97 bool *mMeasured; //Measured Flag
\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