template class QPanda::PauliOp

Overview

Pauli operator class. More…

#include <PauliOperator.h>

template <class T>
class PauliOp
{
public:
    // typedefs

    typedef std::pair<QPauliPair, T> PauliItem;
    typedef std::vector<PauliItem> PauliData;
    typedef std::map<std::string, T> PauliMap;

    // construction

    PauliOp();
    PauliOp(const T& value);
    PauliOp(double value);

    PauliOp(
        const std::string& key,
        const T& value
        );

    PauliOp(const PauliMap& map);
    PauliOp(PauliOp&& op);
    PauliOp(const PauliOp& op);
    PauliOp(PauliData&& pauli);
    PauliOp(const PauliData& pauli);

    // methods

    PauliOp& operator = (const PauliOp& op);
    PauliOp& operator = (PauliOp&& op);
    PauliOp dagger() const;
    PauliOp remapQubitIndex(std::map<size_t, size_t>& index_map);
    size_t getMaxIndex();
    bool isEmpty();
    bool isAllPauliZorI();
    void setErrorThreshold(double threshold);
    double error_threshold() const;
    std::string toString() const;
    PauliData data() const;
    QHamiltonian toHamiltonian(bool* ok = nullptr) const;
    PauliOp operator + (const PauliOp& rhs) const;
    PauliOp operator - (const PauliOp& rhs) const;
    PauliOp operator * (const PauliOp& rhs) const;
    PauliOp& operator += (const PauliOp& rhs);
    PauliOp& operator -= (const PauliOp& rhs);
    PauliOp& operator *= (const PauliOp& rhs);
};

Detailed Documentation

Pauli operator class.

Construction

PauliOp()

Constructor of PauliOp class.

Methods

PauliOp dagger() const

get the Transposed conjugate matrix

Returns:

PauliOp return the Transposed conjugate matrix

PauliOp remapQubitIndex(std::map<size_t, size_t>& index_map)

remap qubit index

Parameters:

std::map<size_t

size_t>&

qubit index map

Returns:

PauliOp return remapped qubit index map

size_t getMaxIndex()

get the max index

Returns:

size_t the max index

bool isEmpty()

Judge whether it is empty.

Returns:

bool if data is empty, return true, or else return false

bool isAllPauliZorI()

Judge whether all of data is “Z”.

Returns:

bool if all data is “Z”, return true, or else return false

void setErrorThreshold(double threshold)

set error threshold

Parameters:

double

threshold val

double error_threshold() const

get error threshold

Returns:

double return the error threshold val

std::string toString() const

data to string

Returns:

std::string convert data val to string

PauliData data() const

get data

Returns:

PauliData return Pauli data

QHamiltonian toHamiltonian(bool* ok = nullptr) const

convert data to Hamiltonian

Parameters:

bool*

save the convert result, default is nullptr

Returns:

QHamiltonian the convert result

PauliOp operator + (const PauliOp& rhs) const

overload +

Returns:

PauliOp return (PauliOp_left + PauliOp_right)

PauliOp operator - (const PauliOp& rhs) const

overload -

Returns:

PauliOp return (PauliOp_left - PauliOp_right)

PauliOp operator * (const PauliOp& rhs) const

overload *

Returns:

PauliOp return (PauliOp_left * PauliOp_right)

PauliOp& operator += (const PauliOp& rhs)

overload +=

Returns:

PauliOp return (PauliOp_left += PauliOp_right)

PauliOp& operator -= (const PauliOp& rhs)

overload -=

Returns:

PauliOp return (PauliOp_left -= PauliOp_right)

PauliOp& operator *= (const PauliOp& rhs)

overload *=

Returns:

PauliOp return (PauliOp_left *= PauliOp_right)