def text_diagram_info( self, args: gate_features.TextDiagramInfoArgs ) -> gate_features.TextDiagramInfo: if not args.use_unicode_characters: return gate_features.TextDiagramInfo(wire_symbols=('swap', 'swap'), exponent=self._exponent) return gate_features.TextDiagramInfo(wire_symbols=('×', '×'), exponent=self._exponent)
def text_diagram_info( self, args: gate_features.TextDiagramInfoArgs ) -> gate_features.TextDiagramInfo: if self.half_turns in [-0.25, 0.25]: return gate_features.TextDiagramInfo( wire_symbols=('T', ), exponent=cast(float, self._exponent) * 4) if self.half_turns in [-0.5, 0.5]: return gate_features.TextDiagramInfo( wire_symbols=('S', ), exponent=cast(float, self._exponent) * 2) return gate_features.TextDiagramInfo(wire_symbols=('Z', ), exponent=self._exponent)
def text_diagram_info( self, args: gate_features.TextDiagramInfoArgs ) -> gate_features.TextDiagramInfo: well_known_map = { CliffordGate.I: 'I', CliffordGate.H: 'H', CliffordGate.X: 'X', CliffordGate.Y: 'Y', CliffordGate.Z: 'Z', CliffordGate.X_sqrt: 'X', CliffordGate.Y_sqrt: 'Y', CliffordGate.Z_sqrt: 'Z', CliffordGate.X_nsqrt: 'X', CliffordGate.Y_nsqrt: 'Y', CliffordGate.Z_nsqrt: 'Z', } if self in well_known_map: symbol = well_known_map[self] else: rotations = self.decompose_rotation() symbol = '-'.join( str(r) + ('^' + str(qt / 2)) * (qt % 4 != 2) for r, qt in rotations) symbol = '({})'.format(symbol) return gate_features.TextDiagramInfo(wire_symbols=(symbol, ), exponent={ CliffordGate.X_sqrt: 0.5, CliffordGate.Y_sqrt: 0.5, CliffordGate.Z_sqrt: 0.5, CliffordGate.X_nsqrt: -0.5, CliffordGate.Y_nsqrt: -0.5, CliffordGate.Z_nsqrt: -0.5, }.get(self, 1))
def text_diagram_info(self, args: gate_features.TextDiagramInfoArgs ) -> gate_features.TextDiagramInfo: cast_sub_gate = self._cast_sub_gate(gate_features.TextDiagrammable) sub_info = cast_sub_gate.text_diagram_info(args) return gate_features.TextDiagramInfo( wire_symbols=('@',) + sub_info.wire_symbols, exponent=sub_info.exponent)
def text_diagram_info(self, args: gate_features.TextDiagramInfoArgs): if args.known_qubit_count is None: return NotImplemented direction_symbols = (('╲', '╱') if args.use_unicode_characters else ('\\', '/')) wire_symbols = tuple(direction_symbols[int(i >= self.shift)] + str(i) + direction_symbols[int(i < self.shift)] for i in range(args.known_qubit_count)) return gate_features.TextDiagramInfo(wire_symbols=wire_symbols)
def text_diagram_info( self, args: gate_features.TextDiagramInfoArgs ) -> gate_features.TextDiagramInfo: labels = {Pauli.X: 'X', Pauli.Y: 'Y', Pauli.Z: '@'} l0 = labels[self.pauli0] l1 = labels[self.pauli1] # Add brackets around letter if inverted l0, l1 = ('(-{})'.format(l) if inv else l for l, inv in ((l0, self.invert0), (l1, self.invert1))) return gate_features.TextDiagramInfo(wire_symbols=(l0, l1), exponent=self._exponent)
def text_diagram_info( self, args: gate_features.TextDiagramInfoArgs ) -> gate_features.TextDiagramInfo: n = (max(1, len(self.invert_mask)) if args.known_qubit_count is None else args.known_qubit_count) symbols = ['M'] * n # Show which output bits are negated. if self.invert_mask: for i, b in enumerate(self.invert_mask): if b: symbols[i] = '!M' # Mention the measurement key. if (not args.known_qubits or self.key != _default_measurement_key(args.known_qubits)): symbols[0] += "('{}')".format(self.key) return gate_features.TextDiagramInfo(tuple(symbols))
def text_diagram_info(self, args: gate_features.TextDiagramInfoArgs ) -> gate_features.TextDiagramInfo: if not args.use_unicode_characters: return gate_features.TextDiagramInfo(('@', 'swap', 'swap')) return gate_features.TextDiagramInfo(('@', '×', '×'))
def text_diagram_info(self, args: gate_features.TextDiagramInfoArgs ) -> gate_features.TextDiagramInfo: return gate_features.TextDiagramInfo(('@', '@', 'X'), exponent=self._exponent)
def text_diagram_info( self, args: gate_features.TextDiagramInfoArgs ) -> gate_features.TextDiagramInfo: return gate_features.TextDiagramInfo(wire_symbols=('iSwap', 'iSwap'), exponent=self._exponent)
def text_diagram_info( self, args: gate_features.TextDiagramInfoArgs ) -> gate_features.TextDiagramInfo: return gate_features.TextDiagramInfo(('H', ))
def text_diagram_info( self, args: gate_features.TextDiagramInfoArgs ) -> gate_features.TextDiagramInfo: return gate_features.TextDiagramInfo( wire_symbols=(_matrix_to_diagram_symbol(self.matrix(), args), ))