Ejemplo n.º 1
0
 def matvec(v):
     v = v.reshape((chi, chi))
     Th_v = ct.XopR(A_R, X=v)
     Lv = proj(rL, v) * I
     v = v - Th_v + Lv
     v = v.flatten()
     return v
Ejemplo n.º 2
0
def B2_tensor(oldlist, newlist):
    NL, NR = null_spaces(oldlist)
    AL, C, AR = newlist
    AC = ct.rightmult(AL, C)
    L = ct.XopL(AC, B=np.conj(NL))
    R = ct.XopR(AR, B=np.conj(NR))
    return np.dot(L, R.T)
Ejemplo n.º 3
0
def is_left_canonical(A_L, R, rtol=1E-5, atol=1E-8, verbose=False):
    is_iso = is_left_isometric(A_L, rtol=rtol, atol=atol, verbose=verbose)
    contracted = ct.XopR(A_L, X=R)
    passed = is_iso and np.allclose(contracted, R, rtol=rtol, atol=atol)
    if verbose:
        print("Testing if left canonical.")
    check(verbose, passed)
    return passed
Ejemplo n.º 4
0
def is_right_isometric(A_R, rtol=1E-5, atol=1E-8, verbose=False):
    contracted = ct.XopR(A_R)
    eye = np.eye(contracted.shape[0], dtype=A_R.dtype)
    passed = np.allclose(contracted, eye, rtol=rtol, atol=atol)
    if verbose:
        print("Testing if right isometric.")
    check(verbose, passed)
    return passed
Ejemplo n.º 5
0
 def tmmatvec(xvec):
     xmat = xvec.reshape(outshape)
     xmat = ct.XopR(A, B=B, X=xmat)
     xvec = xmat.flatten()
     return xvec