Qrack  9.13
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, const complex &topLeft, const complex &bottomRight)
 
void AddAntiPhaseAngles (QEngineShardPtr control, const complex &bottomRight, const complex &topLeft)
 
void AddInversionAngles (QEngineShardPtr control, const complex &topRight, const complex &bottomLeft)
 
void AddAntiInversionAngles (QEngineShardPtr control, const complex &bottomLeft, const 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 (const complex &topLeft, const 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, const complex &cmplxDiff, const 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, const complex &cmplxDiff, const 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, const complex &cmplxDiff, const 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,
const complex cmplxDiff,
const complex cmplxSame,
AddRemoveFn  localFn,
ShardToPhaseMap localMap,
AddRemoveFn  remoteFn 
)
protected

◆ AddAntiInversionAngles()

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

◆ AddAntiPhaseAngles()

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

◆ AddBuffer()

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

◆ AddInversionAngles()

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

◆ AddPhaseAngles()

void Qrack::QEngineShard::AddPhaseAngles ( QEngineShardPtr  control,
const complex topLeft,
const 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 ( const complex topLeft,
const 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: