qubiter.quantum_CSD_compiler.DiagUnitarySEO_writer module¶

class
qubiter.quantum_CSD_compiler.DiagUnitarySEO_writer.
DiagUnitarySEO_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 diagonal unitary (dunitary) is square diagonal matrix whose diagonal entries are magnitude 1 complex numbers. Any dunitary gate can be represent in an English file by a single line starting with DIAG.
This class is a child of SEO_writer. It adds to its parent class the ability to write a dunitary gate in various styles.
When style = ‘one_line’, this class writes a dunitary 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 dunitary 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.
Actually, this class can write more than a mere dunitary. It can write a controlled dunitary too, meaning it can attach T or F controls to the intrinsic controls of the dunitary. 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 dunitary being written will be in the following order, in order of increasing bit position:
 T controls
 F controls
 intrinsic dunitary controls
 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 dunitary.
 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 dunitary.
 rad_angles (list(float)) – list of angles in radians. These angles are the parameters specifying an DIAG gate. If the DIAG has N intrinsic controls, there are 2^N angles.
 style (str) – must equal either ‘one_line’ or exact’.

__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
du_mat
(rad_angles, herm_conj=False)[source]¶ This function returns a square numpy array whose diagonal is the componentwise exp(1j* ) of rad_angles.
Parameters:  rad_angles (list(float)) –
 herm_conj (bool) – If True, uses exp(1j*rad_angles). If False, uses exp(+1j*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 dunitary in the style specified by the parameter self.style.
Returns: Return type: None