class_docstr: A multi-qubit ket in the computational (z) basis.
  
  We use the normal convention that the least significant qubit is on the
  right, so ``|00001>`` has a 1 in the least significant qubit.
  
  Parameters
  ==========
  
  values : list, str
      The qubit values as a list of ints ([0,0,0,1,1,]) or a string ('011').
  
  Examples
  ========
  
  Create a qubit in a couple of different ways and look at their attributes:
  
      >>> from sympy.physics.quantum.qubit import Qubit
      >>> Qubit(0,0,0)
      |000>
      >>> q = Qubit('0101')
      >>> q
      |0101>
  
      >>> q.nqubits
      4
      >>> len(q)
      4
      >>> q.dimension
      4
      >>> q.qubit_values
      (0, 1, 0, 1)
  
  We can flip the value of an individual qubit:
  
      >>> q.flip(1)
      |0111>
  
  We can take the dagger of a Qubit to get a bra:
  
      >>> from sympy.physics.quantum.dagger import Dagger
      >>> Dagger(q)
      <0101|
      >>> type(Dagger(q))
      <class 'sympy.physics.quantum.qubit.QubitBra'>
  
  Inner products work as expected:
  
      >>> ip = Dagger(q)*q
      >>> ip
      <0101|0101>
      >>> ip.doit()
      1
class_docstr_tok: ["A","multi-qubit","ket","in","the","computational","(","z",")","basis",".","We","use","the","normal","convention","that","the","least","significant","qubit","is","on","the","right",",","so","``","|00001",">","``","has","a","1","in","the","least","significant","qubit",".","Parameters","==========","values",":","list",",","str","The","qubit","values","as","a","list","of","ints","(","[","0,0,0,1,1",",","]",")","or","a","string","(","'011","'",")",".","Examples","========","Create","a","qubit","in","a","couple","of","different","ways","and","look","at","their","attributes",":",">",">",">","from","sympy.physics.quantum.qubit","import","Qubit",">",">",">","Qubit","(","0,0,0",")","|000",">",">",">",">","q","=","Qubit","(","'0101","'",")",">",">",">","q","|0101",">",">",">",">","q.nqubits","4",">",">",">","len","(","q",")","4",">",">",">","q.dimension","4",">",">",">","q.qubit_values","(","0",",","1",",","0",",","1",")","We","can","flip","the","value","of","an","individual","qubit",":",">",">",">","q.flip","(","1",")","|0111",">","We","can","take","the","dagger","of","a","Qubit","to","get","a","bra",":",">",">",">","from","sympy.physics.quantum.dagger","import","Dagger",">",">",">","Dagger","(","q",")","<","0101|",">",">",">","type","(","Dagger","(","q",")",")","<","class","'sympy.physics.quantum.qubit.QubitBra","'",">","Inner","products","work","as","expected",":",">",">",">","ip","=","Dagger","(","q",")","*","q",">",">",">","ip","<","0101|0101",">",">",">",">","ip.doit","(",")","1"]
code: def _eval_innerproduct_QubitBra(self, bra, **hints):
      if self.label == bra.label:
          return S.One
      else:
          return S.Zero
  
imports: import math
  from sympy.core.add import Add
  from sympy.core.mul import Mul
  from sympy.core.numbers import Integer
  from sympy.core.power import Pow
  from sympy.core.singleton import S
  from sympy.functions.elementary.complexes import conjugate
  from sympy.functions.elementary.exponential import log
  from sympy.core.basic import _sympify
  from sympy.external.gmpy import SYMPY_INTS
  from sympy.matrices import Matrix, zeros
  from sympy.printing.pretty.stringpict import prettyForm
  from sympy.physics.quantum.hilbert import ComplexSpace
  from sympy.physics.quantum.state import Ket, Bra, State
  from sympy.physics.quantum.qexpr import QuantumError
  from sympy.physics.quantum.represent import represent
  from sympy.physics.quantum.matrixutils import numpy_ndarray, scipy_sparse_matrix
  from mpmath.libmp.libintmath import bitcount
label_desc: Use image node_id 2 for calling the Qubit obj's underlying member method code with example usage: obj._eval_innerproduct_QubitBra(bra) and returns: S, S