1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
module catN ( qbit *bit, const int n ) {
    H( bit[0] );
    for ( int i=1; i < n; i++ ) {
        CNOT( bit[i], bit[i-1] );
    }
}

module unCatN ( qbit *bit, const int n ) {
    for ( int i=n-1; i > 0; i-- ) {
        CNOT( bit[i], bit[i-1] );
    }
    H( bit[0] );
}

int main () {
    qbit bits[4];
    catN( bits, 4 );
    return 0;
}