Qrack  9.0
General classical-emulating-quantum development framework
Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | List of all members
Qrack::QEngineShard Class Reference

Associates a QInterface object with a set of bits. More...

#include <qengineshard.hpp>

Public Member Functions

 QEngineShard ()
 
 QEngineShard (const bool &set, const complex rand_phase=ONE_CMPLX)
 
 QEngineShard (QInterfacePtr u, const bitLenInt &mapping)
 
void MakeDirty ()
 
bool ClampAmps ()
 
void DumpMultiBit ()
 
void RemoveControl (QEngineShardPtr p)
 
void RemoveTarget (QEngineShardPtr p)
 
void RemoveAntiControl (QEngineShardPtr p)
 
void RemoveAntiTarget (QEngineShardPtr p)
 
void DumpControlOf ()
 
void DumpAntiControlOf ()
 
void DumpSamePhaseControlOf ()
 
void DumpSamePhaseAntiControlOf ()
 
void MakePhaseControlledBy (QEngineShardPtr p)
 
void MakePhaseControlOf (QEngineShardPtr p)
 
void MakePhaseAntiControlledBy (QEngineShardPtr p)
 
void MakePhaseAntiControlOf (QEngineShardPtr p)
 
void AddPhaseAngles (QEngineShardPtr control, complex topLeft, complex bottomRight)
 
void AddAntiPhaseAngles (QEngineShardPtr control, complex bottomRight, complex topLeft)
 
void AddInversionAngles (QEngineShardPtr control, complex topRight, complex bottomLeft)
 
void AddAntiInversionAngles (QEngineShardPtr control, complex bottomLeft, complex topRight)
 
void OptimizeControls ()
 
void OptimizeTargets ()
 
void OptimizeAntiControls ()
 
void OptimizeAntiTargets ()
 
void OptimizeBothTargets ()
 
void CombineGates ()
 If this bit is both control and target of another bit, try to combine the operations into one gate. More...
 
void SwapTargetAnti (QEngineShardPtr control)
 
void FlipPhaseAnti ()
 
void CommutePhase (complex topLeft, complex bottomRight)
 
void CommuteH ()
 
void DumpPhaseBuffers ()
 
bool IsInvertControl ()
 
bool IsInvertTarget ()
 
void ClearInvertPhase ()
 
bitLenInt GetQubitCount ()
 
real1_f Prob ()
 
bool isClifford ()
 

Public Attributes

QInterfacePtr unit
 
bitLenInt mapped
 
bool isProbDirty
 
bool isPhaseDirty
 
complex amp0
 
complex amp1
 
Pauli pauliBasis
 
ShardToPhaseMap controlsShards
 
ShardToPhaseMap antiControlsShards
 
ShardToPhaseMap targetOfShards
 
ShardToPhaseMap antiTargetOfShards
 
bool found
 

Protected Types

typedef ShardToPhaseMap &(QEngineShard::* GetBufferFn) ()
 
typedef void(QEngineShard::* OptimizeFn) ()
 
typedef void(QEngineShard::* AddRemoveFn) (QEngineShardPtr)
 
typedef void(QEngineShard::* AddAnglesFn) (QEngineShardPtr control, complex cmplxDiff, complex cmplxSame)
 

Protected Member Functions

ShardToPhaseMapGetControlsShards ()
 
ShardToPhaseMapGetAntiControlsShards ()
 
ShardToPhaseMapGetTargetOfShards ()
 
ShardToPhaseMapGetAntiTargetOfShards ()
 
void RemoveBuffer (QEngineShardPtr p, ShardToPhaseMap &localMap, GetBufferFn remoteMapGet)
 
void DumpBuffer (OptimizeFn optimizeFn, ShardToPhaseMap &localMap, AddRemoveFn remoteFn)
 
void DumpSamePhaseBuffer (OptimizeFn optimizeFn, ShardToPhaseMap &localMap, AddRemoveFn remoteFn)
 
void AddBuffer (QEngineShardPtr p, ShardToPhaseMap &localMap, GetBufferFn remoteFn)
 
void AddAngles (QEngineShardPtr control, complex cmplxDiff, complex cmplxSame, AddRemoveFn localFn, ShardToPhaseMap &localMap, AddRemoveFn remoteFn)
 
void OptimizeBuffer (ShardToPhaseMap &localMap, GetBufferFn remoteMapGet, AddAnglesFn phaseFn, bool makeThisControl)
 
void CombineBuffers (GetBufferFn targetMapGet, GetBufferFn controlMapGet, AddAnglesFn angleFn)
 
void RemoveIdentityBuffers (ShardToPhaseMap &localMap, GetBufferFn remoteMapGet)
 
void RemovePhaseBuffers (ShardToPhaseMap &localMap, GetBufferFn remoteMapGet)
 
void ClearMapInvertPhase (ShardToPhaseMap &shards)
 

Detailed Description

Associates a QInterface object with a set of bits.

Member Typedef Documentation

◆ AddAnglesFn

typedef void(QEngineShard::* Qrack::QEngineShard::AddAnglesFn) (QEngineShardPtr control, complex cmplxDiff, complex cmplxSame)
protected

◆ AddRemoveFn

typedef void(QEngineShard::* Qrack::QEngineShard::AddRemoveFn) (QEngineShardPtr)
protected

◆ GetBufferFn

typedef ShardToPhaseMap&(QEngineShard::* Qrack::QEngineShard::GetBufferFn) ()
protected

◆ OptimizeFn

typedef void(QEngineShard::* Qrack::QEngineShard::OptimizeFn) ()
protected

Constructor & Destructor Documentation

◆ QEngineShard() [1/3]

Qrack::QEngineShard::QEngineShard ( )
inline

◆ QEngineShard() [2/3]

Qrack::QEngineShard::QEngineShard ( const bool &  set,
const complex  rand_phase = ONE_CMPLX 
)
inline

◆ QEngineShard() [3/3]

Qrack::QEngineShard::QEngineShard ( QInterfacePtr  u,
const bitLenInt mapping 
)
inline

Member Function Documentation

◆ AddAngles()

void Qrack::QEngineShard::AddAngles ( QEngineShardPtr  control,
complex  cmplxDiff,
complex  cmplxSame,
AddRemoveFn  localFn,
ShardToPhaseMap localMap,
AddRemoveFn  remoteFn 
)
protected

◆ AddAntiInversionAngles()

void Qrack::QEngineShard::AddAntiInversionAngles ( QEngineShardPtr  control,
complex  bottomLeft,
complex  topRight 
)
inline

◆ AddAntiPhaseAngles()

void Qrack::QEngineShard::AddAntiPhaseAngles ( QEngineShardPtr  control,
complex  bottomRight,
complex  topLeft 
)
inline

◆ AddBuffer()

void Qrack::QEngineShard::AddBuffer ( QEngineShardPtr  p,
ShardToPhaseMap localMap,
GetBufferFn  remoteFn 
)
protected

◆ AddInversionAngles()

void Qrack::QEngineShard::AddInversionAngles ( QEngineShardPtr  control,
complex  topRight,
complex  bottomLeft 
)
inline

◆ AddPhaseAngles()

void Qrack::QEngineShard::AddPhaseAngles ( QEngineShardPtr  control,
complex  topLeft,
complex  bottomRight 
)
inline

◆ ClampAmps()

bool Qrack::QEngineShard::ClampAmps ( )

◆ ClearInvertPhase()

void Qrack::QEngineShard::ClearInvertPhase ( )
inline

◆ ClearMapInvertPhase()

void Qrack::QEngineShard::ClearMapInvertPhase ( ShardToPhaseMap shards)
protected

◆ CombineBuffers()

void Qrack::QEngineShard::CombineBuffers ( GetBufferFn  targetMapGet,
GetBufferFn  controlMapGet,
AddAnglesFn  angleFn 
)
protected

◆ CombineGates()

void Qrack::QEngineShard::CombineGates ( )
inline

If this bit is both control and target of another bit, try to combine the operations into one gate.

◆ CommuteH()

void Qrack::QEngineShard::CommuteH ( )

◆ CommutePhase()

void Qrack::QEngineShard::CommutePhase ( complex  topLeft,
complex  bottomRight 
)

◆ DumpAntiControlOf()

void Qrack::QEngineShard::DumpAntiControlOf ( )
inline

◆ DumpBuffer()

void Qrack::QEngineShard::DumpBuffer ( OptimizeFn  optimizeFn,
ShardToPhaseMap localMap,
AddRemoveFn  remoteFn 
)
protected

◆ DumpControlOf()

void Qrack::QEngineShard::DumpControlOf ( )
inline

◆ DumpMultiBit()

void Qrack::QEngineShard::DumpMultiBit ( )

◆ DumpPhaseBuffers()

void Qrack::QEngineShard::DumpPhaseBuffers ( )
inline

◆ DumpSamePhaseAntiControlOf()

void Qrack::QEngineShard::DumpSamePhaseAntiControlOf ( )
inline

◆ DumpSamePhaseBuffer()

void Qrack::QEngineShard::DumpSamePhaseBuffer ( OptimizeFn  optimizeFn,
ShardToPhaseMap localMap,
AddRemoveFn  remoteFn 
)
protected

◆ DumpSamePhaseControlOf()

void Qrack::QEngineShard::DumpSamePhaseControlOf ( )
inline

◆ FlipPhaseAnti()

void Qrack::QEngineShard::FlipPhaseAnti ( )

◆ GetAntiControlsShards()

ShardToPhaseMap& Qrack::QEngineShard::GetAntiControlsShards ( )
inlineprotected

◆ GetAntiTargetOfShards()

ShardToPhaseMap& Qrack::QEngineShard::GetAntiTargetOfShards ( )
inlineprotected

◆ GetControlsShards()

ShardToPhaseMap& Qrack::QEngineShard::GetControlsShards ( )
inlineprotected

◆ GetQubitCount()

bitLenInt Qrack::QEngineShard::GetQubitCount ( )
inline

◆ GetTargetOfShards()

ShardToPhaseMap& Qrack::QEngineShard::GetTargetOfShards ( )
inlineprotected

◆ isClifford()

bool Qrack::QEngineShard::isClifford ( )
inline

◆ IsInvertControl()

bool Qrack::QEngineShard::IsInvertControl ( )

◆ IsInvertTarget()

bool Qrack::QEngineShard::IsInvertTarget ( )

◆ MakeDirty()

void Qrack::QEngineShard::MakeDirty ( )
inline

◆ MakePhaseAntiControlledBy()

void Qrack::QEngineShard::MakePhaseAntiControlledBy ( QEngineShardPtr  p)
inline

◆ MakePhaseAntiControlOf()

void Qrack::QEngineShard::MakePhaseAntiControlOf ( QEngineShardPtr  p)
inline

◆ MakePhaseControlledBy()

void Qrack::QEngineShard::MakePhaseControlledBy ( QEngineShardPtr  p)
inline

◆ MakePhaseControlOf()

void Qrack::QEngineShard::MakePhaseControlOf ( QEngineShardPtr  p)
inline

◆ OptimizeAntiControls()

void Qrack::QEngineShard::OptimizeAntiControls ( )
inline

◆ OptimizeAntiTargets()

void Qrack::QEngineShard::OptimizeAntiTargets ( )
inline

◆ OptimizeBothTargets()

void Qrack::QEngineShard::OptimizeBothTargets ( )

◆ OptimizeBuffer()

void Qrack::QEngineShard::OptimizeBuffer ( ShardToPhaseMap localMap,
GetBufferFn  remoteMapGet,
AddAnglesFn  phaseFn,
bool  makeThisControl 
)
protected

◆ OptimizeControls()

void Qrack::QEngineShard::OptimizeControls ( )
inline

◆ OptimizeTargets()

void Qrack::QEngineShard::OptimizeTargets ( )
inline

◆ Prob()

real1_f Qrack::QEngineShard::Prob ( )
inline

◆ RemoveAntiControl()

void Qrack::QEngineShard::RemoveAntiControl ( QEngineShardPtr  p)
inline

◆ RemoveAntiTarget()

void Qrack::QEngineShard::RemoveAntiTarget ( QEngineShardPtr  p)
inline

◆ RemoveBuffer()

void Qrack::QEngineShard::RemoveBuffer ( QEngineShardPtr  p,
ShardToPhaseMap localMap,
GetBufferFn  remoteMapGet 
)
protected

◆ RemoveControl()

void Qrack::QEngineShard::RemoveControl ( QEngineShardPtr  p)
inline

◆ RemoveIdentityBuffers()

void Qrack::QEngineShard::RemoveIdentityBuffers ( ShardToPhaseMap localMap,
GetBufferFn  remoteMapGet 
)
protected

◆ RemovePhaseBuffers()

void Qrack::QEngineShard::RemovePhaseBuffers ( ShardToPhaseMap localMap,
GetBufferFn  remoteMapGet 
)
protected

◆ RemoveTarget()

void Qrack::QEngineShard::RemoveTarget ( QEngineShardPtr  p)
inline

◆ SwapTargetAnti()

void Qrack::QEngineShard::SwapTargetAnti ( QEngineShardPtr  control)

Member Data Documentation

◆ amp0

complex Qrack::QEngineShard::amp0

◆ amp1

complex Qrack::QEngineShard::amp1

◆ antiControlsShards

ShardToPhaseMap Qrack::QEngineShard::antiControlsShards

◆ antiTargetOfShards

ShardToPhaseMap Qrack::QEngineShard::antiTargetOfShards

◆ controlsShards

ShardToPhaseMap Qrack::QEngineShard::controlsShards

◆ found

bool Qrack::QEngineShard::found

◆ isPhaseDirty

bool Qrack::QEngineShard::isPhaseDirty

◆ isProbDirty

bool Qrack::QEngineShard::isProbDirty

◆ mapped

bitLenInt Qrack::QEngineShard::mapped

◆ pauliBasis

Pauli Qrack::QEngineShard::pauliBasis

◆ targetOfShards

ShardToPhaseMap Qrack::QEngineShard::targetOfShards

◆ unit

QInterfacePtr Qrack::QEngineShard::unit

The documentation for this class was generated from the following files: