// Independent finite-field gate algebra. Generated by scripts/generate_quantum_baseline.py.
// Arguments/results use source coordinate order: first deepest.

__complex_zero:
    push 0
    push 0
    return

__complex_one:
    push 1
    push 0
    return

__complex_add:
    dup 3
    dup 2
    add
    dup 3
    dup 2
    add
    pick 2
    pop 1
    pick 2
    pop 1
    pick 2
    pop 1
    pick 2
    pop 1
    return

__complex_sub:
    dup 3
    dup 2
    push -1
    mul
    add
    dup 3
    dup 2
    push -1
    mul
    add
    pick 2
    pop 1
    pick 2
    pop 1
    pick 2
    pop 1
    pick 2
    pop 1
    return

__complex_mul:
    dup 3
    dup 2
    mul
    dup 3
    dup 2
    mul
    push -1
    mul
    add
    dup 4
    dup 2
    mul
    dup 4
    dup 4
    mul
    add
    pick 2
    pop 1
    pick 2
    pop 1
    pick 2
    pop 1
    pick 2
    pop 1
    return

__complex_scale:
    dup 2
    dup 2
    mul
    dup 3
    dup 2
    mul
    pick 2
    pop 1
    pick 2
    pop 1
    pick 2
    pop 1
    return

__complex_conj:
    push -1
    mul
    return

__complex_norm_sq:
    dup 1
    dup 2
    mul
    dup 1
    dup 2
    mul
    add
    pick 1
    pop 1
    pick 1
    pop 1
    return

__init_zero:
    push 1
    push 0
    push 0
    push 0
    return

__init_one:
    push 0
    push 0
    push 1
    push 0
    return

__paulix:
    swap 3
    swap 1
    swap 3
    swap 2
    return

__pauliz:
    swap 1
    push -1
    mul
    swap 1
    push -1
    mul
    return

__pauliy:
    swap 3
    swap 2
    swap 1
    swap 2
    swap 2
    push -1
    mul
    swap 2
    swap 1
    push -1
    mul
    swap 1
    return

__hadamard:
    dup 3
    dup 2
    add
    dup 3
    dup 2
    add
    dup 5
    dup 4
    push -1
    mul
    add
    dup 5
    dup 4
    push -1
    mul
    add
    pick 4
    pop 1
    pick 4
    pop 1
    pick 4
    pop 1
    pick 4
    pop 1
    return

__sgate:
    swap 1
    swap 1
    push -1
    mul
    swap 1
    return

__tgate:
    dup 3
    dup 3
    dup 3
    dup 3
    push -1
    mul
    add
    dup 4
    dup 4
    add
    pick 4
    pop 1
    pick 4
    pop 1
    pick 4
    pop 1
    pick 4
    pop 1
    return

__two_qubit_product:
    dup 7
    dup 4
    mul
    dup 7
    dup 4
    mul
    push -1
    mul
    add
    dup 8
    dup 4
    mul
    dup 8
    dup 6
    mul
    add
    dup 9
    dup 4
    mul
    dup 9
    dup 4
    mul
    push -1
    mul
    add
    dup 10
    dup 4
    mul
    dup 10
    dup 6
    mul
    add
    dup 9
    dup 8
    mul
    dup 9
    dup 8
    mul
    push -1
    mul
    add
    dup 10
    dup 8
    mul
    dup 10
    dup 10
    mul
    add
    dup 11
    dup 8
    mul
    dup 11
    dup 8
    mul
    push -1
    mul
    add
    dup 12
    dup 8
    mul
    dup 12
    dup 10
    mul
    add
    pick 8
    pop 1
    pick 8
    pop 1
    pick 8
    pop 1
    pick 8
    pop 1
    pick 8
    pop 1
    pick 8
    pop 1
    pick 8
    pop 1
    pick 8
    pop 1
    return

__cnot:
    swap 3
    swap 1
    swap 3
    swap 2
    return

__cz:
    swap 1
    push -1
    mul
    swap 1
    push -1
    mul
    return

__swap:
    swap 5
    swap 3
    swap 5
    swap 4
    swap 2
    swap 4
    return

__measure_deterministic:
    dup 3
    dup 4
    mul
    dup 3
    dup 4
    mul
    add
    dup 2
    dup 3
    mul
    dup 2
    dup 3
    mul
    add
    push -1
    mul
    add
    pick 1
    pop 1
    pick 1
    pop 1
    pick 1
    pop 1
    pick 1
    pop 1
    split
    pop 1
    push 2147483647
    swap 1
    lt
    return

__apply_single_gate:
push 1099511627786 write_mem 1 pop 1 push 1099511627785 write_mem 1 pop 1 push 1099511627784 write_mem 1 pop 1 push 1099511627783 write_mem 1 pop 1 push 1099511627782 write_mem 1 pop 1 push 1099511627781 write_mem 1 pop 1 push 1099511627780 write_mem 1 pop 1 push 1099511627779 write_mem 1 pop 1 push 1099511627778 write_mem 1 pop 1 push 1099511627777 write_mem 1 pop 1 push 1099511627776 write_mem 1 pop 1
push 1099511627776 read_mem 1 pop 1 split swap 1 push 0 eq assert pop 1
push 1099511627777 read_mem 1 pop 1 split swap 1 push 0 eq assert pop 1
push 1099511627778 read_mem 1 pop 1 split swap 1 push 0 eq assert pop 1
push 13 push 1099511627777 read_mem 1 pop 1 lt assert
push 1099511627777 read_mem 1 pop 1 push 1099511627778 read_mem 1 pop 1 lt assert
push 1 push 1099511627787 write_mem 1 pop 1
push 0 push 1099511627789 write_mem 1 pop 1
call __qram_size
push 1099511627776 read_mem 1 pop 1 push 1099511627787 read_mem 1 pop 1 push 2 mul add push -1 add split swap 1 push 0 eq assert pop 1
push 1 push 1099511627788 write_mem 1 pop 1
push 0 push 1099511627789 write_mem 1 pop 1
call __qram_bit
push 0 push 1099511627789 write_mem 1 pop 1
call __qram_apply
return
__qram_size:
push 1099511627777 read_mem 1 pop 1 push 1099511627789 read_mem 1 pop 1 lt push 0 eq skiz return
push 1099511627787 read_mem 1 pop 1 push 2 mul push 1099511627787 write_mem 1 pop 1
push 1099511627789 read_mem 1 pop 1 push 1 add push 1099511627789 write_mem 1 pop 1
recurse
__qram_bit:
push 1099511627778 read_mem 1 pop 1 push 1099511627789 read_mem 1 pop 1 lt push 0 eq skiz return
push 1099511627788 read_mem 1 pop 1 push 2 mul push 1099511627788 write_mem 1 pop 1
push 1099511627789 read_mem 1 pop 1 push 1 add push 1099511627789 write_mem 1 pop 1
recurse
__qram_apply:
push 1099511627787 read_mem 1 pop 1 push 1099511627789 read_mem 1 pop 1 lt push 0 eq skiz return
push 1099511627789 read_mem 1 pop 1 push 1099511627788 read_mem 1 pop 1 and push 0 eq skiz call __qram_pair
push 1099511627789 read_mem 1 pop 1 push 1 add push 1099511627789 write_mem 1 pop 1
recurse
__qram_pair:
push 1099511627776 read_mem 1 pop 1 push 1099511627789 read_mem 1 pop 1 push 2 mul add push 1099511627790 write_mem 1 pop 1
push 1099511627790 read_mem 1 pop 1 push 1099511627788 read_mem 1 pop 1 push 2 mul add push 1099511627791 write_mem 1 pop 1
push 1099511627790 read_mem 1 pop 1 push 0 add read_mem 1 pop 1 push 1099511627792 write_mem 1 pop 1
push 1099511627790 read_mem 1 pop 1 push 1 add read_mem 1 pop 1 push 1099511627793 write_mem 1 pop 1
push 1099511627791 read_mem 1 pop 1 push 0 add read_mem 1 pop 1 push 1099511627794 write_mem 1 pop 1
push 1099511627791 read_mem 1 pop 1 push 1 add read_mem 1 pop 1 push 1099511627795 write_mem 1 pop 1
push 1099511627779 read_mem 1 pop 1 push 1099511627792 read_mem 1 pop 1 mul push 1099511627780 read_mem 1 pop 1 push 1099511627793 read_mem 1 pop 1 mul push -1 mul add push 1099511627781 read_mem 1 pop 1 push 1099511627794 read_mem 1 pop 1 mul push 1099511627782 read_mem 1 pop 1 push 1099511627795 read_mem 1 pop 1 mul push -1 mul add add push 1099511627790 read_mem 1 pop 1 write_mem 1 pop 1
push 1099511627779 read_mem 1 pop 1 push 1099511627793 read_mem 1 pop 1 mul push 1099511627780 read_mem 1 pop 1 push 1099511627792 read_mem 1 pop 1 mul add push 1099511627781 read_mem 1 pop 1 push 1099511627795 read_mem 1 pop 1 mul push 1099511627782 read_mem 1 pop 1 push 1099511627794 read_mem 1 pop 1 mul add add push 1099511627790 read_mem 1 pop 1 push 1 add write_mem 1 pop 1
push 1099511627783 read_mem 1 pop 1 push 1099511627792 read_mem 1 pop 1 mul push 1099511627784 read_mem 1 pop 1 push 1099511627793 read_mem 1 pop 1 mul push -1 mul add push 1099511627785 read_mem 1 pop 1 push 1099511627794 read_mem 1 pop 1 mul push 1099511627786 read_mem 1 pop 1 push 1099511627795 read_mem 1 pop 1 mul push -1 mul add add push 1099511627791 read_mem 1 pop 1 write_mem 1 pop 1
push 1099511627783 read_mem 1 pop 1 push 1099511627793 read_mem 1 pop 1 mul push 1099511627784 read_mem 1 pop 1 push 1099511627792 read_mem 1 pop 1 mul add push 1099511627785 read_mem 1 pop 1 push 1099511627795 read_mem 1 pop 1 mul push 1099511627786 read_mem 1 pop 1 push 1099511627794 read_mem 1 pop 1 mul add add push 1099511627791 read_mem 1 pop 1 push 1 add write_mem 1 pop 1
return

Graph