diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc index 6b3a84bbb6228832391c6c60972929eb3c04a703..53cb39adc6fe9ad4ca2fb10275220131fa77f558 100644 --- a/src/DynamicModel.cc +++ b/src/DynamicModel.cc @@ -4746,7 +4746,8 @@ DynamicModel::computeChainRuleJacobian() break; } - blocks_derivatives[blk][{ eq, var, lag }] = d; + if (d != Zero) + blocks_derivatives[blk][{ eq, var, lag }] = d; } } } diff --git a/src/StaticModel.cc b/src/StaticModel.cc index 205b1fd5d500751494ced2d693d19281d9e600b5..d7a07050eeb19c86a88324132447867046f1625c 100644 --- a/src/StaticModel.cc +++ b/src/StaticModel.cc @@ -2060,10 +2060,8 @@ StaticModel::computeChainRuleJacobian() { int var_orig = getBlockVariableID(blk, var); expr_t d1 = equations[eq_orig]->getChainRuleDerivative(getDerivID(symbol_table.getID(SymbolType::endogenous, var_orig), 0), recursive_vars); - if (d1 == Zero) - continue; - - blocks_derivatives[blk][{ eq, var, 0 }] = d1; + if (d1 != Zero) + blocks_derivatives[blk][{ eq, var, 0 }] = d1; } } }