def eval_ndp_approx_lower(r, context): from mcdp_lang.eval_ndp_imp import eval_ndp from mcdp_dp.dp_transformations import get_dp_bounds nl = r.level ndp = eval_ndp(r.ndp, context) dp = ndp.get_dp() mcdp_dev_warning('make it better') dpl, _ = get_dp_bounds(dp, nl, 1) fnames = ndp.get_fnames() rnames = ndp.get_rnames() rnames = rnames if len(rnames) > 1 else rnames[0] fnames = fnames if len(fnames) > 1 else fnames[0] ndp2 = SimpleWrap(dpl, fnames, rnames) return ndp2
def specialize_(self, parameter_assignment, context): for v in parameter_assignment.values(): check_isinstance(v, NamedDP) for k, v in self.parameters.items(): if not k in parameter_assignment: msg = 'Parameter not specified.' raise_desc(DPSemanticError, msg, missing=k) proposed = parameter_assignment[k] try: check_same_interface(v, proposed) except DifferentInterface as e: msg = ('Cannot specialize the template because ' 'the interface is different.') raise_wrapped(DPSemanticError, e, msg, interface=describe_interface(v), proposed=describe_interface(proposed), compact=True) if hasattr(self, MCDPConstants.ATTR_LOAD_LIBNAME): libname = getattr(self, MCDPConstants.ATTR_LOAD_LIBNAME) if libname is None: mcdp_dev_warning('Tmp fix: can this ever be none?') c = context.child() else: library = context.load_library(libname) c = library._generate_context_with_hooks() else: c = context.child() for k, v in parameter_assignment.items(): c.var2model[k] = v from mcdp_lang.eval_ndp_imp import eval_ndp return eval_ndp(self.template_code, c)
def specialize_(self, parameter_assignment, context): for v in parameter_assignment.values(): check_isinstance(v, NamedDP) for k, v in self.parameters.items(): if not k in parameter_assignment: msg = 'Parameter not specified.' raise_desc(DPSemanticError, msg, missing=k) proposed = parameter_assignment[k] try: check_same_interface(v, proposed) except DifferentInterface as e: msg = ('Cannot specialize the template because ' 'the interface is different.') raise_wrapped(DPSemanticError, e, msg, interface=describe_interface(v), proposed=describe_interface(proposed), compact=True) if hasattr(self, ATTR_LOAD_LIBNAME): libname = getattr(self, ATTR_LOAD_LIBNAME) if libname is None: mcdp_dev_warning('Tmp fix: can this ever be none?') c = context.child() else: library = context.load_library(libname) c = library._generate_context_with_hooks() else: c = context.child() for k, v in parameter_assignment.items(): c.var2model[k] = v from mcdp_lang.eval_ndp_imp import eval_ndp return eval_ndp(self.template_code, c)