The Networks by Vedral et.al

Peter Belkner <pbelkner@snafu.de>

Vedral et.al. (quant-ph/9511018) propose various quantum netwerks for performing arithmetics on a quantum computer. The class EqcsVedral as shown in Listing 1 provides methods to compile gate arrays implementing such netwerks.

class EqcsVedral {
public:
    // The not gate.
    class Not: public EqcsLambda {
    public:
        Not(int bit);
    };

    // The controlled not gate.
    class CNot: public EqcsLambda {
    public:
        CNot(int c, int bit);
    };

    // The controlled controlled not gate.
    class CCNot: public EqcsLambda {
    public:
        CCNot(int c0, int c1, int bit);
    };

    // Elementary carry network.
    static void carry(EqcsGateArray &a, int b0, int b1, int b2, int b3);
    // Elementary carry network in reversed order.
    static void rcarry(EqcsGateArray &a, int b0, int b1, int b2, int b3);
    // Elementary sum network.
    static void sum(EqcsGateArray &a, int b0, int b1, int b2);
    // Elementary sum network in reversed order.
    static void rsum(EqcsGateArray &a, int b0, int b1, int b2);

    // Plain adder network for adding two n-bit numbers.
    static void plain_adder(EqcsGateArray &a, int n);
    // Plain adder network for adding two n-bit numbers in reversed order.
    static void rplain_adder(EqcsGateArray &a, int n);
};
Listing 1: The plain adder.

The Elementary Gates
The Carry and Sum Networks
The Plain Adder Network


Peter Belkner <pbelkner@snafu.de>