def __init__(self, a): self.name = a.__name__.split('.')[-1] self.eval = a.eval self.functionalform = a.functionalform self.functionalform.name = self.name self.functionalform.eval = a.eval if iterable(a.applystdform): self.functionalform._stdforms = set(a.applystdform) else: self.functionalform._stdforms = set((a.applystdform, )) # jem. redundancy, but used to make vex.split work. self.functionalform.func = self # jem: next line seems to be used only by test/atoms.py. self.module = a # only used for classify function etc (e.g. classify(log)). self.increasing = hasattr(self.functionalform, 'incfn') and \ (not isinstance(self.functionalform.incfn, property)) and \ self.functionalform.incfn self.decreasing = hasattr(self.functionalform, 'decfn') and \ (not isinstance(self.functionalform.decfn, property)) and \ self.functionalform.decfn self.pos = hasattr(self.functionalform, 'posfn') and \ (not isinstance(self.functionalform.posfn, property)) and \ self.functionalform.posfn self.neg = hasattr(self.functionalform, 'negfn') and \ (not isinstance(self.functionalform.negfn, property)) and \ self.functionalform.negfn self.convex = hasattr(self.functionalform, 'convfn') and \ (not isinstance(self.functionalform.convfn, property)) and \ self.functionalform.convfn self.concave = hasattr(self.functionalform, 'concfn') and \ (not isinstance(self.functionalform.concfn, property)) and \ self.functionalform.concfn self.psd = hasattr(self.functionalform, 'psd') and self.functionalform.psd self.nsd = hasattr(self.functionalform, 'nsd') and self.functionalform.nsd
def __init__(self, a): self.name = a.__name__.split('.')[-1] self.eval = a.eval self.functionalform = a.functionalform self.functionalform.name = self.name self.functionalform.eval = a.eval if iterable(a.applystdform): self.functionalform._stdforms = set(a.applystdform) else: self.functionalform._stdforms = set((a.applystdform,)) # jem. redundancy, but used to make vex.split work. self.functionalform.func = self # jem: next line seems to be used only by test/atoms.py. self.module = a # only used for classify function etc (e.g. classify(log)). self.increasing = hasattr(self.functionalform, 'incfn') and \ (not isinstance(self.functionalform.incfn, property)) and \ self.functionalform.incfn self.decreasing = hasattr(self.functionalform, 'decfn') and \ (not isinstance(self.functionalform.decfn, property)) and \ self.functionalform.decfn self.pos = hasattr(self.functionalform, 'posfn') and \ (not isinstance(self.functionalform.posfn, property)) and \ self.functionalform.posfn self.neg = hasattr(self.functionalform, 'negfn') and \ (not isinstance(self.functionalform.negfn, property)) and \ self.functionalform.negfn self.convex = hasattr(self.functionalform, 'convfn') and \ (not isinstance(self.functionalform.convfn, property)) and \ self.functionalform.convfn self.concave = hasattr(self.functionalform, 'concfn') and \ (not isinstance(self.functionalform.concfn, property)) and \ self.functionalform.concfn self.psd = hasattr(self.functionalform, 'psd') and self.functionalform.psd self.nsd = hasattr(self.functionalform, 'nsd') and self.functionalform.nsd
def min(*args): #"""Maximum element of a vector.""" # need to upgrade this to handle things like min(matrix((1,2)), matrix((2,3))). if len(args) > 1: if not getoptvars(args) and not getparams(args): r = __builtin__.min([rows(x) for x in args]) c = __builtin__.min([cols(x) for x in args]) if (r, c) == (1, 1): return __builtin__.min(args) args = list(args) for i in xrange(len(args)): if size(args[i]) == (1, 1): args[i] = args[i] * matrix(ones(r, c)) elif size(args[i]) != (r, c): raise AtomArgsError('incompatible arguments to min') z = zeros(r, c) for i in range(r * c): z[i] = __builtin__.min([x[i] for x in args]) return z else: return multiargminfunction(args) else: arg = args[0] if iterable(arg): return min(*arg) elif isinstance(arg, (int, float)): return arg elif not getoptvars(arg) and not getparams(arg): return __builtin__.min(arg) elif is1x1(arg): return arg else: return singleargminfunction(arg)
def min(*args): #"""Maximum element of a vector.""" # need to upgrade this to handle things like min(matrix((1,2)), matrix((2,3))). if len(args) > 1: if not getoptvars(args) and not getparams(args): r = __builtin__.min([rows(x) for x in args]) c = __builtin__.min([cols(x) for x in args]) if (r,c) == (1,1): return __builtin__.min(args) args = list(args) for i in xrange(len(args)): if size(args[i]) == (1,1): args[i] = args[i]*matrix(ones(r,c)) elif size(args[i]) != (r,c): raise AtomArgsError('incompatible arguments to min') z = zeros(r, c) for i in range(r*c): z[i] = __builtin__.min([x[i] for x in args]) return z else: return multiargminfunction(args) else: arg = args[0] if iterable(arg): return min(*arg) elif isinstance(arg, (int, float)): return arg elif not getoptvars(arg) and not getparams(arg): return __builtin__.min(arg) elif is1x1(arg): return arg else: return singleargminfunction(arg)