#acl DynareWriterGroup:read,write,delete,revert DynareTeamGroup:read,write,delete,revert,admin All:read = Todo List = * create a testsuite == Features == * add "elsif" and "switch/case" in macro-language * add option for number of draw in Metropolis subsamples [parser + Matlab code] * add option for algorithm to solve generalized Sylverster equation [parser + Matlab code] * add new function diff(), sum loops and prod loops in modeling language. Should be unrolled. [parser] == Error checking == * add a check for number of equations and endogenous in the case of Ramsey policy * improve error message when dealing with Expr``Node::Eval``Exception (in particular for reporting in Model``Tree::evaluateJacobian) * add warning for missing variable in current period. This is permissible in some cases, Michel should write a note about it [parser] * improve error and warning handling in parser. Find a way that users see Warnings even if scrolling by [parser] === Checks concerning the structure of the mod file === * allow a single histval, endval, initval block * check that a given parameter is never declared two times * check that observation trends is used after a varobs * add a warning if homotopy_setup block comes after steady === Checks concerning the types of variables allowed in expressions === * varobs must be declared endogenous * shocks must be exogenous * objective_planner must be endogenous without leads/lags == Optimizations / Enhancements == * optimize expression sharing (for example use the fact that A+(B+C) = (A+B)+C); this would also enhance the pre-computing of numerical constants (for the moment, the algorithm can't reduce {{{1+(x+1)}}}) * if there is a series of operators with the same precedence, we can collect the constant and reduce them {{{1+(x+2}=(1+2)+x=3+x}}} * but it is possible to factorize more complicated expressions: {{{2*x+3*x=(2+3)*x=5*x}}}. The two simplifications aren't identical but strongly related. -- MichelJuillard <> * rewrite outputting system (by using a subclass of ostream containing the output type, and by overloading << operator) * improve internal representation of estimated_params* statements