42 string dim_offset =
"";
50 for (
int i = 0; i < dim; i++) {
51 buffer <<
"d" << i + 1 << dim_offset << (((i == dim - 1) && !
_is_qss) ?
")" :
",");
64 string index_offset =
"-1";
75 for (
int i = 0; i < dim; i++) {
76 stringstream variable;
78 index << i + 1 << index_offset;
81 arguments << (i == dim - 1 ?
")" + end.str() : variable.str());
100 for (
int i = 0; i < dim; i++) {
101 stringstream variable;
103 arguments <<
"(d" << i + 1 <<
"-1)" << (i == dim - 1 ?
")" + end.str() : variable.str());
118 for (
int i = 0; i < dim; i++) {
119 buffer <<
"d" << i + 1 << (i == dim - 1 ?
")" :
",");
126 stringstream index, def, state_index, state_def, init_code, quantized_def;
133 static const bool MATRIX_INDEX =
false;
136 state_index <<
"_state_idx" <<
_variable << params;
144 quantized_def <<
"#define _q" <<
_variable << params <<
" q";
145 init_code <<
"#define _init" <<
_variable << params <<
" x";
160 def << state_index.str();
167 state_def << def.str();
169 state_def <<
" * COEFF_MULTIPLIER(coeff)";
171 _macros << state_def.str() << endl;
173 init_code << def.str() << endl;
175 quantized_def << state_def.str() << endl;
177 _macros << quantized_def.str();
194 _macros <<
"dx" << def.str() << endl;
200 stringstream buffer, index;
202 index <<
"(" << range->indexes() <<
")";
204 buffer << token << index.str();
212 index <<
"(" << range->indexes() <<
")";
214 buffer <<
"#define " << token << index.str() <<
" ";
216 int dim = range->definition().size();
223 stringstream variable;
224 variable <<
"*" << range->rowSize(i) <<
"+";
225 arguments <<
"(" << rdt.
key(it) <<
"-1)" << (i == dim - 1 ?
")" : variable.str());
229 buffer <<
id - 1 << endl;
237 buffer <<
"#define MODEL_DATA_ACCESS(m) \\" << endl;
238 if (discretes && algebraics) {
239 buffer <<
" double* x = m->x; \\" << endl;
240 buffer <<
" double* d = m->d; \\" << endl;
241 buffer <<
" double* a = m->alg;" << endl;
242 }
else if (discretes) {
243 buffer <<
" double* x = m->x; \\" << endl;
244 buffer <<
" double* d = m->d;" << endl;
245 }
else if (algebraics) {
246 buffer <<
" double* x = m->x; \\" << endl;
247 buffer <<
" double* a = m->alg;" << endl;
249 buffer <<
" double* x = m->x; " << endl;
258 buffer <<
"#define COEFF_MULTIPLIER(c) COEFF_MULTIPLIER_##c" << endl;
261 buffer <<
"#define COEFF_MULTIPLIER_0 1" << endl;
262 buffer <<
"#define COEFF_MULTIPLIER_1 1" << endl;
265 buffer <<
"#define COEFF_MULTIPLIER_0 1" << endl;
266 buffer <<
"#define COEFF_MULTIPLIER_1 1" << endl;
267 buffer <<
"#define COEFF_MULTIPLIER_2 2" << endl;
270 buffer <<
"#define COEFF_MULTIPLIER_0 1" << endl;
271 buffer <<
"#define COEFF_MULTIPLIER_1 1" << endl;
272 buffer <<
"#define COEFF_MULTIPLIER_2 2" << endl;
273 buffer <<
"#define COEFF_MULTIPLIER_3 6" << endl;
276 buffer <<
"#define COEFF_MULTIPLIER_0 1" << endl;
277 buffer <<
"#define COEFF_MULTIPLIER_1 1" << endl;
278 buffer <<
"#define COEFF_MULTIPLIER_2 2" << endl;
279 buffer <<
"#define COEFF_MULTIPLIER_3 6" << endl;
280 buffer <<
"#define COEFF_MULTIPLIER_4 24" << endl;