class QPUImpl

Overview

QPU implementation base class. More…

#include <QPUImpl.h>

class QPUImpl
{
public:
    // methods

    virtual bool qubitMeasure(size_t qn) = 0;

    virtual QError pMeasure(
        Qnum& qnum,
        prob_vec& mResult
        ) = 0;

    virtual QError initState(
        size_t head_rank,
        size_t rank_size,
        size_t qubit_num
        ) = 0;

    virtual QError initState(
        size_t qubit_num,
        const QStat& state = {}
        ) = 0;

    virtual QError unitarySingleQubitGate(size_t qn, QStat& matrix, bool isConjugate, GateType) = 0;
    virtual QError controlunitarySingleQubitGate(size_t qn, Qnum& qnum, QStat& matrix, bool isConjugate, GateType) = 0;
    virtual QError unitaryDoubleQubitGate(size_t qn_0, size_t qn_1, QStat& matrix, bool isConjugate, GateType) = 0;
    virtual QError controlunitaryDoubleQubitGate(size_t qn_0, size_t qn_1, Qnum& qnum, QStat& matrix, bool isConjugate, GateType) = 0;
    virtual QStat getQState() = 0;
    virtual void set_random_engine(RandomEngine* rng);
    virtual double get_random_double();
    virtual QError Reset(size_t qn) = 0;
};

// direct descendants

class CPUImplQPU;
class CPUImplQPUSingleThread;
class DistributedFullAmplitudeEngine;
class NoisyCPUImplQPU;
class MPSImplQPU;

Detailed Documentation

QPU implementation base class.

Methods

virtual QError unitarySingleQubitGate(size_t qn, QStat& matrix, bool isConjugate, GateType) = 0

unitary single qubit gate

Parameters:

size_t

qubit address

QStat&

matrix

bool

state of conjugate

GateType

gate type

Returns:

QError

virtual QError controlunitarySingleQubitGate(
    size_t qn,
    Qnum& qnum,
    QStat& matrix,
    bool isConjugate,
    GateType
    ) = 0

controlunitary single qubit gate

Parameters:

size_t

qubit address

Qnum&

control qubit addresses

QStat

& matrix

bool

state of conjugate

GateType

gate type

Returns:

QError

virtual QError unitaryDoubleQubitGate(
    size_t qn_0,
    size_t qn_1,
    QStat& matrix,
    bool isConjugate,
    GateType
    ) = 0

unitary double qubit gate

Parameters:

size_t

first qubit address

size_t

second qubit address

QStat&

matrix

bool

state of conjugate

GateType

gate type

Returns:

QError

virtual QError controlunitaryDoubleQubitGate(
    size_t qn_0,
    size_t qn_1,
    Qnum& qnum,
    QStat& matrix,
    bool isConjugate,
    GateType
    ) = 0

controlunitary double qubit gate

Parameters:

size_t

first qubit address

size_t

second qubit address

Qnum&

control qubit addresses

QStat&

quantum states

bool

state of conjugate

GateType

gate type

Returns:

QError

virtual QStat getQState() = 0

get quantum states

virtual QError Reset(size_t qn) = 0

reset qubit

Parameters:

size_t

qubit address