Indexing#
from qualtran import Bloq, CompositeBloq, BloqBuilder, Signature, Register
from qualtran import QBit, QInt, QUInt, QAny
from qualtran.drawing import show_bloq, show_call_graph, show_counts_sigma
from typing import *
import numpy as np
import sympy
import cirq
ToContiguousIndex
#
Build a contiguous register s from mu and nu.
\[
s = \nu (\nu + 1) / 2 + \mu
\]
Assuming nu is zero indexed (in contrast to the THC paper which assumes 1, hence the slightly different formula).
Parameters#
bitsize
: number of bits for mu and nu registers.s_bitsize
: Number of bits for contiguous register.
Registers#
mu
: input registernu
: input registers
: output contiguous register
References#
from qualtran.bloqs.arithmetic.conversions import ToContiguousIndex
Example Instances#
to_contg_index = ToContiguousIndex(bitsize=4, s_bitsize=8)
Graphical Signature#
from qualtran.drawing import show_bloqs
show_bloqs([to_contg_index],
['`to_contg_index`'])
Call Graph#
from qualtran.resource_counting.generalizers import ignore_split_join
to_contg_index_g, to_contg_index_sigma = to_contg_index.call_graph(max_depth=1, generalizer=ignore_split_join)
show_call_graph(to_contg_index_g)
show_counts_sigma(to_contg_index_sigma)
Counts totals:
Toffoli
: 19