Sequential Quantum Gate Decomposer  v1.9.6
Powerful decomposition of general unitarias into one- and two-qubit gates gates
List of all members | Public Member Functions
squander::density::IDensityOperation Class Referenceabstract

Interface for any operation that can be applied to a density matrix. More...

#include <density_operation.h>

Inheritance diagram for squander::density::IDensityOperation:
Inheritance graph
[legend]

Public Member Functions

virtual void apply_to_density (const double *params, int param_count, DensityMatrix &rho)=0
 Apply this operation to the density matrix. More...
 
virtual std::unique_ptr< IDensityOperationclone () const =0
 Create a deep copy of this operation. More...
 
virtual std::string get_name () const =0
 Get operation name for debugging/display. More...
 
virtual int get_parameter_num () const =0
 Get number of free parameters this operation requires. More...
 
virtual bool is_unitary () const =0
 Check if this is a unitary operation (gate) or non-unitary (noise) More...
 
virtual ~IDensityOperation ()=default
 

Detailed Description

Interface for any operation that can be applied to a density matrix.

This is the core abstraction that unifies unitary gates and noise channels. Each operation knows how to apply itself efficiently to a density matrix using optimized local kernel application (O(4^N) instead of O(8^N)).

Example implementations:

Definition at line 41 of file density_operation.h.

Constructor & Destructor Documentation

◆ ~IDensityOperation()

virtual squander::density::IDensityOperation::~IDensityOperation ( )
virtualdefault

Member Function Documentation

◆ apply_to_density()

virtual void squander::density::IDensityOperation::apply_to_density ( const double *  params,
int  param_count,
DensityMatrix rho 
)
pure virtual

Apply this operation to the density matrix.

Parameters
paramsPointer to this operation's parameters (may be nullptr if param_count=0)
param_countNumber of parameters for this operation
rhoThe density matrix to modify in-place

Implemented in squander::density::PhaseDampingOp, squander::density::AmplitudeDampingOp, squander::density::LocalDepolarizingOp, squander::density::DepolarizingOp, and squander::density::GateOperation.

◆ clone()

virtual std::unique_ptr<IDensityOperation> squander::density::IDensityOperation::clone ( ) const
pure virtual

Create a deep copy of this operation.

Returns
Unique pointer to the cloned operation

Implemented in squander::density::PhaseDampingOp, squander::density::AmplitudeDampingOp, squander::density::LocalDepolarizingOp, squander::density::DepolarizingOp, and squander::density::GateOperation.

Here is the caller graph for this function:

◆ get_name()

virtual std::string squander::density::IDensityOperation::get_name ( ) const
pure virtual

Get operation name for debugging/display.

Returns
Human-readable name (e.g., "H", "CNOT", "Depolarizing")

Implemented in squander::density::PhaseDampingOp, squander::density::AmplitudeDampingOp, squander::density::LocalDepolarizingOp, squander::density::DepolarizingOp, and squander::density::GateOperation.

◆ get_parameter_num()

virtual int squander::density::IDensityOperation::get_parameter_num ( ) const
pure virtual

Get number of free parameters this operation requires.

Returns
Number of parameters (0 for constant gates/fixed noise)

Implemented in squander::density::PhaseDampingOp, squander::density::AmplitudeDampingOp, squander::density::LocalDepolarizingOp, squander::density::DepolarizingOp, and squander::density::GateOperation.

◆ is_unitary()

virtual bool squander::density::IDensityOperation::is_unitary ( ) const
pure virtual

Check if this is a unitary operation (gate) or non-unitary (noise)

Returns
true for unitary gates, false for noise channels

Implemented in squander::density::GateOperation, and squander::density::NoiseOperation.

Here is the caller graph for this function:

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