Beispiel #1
0
def phasegate(theta):
    """
    Returns quantum object representing the phase shift gate.
    
    Parameters
    ----------
    theta : float
        Phase rotation angle.
    
    Returns
    -------
    phase_gate : qobj
        Quantum object representation of phase shift gate.
    
    Examples
    --------    
    >>> phasegate(pi/4)
    Quantum object: dims = [[2], [2]], shape = [2, 2], type = oper, isHerm = False
    Qobj data = 
    [[ 1.00000000+0.j          0.00000000+0.j        ]
     [ 0.00000000+0.j          0.70710678+0.70710678j]]
        
    """
    u = qstate('u')
    d = qstate('d')
    Q = d * d.dag() + (exp(1.0j * theta) * u * u.dag())
    return Qobj(Q)
Beispiel #2
0
def cnot():
    """
    Quantum object representing the CNOT gate.
    
    Returns
    -------
    cnot_gate : qobj
        Quantum object representation of CNOT gate
    
    Examples
    --------  
    >>> cnot()
    Quantum object: dims = [[2, 2], [2, 2]], shape = [4, 4], type = oper, isHerm = True
    Qobj data = 
        [[ 1.+0.j  0.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  1.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  0.+0.j  0.+0.j  1.+0.j]
         [ 0.+0.j  0.+0.j  1.+0.j  0.+0.j]]
    
    """
    uu = qstate('uu')
    ud = qstate('ud')
    du = qstate('du')
    dd = qstate('dd')
    Q = dd * dd.dag() + du * du.dag() + uu * ud.dag() + ud * uu.dag()
    return Qobj(Q)
Beispiel #3
0
def cnot():
    """
    Quantum object representing the CNOT gate.
    
    Returns
    -------
    cnot_gate : qobj
        Quantum object representation of CNOT gate
    
    Examples
    --------  
    >>> cnot()
    Quantum object: dims = [[2, 2], [2, 2]], shape = [4, 4], type = oper, isHerm = True
    Qobj data = 
        [[ 1.+0.j  0.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  1.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  0.+0.j  0.+0.j  1.+0.j]
         [ 0.+0.j  0.+0.j  1.+0.j  0.+0.j]]
    
    """
    uu=qstate('uu')
    ud=qstate('ud')
    du=qstate('du')
    dd=qstate('dd')
    Q=dd*dd.dag()+du*du.dag()+uu*ud.dag()+ud*uu.dag()
    return Qobj(Q)
Beispiel #4
0
def phasegate(theta):
    """
    Returns quantum object representing the phase shift gate.
    
    Parameters
    ----------
    theta : float
        Phase rotation angle.
    
    Returns
    -------
    phase_gate : qobj
        Quantum object representation of phase shift gate.
    
    Examples
    --------    
    >>> phasegate(pi/4)
    Quantum object: dims = [[2], [2]], shape = [2, 2], type = oper, isHerm = False
    Qobj data = 
    [[ 1.00000000+0.j          0.00000000+0.j        ]
     [ 0.00000000+0.j          0.70710678+0.70710678j]]
        
    """
    u=qstate('u')
    d=qstate('d')
    Q=d*d.dag()+(exp(1.0j*theta)*u*u.dag())
    return Qobj(Q)
Beispiel #5
0
def fredkin():
    """Quantum object representing the Fredkin gate.
    
    Returns
    -------
    fred_gate : qobj
        Quantum object representation of Fredkin gate.
    
    Examples
    --------    
    >>> fredkin()
    Quantum object: dims = [[2, 2, 2], [2, 2, 2]], shape = [8, 8], type = oper, isHerm = True
    Qobj data = 
        [[ 1.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  1.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  0.+0.j  1.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  0.+0.j  0.+0.j  1.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  0.+0.j  0.+0.j  0.+0.j  1.+0.j  0.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  1.+0.j  0.+0.j]
         [ 0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  1.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  1.+0.j]]
         
    """
    uuu = qstate('uuu')
    uud = qstate('uud')
    udu = qstate('udu')
    udd = qstate('udd')
    duu = qstate('duu')
    dud = qstate('dud')
    ddu = qstate('ddu')
    ddd = qstate('ddd')
    Q = ddd * dag(ddd) + ddu * dag(ddu) + dud * dag(dud) + duu * dag(
        duu) + udd * dag(udd) + uud * dag(udu) + udu * dag(uud) + uuu * dag(
            uuu)
    return Qobj(Q)
Beispiel #6
0
def toffoli():
    """Quantum object representing the Toffoli gate.
    
    Returns
    -------
    toff_gate : qobj
        Quantum object representation of Toffoli gate.
    
    Examples
    --------    
    >>> toffoli()
    Quantum object: dims = [[2, 2, 2], [2, 2, 2]], shape = [8, 8], type = oper, isHerm = True
    Qobj data = 
        [[ 1.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  1.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  0.+0.j  1.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  0.+0.j  0.+0.j  1.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  0.+0.j  0.+0.j  0.+0.j  1.+0.j  0.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  1.+0.j  0.+0.j  0.+0.j]
         [ 0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  1.+0.j]
         [ 0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  1.+0.j  0.+0.j]]
         
         
    """
    uuu = qstate('uuu') 
    uud = qstate('uud') 
    udu = qstate('udu') 
    udd = qstate('udd')
    duu = qstate('duu') 
    dud = qstate('dud') 
    ddu = qstate('ddu') 
    ddd = qstate('ddd')
    Q = ddd*dag(ddd) + ddu*dag(ddu) + dud*dag(dud) + duu*dag(duu) + udd*dag(udd) + udu*dag(udu) + uuu*dag(uud) + uud*dag(uuu)
    return Qobj(Q)
Beispiel #7
0
def snot():
    """Quantum object representing the SNOT (Hadamard) gate.
    
    Returns
    -------
    snot_gate : qobj
        Quantum object representation of SNOT (Hadamard) gate.
    
    Examples
    --------
    >>> snot()
    Quantum object: dims = [[2], [2]], shape = [2, 2], type = oper, isHerm = True
    Qobj data = 
    [[ 0.70710678+0.j  0.70710678+0.j]
     [ 0.70710678+0.j -0.70710678+0.j]]
         
    """
    u=qstate('u')
    d=qstate('d')
    Q=1.0/sqrt(2.0)*(d*d.dag()+u*d.dag()+d*u.dag()-u*u.dag())
    return Qobj(Q)    
Beispiel #8
0
def snot():
    """Quantum object representing the SNOT (Hadamard) gate.
    
    Returns
    -------
    snot_gate : qobj
        Quantum object representation of SNOT (Hadamard) gate.
    
    Examples
    --------
    >>> snot()
    Quantum object: dims = [[2], [2]], shape = [2, 2], type = oper, isHerm = True
    Qobj data = 
    [[ 0.70710678+0.j  0.70710678+0.j]
     [ 0.70710678+0.j -0.70710678+0.j]]
         
    """
    u = qstate('u')
    d = qstate('d')
    Q = 1.0 / sqrt(2.0) * (d * d.dag() + u * d.dag() + d * u.dag() -
                           u * u.dag())
    return Qobj(Q)