diff -r 000000000000 -r 0efde00f9229 python/xdync.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python/xdync.py Fri May 27 14:24:59 2011 +0530 @@ -0,0 +1,53 @@ +#!/usr/bin/python + +import pylab as pl +from rowjoin import rowjoin +from polyfuncs import polsize +from cindep import cindep +from seshft import seshft +from colsplit import colsplit +from left_prm import left_prm +from move import move +from clcoef import clcoef + +def xdync(N, degN, D, degD, C, degC, gap=1.0e8): + """ """ + C = pl.atleast_2d(C) + F, degF = rowjoin(D, degD, N, degN) + Frows, Fbcols = polsize(F, degF) + B, degB, A, degA, S, sel, degT1, Fbcols = left_prm(N, degN, D, degD, 3, gap) + Crows, Ccols = C.shape + Srows, Scols = pl.atleast_2d(S).shape + S = S[sel!=0,:] + T2 = pl.array([]) + + for i in range(Crows): + Saug = seshft(S, C[i,:], 0) + b = cindep(Saug) + b = move(b, pl.find(sel), Srows) + if T2.size != 0: + T2 = pl.vstack((T2, b)) + else: + T2 = b.copy() + + X, degX, Y, degY = colsplit(T2, degT1, Fbcols, Frows-Fbcols) + X, degX = clcoef(X, degX) + Y, degY = clcoef(Y, degY) + + return Y, degY, X, degX, B, degB, A, degA + + +if __name__== "__main__": + N = pl.array([[0, 4, 0, 1], + [-1, 8, 0, 3]]) + dN = 1 + D = pl.array([[0, 0, 1, 4, 0, 1], + [0, 0, -1, 0, 0, 0]]) + dD = 2 + C = pl.array([[1, 0, 1, 1], + [0, 2, 0, 1]]) + dC = 1 + + print xdync(N,dN,D,dD,C,dC) + +