Skip to main content

Operator

Base class for all quantum operators.

Factories

operator_free(const Operator operator) -> Operator

Generates an operator that represents the hopping terms of the input operator.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • operator: The operator representing a sum of hopping terms.

operator_free(const RealMatrix matrix) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the free operator.

operator_free(const RealSparseMatrix matrix) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the free operator.

operator_free(const ComplexMatrix matrix) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the free operator.

operator_free(const ComplexSparseMatrix matrix) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the free operator.

operator_free(const Operator operator_sum, const StateInfo options) -> Operator

Generates an operator that represents the hopping terms of the input operator.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • operator_sum: The operator sum.
  • options: A set of options used to dispatch the appropriate operator.

operator_free(const ComplexMatrix matrix, as_complex options) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the single-particle operator.
  • options: A set of options used to specify the single particle operator type.

operator_free(const ComplexMatrix matrix, as_real options) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the single-particle operator.
  • options: A set of options used to specify the single particle operator type.

operator_free(const ComplexMatrix matrix, const StateInfo options) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the single-particle operator.
  • options: A set of options used to specify the single particle operator type.

operator_free(const RealSparseMatrix matrix, as_complex options) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the single-particle operator.
  • options: A set of options used to specify the single particle operator type.

operator_free(const RealSparseMatrix matrix, as_real options) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the single-particle operator.
  • options: A set of options used to specify the single particle operator type.

operator_free(const RealSparseMatrix matrix, const StateInfo options) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the single-particle operator.
  • options: A set of options used to specify the single particle operator type.

operator_free(const ComplexSparseMatrix matrix, as_real options) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the single-particle operator.
  • options: A set of options used to specify the single particle operator type.

operator_free(const ComplexSparseMatrix matrix, const StateInfo options) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the single-particle operator.
  • options: A set of options used to specify the single particle operator type.

operator_free(const RealMatrix matrix, const StateInfo options) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the single-particle operator.
  • options: A set of options used to specify the single particle operator type.

operator_free(const RealMatrix matrix, as_real options) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the single-particle operator.
  • options: A set of options used to specify the single particle operator type.

operator_free(const RealMatrix matrix, as_complex options) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the single-particle operator.
  • options: A set of options used to specify the single particle operator type.

operator_free(const ComplexSparseMatrix matrix, as_complex options) -> Operator

Generates an operator that represents the hopping terms of the input matrix.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • matrix: The matrix representation of the single-particle operator.
  • options: A set of options used to specify the single particle operator type.

operator_free(const Operator operator_sum, as_real options) -> Operator

Generates an operator that represents the hopping terms of the input operator.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • operator_sum: The operator sum.
  • options: A set of options used to dispatch the appropriate operator.

operator_free(const Operator operator_sum, as_complex options) -> Operator

Generates an operator that represents the hopping terms of the input operator.

Unless specified otherwise, using the factory operator_free on an operator will default to complex. Valid options include (as_real, as_complex, unspecified) | (as_fermion, unspecified) | (as_singleparticle, unspecified) | (as_sparse, unspecified) and will default to (as_complex | as_fermion | as_singleparticle | as_sparse) respectively. When used on a matrix, the scalar field defaults to that of the provided matrix unless specified otherwise.

Parameters

  • operator_sum: The operator sum.
  • options: A set of options used to dispatch the appropriate operator.

operator_stencil(const Map options) -> Operator

Generates a stencil operator.

A free stencil represents an operator of the form sn=0Nαncscs+δn\sum_{s}\sum_{n=0}^N \alpha_{n}c_{s}^{\dagger}c_{s + \delta_n} where δn\delta_n are displacement vectors, ss are lattice position vectors, the αn\alpha_n are position independent coefficients and NN is the number of such coefficients.To construct a stencil, the above parameters must be passed explicitly, together with information about the lattice dimensions and the boundary conditions.

Parameters

  • options: An option map to specify the parameters of the stencil.

Example

var stencil_vectors = [[-1,0],[1,0],[0,1],[0,-1]] //[[delta_{0,x},delta_{0,y}],[delta_{1,x},delta_{1,y}],[delta_{2,x},delta_{2,y}],[delta_{3,x},delta_{3,y}]]
var dimensions = [50,40] // [L_x, L_y]
var stencil_values = [0.5 + 1i, 0.2 + 1i, 0.3 + 0.1i, 2i + 2] // [alpha_0, alpha_1, alpha_2, alpha_3]
var boundary_conditions = ["periodic", "open"]
var stencil = operator_stencil(["displacements":stencil_vectors,"dimensions":dimensions,"values":stencil_values,"boundary_conditions":boundary_conditions])

operator_stencil(const Model model) -> Operator

Converts a model to a free fermion stencil operator.

Parameters

  • model: The model to convert to a free fermion stencil operator.

Example

var my_model = model(lattice("square", [4,4]))
my_model.add(coefficient("J", 1.0))
my_model.add(neighbourhood_rule("nn_x", [1,0]))
my_model.add(neighbourhood_rule("nn_y", [0,1]))
my_model.add(term("J", [Create, Destroy], "nn_x"))
my_model.add(term("J", [Create, Destroy], "nn_y"))
var stencil = operator_stencil(my_model)

Symbols

NameDescription
!=Compares two Operator objects for inequality. Returns true if the operators differ in type or internal structure.
*Applies an operator to a state vector.
+Adds two operators together. Returns a generic Operator for basic additions, ComplexOperatorSum when explicitly working with complex coefficients.
-Subtracts one operator from another. Returns a generic Operator for basic subtractions, ComplexOperatorSum when explicitly working with complex coefficients.
=Assigns an Operator expression, replacing any existing content.
==Compares two operators for equality.Two operators are equal if they are the same type and have identical parameters.Note that mathematically equivalent expressions may not be considered equal
>>Apply a spin-1/2 operator to a Matrix Product State (MPS) with Real values in place. If truncation parameters were configured on the MPS, they are used after application.

Members

NameDescription
adjointedReturns the adjoint of the given operator.
expvalComputes the expectation value of an Operator for a given state. Calculates <ψ\psi|O|ψ\psi>, where ψ\psi is a quantum state and OO is an operator.
is_hermitianReturns true if the operator is Hermitian (self-adjoint).
is_realReturns true if the operator has a real matrix representation.
is_unitaryReturns true if the operator is unitary.
normComputes the spectral norm (largest singular value) of the operator. Can be called using either function call syntax norm(op) or method call syntax op.norm().
supportReturns the support of the operator (the set of qubits it acts on) .Current limitation: This version only supports OperatorProduct and single operators. OperatorSum support may not work correctly in this version.