def rank(A): if isinstance(A, ndarray): F = Algebra() r = F.rank(A._M) return int(r) else: raise PyValueException, "Rank function can only be called on matrix objects"
def rank(A): if isinstance(A,ndarray): F = Algebra(); r=F.rank(A._M); return int(r); else: raise PyValueException, "Rank function can only be called on matrix objects"
def __div__(A, B): try: F = Algebra(); R = F.solve(A._M, B._M); return R; except (java.lang.IllegalArgumentException), e: # check the error class types according to the matrix class so we can intelligently report the error. print e.getMessage() return None
def norm(A, ntype=None): F = Algebra() if ntype == 'fro': r = F.normF(A._M) elif ntype == 2: r = F.norm2(A._M) else: r = F.norm2(A._M) return r
def norm(A,ntype=None): F = Algebra(); if ntype=='fro': r=F.normF(A._M); elif ntype == 2: r=F.norm2(A._M); else: r=F.norm2(A._M); return r;
def __mul__(A, B): # need to check types and multiple based on them.. try: F = Algebra() C = (F.mult(A._M, B._M)) except: raise PyValueException, "Inner dimension mismatch in matrix multiply." return None return ndarray(C)
def __div__(A, B): try: F = Algebra() R = F.solve(A._M, B._M) return R except (java.lang.IllegalArgumentException), e: # check the error class types according to the matrix class so we can intelligently report the error. print e.getMessage() return None
def __mul__(A, B): # need to check types and multiple based on them.. try: F = Algebra(); C=(F.mult(A._M, B._M)); except: raise PyValueException, "Inner dimension mismatch in matrix multiply."; return None; return ndarray(C)
def solve_transpose(A, B): F = Algebra(); if isinstance(A, ndarray) and isinstance(B, float): return F.solveTranspose(A._M,B); elif isinstance(B, ndarray) and isinstance(A, float): return F.solveTranspose(A, B._M); elif isinstance(A, ndarray) and isinstance(B, ndarray): return ndarray(F.solveTranspose(A._M, B._M)); else: return A / B
def solve(A, B): F = Algebra() if isinstance(A, ndarray) and isinstance(B, float): return F.solve(A._M, B) elif isinstance(B, ndarray) and isinstance(A, float): return F.solve(A, B._M) elif isinstance(A, ndarray) and isinstance(B, ndarray): return ndarray(F.solve(A._M, B._M)) else: return A / B
def directlinearsolve(): from no.uib.cipr.matrix import Matrices, DenseMatrix, DenseVector from cern.colt.matrix import DoubleMatrix2D, DoubleFactory2D from cern.colt.matrix.linalg import Algebra sz = 1000 # MTJ x = DenseVector(sz) t = time.time() mat = Matrices.random(sz,sz) b = Matrices.random(sz) mat.solve(b,x) print "Mtj :" + str(time.time() - t) # Colt alg = Algebra() f = DoubleFactory2D.dense t = time.time() A = f.random(sz,sz) b = f.random(sz,1) x = alg.solve(A,b) print "Colt :" + str(time.time() - t)
def inverse(A): F = Algebra(); x=F.inverse(A._M); return ndarray(x)
def transpose(A): F = Algebra(); if isinstance(A,float): return A; else: return ndarray(F.transpose(A._M));
def cond(A): F = Algebra(); return F.cond(A._M);
def cond(A): F = Algebra() return F.cond(A._M)
def transpose(A): F = Algebra() if isinstance(A, float): return A else: return ndarray(F.transpose(A._M))
def inverse(A): F = Algebra() x = F.inverse(A._M) return ndarray(x)