qubiter.quantum_CSD_compiler.MultiplexorSEO_writer module¶

class
qubiter.quantum_CSD_compiler.MultiplexorSEO_writer.
MultiplexorSEO_writer
(file_prefix, emb, style, rad_angles=None, num_T_trols=0, num_F_trols=0, num_gbits=0, **kwargs)[source]¶ Bases:
qubiter.SEO_writer.SEO_writer
A multiplexor is a matrix of the form
[ cc, ss] [ss, cc]where cc and ss are square diagonal matrices, both of the same dimension, satisfying cc^2 + ss^2=1.
A multiplexor gate can be represent in an English file by a single line starting with MP_Y.
This class is a child of SEO_writer. It adds to its parent class the ability to write a multiplexor gate in various styles.
When style = ‘one_line’, this class writes a multiplexor as a single line in an English file, the same away the parent class SEO_writer would write it.
When style = ‘exact’, this class writes a multiplexor as a SEO expansion occupying multiple lines of an English file. For this style, the class writes an exact expansion described in Refs. 1 and 2 below.
When style = ‘oracular’, this class writes a multiplexor as a SEO expansion occupying multiple lines of an English file. For this style, the class writes an approximation (called the “oracular approximation”) described in Ref.3 below.
Actually, this class can write more than a mere multiplexor. It can write a controlled multiplexor too, meaning it can attach T or F controls to the intrinsic controls of the multiplexor. Those intrinsic controls are represented by percent signs in Picture files and by “half moon” nodes in the arxiv papers cited below. In class Controls, T controls are of kind True, F controls are of kind False, and intrinsic controls are assigned an int for kind.
It is important to note that the bits in the multiplexor being written will be in the following order, in order of increasing bit position:
 T controls
 F controls
 intrinsic multiplexor controls
 target bit of multiplexor
 grounded bits, if any
References
1. R.R. Tucci, A Rudimentary Quantum Compiler(2cnd Ed.) https://arxiv.org/abs/quantph/9902062
2. R.R. Tucci, How to Compile Some NAND Formula Evaluators, https://arxiv.org/abs/0706.0479
3. R.R. Tucci, Oracular Approximation of Quantum Multiplexors and Diagonal Unitary Matrices, https://arxiv.org/abs/0901.3851
Variables:  num_of_F_trols (int) – The number of False controls of the controlled multiplexor
 num_gbits (int) – number of gbits (grounded bits). This is only needed for the
oracular approximation. Grounded bits are extra ancilla bits that
have been initialized to the ground state (state
0>
).  num_of_T_trols (int) – The number of True controls of the controlled multiplexor
 rad_angles (list(float)) – list of angles in radians. These angles are the parameters specifying an MP_Y gate. If the MP_Y has N intrinsic controls, there are 2^N angles.
 style (str) – must equal either ‘one_line’, exact’ or ‘oracular’.

__init__
(file_prefix, emb, style, rad_angles=None, num_T_trols=0, num_F_trols=0, num_gbits=0, **kwargs)[source]¶ Constructor
Parameters:  file_prefix (str) –
 emb (CktEmbedder) –
 style (str) –
 rad_angles (list(float)) –
 num_T_trols (int) –
 num_F_trols (int) –
 num_gbits (int) –

static
mp_mat
(rad_angles, herm_conj=False)[source]¶ This function returns a numpy array with the multiplexor matrix
[ cc, ss] [ss, cc]in it, where cc (ss) is the componentwise cosine (sine) of rad_angles.
Parameters:  rad_angles (list(float)) –
 herm_conj (bool) – When herm_conj=True, it uses ss = sine(rad_angles), whereas if herm_conj=False, it uses ss = sine(+rad_angles)
Returns: Return type: np.ndarray

write
()[source]¶ Main write function of this class. All other write functions are internal. This function writes a multiplexor in the style specified by the parameter self.style.
Returns: Return type: None

write_exact
()[source]¶ Writes in English file a multiple line, exact representation of the multiplexor.
Returns: Return type: None