24 #define IS_ARG_0(c) IS_SAME(c, ONE_CMPLX)
25 #define IS_ARG_PI(c) IS_OPPOSITE(c, ONE_CMPLX)
335 typedef std::vector<QEngineShard>::iterator
iterator;
359 swapMap[(size_t)start + lcv] += oSize;
Definition: qengineshard.hpp:315
std::vector< bitLenInt > swapMap
Definition: qengineshard.hpp:318
std::vector< QEngineShard >::iterator iterator
Definition: qengineshard.hpp:335
std::vector< QEngineShard > shards
Definition: qengineshard.hpp:317
void push_back(const QEngineShard &shard)
Definition: qengineshard.hpp:345
bitLenInt size()
Definition: qengineshard.hpp:343
QEngineShardMap()
Definition: qengineshard.hpp:321
QEngineShardMap(const bitLenInt &size)
Definition: qengineshard.hpp:326
void swap(bitLenInt qubit1, bitLenInt qubit2)
Definition: qengineshard.hpp:379
void erase(bitLenInt begin, bitLenInt end)
Definition: qengineshard.hpp:363
void insert(bitLenInt start, QEngineShardMap &toInsert)
Definition: qengineshard.hpp:351
iterator begin()
Definition: qengineshard.hpp:339
iterator end()
Definition: qengineshard.hpp:341
QEngineShard & operator[](const bitLenInt &i)
Definition: qengineshard.hpp:337
Associates a QInterface object with a set of bits.
Definition: qengineshard.hpp:50
void CombineGates()
If this bit is both control and target of another bit, try to combine the operations into one gate.
Definition: qengineshard.hpp:251
void AddPhaseAngles(QEngineShardPtr control, complex topLeft, complex bottomRight)
Definition: qengineshard.hpp:196
void AddBuffer(QEngineShardPtr p, ShardToPhaseMap &localMap, GetBufferFn remoteFn)
Definition: qengineshard.cpp:113
void OptimizeBothTargets()
Definition: qengineshard.cpp:168
void DumpControlOf()
Definition: qengineshard.hpp:162
QEngineShard(QInterfacePtr u, const bitLenInt &mapping)
Definition: qengineshard.hpp:117
ShardToPhaseMap & GetAntiControlsShards()
Definition: qengineshard.hpp:79
void DumpMultiBit()
Definition: qengineshard.cpp:51
void MakePhaseControlledBy(QEngineShardPtr p)
Definition: qengineshard.hpp:180
complex amp0
Definition: qengineshard.hpp:62
ShardToPhaseMap & GetControlsShards()
Definition: qengineshard.hpp:78
void FlipPhaseAnti()
Definition: qengineshard.cpp:258
void RemoveIdentityBuffers(ShardToPhaseMap &localMap, GetBufferFn remoteMapGet)
Definition: qengineshard.cpp:304
void OptimizeAntiTargets()
Definition: qengineshard.hpp:238
void CommutePhase(complex topLeft, complex bottomRight)
Definition: qengineshard.cpp:281
void AddAngles(QEngineShardPtr control, complex cmplxDiff, complex cmplxSame, AddRemoveFn localFn, ShardToPhaseMap &localMap, AddRemoveFn remoteFn)
Definition: qengineshard.cpp:122
bool ClampAmps()
Definition: qengineshard.cpp:29
bitLenInt mapped
Definition: qengineshard.hpp:59
void(QEngineShard::* OptimizeFn)()
Definition: qengineshard.hpp:53
void OptimizeAntiControls()
Definition: qengineshard.hpp:233
ShardToPhaseMap antiTargetOfShards
Definition: qengineshard.hpp:72
void RemovePhaseBuffers(ShardToPhaseMap &localMap, GetBufferFn remoteMapGet)
Definition: qengineshard.cpp:324
void(QEngineShard::* AddAnglesFn)(QEngineShardPtr control, complex cmplxDiff, complex cmplxSame)
Definition: qengineshard.hpp:55
void AddAntiPhaseAngles(QEngineShardPtr control, complex bottomRight, complex topLeft)
Definition: qengineshard.hpp:201
bool isProbDirty
Definition: qengineshard.hpp:60
ShardToPhaseMap targetOfShards
Definition: qengineshard.hpp:70
void RemoveControl(QEngineShardPtr p)
Definition: qengineshard.hpp:146
bitLenInt GetQubitCount()
Definition: qengineshard.hpp:295
void DumpAntiControlOf()
Definition: qengineshard.hpp:163
bool isClifford()
Definition: qengineshard.hpp:304
QEngineShard()
Definition: qengineshard.hpp:84
QInterfacePtr unit
Definition: qengineshard.hpp:58
void MakePhaseAntiControlledBy(QEngineShardPtr p)
Definition: qengineshard.hpp:182
void RemoveTarget(QEngineShardPtr p)
Definition: qengineshard.hpp:147
void RemoveAntiTarget(QEngineShardPtr p)
Definition: qengineshard.hpp:152
void RemoveBuffer(QEngineShardPtr p, ShardToPhaseMap &localMap, GetBufferFn remoteMapGet)
Definition: qengineshard.cpp:75
void MakePhaseAntiControlOf(QEngineShardPtr p)
Definition: qengineshard.hpp:186
ShardToPhaseMap & GetAntiTargetOfShards()
Definition: qengineshard.hpp:81
void OptimizeBuffer(ShardToPhaseMap &localMap, GetBufferFn remoteMapGet, AddAnglesFn phaseFn, bool makeThisControl)
Definition: qengineshard.cpp:144
void ClearInvertPhase()
Definition: qengineshard.hpp:285
real1_f Prob()
Definition: qengineshard.hpp:296
void AddAntiInversionAngles(QEngineShardPtr control, complex bottomLeft, complex topRight)
Definition: qengineshard.hpp:213
ShardToPhaseMap & GetTargetOfShards()
Definition: qengineshard.hpp:80
void DumpPhaseBuffers()
Definition: qengineshard.hpp:270
ShardToPhaseMap controlsShards
Definition: qengineshard.hpp:66
Pauli pauliBasis
Definition: qengineshard.hpp:64
void DumpBuffer(OptimizeFn optimizeFn, ShardToPhaseMap &localMap, AddRemoveFn remoteFn)
Definition: qengineshard.cpp:84
ShardToPhaseMap &(QEngineShard::* GetBufferFn)()
Definition: qengineshard.hpp:52
void(QEngineShard::* AddRemoveFn)(QEngineShardPtr)
Definition: qengineshard.hpp:54
void MakePhaseControlOf(QEngineShardPtr p)
Definition: qengineshard.hpp:181
void SwapTargetAnti(QEngineShardPtr control)
Definition: qengineshard.cpp:239
void OptimizeTargets()
Definition: qengineshard.hpp:229
complex amp1
Definition: qengineshard.hpp:63
void DumpSamePhaseAntiControlOf()
Definition: qengineshard.hpp:171
bool found
Definition: qengineshard.hpp:74
void MakeDirty()
Definition: qengineshard.hpp:133
QEngineShard(const bool &set, const complex rand_phase=ONE_CMPLX)
Definition: qengineshard.hpp:100
void AddInversionAngles(QEngineShardPtr control, complex topRight, complex bottomLeft)
Definition: qengineshard.hpp:206
bool IsInvertTarget()
Definition: qengineshard.cpp:402
void RemoveAntiControl(QEngineShardPtr p)
Definition: qengineshard.hpp:148
void DumpSamePhaseControlOf()
Definition: qengineshard.hpp:167
ShardToPhaseMap antiControlsShards
Definition: qengineshard.hpp:68
bool IsInvertControl()
Definition: qengineshard.cpp:385
void ClearMapInvertPhase(ShardToPhaseMap &shards)
Definition: qengineshard.cpp:419
bool isPhaseDirty
Definition: qengineshard.hpp:61
void DumpSamePhaseBuffer(OptimizeFn optimizeFn, ShardToPhaseMap &localMap, AddRemoveFn remoteFn)
Definition: qengineshard.cpp:94
void CombineBuffers(GetBufferFn targetMapGet, GetBufferFn controlMapGet, AddAnglesFn angleFn)
Definition: qengineshard.cpp:211
void CommuteH()
Definition: qengineshard.cpp:343
void OptimizeControls()
Definition: qengineshard.hpp:225
Definition: complex16x2simd.hpp:25
std::complex< half_float::half > complex
Definition: qrack_types.hpp:62
std::shared_ptr< QInterface > QInterfacePtr
Definition: qinterface.hpp:28
std::shared_ptr< PhaseShard > PhaseShardPtr
Definition: qengineshard.hpp:46
QRACK_CONST real1 FP_NORM_EPSILON
Definition: qrack_types.hpp:243
double norm(const complex2 &c)
Definition: complex16x2simd.hpp:101
QRACK_CONST complex ONE_CMPLX
Definition: qrack_types.hpp:239
float real1_f
Definition: qrack_types.hpp:64
QRACK_CONST complex I_CMPLX
Definition: qrack_types.hpp:241
std::map< QEngineShardPtr, PhaseShardPtr > ShardToPhaseMap
Definition: qengineshard.hpp:47
Pauli
Enumerated list of Pauli bases.
Definition: qinterface.hpp:34
@ PauliZ
Pauli Z operator. Corresponds to Q# constant "PauliZ.".
Definition: qinterface.hpp:42
QRACK_CONST complex ZERO_CMPLX
Definition: qrack_types.hpp:240
QEngineShard * QEngineShardPtr
Definition: qengineshard.hpp:44
std::map< QInterface *, std::map< uintq, bitLenInt > > shards
Definition: pinvoke_api.cpp:262
MICROSOFT_QUANTUM_DECL void U(_In_ uintq sid, _In_ uintq q, _In_ double theta, _In_ double phi, _In_ double lambda)
(External API) 3-parameter unitary gate
Definition: pinvoke_api.cpp:1362
#define bitLenInt
Definition: qrack_types.hpp:44
Caches controlled gate phase between shards, (as a case of "gate fusion" optimization particularly us...
Definition: qengineshard.hpp:31
complex cmplxSame
Definition: qengineshard.hpp:33
PhaseShard()
Definition: qengineshard.hpp:36
bool isInvert
Definition: qengineshard.hpp:34
complex cmplxDiff
Definition: qengineshard.hpp:32