Package compilator ::
Module compilator
|
|
1 from scipy import *
2 from sympy import *
3 from model.model import *
4 from model.symbolic import *
5
7 model = None
8
11
16
18 if for_matlab:
19 mi = 1
20 else:
21 mi = 0;
22 subs_dict = dict()
23 for i in range(len(self.model.variables)):
24 if for_c:
25 subs_dict[self.model.variables[i]] = "x("+str(i+ mi) + ")"
26 else:
27 subs_dict[self.model.variables[i]] = "x["+str(i+ mi) + "]"
28 exovariables_index = dict()
29 for i in range(len(self.model.exovariables)):
30 if for_c:
31 subs_dict[self.model.exovariables[i]] = "y("+str(i+mi)+")"
32 else:
33 subs_dict[self.model.exovariables[i]] = "y["+str(i+mi)+"]"
34 parameters_index = dict()
35 for i in range(len(self.model.parameters)):
36 if for_c:
37 subs_dict[self.model.parameters[i]] = "parm("+str(i+mi)+")"
38 else:
39 subs_dict[self.model.parameters[i]] = "parm["+str(i+mi)+"]"
40 for i in range(len(self.model.shocks)):
41
42 if for_c:
43 subs_dict[self.model.shocks[i]] = "0"
44 else:
45 subs_dict[self.model.shocks[i]] = "0"
46 return subs_dict
47
49
50 subs_dict = self.build_substitution_list(for_matlab,not for_c)
51 def f(expr):
52 if expr.__class__ in [Variable,Parameter]:
53 vname = subs_dict[expr]
54 return(Symbol(vname))
55 else:
56 return(expr)
57 return self.model.map_function_to_expression(f,eq)
58
60 current_equations = []
61 current_equations = self.model.current_equations()
62 tab_eq = []
63 for eq in current_equations:
64
65 tab_eq.append(self.tabify_expression(eq))
66
67 code = "def gaps_static(x,y,parm):\n"
68
69
70
71 code += " gaps = zeros(%s)\n" % len(tab_eq)
72 i = 0
73 for eq in tab_eq:
74 eq_s = str(eq.gap())
75 code += " gaps[" + str(i) + "] = " + eq_s + "\n"
76 i = i + 1
77
78 code += " return gaps"
79 exec(code)
80 print(code)
81
82
83 return(gaps_static)
84
95