The Quantum Exact Simulation Toolkit v4.0.0
Loading...
Searching...
No Matches

Functions for initialising Qureg into physical states. More...

Functions

void initArbitraryPureState (Qureg qureg, qcomp *amps)
 
void initBlankState (Qureg qureg)
 
void initClassicalState (Qureg qureg, qindex stateInd)
 
void initDebugState (Qureg qureg)
 
void initPlusState (Qureg qureg)
 
void initPureState (Qureg qureg, Qureg pure)
 
void initRandomMixedState (Qureg qureg, qindex numPureStates)
 
void initRandomPureState (Qureg qureg)
 
void initZeroState (Qureg qureg)
 

Detailed Description

Functions for initialising Qureg into physical states.

Function Documentation

◆ initArbitraryPureState()

void initArbitraryPureState ( Qureg qureg,
qcomp * amps )
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!

Definition at line 103 of file initialisations.cpp.

103 {
104 validate_quregFields(qureg, __func__);
105
106 // set qureg = |amps> or |amps><amps|
107 (qureg.isDensityMatrix)?
108 localiser_densmatr_initArbitraryPureState(qureg, amps):
109 localiser_statevec_initArbitraryPureState(qureg, amps);
110}

Referenced by TEST_CASE(), and TEST_CASE().

◆ initBlankState()

void initBlankState ( Qureg qureg)
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!

Definition at line 42 of file initialisations.cpp.

42 {
43 validate_quregFields(qureg, __func__);
44
45 // |null> = {0, 0, 0, ...}
46 qcomp amp = 0;
47 localiser_statevec_initUniformState(qureg, amp);
48}

Referenced by TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), and TEST_CASE().

◆ initClassicalState()

void initClassicalState ( Qureg qureg,
qindex stateInd )
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!

Definition at line 84 of file initialisations.cpp.

84 {
85 validate_quregFields(qureg, __func__);
86 validate_basisStateIndex(qureg, ind, __func__);
87
88 // |ind><ind| = ||ind'>>
89 if (qureg.isDensityMatrix)
90 ind = util_getGlobalFlatIndex(qureg, ind, ind);
91
92 localiser_statevec_initClassicalState(qureg, ind);
93}

Referenced by TEST_CASE(), TEST_CASE(), and TEST_CASE().

◆ initDebugState()

void initDebugState ( Qureg qureg)
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!

Definition at line 96 of file initialisations.cpp.

96 {
97 validate_quregFields(qureg, __func__);
98
99 localiser_statevec_initDebugState(qureg);
100}

Referenced by TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), and TEST_CASE().

◆ initPlusState()

void initPlusState ( Qureg qureg)
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!

Definition at line 60 of file initialisations.cpp.

60 {
61 validate_quregFields(qureg, __func__);
62
63 // |+> = sum_i 1/sqrt(2^N) |i> where 2^N = numAmps
64 // |+><+| = sum_ij 1/2^N |i><j| where 2^N = sqrt(numAmps)
65 qcomp amp = 1.0 / std::sqrt(qureg.numAmps);
66 localiser_statevec_initUniformState(qureg, amp);
67}

Referenced by TEST_CASE(), TEST_CASE(), and TEST_CASE().

◆ initPureState()

void initPureState ( Qureg qureg,
Qureg pure )
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!
Warning
This function has not yet been unit tested and may contain bugs. Please use with caution!

Definition at line 70 of file initialisations.cpp.

70 {
71 validate_quregFields(qureg, __func__);
72 validate_quregFields(pure, __func__);
73 validate_quregCanBeInitialisedToPureState(qureg, pure, __func__);
74
75 // when qureg=statevec, we lazily invoke setQuregToSuperposition which
76 // invokes superfluous floating-point operations which will be happily
77 // occluded by the memory movement costs
78 (qureg.isDensityMatrix)?
79 localiser_densmatr_initPureState(qureg, pure):
80 localiser_statevec_setQuregToSuperposition(0, qureg, 1, pure, 0, pure);
81}

Referenced by TEST_CASE().

◆ initRandomMixedState()

void initRandomMixedState ( Qureg qureg,
qindex numPureStates )
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!

Definition at line 136 of file initialisations.cpp.

136 {
137 validate_quregFields(qureg, __func__);
138 validate_quregIsDensityMatrix(qureg, __func__);
139 validate_numInitRandomPureStates(numPureStates, __func__);
140
141 localiser_densmatr_initMixtureOfUniformlyRandomPureStates(qureg, numPureStates);
142}

Referenced by TEST_CASE().

◆ initRandomPureState()

void initRandomPureState ( Qureg qureg)
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!

Definition at line 121 of file initialisations.cpp.

121 {
122 validate_quregFields(qureg, __func__);
123
124 // these invoked localiser functions may harmlessly
125 // re-call the API and re-perform input validation
126
127 if (qureg.isDensityMatrix)
128 localiser_densmatr_initUniformlyRandomPureStateAmps(qureg);
129 else {
130 localiser_statevec_initUnnormalisedUniformlyRandomPureStateAmps(qureg);
132 }
133}
qreal setQuregToRenormalized(Qureg qureg)

Referenced by TEST_CASE().

◆ initZeroState()

void initZeroState ( Qureg qureg)
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!

Definition at line 51 of file initialisations.cpp.

51 {
52 validate_quregFields(qureg, __func__);
53
54 // |0> = |0><0|
55 qindex ind = 0;
56 localiser_statevec_initClassicalState(qureg, ind);
57}

Referenced by TEST_CASE(), TEST_CASE(), TEST_CASE(), and TEST_CASE().