def _get_next(self): """Generate and return the next RNG value.""" val_int = xmath.int(DeferredExpression(self.var_name)) val = ((val_int * 58321 + 11113)) % 65535 self.__set__(self, val) container = inspect.currentframe().f_back.f_locals['obj'] self.bsca.deferred_write(container)
def __init__(self, val=None, name="var"): """Initialize base class features.""" super(Variable, self).__init__() self.fallback_name = name self.base_class = Variable if val is None: raise XenticaException("Variable should have an initial value.") self._init_val = DeferredExpression(str(val))
def uniform(self): """Get a random value from the uniform distribution.""" return xmath.float(DeferredExpression(self.var_name)) / 65535
def min(*args): """Calculate the minimum over list of args.""" expr = str(args[0]) for arg in args[1:]: expr = "(({a}) < ({b})) ? ({a}) : ({b})".format(a=expr, b=arg) return DeferredExpression("(%s)" % expr)
def exp(val): """Calculate exponent.""" return DeferredExpression("(exp(%s))" % val)
def popc(val): """Count the number of bits that are set to '1' in a 32 bit integer.""" return DeferredExpression("(__popc(%s))" % val)
def int(val): """Cast a value to int.""" return DeferredExpression("((unsigned int) (%s))" % val)
def float(val): """Cast a value to float.""" return DeferredExpression("((float) (%s))" % val)
def __get__(self, obj, objtype): """Implement custom logic when param is get as class descriptor.""" self._declare_once() if self._interactive: return DeferredExpression(self._name) return self._value