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 __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 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 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 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)