Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dynare
preprocessor
Commits
4ad0e500
Commit
4ad0e500
authored
Jul 18, 2018
by
Sébastien Villemot
Browse files
C++11: convert {Unary,Binary,Trinary}Opcode to class enums
parent
11b1fdcf
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
src/CodeInterpreter.hh
View file @
4ad0e500
...
...
@@ -174,59 +174,59 @@ enum ExpressionType
ThirdParamDerivative
};
enum
UnaryOpcode
{
oU
minus
,
oE
xp
,
oL
og
,
oL
og10
,
oC
os
,
oS
in
,
oT
an
,
oA
cos
,
oA
sin
,
oA
tan
,
oC
osh
,
oS
inh
,
oT
anh
,
oA
cosh
,
oA
sinh
,
oA
tanh
,
oS
qrt
,
oA
bs
,
oS
ign
,
oS
teadyState
,
oS
teadyStateParamDeriv
,
// for the derivative of the STEADY_STATE operator w.r.t. to a parameter
oS
teadyStateParam2ndDeriv
,
// for the 2nd derivative of the STEADY_STATE operator w.r.t. to a parameter
oE
xpectation
,
oE
rf
,
oD
iff
,
oA
dl
};
enum
BinaryOpcode
{
oP
lus
,
oM
inus
,
oT
imes
,
oD
ivide
,
oP
ower
,
oP
owerDeriv
,
// for the derivative of the power function (see trac ticket #78)
oE
qual
,
oM
ax
,
oM
in
,
oL
ess
,
oG
reater
,
oL
essEqual
,
oG
reaterEqual
,
oE
qualEqual
,
oD
ifferent
};
enum
TrinaryOpcode
{
oN
ormcdf
,
oN
ormpdf
enum
class
UnaryOpcode
{
u
minus
,
e
xp
,
l
og
,
l
og10
,
c
os
,
s
in
,
t
an
,
a
cos
,
a
sin
,
a
tan
,
c
osh
,
s
inh
,
t
anh
,
a
cosh
,
a
sinh
,
a
tanh
,
s
qrt
,
a
bs
,
s
ign
,
s
teadyState
,
s
teadyStateParamDeriv
,
// for the derivative of the STEADY_STATE operator w.r.t. to a parameter
s
teadyStateParam2ndDeriv
,
// for the 2nd derivative of the STEADY_STATE operator w.r.t. to a parameter
e
xpectation
,
e
rf
,
d
iff
,
a
dl
};
enum
class
BinaryOpcode
{
p
lus
,
m
inus
,
t
imes
,
d
ivide
,
p
ower
,
p
owerDeriv
,
// for the derivative of the power function (see trac ticket #78)
e
qual
,
m
ax
,
m
in
,
l
ess
,
g
reater
,
l
essEqual
,
g
reaterEqual
,
e
qualEqual
,
d
ifferent
};
enum
class
TrinaryOpcode
{
n
ormcdf
,
n
ormpdf
};
enum
external_function_type
...
...
src/ComputingTasks.cc
View file @
4ad0e500
...
...
@@ -946,16 +946,16 @@ RamseyConstraintsStatement::writeOutput(ostream &output, const string &basename,
output
<<
"{"
<<
it
->
endo
+
1
<<
", '"
;
switch
(
it
->
code
)
{
case
oL
ess
:
case
BinaryOpcode
::
l
ess
:
output
<<
'<'
;
break
;
case
oG
reater
:
case
BinaryOpcode
::
g
reater
:
output
<<
'>'
;
break
;
case
oL
essEqual
:
case
BinaryOpcode
::
l
essEqual
:
output
<<
"<="
;
break
;
case
oG
reaterEqual
:
case
BinaryOpcode
::
g
reaterEqual
:
output
<<
">="
;
break
;
default:
...
...
@@ -981,16 +981,16 @@ RamseyConstraintsStatement::writeJsonOutput(ostream &output) const
output
<<
"{
\"
constraint
\"
:
\"
"
<<
symbol_table
.
getName
(
it
->
endo
)
<<
" "
;
switch
(
it
->
code
)
{
case
oL
ess
:
case
BinaryOpcode
::
l
ess
:
output
<<
'<'
;
break
;
case
oG
reater
:
case
BinaryOpcode
::
g
reater
:
output
<<
'>'
;
break
;
case
oL
essEqual
:
case
BinaryOpcode
::
l
essEqual
:
output
<<
"<="
;
break
;
case
oG
reaterEqual
:
case
BinaryOpcode
::
g
reaterEqual
:
output
<<
">="
;
break
;
default:
...
...
src/DataTree.cc
View file @
4ad0e500
...
...
@@ -98,7 +98,7 @@ DataTree::AddPlus(expr_t iArg1, expr_t iArg2)
{
// Simplify x+(-y) in x-y
auto
*
uarg2
=
dynamic_cast
<
UnaryOpNode
*>
(
iArg2
);
if
(
uarg2
!=
nullptr
&&
uarg2
->
get_op_code
()
==
o
Uminus
)
if
(
uarg2
!=
nullptr
&&
uarg2
->
get_op_code
()
==
U
naryOpcode
::
u
minus
)
return
AddMinus
(
iArg1
,
uarg2
->
get_arg
());
// To treat commutativity of "+"
...
...
@@ -109,7 +109,7 @@ DataTree::AddPlus(expr_t iArg1, expr_t iArg2)
iArg1
=
iArg2
;
iArg2
=
tmp
;
}
return
AddBinaryOp
(
iArg1
,
oP
lus
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
p
lus
,
iArg2
);
}
else
if
(
iArg1
!=
Zero
)
return
iArg1
;
...
...
@@ -131,7 +131,7 @@ DataTree::AddMinus(expr_t iArg1, expr_t iArg2)
if
(
iArg1
==
iArg2
)
return
Zero
;
return
AddBinaryOp
(
iArg1
,
oM
inus
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
m
inus
,
iArg2
);
}
expr_t
...
...
@@ -141,10 +141,10 @@ DataTree::AddUMinus(expr_t iArg1)
{
// Simplify -(-x) in x
auto
*
uarg
=
dynamic_cast
<
UnaryOpNode
*>
(
iArg1
);
if
(
uarg
!=
nullptr
&&
uarg
->
get_op_code
()
==
o
Uminus
)
if
(
uarg
!=
nullptr
&&
uarg
->
get_op_code
()
==
U
naryOpcode
::
u
minus
)
return
uarg
->
get_arg
();
return
AddUnaryOp
(
o
Uminus
,
iArg1
);
return
AddUnaryOp
(
U
naryOpcode
::
u
minus
,
iArg1
);
}
else
return
Zero
;
...
...
@@ -167,7 +167,7 @@ DataTree::AddTimes(expr_t iArg1, expr_t iArg2)
iArg1
=
iArg2
;
iArg2
=
tmp
;
}
return
AddBinaryOp
(
iArg1
,
oT
imes
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
t
imes
,
iArg2
);
}
else
if
(
iArg1
!=
Zero
&&
iArg1
!=
One
&&
iArg2
==
One
)
return
iArg1
;
...
...
@@ -198,50 +198,50 @@ DataTree::AddDivide(expr_t iArg1, expr_t iArg2) noexcept(false)
if
(
iArg1
==
iArg2
)
return
One
;
return
AddBinaryOp
(
iArg1
,
oD
ivide
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
d
ivide
,
iArg2
);
}
expr_t
DataTree
::
AddLess
(
expr_t
iArg1
,
expr_t
iArg2
)
{
return
AddBinaryOp
(
iArg1
,
oL
ess
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
l
ess
,
iArg2
);
}
expr_t
DataTree
::
AddGreater
(
expr_t
iArg1
,
expr_t
iArg2
)
{
return
AddBinaryOp
(
iArg1
,
oG
reater
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
g
reater
,
iArg2
);
}
expr_t
DataTree
::
AddLessEqual
(
expr_t
iArg1
,
expr_t
iArg2
)
{
return
AddBinaryOp
(
iArg1
,
oL
essEqual
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
l
essEqual
,
iArg2
);
}
expr_t
DataTree
::
AddGreaterEqual
(
expr_t
iArg1
,
expr_t
iArg2
)
{
return
AddBinaryOp
(
iArg1
,
oG
reaterEqual
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
g
reaterEqual
,
iArg2
);
}
expr_t
DataTree
::
AddEqualEqual
(
expr_t
iArg1
,
expr_t
iArg2
)
{
return
AddBinaryOp
(
iArg1
,
oE
qualEqual
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
e
qualEqual
,
iArg2
);
}
expr_t
DataTree
::
AddDifferent
(
expr_t
iArg1
,
expr_t
iArg2
)
{
return
AddBinaryOp
(
iArg1
,
oD
ifferent
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
d
ifferent
,
iArg2
);
}
expr_t
DataTree
::
AddPower
(
expr_t
iArg1
,
expr_t
iArg2
)
{
if
(
iArg1
!=
Zero
&&
iArg2
!=
Zero
&&
iArg1
!=
One
&&
iArg2
!=
One
)
return
AddBinaryOp
(
iArg1
,
oP
ower
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
p
ower
,
iArg2
);
else
if
(
iArg1
==
One
)
return
One
;
else
if
(
iArg2
==
One
)
...
...
@@ -256,26 +256,26 @@ expr_t
DataTree
::
AddPowerDeriv
(
expr_t
iArg1
,
expr_t
iArg2
,
int
powerDerivOrder
)
{
assert
(
powerDerivOrder
>
0
);
return
AddBinaryOp
(
iArg1
,
oP
owerDeriv
,
iArg2
,
powerDerivOrder
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
p
owerDeriv
,
iArg2
,
powerDerivOrder
);
}
expr_t
DataTree
::
AddDiff
(
expr_t
iArg1
)
{
return
AddUnaryOp
(
oD
iff
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
d
iff
,
iArg1
);
}
expr_t
DataTree
::
AddAdl
(
expr_t
iArg1
,
const
string
&
name
,
const
vector
<
int
>
&
lags
)
{
return
AddUnaryOp
(
oA
dl
,
iArg1
,
0
,
0
,
0
,
string
(
name
),
lags
);
return
AddUnaryOp
(
UnaryOpcode
::
a
dl
,
iArg1
,
0
,
0
,
0
,
string
(
name
),
lags
);
}
expr_t
DataTree
::
AddExp
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
)
return
AddUnaryOp
(
oE
xp
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
e
xp
,
iArg1
);
else
return
One
;
}
...
...
@@ -284,7 +284,7 @@ expr_t
DataTree
::
AddLog
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
&&
iArg1
!=
One
)
return
AddUnaryOp
(
oL
og
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
l
og
,
iArg1
);
else
if
(
iArg1
==
One
)
return
Zero
;
else
...
...
@@ -298,7 +298,7 @@ expr_t
DataTree
::
AddLog10
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
&&
iArg1
!=
One
)
return
AddUnaryOp
(
oL
og10
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
l
og10
,
iArg1
);
else
if
(
iArg1
==
One
)
return
Zero
;
else
...
...
@@ -312,7 +312,7 @@ expr_t
DataTree
::
AddCos
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
)
return
AddUnaryOp
(
oC
os
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
c
os
,
iArg1
);
else
return
One
;
}
...
...
@@ -321,7 +321,7 @@ expr_t
DataTree
::
AddSin
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
)
return
AddUnaryOp
(
oS
in
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
s
in
,
iArg1
);
else
return
Zero
;
}
...
...
@@ -330,7 +330,7 @@ expr_t
DataTree
::
AddTan
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
)
return
AddUnaryOp
(
oT
an
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
t
an
,
iArg1
);
else
return
Zero
;
}
...
...
@@ -339,7 +339,7 @@ expr_t
DataTree
::
AddAcos
(
expr_t
iArg1
)
{
if
(
iArg1
!=
One
)
return
AddUnaryOp
(
oA
cos
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
a
cos
,
iArg1
);
else
return
Zero
;
}
...
...
@@ -348,7 +348,7 @@ expr_t
DataTree
::
AddAsin
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
)
return
AddUnaryOp
(
oA
sin
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
a
sin
,
iArg1
);
else
return
Zero
;
}
...
...
@@ -357,7 +357,7 @@ expr_t
DataTree
::
AddAtan
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
)
return
AddUnaryOp
(
oA
tan
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
a
tan
,
iArg1
);
else
return
Zero
;
}
...
...
@@ -366,7 +366,7 @@ expr_t
DataTree
::
AddCosh
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
)
return
AddUnaryOp
(
oC
osh
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
c
osh
,
iArg1
);
else
return
One
;
}
...
...
@@ -375,7 +375,7 @@ expr_t
DataTree
::
AddSinh
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
)
return
AddUnaryOp
(
oS
inh
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
s
inh
,
iArg1
);
else
return
Zero
;
}
...
...
@@ -384,7 +384,7 @@ expr_t
DataTree
::
AddTanh
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
)
return
AddUnaryOp
(
oT
anh
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
t
anh
,
iArg1
);
else
return
Zero
;
}
...
...
@@ -393,7 +393,7 @@ expr_t
DataTree
::
AddAcosh
(
expr_t
iArg1
)
{
if
(
iArg1
!=
One
)
return
AddUnaryOp
(
oA
cosh
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
a
cosh
,
iArg1
);
else
return
Zero
;
}
...
...
@@ -402,7 +402,7 @@ expr_t
DataTree
::
AddAsinh
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
)
return
AddUnaryOp
(
oA
sinh
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
a
sinh
,
iArg1
);
else
return
Zero
;
}
...
...
@@ -411,7 +411,7 @@ expr_t
DataTree
::
AddAtanh
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
)
return
AddUnaryOp
(
oA
tanh
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
a
tanh
,
iArg1
);
else
return
Zero
;
}
...
...
@@ -420,7 +420,7 @@ expr_t
DataTree
::
AddSqrt
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
)
return
AddUnaryOp
(
oS
qrt
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
s
qrt
,
iArg1
);
else
return
Zero
;
}
...
...
@@ -433,7 +433,7 @@ DataTree::AddAbs(expr_t iArg1)
if
(
iArg1
==
One
)
return
One
;
else
return
AddUnaryOp
(
oA
bs
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
a
bs
,
iArg1
);
}
expr_t
...
...
@@ -444,14 +444,14 @@ DataTree::AddSign(expr_t iArg1)
if
(
iArg1
==
One
)
return
One
;
else
return
AddUnaryOp
(
oS
ign
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
s
ign
,
iArg1
);
}
expr_t
DataTree
::
AddErf
(
expr_t
iArg1
)
{
if
(
iArg1
!=
Zero
)
return
AddUnaryOp
(
oE
rf
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
e
rf
,
iArg1
);
else
return
Zero
;
}
...
...
@@ -459,49 +459,49 @@ DataTree::AddErf(expr_t iArg1)
expr_t
DataTree
::
AddMax
(
expr_t
iArg1
,
expr_t
iArg2
)
{
return
AddBinaryOp
(
iArg1
,
oM
ax
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
m
ax
,
iArg2
);
}
expr_t
DataTree
::
AddMin
(
expr_t
iArg1
,
expr_t
iArg2
)
{
return
AddBinaryOp
(
iArg1
,
oM
in
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
m
in
,
iArg2
);
}
expr_t
DataTree
::
AddNormcdf
(
expr_t
iArg1
,
expr_t
iArg2
,
expr_t
iArg3
)
{
return
AddTrinaryOp
(
iArg1
,
oN
ormcdf
,
iArg2
,
iArg3
);
return
AddTrinaryOp
(
iArg1
,
TrinaryOpcode
::
n
ormcdf
,
iArg2
,
iArg3
);
}
expr_t
DataTree
::
AddNormpdf
(
expr_t
iArg1
,
expr_t
iArg2
,
expr_t
iArg3
)
{
return
AddTrinaryOp
(
iArg1
,
oN
ormpdf
,
iArg2
,
iArg3
);
return
AddTrinaryOp
(
iArg1
,
TrinaryOpcode
::
n
ormpdf
,
iArg2
,
iArg3
);
}
expr_t
DataTree
::
AddSteadyState
(
expr_t
iArg1
)
{
return
AddUnaryOp
(
oS
teadyState
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
s
teadyState
,
iArg1
);
}
expr_t
DataTree
::
AddSteadyStateParamDeriv
(
expr_t
iArg1
,
int
param_symb_id
)
{
return
AddUnaryOp
(
oS
teadyStateParamDeriv
,
iArg1
,
0
,
param_symb_id
);
return
AddUnaryOp
(
UnaryOpcode
::
s
teadyStateParamDeriv
,
iArg1
,
0
,
param_symb_id
);
}
expr_t
DataTree
::
AddSteadyStateParam2ndDeriv
(
expr_t
iArg1
,
int
param1_symb_id
,
int
param2_symb_id
)
{
return
AddUnaryOp
(
oS
teadyStateParam2ndDeriv
,
iArg1
,
0
,
param1_symb_id
,
param2_symb_id
);
return
AddUnaryOp
(
UnaryOpcode
::
s
teadyStateParam2ndDeriv
,
iArg1
,
0
,
param1_symb_id
,
param2_symb_id
);
}
expr_t
DataTree
::
AddExpectation
(
int
iArg1
,
expr_t
iArg2
)
{
return
AddUnaryOp
(
oE
xpectation
,
iArg2
,
iArg1
);
return
AddUnaryOp
(
UnaryOpcode
::
e
xpectation
,
iArg2
,
iArg1
);
}
expr_t
...
...
@@ -529,7 +529,7 @@ DataTree::AddPacExpectation(const string &model_name)
expr_t
DataTree
::
AddEqual
(
expr_t
iArg1
,
expr_t
iArg2
)
{
return
AddBinaryOp
(
iArg1
,
oE
qual
,
iArg2
);
return
AddBinaryOp
(
iArg1
,
BinaryOpcode
::
e
qual
,
iArg2
);
}
void
...
...
@@ -706,14 +706,14 @@ DataTree::minLagForSymbol(int symb_id) const
void
DataTree
::
writePowerDerivCHeader
(
ostream
&
output
)
const
{
if
(
isBinaryOpUsed
(
oP
owerDeriv
))
if
(
isBinaryOpUsed
(
BinaryOpcode
::
p
owerDeriv
))
output
<<
"double getPowerDeriv(double, double, int);"
<<
endl
;
}
void
DataTree
::
writePowerDeriv
(
ostream
&
output
)
const
{
if
(
isBinaryOpUsed
(
oP
owerDeriv
))
if
(
isBinaryOpUsed
(
BinaryOpcode
::
p
owerDeriv
))
output
<<
"/*"
<<
endl
<<
" * The k-th derivative of x^p"
<<
endl
<<
" */"
<<
endl
...
...
@@ -739,7 +739,7 @@ void
DataTree
::
writeNormcdfCHeader
(
ostream
&
output
)
const
{
#if defined(_WIN32) || defined(__CYGWIN32__) || defined(__MINGW32__)
if
(
isTrinaryOpUsed
(
oN
ormcdf
))
if
(
isTrinaryOpUsed
(
TrinaryOpcode
::
n
ormcdf
))
output
<<
"#ifdef _MSC_VER"
<<
endl
<<
"double normcdf(double);"
<<
endl
<<
"#endif"
<<
endl
;
...
...
@@ -750,7 +750,7 @@ void
DataTree
::
writeNormcdf
(
ostream
&
output
)
const
{
#if defined(_WIN32) || defined(__CYGWIN32__) || defined(__MINGW32__)
if
(
isTrinaryOpUsed
(
oN
ormcdf
))
if
(
isTrinaryOpUsed
(
TrinaryOpcode
::
n
ormcdf
))
output
<<
endl
<<
"#ifdef _MSC_VER"
<<
endl
<<
"/*"
<<
endl
...
...
src/DataTree.hh
View file @
4ad0e500
...
...
@@ -348,9 +348,9 @@ DataTree::AddUnaryOp(UnaryOpcode op_code, expr_t arg, int arg_exp_info_set, int
return
it
->
second
;
// Try to reduce to a constant
// Case where arg is a constant and op_code ==
o
Uminus (i.e. we're adding a negative constant) is skipped
// Case where arg is a constant and op_code == U
naryOpcode::u
minus (i.e. we're adding a negative constant) is skipped
auto
*
carg
=
dynamic_cast
<
NumConstNode
*>
(
arg
);
if
(
op_code
!=
o
Uminus
||
carg
==
nullptr
)
if
(
op_code
!=
U
naryOpcode
::
u
minus
||
carg
==
nullptr
)
{
try
{
...
...
src/DynamicModel.cc
View file @
4ad0e500
...
...
@@ -953,15 +953,15 @@ DynamicModel::writeModelEquationsCode(const string &basename, const map_idx_t &m
fldu
.
write
(
code_file
,
instruction_number
);
FLDV_
fldv
{
static_cast
<
int
>
(
SymbolType
::
endogenous
),
static_cast
<
unsigned
int
>
(
it
->
first
.
first
),
it
->
first
.
second
};
fldv
.
write
(
code_file
,
instruction_number
);
FBINARY_ fbinary
(oT
imes);
FBINARY_
fbinary
{
static_cast
<
int
>
(
BinaryOpcode
::
t
imes
)
}
;
fbinary
.
write
(
code_file
,
instruction_number
);
if
(
it
!=
derivatives
[
i
].
begin
())
{
FBINARY_ fbinary
(oP
lus);
FBINARY_
fbinary
{
static_cast
<
int
>
(
BinaryOpcode
::
p
lus
)
}
;
fbinary
.
write
(
code_file
,
instruction_number
);
}
}
FBINARY_ fbinary
(oM
inus);
FBINARY_
fbinary
{
static_cast
<
int
>
(
BinaryOpcode
::
m
inus
)
}
;
fbinary
.
write
(
code_file
,
instruction_number
);
}
FSTPU_
fstpu
(
i
);
...
...
@@ -1273,7 +1273,7 @@ DynamicModel::writeModelEquationsCode_Block(const string &basename, const map_id
lhs
->
compile
(
code_file
,
instruction_number
,
false
,
temporary_terms
,
map_idx
,
true
,
false
);
rhs
->
compile
(
code_file
,
instruction_number
,
false
,
temporary_terms
,
map_idx
,
true
,
false
);
FBINARY_ fbinary
(oM
inus);
FBINARY_
fbinary
{
static_cast
<
int
>
(
BinaryOpcode
::
m
inus
)
}
;
fbinary
.
write
(
code_file
,
instruction_number
);
FSTPR_
fstpr
(
i
-
block_recursive
);
fstpr
.
write
(
code_file
,
instruction_number
);
...
...
@@ -1362,7 +1362,7 @@ DynamicModel::writeModelEquationsCode_Block(const string &basename, const map_id
FLDV_
fldv
{
static_cast
<
int
>
(
SymbolType
::
endogenous
),
static_cast
<
unsigned
int
>
(
Uf
[
v
].
Ufl
->
var
),
Uf
[
v
].
Ufl
->
lag
};
fldv
.
write
(
code_file
,
instruction_number
);
FBINARY_ fbinary
(oT
imes);
FBINARY_
fbinary
{
static_cast
<
int
>
(
BinaryOpcode
::
t
imes
)
}
;
fbinary
.
write
(
code_file
,
instruction_number
);
FCUML_
fcuml
;
...
...
@@ -1375,7 +1375,7 @@ DynamicModel::writeModelEquationsCode_Block(const string &basename, const map_id
free
(
Uf
[
v
].
Ufl
);
Uf
[
v
].
Ufl
=
Uf
[
v
].
Ufl_First
;
}
FBINARY_ fbinary
(oM
inus);
FBINARY_
fbinary
{
static_cast
<
int
>
(
BinaryOpcode
::
m
inus
)
}
;
fbinary
.
write
(
code_file
,
instruction_number
);
FSTPU_
fstpu
(
i
-
block_recursive
);
...
...
@@ -1585,7 +1585,7 @@ DynamicModel::writeDynamicCFile(const string &basename, const int order) const
mDynamicModelFile
<<
"#define max(a, b) (((a) > (b)) ? (a) : (b))"
<<
endl
<<
"#define min(a, b) (((a) > (b)) ? (b) : (a))"
<<
endl
;
// Write function definition if
oP
owerDeriv is used
// Write function definition if
BinaryOpcode::p
owerDeriv is used
writePowerDerivCHeader
(
mDynamicModelFile
);
writeNormcdfCHeader
(
mDynamicModelFile
);
...
...
@@ -5567,7 +5567,7 @@ DynamicModel::fillEvalContext(eval_context_t &eval_context) const
// First, auxiliary variables
for
(
auto
aux_equation
:
aux_equations
)
{
assert(aux_equation->get_op_code() ==
oE
qual);
assert
(
aux_equation
->
get_op_code
()
==
BinaryOpcode
::
e
qual
);
auto
*
auxvar
=
dynamic_cast
<
VariableNode
*>
(
aux_equation
->
get_arg1
());
assert
(
auxvar
!=
nullptr
);
try
...
...
@@ -5620,7 +5620,7 @@ void
DynamicModel
::
addStaticOnlyEquation
(
expr_t
eq
,
int
lineno
,
const
vector
<
pair
<
string
,
string
>>
&
eq_tags
)
{
auto
*
beq
=
dynamic_cast
<
BinaryOpNode
*>
(
eq
);
assert(beq != nul