def double_description(matrix, m, d):
    W=matrix[:int(d),:].copy()
    W=W.getI()
    for j in range (d,m):
        plusList=[]
        minusList=[]
        equalList=[]
        print("Dimensio W:  ", W.shape)
        for i in range(W.shape[1]):
            print("Product:  ", (matrix[j,:]) * W[:,i])
            if np.isclose((matrix[j,:]) * (W[:,i]),0):
                equalList.append((W[:,i]).T)
            elif (matrix[j,:]) * W[:,i] < 0:
                minusList.append((W[:,i]).T)
            elif (matrix[j,:]) * W[:,i] > 0:
                plusList.append((W[:,i]).T)
        if len(minusList)==0:
            print("Laenge  Liste <> < 0:  0")
        else:
            X=[]
            for el in plusList:
                for nel in minusList:
                    HL=[]
                    for l in range(j):
                        boolean = False
                        tmp=nel  * (matrix[l,:]).T
                        if np.isclose(el * (matrix[l,:]).T,tmp, 0, 1e-12) and np.isclose(0,tmp, 0, 1e-12):
                            HL.append(matrix[l,:])
                            boolean=True
                    if boolean:
                        HLarray=np.asarray(HL)
                        H=np.matrix(HLarray)
                        if tlr.rank(H) == d-2:
                            HL.append(matrix[j-1,:])
                            HLarray=np.asarray(HL)
                            H=np.matrix(HLarray)
                            print("Matrix H: ", H)
                            array=tlr.nullspace(H)
                            geq=True
                            for k in range(j):
                                if matrix[k,:]*array[:,0] < 0:
                                    geq= False
                            if geq==False:
                                for n in array[:,0]:
                                    n=-n
                            x=np.asarray(array[:,0].T)
                            print("x:  ", x)
                            #x=x/x[0]
                            X.append(x)
                print("pluslist: ", plusList, '\n', "minus:  ", minusList,'\n' "equal:  ", equalList)
                tempW = plusList + equalList + X
                arrayW = np.asarray(tempW)
                print("arrayW:  ", arrayW)
                print("Partitionen hintereinander in Liste: ", tempW)
                W=(np.matrix(arrayW)).T
                print("W nach Schleife:  ", W)
    m=W.shape[0]
    return (W,m)
    pass
def double_description(matrix, m, d):
    W=matrix[:int(d),:].copy()
    W=W.getI()
    for j in range (d,m):
        plusList=[]
        minusList=[]
        equalList=[]
        print("Dimensio W:  ", W.shape)
        for i in range(W.shape[0]):
            #wirklich w[i] Zeilen?
            print("Product:  ", (W[i,:]) * (matrix[j,:]).T)
            if np.isclose((W[i,:]) * (matrix[j,:]).T,0):
                equalList.append(W[i,:])
            elif (W[i,:]) * (matrix[j,:]).T < 0:
                minusList.append(W[i,:])
            elif (W[i,:]) * (matrix[j,:]).T > 0:
                plusList.append(W[i,:])
        if len(minusList)==0:
            print("Laenge  Liste <> < 0:  0")
        else:
            X=[]
            for el in plusList:
                for nel in minusList:
                    HL=[]
                    for l in range(j-1):
                        tmp=nel  * (matrix[l,:]).T
                        if np.isclose(el * (matrix[l,:]).T,tmp, 0, 1e-12) and np.isclose(0,tmp, 0, 1e-12):
                            HL.append(matrix[l,:])
                    H=np.matrix(HL)
                    print("Matrix H: ", H)
                    if tlr.rank(H) == d-2:
                        array=tlr.nullspace(H)
                        x=array[:,0].T
                        if x[0] != 0:
                            x=x/x[0]
    
                        X.append(x)
                print("pluslist: ", plusList, '\n', "minus:  ", minusList,'\n' "equal:  ", equalList)
                tempW = plusList + equalList + X
                arrayW = np.asarray(tempW)
                print("arrayW:  ", arrayW)
                print("Partitionen hintereinander in Liste: ", tempW)
                W=np.matrix(arrayW)
                print("W nach Schleife:  ", W)
    m=W.shape[0]
    return (W,m)
    pass