From 88cdf0193cfd8e2fac7ac86482aec28a97d6384c Mon Sep 17 00:00:00 2001 From: Ferhat Mihoubi Date: Sat, 20 Nov 2010 16:06:07 +0100 Subject: [PATCH] - Correction of a bug in the Jacobian Matrix computation for a non block-decomposed model using bytecode --- preprocessor/StaticModel.cc | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/preprocessor/StaticModel.cc b/preprocessor/StaticModel.cc index 46ce79efe..46a536427 100644 --- a/preprocessor/StaticModel.cc +++ b/preprocessor/StaticModel.cc @@ -501,23 +501,26 @@ StaticModel::writeModelEquationsCode(const string file_name, const string bin_ba { FLDR_ fldr(i); fldr.write(code_file, instruction_number); - for(vector >::const_iterator it = derivatives[i].begin(); - it != derivatives[i].end(); it++) + if (derivatives[i].size()) { - FLDSU_ fldsu(it->second); - fldsu.write(code_file, instruction_number); - FLDSV_ fldsv(eEndogenous, it->first); - fldsv.write(code_file, instruction_number); - FBINARY_ fbinary(oTimes); - fbinary.write(code_file, instruction_number); - if (it != derivatives[i].begin()) + for(vector >::const_iterator it = derivatives[i].begin(); + it != derivatives[i].end(); it++) { - FBINARY_ fbinary(oPlus); + FLDSU_ fldsu(it->second); + fldsu.write(code_file, instruction_number); + FLDSV_ fldsv(eEndogenous, it->first); + fldsv.write(code_file, instruction_number); + FBINARY_ fbinary(oTimes); fbinary.write(code_file, instruction_number); + if (it != derivatives[i].begin()) + { + FBINARY_ fbinary(oPlus); + fbinary.write(code_file, instruction_number); + } } + FBINARY_ fbinary(oMinus); + fbinary.write(code_file, instruction_number); } - FBINARY_ fbinary(oMinus); - fbinary.write(code_file, instruction_number); FSTPSU_ fstpsu(i); fstpsu.write(code_file, instruction_number); }