diff --git a/ComputingTasks.cc b/ComputingTasks.cc
index bed269b2..9afcb7e2 100644
--- a/ComputingTasks.cc
+++ b/ComputingTasks.cc
@@ -23,7 +23,6 @@
using namespace std;
#include "ComputingTasks.hh"
-#include "Interface.hh"
#include "Statement.hh"
SteadyStatement::SteadyStatement(const OptionsList &options_list_arg) :
@@ -570,8 +569,9 @@ void
CalibVarStatement::writeOutput(ostream &output, const string &basename) const
{
- output << interfaces::comment() << "\n" << interfaces::comment() << "CALIB_VAR \n"
- << interfaces::comment() << "\n";
+ output << "%" << endl
+ << "% CALIB_VAR" << endl
+ << "%" << endl;
for(int i = 1; i < 4 ; i++)
{
@@ -728,9 +728,11 @@ OptimWeightsStatement::OptimWeightsStatement(const var_weights_type &var_weights
void
OptimWeightsStatement::writeOutput(ostream &output, const string &basename) const
{
- output << interfaces::comment() << "OPTIM_WEIGHTS\n\n";
- output << "optim_weights_ = sparse(M_.endo_nbr,M_.endo_nbr);\n";
- output << "obj_var_ = [];\n\n";
+ output << "%" << endl
+ << "% OPTIM_WEIGHTS" << endl
+ << "%" << endl
+ << "optim_weights_ = sparse(M_.endo_nbr,M_.endo_nbr);" << endl
+ << "obj_var_ = [];" << endl << endl;
for(var_weights_type::const_iterator it = var_weights.begin();
it != var_weights.end(); it++)
diff --git a/InterfaceMatlab.cc b/InterfaceMatlab.cc
deleted file mode 100644
index d18a8a78..00000000
--- a/InterfaceMatlab.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2006-2008 Dynare Team
- *
- * This file is part of Dynare.
- *
- * Dynare is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Dynare is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Dynare. If not, see .
- */
-
-#include
-
-#include "Interface.hh"
-
-namespace interfaces
-{
- string comment()
- {
- return "% ";
- }
-
- string delete_file(string s)
- {
- return "delete " + s;
- }
-
- string file_exist(string s)
- {
- return "exist('" + s + "')";
- }
-
- string compile(string s)
- {
- return "mex -O " + s + "\n";
- }
-
- string function_close()
- {
- return "";
- }
-
- string function_file_extension()
- {
- return ".m";
- }
-
- string strvcat(string s1, string s2)
- {
- return "strvcat(" + s1 + "," + s2 + ")";
- }
-
- string load_model_function_files(string filename)
- {
- return "";
- }
-}
diff --git a/InterfaceScilab.cc b/InterfaceScilab.cc
deleted file mode 100644
index 35fc51e1..00000000
--- a/InterfaceScilab.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2006-2008 Dynare Team
- *
- * This file is part of Dynare.
- *
- * Dynare is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Dynare is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Dynare. If not, see .
- */
-
-#include
-
-#include "Interface.hh"
-
-namespace interfaces
-{
- string comment()
- {
- return "// ";
- }
-
- string delete_file(string s)
- {
- return "mdelete " + s;
- }
-
- string file_exist(string s)
- {
- return "file_exist(" + s + ")";
- }
-
- string compile(string s)
- {
- return "";
- }
-
- string function_close()
- {
- return "endfunction\n";
- }
-
- string function_file_extension()
- {
- return ".sci";
- }
-
- string strvcat(string s1, string s2)
- {
- return "[" + s1 + ";" + s2 + "]";
- }
-
- string load_model_function_files(string filename)
- {
- return "getf('" + filename + "_static.sci');\ngetf('" + filename + "_dynamic.sci');\n";
- }
-}
diff --git a/Makefile b/Makefile
index a71440f5..37c3da5a 100644
--- a/Makefile
+++ b/Makefile
@@ -2,18 +2,15 @@ include Makefile.include
ifeq ($(shell uname -o), Cygwin)
DYNARE_M = dynare_m.exe
- DYNARE_S = dynare_s.exe
else
DYNARE_M = dynare_m
- DYNARE_S = dynare_s
endif
ifeq ($(CROSS_WIN32), yes)
DYNARE_M = dynare_m.exe
- DYNARE_S = dynare_s.exe
endif
-COMMON_OBJ = \
+OBJS = \
DynareFlex.o \
DynareBison.o \
ComputingTasks.o \
@@ -38,30 +35,22 @@ COMMON_OBJ = \
DynareMain.o \
DynareMain2.o
-MATLAB_OBJ = InterfaceMatlab.o
-
-SCILAB_OBJ = InterfaceScilab.o
-
# Build rules
-all: all-recursive $(DYNARE_M) $(DYNARE_S)
+all: all-recursive $(DYNARE_M)
all-recursive:
make -C macro
-$(DYNARE_M): $(COMMON_OBJ) $(MATLAB_OBJ) macro/libmacro.a
- $(CPP) $(CPPFLAGS) -o $(DYNARE_M) $(COMMON_OBJ) $(MATLAB_OBJ) -Lmacro -lmacro
+$(DYNARE_M): $(OBJS) macro/libmacro.a
+ $(CPP) $(CPPFLAGS) -o $(DYNARE_M) $(OBJS) -Lmacro -lmacro
cp $(DYNARE_M) ../matlab/
-$(DYNARE_S): $(COMMON_OBJ) $(SCILAB_OBJ) macro/libmacro.a
- $(CPP) $(CPPFLAGS) -o $(DYNARE_S) $(COMMON_OBJ) $(SCILAB_OBJ) -Lmacro -lmacro
- cp $(DYNARE_S) ../scilab/
-
# Dependencies
--include $(COMMON_OBJ:.o=.P) $(MATLAB_OBJ:.o=.P) $(SCILAB_OBJ:.o=.P)
+-include $(OBJS:.o=.P)
DynareFlex.cc: DynareFlex.ll include/DynareBison.hh include/ParsingDriver.hh
flex -oDynareFlex.cc DynareFlex.ll
@@ -83,8 +72,7 @@ clean: clean-recursive
include/stack.hh \
include/location.hh \
include/DynareBison.hh \
- $(DYNARE_M) \
- $(DYNARE_S)
+ $(DYNARE_M)
clean-recursive:
make -C macro clean
diff --git a/ModFile.cc b/ModFile.cc
index 45f5ab3b..fd15bb14 100644
--- a/ModFile.cc
+++ b/ModFile.cc
@@ -21,7 +21,6 @@
#include
#include "ModFile.hh"
-#include "Interface.hh"
ModFile::ModFile() : expressions_tree(symbol_table, num_constants),
model_tree(symbol_table, num_constants),
@@ -110,7 +109,7 @@ ModFile::writeOutputFiles(const string &basename, bool clear_all) const
if (basename.size())
{
string fname(basename);
- fname += interfaces::function_file_extension();
+ fname += ".m";
mOutputFile.open(fname.c_str(), ios::out | ios::binary);
if (!mOutputFile.is_open())
{
@@ -125,11 +124,11 @@ ModFile::writeOutputFiles(const string &basename, bool clear_all) const
exit(-1);
}
- mOutputFile << interfaces::comment() << endl;
- mOutputFile << interfaces::comment() << "Status : main Dynare file " << endl;
- mOutputFile << interfaces::comment() << endl;
- mOutputFile << interfaces::comment() << "Warning : this file is generated automatically by Dynare" << endl;
- mOutputFile << interfaces::comment() << " from model file (.mod)" << endl << endl;
+ mOutputFile << "%" << endl
+ << "% Status : main Dynare file " << endl
+ << "%" << endl
+ << "% Warning : this file is generated automatically by Dynare" << endl
+ << "% from model file (.mod)" << endl << endl;
if (clear_all)
mOutputFile << "clear all" << endl;
@@ -139,12 +138,12 @@ ModFile::writeOutputFiles(const string &basename, bool clear_all) const
mOutputFile << "global ys0_ recurs0_ ex0_ ct_" << endl;
mOutputFile << "options_ = [];" << endl;
mOutputFile << "M_.fname = '" << basename << "';" << endl;
- mOutputFile << interfaces::comment() << endl;
- mOutputFile << interfaces::comment() << "Some global variables initialisation" << endl;
- mOutputFile << interfaces::comment() << endl;
+ mOutputFile << "%" << endl;
+ mOutputFile << "% Some global variables initialization" << endl;
+ mOutputFile << "%" << endl;
mOutputFile << "global_initialization;" << endl;
mOutputFile << "diary off;" << endl << "warning off;" << endl << endl;
- mOutputFile << interfaces::delete_file(basename + ".log") << ";" << endl;
+ mOutputFile << "delete " << basename << ".log;" << endl;
mOutputFile << "warning on;" << endl << "warning backtrace;" << endl;
mOutputFile << "logname_ = '" << basename << ".log';" << endl;
mOutputFile << "diary '" << basename << ".log';" << endl;
@@ -154,22 +153,19 @@ ModFile::writeOutputFiles(const string &basename, bool clear_all) const
{
if (model_tree.mode == eDLLMode)
{
- mOutputFile << "if ";
- mOutputFile << interfaces::file_exist(basename + "_static.c") << endl;
+ mOutputFile << "if exist('" << basename << "_static.c')" << endl;
mOutputFile << " clear " << basename << "_static" << endl;
- mOutputFile << " " << interfaces::compile(basename +"_static.c") << endl;
+ mOutputFile << " mex -O " << basename << "_static.c" << endl;
mOutputFile << "end" << endl;
- mOutputFile << "if ";
- mOutputFile << interfaces::file_exist(basename + "_dynamic.c") << endl;
+ mOutputFile << "if exist('" << basename << "_dynamic.c')" << endl;
mOutputFile << " clear " << basename << "_dynamic" << endl;
- mOutputFile << " " + interfaces::compile(basename+"_dynamic.c") << endl;
+ mOutputFile << " mex -O " << basename << "_dynamic.c" << endl;
mOutputFile << "end" << endl;
}
else
{
mOutputFile << "erase_compiled_function('" + basename +"_static');" << endl;
mOutputFile << "erase_compiled_function('" + basename +"_dynamic');" << endl;
- mOutputFile << interfaces::load_model_function_files(basename);
}
}
diff --git a/ModelTree.cc b/ModelTree.cc
index 8090ef0e..ca1c056f 100644
--- a/ModelTree.cc
+++ b/ModelTree.cc
@@ -24,7 +24,6 @@
#include
#include "ModelTree.hh"
-#include "Interface.hh"
#include "Model_Graph.hh"
@@ -656,12 +655,12 @@ ModelTree::writeModelEquationsOrdered_M(ostream &output, Model_Block *ModelBlock
output << "function [residual, g1, g2, g3, b] = " << dynamic_basename << "_" << j+1 << "(y, x, it_)\n";
else
output << "function [residual, g1, g2, g3, b] = " << dynamic_basename << "_" << j+1 << "(y, x, y_kmin, y_size, periods)\n";
- output << " " << interfaces::comment() << "////////////////////////////////////////////////////////////////////////\n" <<
- " " << interfaces::comment() << "//" << string(" Block ").substr(int(log10(j + 1))) << j + 1 << " " << BlockTriangular::BlockType0(ModelBlock->Block_List[j].Type) <<
- " //\n" <<
- " " << interfaces::comment() << "// Simulation type ";
- output << BlockTriangular::BlockSim(ModelBlock->Block_List[j].Simulation_Type) << " //\n" <<
- " " << interfaces::comment() << "////////////////////////////////////////////////////////////////////////\n";
+ output << " % ////////////////////////////////////////////////////////////////////////" << endl
+ << " % //" << string(" Block ").substr(int(log10(j + 1))) << j + 1 << " " << BlockTriangular::BlockType0(ModelBlock->Block_List[j].Type)
+ << " //" << endl
+ << " % // Simulation type "
+ << BlockTriangular::BlockSim(ModelBlock->Block_List[j].Simulation_Type) << " //" << endl
+ << " % ////////////////////////////////////////////////////////////////////////" << endl;
//The Temporary terms
output << global_output.str();
output << " if M_.param_nbr > 0\n";
@@ -687,7 +686,7 @@ ModelTree::writeModelEquationsOrdered_M(ostream &output, Model_Block *ModelBlock
else
sps="";
if (ModelBlock->Block_List[j].Temporary_terms->size())
- output << " " << sps << interfaces::comment() << "//Temporary variables\n";
+ output << " " << sps << "% //Temporary variables" << endl;
i=0;
for(temporary_terms_type::const_iterator it = ModelBlock->Block_List[j].Temporary_terms->begin();
it != ModelBlock->Block_List[j].Temporary_terms->end(); it++)
@@ -706,8 +705,8 @@ ModelTree::writeModelEquationsOrdered_M(ostream &output, Model_Block *ModelBlock
{
ModelBlock->Block_List[j].Variable_Sorted[i] = variable_table.getID(eEndogenous, ModelBlock->Block_List[j].Variable[i], 0);
string sModel = symbol_table.getNameByID(eEndogenous, ModelBlock->Block_List[j].Variable[i]) ;
- output << sps << " " << interfaces::comment() << "equation " << ModelBlock->Block_List[j].Equation[i] << " variable : " <<
- sModel << " (" << ModelBlock->Block_List[j].Variable[i] << ")\n";
+ output << sps << " % equation " << ModelBlock->Block_List[j].Equation[i] << " variable : " << sModel
+ << " (" << ModelBlock->Block_List[j].Variable[i] << ")" << endl;
if (!lhs_rhs_done)
{
eq_node = equations[ModelBlock->Block_List[j].Equation[i]];
@@ -764,16 +763,17 @@ ModelTree::writeModelEquationsOrdered_M(ostream &output, Model_Block *ModelBlock
&& ModelBlock->Block_List[j].Simulation_Type!=EVALUATE_BACKWARD_R
&& ModelBlock->Block_List[j].Simulation_Type!=EVALUATE_FOREWARD_R)
{
- output << " " << sps << interfaces::comment() << "Jacobian \n";
+ output << " " << sps << "% Jacobian " << endl;
switch(ModelBlock->Block_List[j].Simulation_Type)
{
case SOLVE_BACKWARD_SIMPLE:
case SOLVE_FOREWARD_SIMPLE:
output << " g1(1)=";
writeDerivative(output, ModelBlock->Block_List[j].Equation[0], ModelBlock->Block_List[j].Variable[0], 0, oMatlabDynamicModelSparse, temporary_terms);
- output << "; " << interfaces::comment() << "variable=" << symbol_table.getNameByID(eEndogenous, ModelBlock->Block_List[j].Variable[0])
- <<"(" << variable_table.getLag(variable_table.getSymbolID(ModelBlock->Block_List[j].Variable[0])) << ") " << ModelBlock->Block_List[j].Variable[0]
- << ", equation=" << ModelBlock->Block_List[j].Equation[0] << "\n";
+ output << "; % variable=" << symbol_table.getNameByID(eEndogenous, ModelBlock->Block_List[j].Variable[0])
+ << "(" << variable_table.getLag(variable_table.getSymbolID(ModelBlock->Block_List[j].Variable[0]))
+ << ") " << ModelBlock->Block_List[j].Variable[0]
+ << ", equation=" << ModelBlock->Block_List[j].Equation[0] << endl;
break;
case SOLVE_BACKWARD_COMPLETE:
case SOLVE_FOREWARD_COMPLETE:
@@ -787,9 +787,9 @@ ModelTree::writeModelEquationsOrdered_M(ostream &output, Model_Block *ModelBlock
Uf[ModelBlock->Block_List[j].Equation[eqr]] << "-u(" << u << ")*y(Per_y_+" << var << ")";
output << " u(" << u+1 << ") = ";
writeDerivative(output, eq, var, 0, oMatlabDynamicModelSparse, temporary_terms);
- output << "; " << interfaces::comment() << "variable=" << symbol_table.getNameByID(eEndogenous, var)
- <<"(" << variable_table.getLag(variable_table.getSymbolID(var))<< ") " << var
- << ", equation=" << eq << "\n";
+ output << "; % variable=" << symbol_table.getNameByID(eEndogenous, var)
+ << "(" << variable_table.getLag(variable_table.getSymbolID(var)) << ") " << var
+ << ", equation=" << eq << endl;
}
for(i = 0;i < ModelBlock->Block_List[j].Size;i++)
output << Uf[ModelBlock->Block_List[j].Equation[i]].str() << ";\n";
@@ -820,9 +820,9 @@ ModelTree::writeModelEquationsOrdered_M(ostream &output, Model_Block *ModelBlock
else if(k<0)
output << " g1(" << eqr+1 << "+Per_J_, " << varr+1 << "+y_size*(it_" << k << "-1)) = ";
writeDerivative(output, eq, var, k, oMatlabDynamicModelSparse, temporary_terms);
- output << "; " << interfaces::comment() << "variable=" << symbol_table.getNameByID(eEndogenous, var)
- <<"(" << k << ") " << var
- << ", equation=" << eq << "\n";
+ output << "; % variable=" << symbol_table.getNameByID(eEndogenous, var)
+ << "(" << k << ") " << var
+ << ", equation=" << eq << endl;
#ifdef CONDITION
output << " if (fabs(condition[" << eqr << "])Block_List[j].Type) <<
- " //\n" <<
- " " << interfaces::comment() << "// Simulation type ";
- output << BlockTriangular::BlockSim(ModelBlock->Block_List[j].Simulation_Type) << " //\n" <<
- " " << interfaces::comment() << "////////////////////////////////////////////////////////////////////////\n";
+ output << " % ////////////////////////////////////////////////////////////////////////" << endl
+ << " % //" << string(" Block ").substr(int(log10(j + 1))) << j + 1 << " "
+ << BlockTriangular::BlockType0(ModelBlock->Block_List[j].Type) << " //" << endl
+ << " % // Simulation type ";
+ output << BlockTriangular::BlockSim(ModelBlock->Block_List[j].Simulation_Type) << " //" << endl
+ << " % ////////////////////////////////////////////////////////////////////////" << endl;
//The Temporary terms
output << global_output.str();
output << " if M_.param_nbr > 0\n";
@@ -977,7 +977,7 @@ ModelTree::writeModelStaticEquationsOrdered_M(ostream &output, Model_Block *Mode
output << " g1=spalloc(" << ModelBlock->Block_List[j].Size << ", " << ModelBlock->Block_List[j].Size << ", " << nze << ");\n";
sps="";
if (ModelBlock->Block_List[j].Temporary_terms->size())
- output << " " << sps << interfaces::comment() << "//Temporary variables\n";
+ output << " " << sps << "% //Temporary variables" << endl;
i=0;
for(temporary_terms_type::const_iterator it = ModelBlock->Block_List[j].Temporary_terms->begin();
it != ModelBlock->Block_List[j].Temporary_terms->end(); it++)
@@ -996,8 +996,8 @@ ModelTree::writeModelStaticEquationsOrdered_M(ostream &output, Model_Block *Mode
{
ModelBlock->Block_List[j].Variable_Sorted[i] = variable_table.getID(eEndogenous, ModelBlock->Block_List[j].Variable[i], 0);
string sModel = symbol_table.getNameByID(eEndogenous, ModelBlock->Block_List[j].Variable[i]) ;
- output << sps << " " << interfaces::comment() << "equation " << ModelBlock->Block_List[j].Equation[i] << " variable : " <<
- sModel << " (" << ModelBlock->Block_List[j].Variable[i] << ")\n";
+ output << sps << " % equation " << ModelBlock->Block_List[j].Equation[i] << " variable : "
+ << sModel << " (" << ModelBlock->Block_List[j].Variable[i] << ")" << endl;
if (!lhs_rhs_done)
{
eq_node = equations[ModelBlock->Block_List[j].Equation[i]];
@@ -1047,16 +1047,17 @@ ModelTree::writeModelStaticEquationsOrdered_M(ostream &output, Model_Block *Mode
&& ModelBlock->Block_List[j].Simulation_Type!=EVALUATE_BACKWARD_R
&& ModelBlock->Block_List[j].Simulation_Type!=EVALUATE_FOREWARD_R)
{
- output << " " << sps << interfaces::comment() << "Jacobian \n";
+ output << " " << sps << "% Jacobian " << endl;
switch(ModelBlock->Block_List[j].Simulation_Type)
{
case SOLVE_BACKWARD_SIMPLE:
case SOLVE_FOREWARD_SIMPLE:
output << " g1(1)=";
writeDerivative(output, ModelBlock->Block_List[j].Equation[0], ModelBlock->Block_List[j].Variable[0], 0, oMatlabStaticModelSparse, temporary_terms);
- output << "; " << interfaces::comment() << "variable=" << symbol_table.getNameByID(eEndogenous, ModelBlock->Block_List[j].Variable[0])
- <<"(" << variable_table.getLag(variable_table.getSymbolID(ModelBlock->Block_List[j].Variable[0])) << ") " << ModelBlock->Block_List[j].Variable[0]
- << ", equation=" << ModelBlock->Block_List[j].Equation[0] << "\n";
+ output << "; % variable=" << symbol_table.getNameByID(eEndogenous, ModelBlock->Block_List[j].Variable[0])
+ << "(" << variable_table.getLag(variable_table.getSymbolID(ModelBlock->Block_List[j].Variable[0]))
+ << ") " << ModelBlock->Block_List[j].Variable[0]
+ << ", equation=" << ModelBlock->Block_List[j].Equation[0] << endl;
break;
case SOLVE_BACKWARD_COMPLETE:
case SOLVE_FOREWARD_COMPLETE:
@@ -1070,9 +1071,9 @@ ModelTree::writeModelStaticEquationsOrdered_M(ostream &output, Model_Block *Mode
Uf[ModelBlock->Block_List[j].Equation[eqr]] << "-u(" << u << ")*y(Per_y_+" << var << ")";
output << " u(" << u+1 << ") = ";
writeDerivative(output, eq, var, 0, oMatlabStaticModelSparse, temporary_terms);
- output << "; " << interfaces::comment() << "variable=" << symbol_table.getNameByID(eEndogenous, var)
- <<"(" << variable_table.getLag(variable_table.getSymbolID(var))<< ") " << var
- << ", equation=" << eq << "\n";
+ output << "; % variable=" << symbol_table.getNameByID(eEndogenous, var)
+ << "(" << variable_table.getLag(variable_table.getSymbolID(var)) << ") " << var
+ << ", equation=" << eq << endl;
}
for(i = 0;i < ModelBlock->Block_List[j].Size;i++)
output << Uf[ModelBlock->Block_List[j].Equation[i]].str() << ";\n";
@@ -1099,9 +1100,9 @@ ModelTree::writeModelStaticEquationsOrdered_M(ostream &output, Model_Block *Mode
}
output << " g1(" << eqr+1 << ", " << varr+1 << ") = g1(" << eqr+1 << ", " << varr+1 << ") + ";
writeDerivative(output, eq, var, k, oMatlabStaticModelSparse, temporary_terms);
- output << "; " << interfaces::comment() << "variable=" << symbol_table.getNameByID(eEndogenous, var)
- <<"(" << k << ") " << var
- << ", equation=" << eq << "\n";
+ output << "; % variable=" << symbol_table.getNameByID(eEndogenous, var)
+ << "(" << k << ") " << var
+ << ", equation=" << eq << endl;
#ifdef CONDITION
output << " if (fabs(condition[" << eqr << "])= 2,\n";
- StaticOutput << " g1 = " <<
- "zeros(" << equations.size() << ", " <<
- symbol_table.endo_nbr << ");\n" ;
- StaticOutput << "\n\t"+interfaces::comment()+"\n\t"+interfaces::comment();
- StaticOutput << "Jacobian matrix\n\t";
- StaticOutput << interfaces::comment() + "\n\n";
- StaticOutput << jacobian_output.str();
- StaticOutput << " if ~isreal(g1)\n";
- StaticOutput << " g1 = real(g1)+2*imag(g1);\n";
- StaticOutput << " end\n";
- StaticOutput << "end\n";
+ StaticOutput << "residual = zeros( " << equations.size() << ", 1);" << endl << endl
+ << "%" << endl
+ << "% Model equations" << endl
+ << "%" << endl
+ << endl
+ << model_output.str()
+ << "if ~isreal(residual)" << endl
+ << " residual = real(residual)+imag(residual).^2;" << endl
+ << "end" << endl
+ << "if nargout >= 2," << endl
+ << " g1 = zeros(" << equations.size() << ", " << symbol_table.endo_nbr << ");" << endl
+ << endl
+ << "%" << endl
+ << "% Jacobian matrix" << endl
+ << "%" << endl
+ << endl
+ << jacobian_output.str()
+ << " if ~isreal(g1)" << endl
+ << " g1 = real(g1)+2*imag(g1);" << endl
+ << " end" << endl
+ << "end" << endl;
if (computeStaticHessian)
{
StaticOutput << "if nargout >= 3,\n";
// Writing initialization instruction for matrix g2
int ncols = symbol_table.endo_nbr * symbol_table.endo_nbr;
- StaticOutput << " g2 = " <<
- "sparse([],[],[]," << equations.size() << ", " << ncols << ", " <<
- 5*ncols << ");\n";
- StaticOutput << "\n\t"+interfaces::comment()+"\n\t"+interfaces::comment();
- StaticOutput << "Hessian matrix\n\t";
- StaticOutput << interfaces::comment() + "\n\n";
- StaticOutput << hessian_output.str() << lsymetric.str();
- StaticOutput << "end;\n";
+ StaticOutput << " g2 = sparse([],[],[], " << equations.size() << ", " << ncols << ", " << 5*ncols << ");" << endl
+ << endl
+ << "%" << endl
+ << "% Hessian matrix" << endl
+ << "%" << endl
+ << endl
+ << hessian_output.str()
+ << lsymetric.str()
+ << "end;" << endl;
}
}
else
@@ -3401,47 +3400,53 @@ ModelTree::writeDynamicModel(ostream &DynamicOutput) const
if (mode == eStandardMode)
{
- DynamicOutput << interfaces::comment() << endl << interfaces::comment();
- DynamicOutput << "Model equations" << endl;
- DynamicOutput << interfaces::comment() + "\n\n";
- DynamicOutput << "residual = zeros(" << nrows << ", 1);\n";
-
- DynamicOutput << model_output.str();
+ DynamicOutput << "%" << endl
+ << "% Model equations" << endl
+ << "%" << endl
+ << endl
+ << "residual = zeros(" << nrows << ", 1);" << endl
+ << model_output.str();
if (computeJacobian || computeJacobianExo)
{
- DynamicOutput << "if nargout >= 2,\n";
// Writing initialization instruction for matrix g1
- DynamicOutput << " g1 = " <<
- "zeros(" << nrows << ", " << nvars << ");\n" ;
- DynamicOutput << "\n\t"+interfaces::comment()+"\n\t"+interfaces::comment();
- DynamicOutput << "Jacobian matrix\n\t";
- DynamicOutput << interfaces::comment()+"\n\n";
- DynamicOutput << jacobian_output.str();
- DynamicOutput << "end\n";
+ DynamicOutput << "if nargout >= 2," << endl
+ << " g1 = zeros(" << nrows << ", " << nvars << ");" << endl
+ << endl
+ << "%" << endl
+ << "% Jacobian matrix" << endl
+ << "%" << endl
+ << endl
+ << jacobian_output.str()
+ << "end" << endl;
}
if (computeHessian)
{
- DynamicOutput << "if nargout >= 3,\n";
// Writing initialization instruction for matrix g2
int ncols = nvars_sq;
- DynamicOutput << " g2 = sparse([],[],[]," << nrows << ", " << ncols << ", "
- << 5*ncols << ");\n";
- DynamicOutput << "\n\t"+interfaces::comment() << "\n\t" << interfaces::comment();
- DynamicOutput << "Hessian matrix\n\t" << interfaces::comment() << "\n\n";
- DynamicOutput << hessian_output.str() << lsymetric.str();
- DynamicOutput << "end;\n";
+ DynamicOutput << "if nargout >= 3," << endl
+ << " g2 = sparse([],[],[], " << nrows << ", " << ncols << ", " << 5*ncols << ");" << endl
+ << endl
+ << "%" << endl
+ << "% Hessian matrix" << endl
+ << "%" << endl
+ << endl
+ << hessian_output.str()
+ << lsymetric.str()
+ << "end;" << endl;
}
if (computeThirdDerivatives)
{
- DynamicOutput << "if nargout >= 4,\n";
int ncols = nvars_sq * nvars;
- DynamicOutput << " g3 = sparse([],[],[]," << nrows << ", " << ncols << ", "
- << 5*ncols << ");\n";
- DynamicOutput << "\n\t" + interfaces::comment() + "\n\t" + interfaces::comment();
- DynamicOutput << "Third order derivatives\n\t" << interfaces::comment() << "\n\n";
- DynamicOutput << third_derivatives_output.str();
- DynamicOutput << "end;\n";
+ DynamicOutput << "if nargout >= 4," << endl
+ << " g3 = sparse([],[],[], " << nrows << ", " << ncols << ", " << 5*ncols << ");" << endl
+ << endl
+ << "%" << endl
+ << "% Third order derivatives" << endl
+ << "%" << endl
+ << endl
+ << third_derivatives_output.str()
+ << "end;" << endl;
}
}
else
diff --git a/NumericalInitialization.cc b/NumericalInitialization.cc
index d0d38ff6..020e4cbe 100644
--- a/NumericalInitialization.cc
+++ b/NumericalInitialization.cc
@@ -18,7 +18,6 @@
*/
#include "NumericalInitialization.hh"
-#include "Interface.hh"
InitParamStatement::InitParamStatement(const string ¶m_name_arg,
const NodeID param_value_arg,
@@ -80,10 +79,12 @@ InitValStatement::InitValStatement(const init_values_type &init_values_arg,
void
InitValStatement::writeOutput(ostream &output, const string &basename) const
{
- output << interfaces::comment() << "\n" << interfaces::comment() << "INITVAL instructions \n"
- << interfaces::comment() << "\n";
+ output << "%" << endl
+ << "% INITVAL instructions" << endl
+ << "%" << endl;
// Writing initval block to set initial values for variables
- output << "options_.initval_file = 0;\nendval_=0;\n";
+ output << "options_.initval_file = 0;" << endl
+ << "endval_=0;" << endl;
if (symbol_table.recur_nbr > 0)
output << "recurs_ = zeros(" << symbol_table.recur_nbr << ", 1);\n";
@@ -110,10 +111,14 @@ EndValStatement::EndValStatement(const init_values_type &init_values_arg,
void
EndValStatement::writeOutput(ostream &output, const string &basename) const
{
- output << interfaces::comment() << "\n" << interfaces::comment() << "ENDVAL instructions\n"
- << interfaces::comment() << "\n";
+ output << "%" << endl
+ << "% ENDVAL instructions" << endl
+ << "%" << endl;
// Writing endval block to set terminal values for variables
- output << "ys0_= oo_.steady_state;\nex0_ = oo_.exo_steady_state;\nrecurs0_ = recurs_;\nendval_ = 1;\n";
+ output << "ys0_= oo_.steady_state;" << endl
+ << "ex0_ = oo_.exo_steady_state;" << endl
+ << "recurs0_ = recurs_;" << endl
+ << "endval_ = 1;" << endl;
writeInitValues(output);
}
@@ -128,8 +133,9 @@ HistValStatement::HistValStatement(const hist_values_type &hist_values_arg,
void
HistValStatement::writeOutput(ostream &output, const string &basename) const
{
- output << interfaces::comment() << "\n" << interfaces::comment() << "HISTVAL instructions\n"
- << interfaces::comment() << "\n";
+ output << "%" << endl
+ << "% HISTVAL instructions" << endl
+ << "%" << endl;
for(hist_values_type::const_iterator it = hist_values.begin();
it != hist_values.end(); it++)
@@ -161,12 +167,11 @@ InitvalFileStatement::InitvalFileStatement(const string &filename_arg) :
void
InitvalFileStatement::writeOutput(ostream &output, const string &basename) const
{
- output << interfaces::comment() << endl
- << interfaces::comment() << "INITVAL_FILE statement" << endl
- << interfaces::comment() << endl
- << "options_.initval_file = 1;" << endl;
-
- output << "initvalf('" << filename << "');" << endl;
+ output << "%" << endl
+ << "% INITVAL_FILE statement" << endl
+ << "%" << endl
+ << "options_.initval_file = 1;" << endl
+ << "initvalf('" << filename << "');" << endl;
}
HomotopyStatement::HomotopyStatement(const homotopy_values_type &homotopy_values_arg,
@@ -179,9 +184,9 @@ HomotopyStatement::HomotopyStatement(const homotopy_values_type &homotopy_values
void
HomotopyStatement::writeOutput(ostream &output, const string &basename) const
{
- output << interfaces::comment() << endl
- << interfaces::comment() << "HOMOTOPY_SETUP instructions" << endl
- << interfaces::comment() << endl
+ output << "%" << endl
+ << "% HOMOTOPY_SETUP instructions" << endl
+ << "%" << endl
<< "options_.homotopy_values = [];" << endl;
for(homotopy_values_type::const_iterator it = homotopy_values.begin();
diff --git a/Shocks.cc b/Shocks.cc
index bb7c9952..eba24dee 100644
--- a/Shocks.cc
+++ b/Shocks.cc
@@ -22,7 +22,6 @@ using namespace std;
#include
#include "Shocks.hh"
-#include "Interface.hh"
AbstractShocksStatement::AbstractShocksStatement(bool mshocks_arg,
const det_shocks_type &det_shocks_arg,
@@ -149,12 +148,12 @@ ShocksStatement::ShocksStatement(const det_shocks_type &det_shocks_arg,
void
ShocksStatement::writeOutput(ostream &output, const string &basename) const
{
- output << interfaces::comment() << endl << interfaces::comment();
- output << "SHOCKS instructions \n";
- output << interfaces::comment() << "\n";
+ output << "%" << endl
+ << "% SHOCKS instructions" << endl
+ << "%" << endl;
// Write instruction that initializes a shock
- output << "make_ex_;\n";
+ output << "make_ex_;" << endl;
writeDetShocks(output);
writeVarAndStdShocks(output);
@@ -175,12 +174,12 @@ MShocksStatement::MShocksStatement(const det_shocks_type &det_shocks_arg,
void
MShocksStatement::writeOutput(ostream &output, const string &basename) const
{
- output << interfaces::comment() << endl << interfaces::comment();
- output << "SHOCKS instructions \n";
- output << interfaces::comment() << "\n";
+ output << "%" << endl
+ << "% SHOCKS instructions" << endl
+ << "%" << endl;
// Write instruction that initializes a shock
- output << "make_ex_;\n";
+ output << "make_ex_;" << endl;
writeDetShocks(output);
writeVarAndStdShocks(output);
diff --git a/SymbolList.cc b/SymbolList.cc
index 95389144..24f3df58 100644
--- a/SymbolList.cc
+++ b/SymbolList.cc
@@ -18,7 +18,6 @@
*/
#include "SymbolList.hh"
-#include "Interface.hh"
void
SymbolList::addSymbol(const string &symbol)
@@ -32,10 +31,7 @@ SymbolList::writeOutput(const string &varname, ostream &output) const
output << varname << "=[];" << endl;
for (vector::const_iterator it = symbols.begin();
it != symbols.end(); it++)
- {
- output << varname << " = "
- << interfaces::strvcat(varname, "'" + *it + "'") << ";" << endl;
- }
+ output << varname << " = strvcat(" << varname << ", '" << *it << "');" << endl;
}
void
diff --git a/SymbolTable.cc b/SymbolTable.cc
index e91590d0..5e2b84a1 100644
--- a/SymbolTable.cc
+++ b/SymbolTable.cc
@@ -21,7 +21,6 @@
#include
#include "SymbolTable.hh"
-#include "Interface.hh"
SymbolTable::SymbolTable() : endo_nbr(0), exo_nbr(0), exo_det_nbr(0), recur_nbr(0),
parameter_nbr(0), model_local_variable_nbr(0),
@@ -83,8 +82,8 @@ SymbolTable::writeOutput(ostream &output) const
output << "M_.exo_names_tex = '" << getTeXNameByID(eExogenous, 0) << "';" << endl;
for (int id = 1; id < exo_nbr; id++)
{
- output << "M_.exo_names = " << interfaces::strvcat("M_.exo_names","'"+getNameByID(eExogenous, id)+"'") << ";" << endl;
- output << "M_.exo_names_tex = " << interfaces::strvcat("M_.exo_names_tex","'"+getTeXNameByID(eExogenous, id)+"'") << ";" << endl;
+ output << "M_.exo_names = strvcat(M_.exo_names, '" << getNameByID(eExogenous, id) << "');" << endl
+ << "M_.exo_names_tex = strvcat(M_.exo_names_tex, '" << getTeXNameByID(eExogenous, id) << "');" << endl;
}
}
if (exo_det_nbr > 0)
@@ -93,8 +92,8 @@ SymbolTable::writeOutput(ostream &output) const
output << "lgxdet_tex_ = '" << getTeXNameByID(eExogenousDet, 0) << "';" << endl;
for (int id = 1; id < exo_det_nbr; id++)
{
- output << "lgxdet_ = " << interfaces::strvcat("lgxdet_","'"+getNameByID(eExogenousDet, id)+"'") << ";" << endl;
- output << "lgxdet_tex_ = " << interfaces::strvcat("lgxdet_tex_","'"+getTeXNameByID(eExogenousDet, id)+"'") << ";" << endl;
+ output << "lgxdet_ = srtvcat(lgxdet_, '" << getNameByID(eExogenousDet, id) << "');" << endl
+ << "lgxdet_tex_ = strvcat(lgxdet_tex_, '" << getTeXNameByID(eExogenousDet, id) << "');" << endl;
}
}
if (endo_nbr > 0)
@@ -103,8 +102,8 @@ SymbolTable::writeOutput(ostream &output) const
output << "M_.endo_names_tex = '" << getTeXNameByID(eEndogenous, 0) << "';" << endl;
for (int id = 1; id < endo_nbr; id++)
{
- output << "M_.endo_names = " << interfaces::strvcat("M_.endo_names","'"+getNameByID(eEndogenous, id)+"'") << ";" << endl;
- output << "M_.endo_names_tex = " << interfaces::strvcat("M_.endo_names_tex","'"+getTeXNameByID(eEndogenous, id)+"'") << ";" << endl;
+ output << "M_.endo_names = strvcat(M_.endo_names, '" << getNameByID(eEndogenous, id) << "');" << endl
+ << "M_.endo_names_tex = strvcat(M_.endo_names_tex, '" << getTeXNameByID(eEndogenous, id) << "');" << endl;
}
}
if (recur_nbr > 0)
@@ -113,8 +112,8 @@ SymbolTable::writeOutput(ostream &output) const
output << "M_.recur_names_tex = '" << getTeXNameByID(eRecursiveVariable, 0) << "';" << endl;
for (int id = 1; id < recur_nbr; id++)
{
- output << "M_.recur_names = " << interfaces::strvcat("M_.recur_names","'"+getNameByID(eRecursiveVariable, id)+"'") << ";" << endl;
- output << "M_.recur_names_tex = " << interfaces::strvcat("M_.recur_names_tex","'"+getTeXNameByID(eRecursiveVariable, id)+"'") << ";" << endl;
+ output << "M_.recur_names = strvcat(M_.recur_names, '" << getNameByID(eRecursiveVariable, id) << "');" << endl
+ << "M_.recur_names_tex = strvcat(M_.recur_names_tex, '" << getTeXNameByID(eRecursiveVariable, id) << "');" << endl;
}
}
if (parameter_nbr > 0)
@@ -123,8 +122,8 @@ SymbolTable::writeOutput(ostream &output) const
output << "M_.param_names_tex = '" << getTeXNameByID(eParameter, 0) << "';" << endl;
for (int id = 1; id < parameter_nbr; id++)
{
- output << "M_.param_names = " << interfaces::strvcat("M_.param_names","'"+getNameByID(eParameter, id)+"'") << ";" << endl;
- output << "M_.param_names_tex = " << interfaces::strvcat("M_.param_names_tex","'"+getTeXNameByID(eParameter, id)+"'") << ";" << endl;
+ output << "M_.param_names = strvcat(M_.param_names, '" << getNameByID(eParameter, id) << "');" << endl
+ << "M_.param_names_tex = strvcat(M_.param_names_tex, '" << getTeXNameByID(eParameter, id) << "');" << endl;
}
}
diff --git a/include/Interface.hh b/include/Interface.hh
deleted file mode 100644
index 25632b70..00000000
--- a/include/Interface.hh
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2006-2008 Dynare Team
- *
- * This file is part of Dynare.
- *
- * Dynare is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Dynare is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Dynare. If not, see .
- */
-
-#ifndef _INTERFACE_HH
-#define _INTERFACE_HH
-
-using namespace std;
-
-namespace interfaces
-{
- string comment();
- string delete_file(string s);
- string file_exist(string s);
- string compile(string s);
- string function_close();
- string function_file_extension();
- string strvcat(string s1, string s2);
- string load_model_function_files(string filename);
-}
-#endif