From dce9d5e5fa92f8c70bcde6d3de98b692eee8529c Mon Sep 17 00:00:00 2001 From: "joaquin.f.fernandez" Date: Mon, 24 Apr 2023 16:19:22 -0300 Subject: [PATCH] [iss-211] Squashed commit of the following: commit b08d6e96471a49420043a07379c6707edc65beb3 Author: joaquin.f.fernandez Date: Mon Apr 24 15:18:42 2023 -0300 Updated mmoc tests GT files. commit ea88f01480dee0ab330f2c7ad32838d1ed4dfe80 Merge: c76b250 5c74c62 Author: joaquin.f.fernandez Date: Thu Apr 20 12:17:33 2023 -0300 Merge branch 'qss-solver-dev' into mmoc/iss-211-fix-double-expression-printer-in-integer-divisions commit c76b2501e371c9b5219a475856a96b8fc0cb537f Author: joaquin.f.fernandez Date: Thu Apr 20 11:48:16 2023 -0300 Check for interger divisions and cast them to double in printer. commit 4fa29dfc2e5baae0cfe2eaacfc86543088838584 Author: joaquin.f.fernandez Date: Thu Apr 20 11:47:23 2023 -0300 Check for constant integer expressions in visitor. --- .../gt_data/NeuralNetwork1/NeuralNetwork1.c | 36 +++++++-------- src/mmoc/tests/system/gt_data/adr/adr.c | 6 +-- src/mmoc/tests/system/gt_data/adr/adr.ini | 2 +- src/mmoc/tests/system/gt_data/adr/adr.mo | 2 +- .../system/gt_data/advection/advection.c | 2 +- .../advection_quoted/advection_quoted.c | 2 +- .../tests/system/gt_data/airconds/airconds.c | 8 ++-- .../tests/system/gt_data/aircont/aircont.c | 14 +++--- .../bball_downstairs/bball_downstairs.c | 20 ++++----- src/mmoc/tests/system/gt_data/boost/boost.c | 18 ++++---- src/mmoc/tests/system/gt_data/buck/buck.c | 16 +++---- .../gt_data/buck_circuit/buck_circuit.c | 16 +++---- .../system/gt_data/buck_term/buck_term.c | 44 +++++++++---------- .../system/gt_data/buckboost/buckboost.c | 16 +++---- src/mmoc/tests/system/gt_data/cuk/cuk.c | 20 ++++----- src/mmoc/tests/system/gt_data/cuk2/cuk2.c | 20 ++++----- .../system/gt_data/interleaved/interleaved.c | 22 +++++----- .../system/gt_data/inverters/inverters.c | 6 +-- .../gt_data/lotka_volterra/lotka_volterra.c | 20 ++++----- .../gt_data/par_airconds/par_airconds.c | 8 ++-- .../par_airconds_cont/par_airconds_cont.c | 20 ++++----- .../system/gt_data/rectifier/rectifier.c | 10 ++--- .../tests/system/gt_data/spikings/spikings.c | 12 ++--- src/mmoc/util/visitors/expression_printer.cpp | 11 +++-- .../util/visitors/is_constant_expression.cpp | 17 +++++-- .../util/visitors/is_constant_expression.h | 5 ++- 26 files changed, 194 insertions(+), 179 deletions(-) diff --git a/src/mmoc/tests/system/gt_data/NeuralNetwork1/NeuralNetwork1.c b/src/mmoc/tests/system/gt_data/NeuralNetwork1/NeuralNetwork1.c index bf323962..d137eaa2 100644 --- a/src/mmoc/tests/system/gt_data/NeuralNetwork1/NeuralNetwork1.c +++ b/src/mmoc/tests/system/gt_data/NeuralNetwork1/NeuralNetwork1.c @@ -236,38 +236,38 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int i; int j; int k; - _Cm = 2.5e-10; - _EL = -0.065; - _Jmean = (8.78e-11)/1; - _Ne = 0.8*100; - _Ni = 0.2*100; - _Vr = -0.065; + _Cm = 2.500000e-10; + _EL = -6.500000e-02; + _Jmean = (8.780000e-11)/(double)1; + _Ne = 8.000000e-01*100; + _Ni = 2.000000e-01*100; + _Vr = -6.500000e-02; for(_d1 = 1; _d1<=100; _d1+=1) { _active(_d1) = 1; } - _cI = 1e+09; - _cV = 1000; - _ce = 10*0.8; - _ci = 10*0.2; + _cI = 1.000000e+09; + _cV = 1.000000e+03; + _ce = 10*8.000000e-01; + _ci = 10*2.000000e-01; _g = 4; _kext = 940; - _taum = 0.01; - _taur = 0.002; - _taus = 0.0005; - _theta = -0.05; + _taum = 1.000000e-02; + _taur = 2.000000e-03; + _taus = 5.000000e-04; + _theta = -5.000000e-02; for(_d1 = 1; _d1<=100; _d1+=1) { _tnextr(_d1) = -1; } _vbg = 8; _vext = _vbg*_kext; for(i = 1; i<=100; i+=1) { - _Islast(i) = __math__rand(1)*1e-10*_cI+0.4; + _Islast(i) = __math__rand(1)*1.000000e-10*_cI+4.000000e-01; _init_V(i,0) = __math__rand(15)-65; _Cn(i) = 0; - if(i<100*0.8) { - _J(i) = (_Jmean+__math__normal(_Jmean*0.1/3)); + if(i<100*8.000000e-01) { + _J(i) = (_Jmean+__math__normal(_Jmean*1.000000e-01/(double)3)); } else { - _J(i) = -(_Jmean*_g+__math__normal(_Jmean*_g*0.1/3)); + _J(i) = -(_Jmean*_g+__math__normal(_Jmean*_g*1.000000e-01/(double)3)); } _tnext(i) = __math__exponential(1/_vext); } diff --git a/src/mmoc/tests/system/gt_data/adr/adr.c b/src/mmoc/tests/system/gt_data/adr/adr.c index fde9ac4d..01dc31df 100644 --- a/src/mmoc/tests/system/gt_data/adr/adr.c +++ b/src/mmoc/tests/system/gt_data/adr/adr.c @@ -252,14 +252,14 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int i; _L = 10; _a = 1; - _dx = _L/1000; + _dx = _L/(double)1000; _dx2 = pow(_dx,2); _r = 1000; for(i = 500; i<=1000; i+=1) { - _d(i) = 10; + _d(i) = 1.000000e+01; } for(i = 1; i<=499; i+=1) { - _d(i) = 1e-06; + _d(i) = 1.000000e-06; } modelData->nSD[_idx_u(1,0)]++; modelData->nSD[_idx_u(1000,0)]++; diff --git a/src/mmoc/tests/system/gt_data/adr/adr.ini b/src/mmoc/tests/system/gt_data/adr/adr.ini index d7207e00..3f8175bf 100644 --- a/src/mmoc/tests/system/gt_data/adr/adr.ini +++ b/src/mmoc/tests/system/gt_data/adr/adr.ini @@ -4,7 +4,7 @@ derdelta=1.00000e-08; symdiff=1; lps=0; nodesize=10000; -jacobian=1; +jacobian=0; it=0.00000e+00; ft=1.00000e+01; sol="LIQSS_BDF"; diff --git a/src/mmoc/tests/system/gt_data/adr/adr.mo b/src/mmoc/tests/system/gt_data/adr/adr.mo index 064b9b41..71a19210 100644 --- a/src/mmoc/tests/system/gt_data/adr/adr.mo +++ b/src/mmoc/tests/system/gt_data/adr/adr.mo @@ -35,7 +35,7 @@ equation MMO_PartitionMethod=Metis, MMO_Output={u[750]}, MMO_OutputType=CI_Sampled, - Jacobian=Dense, + Jacobian=Sparse, MMO_BDF_Part={u[N/2:N]}, MMO_BDF_PDepth=1, MMO_BDF_Max_Step=0, diff --git a/src/mmoc/tests/system/gt_data/advection/advection.c b/src/mmoc/tests/system/gt_data/advection/advection.c index 87f20efb..5debc8b9 100644 --- a/src/mmoc/tests/system/gt_data/advection/advection.c +++ b/src/mmoc/tests/system/gt_data/advection/advection.c @@ -187,7 +187,7 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int _rg_d1; int i; int j; - _alpha = 0.5; + _alpha = 5.000000e-01; _mu = 1000; for(i = 1; i<=6666; i+=1) { _init_u(i,0) = 1; diff --git a/src/mmoc/tests/system/gt_data/advection_quoted/advection_quoted.c b/src/mmoc/tests/system/gt_data/advection_quoted/advection_quoted.c index 2c9555ec..c17e7deb 100644 --- a/src/mmoc/tests/system/gt_data/advection_quoted/advection_quoted.c +++ b/src/mmoc/tests/system/gt_data/advection_quoted/advection_quoted.c @@ -187,7 +187,7 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int _rg_d1; int i; int j; - _alpha = 0.5; + _alpha = 5.000000e-01; _mu = 1000; for(i = 1; i<=6666; i+=1) { _init_u_a(i,0) = 1; diff --git a/src/mmoc/tests/system/gt_data/airconds/airconds.c b/src/mmoc/tests/system/gt_data/airconds/airconds.c index 99573957..90609f58 100644 --- a/src/mmoc/tests/system/gt_data/airconds/airconds.c +++ b/src/mmoc/tests/system/gt_data/airconds/airconds.c @@ -43,7 +43,7 @@ void MOD_zeroCrossing(int idx, double *x, double *d, double *a, double t, double _get_event_1_idxs(idx); _apply_usage_event_1(_d1); if ((i >= 1 && i <= 20000)) { - _zc(0) = _th(i,0)-_tref(i)+_on(i)-0.5-(0); + _zc(0) = _th(i,0)-_tref(i)+_on(i)-5.000000e-01-(0); _zc(1) = (0)/1; _zc(2) = (0)/2; @@ -102,7 +102,7 @@ void MOD_handlerPos(int idx, double *x, double* q, double *d, double *a, double _get_event_2_idxs(idx); _apply_usage_event_2(_d1); if ((i >= 1 && i <= 20000)) { - _tref(i) = 20.5; + _tref(i) = 2.050000e+01; } return; } @@ -240,7 +240,7 @@ void QSS_initializeDataStructs(QSS_simulator simulator) for(i = 1; i<=20000; i+=1) { _init_th(i,0) = 4+18; _CAP(i) = 100+550; - _RES(i) = 0.4+1.8; + _RES(i) = 4.000000e-01+1.800000e+00; _POT(i) = 2+13; _pmax = _pmax+_POT(i); _nextSample(i) = 1; @@ -248,7 +248,7 @@ void QSS_initializeDataStructs(QSS_simulator simulator) _tref(i) = 20; } for(i = 1; i<=20000; i+=1) { - if(_init_th(i,0)-_tref(i)-0.5>0) { + if(_init_th(i,0)-_tref(i)-5.000000e-01>0) { _on(i) = 1; _ptotal = _ptotal+_POT(i); } else if(_init_th(i,0)-_tref(i)<0) { diff --git a/src/mmoc/tests/system/gt_data/aircont/aircont.c b/src/mmoc/tests/system/gt_data/aircont/aircont.c index 20c8615d..ca1e4d17 100644 --- a/src/mmoc/tests/system/gt_data/aircont/aircont.c +++ b/src/mmoc/tests/system/gt_data/aircont/aircont.c @@ -56,7 +56,7 @@ void MOD_zeroCrossing(int idx, double *x, double *d, double *a, double t, double _get_event_1_idxs(idx); _apply_usage_event_1(_d1); if ((i >= 1 && i <= 200)) { - _zc = _th(i)-_tref-_dtref+_on(i)-0.5-(0); + _zc = _th(i)-_tref-_dtref+_on(i)-5.000000e-01-(0); } @@ -70,11 +70,11 @@ void MOD_handlerPos(int idx, double *x, double *d, double *a, double t) int i; switch(idx) { case _eval_event_2: { - _pref = 0.4; + _pref = 4.000000e-01; return; } case _eval_event_3: { - _pref = 0.5; + _pref = 5.000000e-01; return; } case _eval_event_4: { @@ -182,17 +182,17 @@ void CLC_initializeDataStructs(CLC_simulator simulator) _nextSample = 1; _noise = 2-1; _pmax = 0; - _pref = 0.5; + _pref = 5.000000e-01; _tref = 20; for(i = 1; i<=200; i+=1) { _init_th(i) = 4+18; _CAP(i) = 100+550; - _RES(i) = 0.4+1.8; - _POT(i) = 0.2+13; + _RES(i) = 4.000000e-01+1.800000e+00; + _POT(i) = 2.000000e-01+13; _pmax = _pmax+_POT(i); } for(i = 1; i<=200; i+=1) { - if(_init_th(i)-_tref-0.5>0) { + if(_init_th(i)-_tref-5.000000e-01>0) { _on(i) = 1; _ptotal = _ptotal+_POT(i); } diff --git a/src/mmoc/tests/system/gt_data/bball_downstairs/bball_downstairs.c b/src/mmoc/tests/system/gt_data/bball_downstairs/bball_downstairs.c index d820fa8f..34519f4d 100644 --- a/src/mmoc/tests/system/gt_data/bball_downstairs/bball_downstairs.c +++ b/src/mmoc/tests/system/gt_data/bball_downstairs/bball_downstairs.c @@ -29,7 +29,7 @@ void MOD_definition(int idx, double *x, double *d, double *a, double t, double * return; } case _eval_vy(0): { - _der_vy(0) = -9.8-0.1*_vy(0)-_contact*((_y(0)-_stair)*1e+06+_vy(0)*30); + _der_vy(0) = -9.800000e+00-1.000000e-01*_vy(0)-_contact*((_y(0)-_stair)*1.000000e+06+_vy(0)*30); _der_vy(1) = (0)/2; _der_vy(2) = (0)/6; @@ -43,7 +43,7 @@ void MOD_definition(int idx, double *x, double *d, double *a, double t, double * return; } case _eval_vx(0): { - _der_vx(0) = -0.1*_vx(0); + _der_vx(0) = -1.000000e-01*_vx(0); _der_vx(1) = (0)/2; _der_vx(2) = (0)/6; @@ -182,7 +182,7 @@ void MOD_dependencies(int idx, double *x, double *d, double *a, double t, double _eval_dep_x(1) = _vx(0); _eval_dep_x(2) = (0)/2; _eval_dep_x(3) = (0)/6; - _eval_dep_vx(1) = -0.1*_vx(0); + _eval_dep_vx(1) = -1.000000e-01*_vx(0); _eval_dep_vx(2) = (0)/2; _eval_dep_vx(3) = (0)/6; break; @@ -191,13 +191,13 @@ void MOD_dependencies(int idx, double *x, double *d, double *a, double t, double _eval_dep_y(1) = _vy(0); _eval_dep_y(2) = (0)/2; _eval_dep_y(3) = (0)/6; - _eval_dep_vy(1) = -9.8-0.1*_vy(0)-_contact*((_y(0)-_stair)*1e+06+_vy(0)*30); + _eval_dep_vy(1) = -9.800000e+00-1.000000e-01*_vy(0)-_contact*((_y(0)-_stair)*1.000000e+06+_vy(0)*30); _eval_dep_vy(2) = (0)/2; _eval_dep_vy(3) = (0)/6; break; } case _eval_y(0): { - _eval_dep_vy(1) = -9.8-0.1*_vy(0)-_contact*((_y(0)-_stair)*1e+06+_vy(0)*30); + _eval_dep_vy(1) = -9.800000e+00-1.000000e-01*_vy(0)-_contact*((_y(0)-_stair)*1.000000e+06+_vy(0)*30); _eval_dep_vy(2) = (0)/2; _eval_dep_vy(3) = (0)/6; break; @@ -219,7 +219,7 @@ void MOD_BDF_definition(double *x, double *d, double *a, double t, double *dx, i continue; } case _eval_vy(0): { - _eval_dep_vy(1) = -9.8-0.1*_vy(0)-_contact*((_y(0)-_stair)*1e+06+_vy(0)*30); + _eval_dep_vy(1) = -9.800000e+00-1.000000e-01*_vy(0)-_contact*((_y(0)-_stair)*1.000000e+06+_vy(0)*30); continue; @@ -231,7 +231,7 @@ void MOD_BDF_definition(double *x, double *d, double *a, double t, double *dx, i continue; } case _eval_vx(0): { - _eval_dep_vx(1) = -0.1*_vx(0); + _eval_dep_vx(1) = -1.000000e-01*_vx(0); continue; @@ -252,9 +252,9 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int row, eq_var, c_row; int x_ind; _stair = 10; - _init_vx(0) = 0.5; - _init_x(0) = 0.575; - _init_y(0) = 10.5; + _init_vx(0) = 5.000000e-01; + _init_x(0) = 5.750000e-01; + _init_y(0) = 1.050000e+01; modelData->nSD[_idx_vx(0)]++; modelData->nSD[_idx_vx(0)]++; modelData->nSD[_idx_vy(0)]++; diff --git a/src/mmoc/tests/system/gt_data/boost/boost.c b/src/mmoc/tests/system/gt_data/boost/boost.c index 07f1c25c..984cc967 100644 --- a/src/mmoc/tests/system/gt_data/boost/boost.c +++ b/src/mmoc/tests/system/gt_data/boost/boost.c @@ -60,7 +60,7 @@ void MOD_zeroCrossing(int idx, double *x, double *d, double *a, double t, double _iD(1) = 0; _s(0) = _diodeon*_iD(0)+(1-_diodeon)*_iD(0)*_Rd; _s(1) = 0; - _zc(0) = _s(0)-(0.6); + _zc(0) = _s(0)-(6.000000e-01); _zc(1) = (0)/1; return; @@ -256,15 +256,15 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int* outputs = (int*) malloc(2*sizeof(int)); int row, eq_var, c_row; int x_ind; - _C = 0.0001; - _DC = 0.5; - _L = 0.0001; + _C = 1.000000e-04; + _DC = 5.000000e-01; + _L = 1.000000e-04; _R = 10; - _ROff = 100000; - _ROn = 1e-05; - _Rd = 100000; - _Rs = 1e-05; - _T = 0.0001; + _ROff = 1.000000e+05; + _ROn = 1.000000e-05; + _Rd = 1.000000e+05; + _Rs = 1.000000e-05; + _T = 1.000000e-04; _U = 24; _nextT = _T; modelData->nSD[_idx_iL(0)]++; diff --git a/src/mmoc/tests/system/gt_data/buck/buck.c b/src/mmoc/tests/system/gt_data/buck/buck.c index 810dcd1d..befe4915 100644 --- a/src/mmoc/tests/system/gt_data/buck/buck.c +++ b/src/mmoc/tests/system/gt_data/buck/buck.c @@ -226,15 +226,15 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int* outputs = (int*) malloc(2*sizeof(int)); int row, eq_var, c_row; int x_ind; - _C = 0.0001; - _DC = 0.5; - _L = 0.0001; + _C = 1.000000e-04; + _DC = 5.000000e-01; + _L = 1.000000e-04; _R = 10; - _ROff = 100000; - _ROn = 1e-05; - _Rd = 100000; - _Rs = 1e-05; - _T = 0.0001; + _ROff = 1.000000e+05; + _ROn = 1.000000e-05; + _Rd = 1.000000e+05; + _Rs = 1.000000e-05; + _T = 1.000000e-04; _U = 24; _nextT = _T; modelData->nSD[_idx_iL(0)]++; diff --git a/src/mmoc/tests/system/gt_data/buck_circuit/buck_circuit.c b/src/mmoc/tests/system/gt_data/buck_circuit/buck_circuit.c index 9b8ad9f2..d17802c7 100644 --- a/src/mmoc/tests/system/gt_data/buck_circuit/buck_circuit.c +++ b/src/mmoc/tests/system/gt_data/buck_circuit/buck_circuit.c @@ -201,19 +201,19 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int* outputs = (int*) malloc(2*sizeof(int)); int row, eq_var, c_row; int x_ind; - _C = 0.0001; - _DC = 0.5; - _L = 0.0001; + _C = 1.000000e-04; + _DC = 5.000000e-01; + _L = 1.000000e-04; _R = 10; - _ROff = 100000; - _ROn = 1e-05; - _T = 0.0001; + _ROff = 1.000000e+05; + _ROn = 1.000000e-05; + _T = 1.000000e-04; _U = 24; _nextT = _T; _lastT = 0; _init_uC(0) = 0; - _Rs = 100000; - _Rd = 100000; + _Rs = 1.000000e+05; + _Rd = 1.000000e+05; _init_iL(0) = 0; modelData->nSD[_idx_iL(0)]++; modelData->nSD[_idx_iL(0)]++; diff --git a/src/mmoc/tests/system/gt_data/buck_term/buck_term.c b/src/mmoc/tests/system/gt_data/buck_term/buck_term.c index 55f43a22..8d558c24 100644 --- a/src/mmoc/tests/system/gt_data/buck_term/buck_term.c +++ b/src/mmoc/tests/system/gt_data/buck_term/buck_term.c @@ -40,7 +40,7 @@ void MOD_definition(int idx, double *x, double *d, double *a, double t, double * case _eval_u(1,0): { _pS(0) = (_on+_off); _pS(1) = 0; - _der_u(1,0) = _sigma*(_pS(0)*_c+298-2*_u(1,0)+_u(2,0))/(_l*_l/100/100); + _der_u(1,0) = _sigma*(_pS(0)*_c+298-2*_u(1,0)+_u(2,0))/(double)(_l*_l/100/100); _der_u(1,1) = (0)/2; return; @@ -74,7 +74,7 @@ void MOD_zeroCrossing(int idx, double *x, double *d, double *a, double t, double return; } case _eval_event_2: { - _zc(0) = _time-_lastT-0.013*_Ts-(0); + _zc(0) = _time-_lastT-1.300000e-02*_Ts-(0); _zc(1) = (0)/1; return; @@ -86,7 +86,7 @@ void MOD_zeroCrossing(int idx, double *x, double *d, double *a, double t, double return; } case _eval_event_4: { - _zc(0) = _time-_lastT-_DC*_Ts-0.055*_Ts-(0); + _zc(0) = _time-_lastT-_DC*_Ts-5.500000e-02*_Ts-(0); _zc(1) = (0)/1; return; @@ -111,7 +111,7 @@ void MOD_handlerPos(int idx, double *x, double* q, double *d, double *a, double _lastT = _nextT; _nextT = _nextT+_Ts; _Rs = _ROn; - _on = 100; + _on = 1.000000e+02; return; } case _eval_event_2: { @@ -120,7 +120,7 @@ void MOD_handlerPos(int idx, double *x, double* q, double *d, double *a, double } case _eval_event_3: { _Rs = _ROff; - _off = 100; + _off = 1.000000e+02; return; } case _eval_event_4: { @@ -303,7 +303,7 @@ void MOD_dependencies(int idx, double *x, double *d, double *a, double t, double case _eval_u(1,0): { _pS(0) = (_on+_off); _pS(1) = 0; - _eval_dep_u(1,1) = _sigma*(_pS(0)*_c+298-2*_u(1,0)+_u(2,0))/(_l*_l/100/100); + _eval_dep_u(1,1) = _sigma*(_pS(0)*_c+298-2*_u(1,0)+_u(2,0))/(double)(_l*_l/100/100); _eval_dep_u(1,2) = (0)/2; break; } @@ -315,7 +315,7 @@ void MOD_dependencies(int idx, double *x, double *d, double *a, double t, double case _eval_u(2,0): { _pS(0) = (_on+_off); _pS(1) = 0; - _eval_dep_u(1,1) = _sigma*(_pS(0)*_c+298-2*_u(1,0)+_u(2,0))/(_l*_l/100/100); + _eval_dep_u(1,1) = _sigma*(_pS(0)*_c+298-2*_u(1,0)+_u(2,0))/(double)(_l*_l/100/100); _eval_dep_u(1,2) = (0)/2; break; } @@ -386,7 +386,7 @@ void MOD_BDF_definition(double *x, double *d, double *a, double t, double *dx, i case _eval_u(1,0): { _pS(0) = (_on+_off); - _eval_dep_u(1,1) = _sigma*(_pS(0)*_c+298-2*_u(1,0)+_u(2,0))/(_l*_l/100/100); + _eval_dep_u(1,1) = _sigma*(_pS(0)*_c+298-2*_u(1,0)+_u(2,0))/(double)(_l*_l/100/100); continue; @@ -425,28 +425,28 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int _d1; int _rg_d1; int i; - _C = 0.0001; - _DC = 0.5; - _L = 0.0001; + _C = 1.000000e-04; + _DC = 5.000000e-01; + _L = 1.000000e-04; _R0 = 10; - _ROff = 10000; - _ROn = 0.0001; - _Rd = 100000; - _Rs = 1e-05; - _Ts = 0.0001; + _ROff = 1.000000e+04; + _ROn = 1.000000e-04; + _Rd = 1.000000e+05; + _Rs = 1.000000e-05; + _Ts = 1.000000e-04; _U = 24; - _c = 7.5; - _l = 0.025; + _c = 7.500000e+00; + _l = 2.500000e-02; _nextT = _Ts; _off = 0; _on = 1; - _sigma = 8.61e-06; - _toff = 5.5e-06; - _ton = 1.3e-06; + _sigma = 8.610000e-06; + _toff = 5.500000e-06; + _ton = 1.300000e-06; for(_d1 = 1; _d1<=100; _d1+=1) { _init_u(_d1,0) = 298; } - _vc0 = 0.2; + _vc0 = 2.000000e-01; modelData->nSD[_idx_iL(0)]++; modelData->nSD[_idx_iL(0)]++; modelData->nSD[_idx_u(1,0)]++; diff --git a/src/mmoc/tests/system/gt_data/buckboost/buckboost.c b/src/mmoc/tests/system/gt_data/buckboost/buckboost.c index 761a8a31..0ad5355f 100644 --- a/src/mmoc/tests/system/gt_data/buckboost/buckboost.c +++ b/src/mmoc/tests/system/gt_data/buckboost/buckboost.c @@ -246,15 +246,15 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int* outputs = (int*) malloc(2*sizeof(int)); int row, eq_var, c_row; int x_ind; - _C = 0.0001; - _DC = 0.25; - _L = 0.0001; + _C = 1.000000e-04; + _DC = 2.500000e-01; + _L = 1.000000e-04; _R = 10; - _ROff = 100000; - _ROn = 1e-05; - _Rd = 100000; - _Rs = 1e-05; - _T = 0.0001; + _ROff = 1.000000e+05; + _ROn = 1.000000e-05; + _Rd = 1.000000e+05; + _Rs = 1.000000e-05; + _T = 1.000000e-04; _U = 24; _nextT = _T; modelData->nSD[_idx_iL(0)]++; diff --git a/src/mmoc/tests/system/gt_data/cuk/cuk.c b/src/mmoc/tests/system/gt_data/cuk/cuk.c index 4fb637c5..eba687da 100644 --- a/src/mmoc/tests/system/gt_data/cuk/cuk.c +++ b/src/mmoc/tests/system/gt_data/cuk/cuk.c @@ -370,17 +370,17 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int* outputs = (int*) malloc(4*sizeof(int)); int row, eq_var, c_row; int x_ind; - _C = 0.0001; - _C1 = 0.0001; - _DC = 0.25; - _L = 0.0001; - _L1 = 0.0001; + _C = 1.000000e-04; + _C1 = 1.000000e-04; + _DC = 2.500000e-01; + _L = 1.000000e-04; + _L1 = 1.000000e-04; _R = 10; - _ROff = 100000; - _ROn = 1e-05; - _Rd = 100000; - _Rs = 1e-05; - _T = 0.0001; + _ROff = 1.000000e+05; + _ROn = 1.000000e-05; + _Rd = 1.000000e+05; + _Rs = 1.000000e-05; + _T = 1.000000e-04; _U = 24; _nextT = _T; modelData->nSD[_idx_iL(0)]++; diff --git a/src/mmoc/tests/system/gt_data/cuk2/cuk2.c b/src/mmoc/tests/system/gt_data/cuk2/cuk2.c index a26d5bbc..3c0c1a08 100644 --- a/src/mmoc/tests/system/gt_data/cuk2/cuk2.c +++ b/src/mmoc/tests/system/gt_data/cuk2/cuk2.c @@ -389,17 +389,17 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int* outputs = (int*) malloc(4*sizeof(int)); int row, eq_var, c_row; int x_ind; - _C = 0.0001; - _C1 = 0.0001; - _DC = 0.25; - _L = 0.0001; - _L1 = 0.0001; + _C = 1.000000e-04; + _C1 = 1.000000e-04; + _DC = 2.500000e-01; + _L = 1.000000e-04; + _L1 = 1.000000e-04; _R = 10; - _ROff = 100000; - _ROn = 1e-05; - _Rd = 100000; - _Rs = 1e-05; - _T = 0.0001; + _ROff = 1.000000e+05; + _ROn = 1.000000e-05; + _Rd = 1.000000e+05; + _Rs = 1.000000e-05; + _T = 1.000000e-04; _U = 24; _nextT = _T; modelData->nSD[_idx_iL(0)]++; diff --git a/src/mmoc/tests/system/gt_data/interleaved/interleaved.c b/src/mmoc/tests/system/gt_data/interleaved/interleaved.c index 504cc5a1..4c0d01f1 100644 --- a/src/mmoc/tests/system/gt_data/interleaved/interleaved.c +++ b/src/mmoc/tests/system/gt_data/interleaved/interleaved.c @@ -69,7 +69,7 @@ void MOD_zeroCrossing(int idx, double *x, double *d, double *a, double t, double _get_event_2_idxs(idx); _apply_usage_event_2(_d1); if ((i >= 1 && i <= 4)) { - _zc(0) = _time-_lastT-_T*(i-1)/4-0.01*_T-(0); + _zc(0) = _time-_lastT-_T*(i-1)/4-1.000000e-02*_T-(0); _zc(1) = (0)/1; } @@ -79,7 +79,7 @@ void MOD_zeroCrossing(int idx, double *x, double *d, double *a, double t, double _get_event_3_idxs(idx); _apply_usage_event_3(_d1); if ((i >= 1 && i <= 4)) { - _zc(0) = _time-_lastT-_T*(i-1)/4-_DC*_T/4-0.01*_T-(0); + _zc(0) = _time-_lastT-_T*(i-1)/4-_DC*_T/4-1.000000e-02*_T-(0); _zc(1) = (0)/1; } @@ -388,21 +388,21 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int _d1; int _rg_d1; int i; - _C = 0.0001; - _DC = 0.5; - _L = 0.0001; + _C = 1.000000e-04; + _DC = 5.000000e-01; + _L = 1.000000e-04; _R = 10; - _ROff = 100000; - _ROn = 1e-05; + _ROff = 1.000000e+05; + _ROn = 1.000000e-05; for(_d1 = 1; _d1<=4; _d1+=1) { - _Rd(_d1) = 100000; + _Rd(_d1) = 1.000000e+05; } for(_d1 = 1; _d1<=4; _d1+=1) { - _Rs(_d1) = 100000; + _Rs(_d1) = 1.000000e+05; } - _T = 0.0001; + _T = 1.000000e-04; _U = 24; - _nextT = 1e-08; + _nextT = 1.000000e-08; modelData->nSD[_idx_iL(4,0)]++; modelData->nSD[_idx_uC(0)]++; for(_d1 = 1; _d1<=4; _d1+=1) { diff --git a/src/mmoc/tests/system/gt_data/inverters/inverters.c b/src/mmoc/tests/system/gt_data/inverters/inverters.c index e35db840..a8202544 100644 --- a/src/mmoc/tests/system/gt_data/inverters/inverters.c +++ b/src/mmoc/tests/system/gt_data/inverters/inverters.c @@ -89,11 +89,11 @@ void MOD_handlerPos(int idx, double *x, double* q, double *d, double *a, double _uslope = 0; _nextchange = 15; }else if(_nextchange==15) { - _uslope = -2.5; + _uslope = -2.500000e+00; _nextchange = 17; }else { _uslope = 0; - _nextchange = 1e+10; + _nextchange = 1.000000e+10; } return; } @@ -271,7 +271,7 @@ void QSS_initializeDataStructs(QSS_simulator simulator) _nextchange = 5; for(i = 1; i<=250; i+=1) { _init_x(2*i,0) = 5; - _init_x(2*i+1,0) = 0.006247; + _init_x(2*i+1,0) = 6.247000e-03; } for(i = 1; i<=501; i+=1) { if(_init_x(i,0)>_UTH) { diff --git a/src/mmoc/tests/system/gt_data/lotka_volterra/lotka_volterra.c b/src/mmoc/tests/system/gt_data/lotka_volterra/lotka_volterra.c index 10aed0cf..2344db91 100644 --- a/src/mmoc/tests/system/gt_data/lotka_volterra/lotka_volterra.c +++ b/src/mmoc/tests/system/gt_data/lotka_volterra/lotka_volterra.c @@ -22,14 +22,14 @@ void MOD_definition(int idx, double *x, double *d, double *a, double t, double * { switch(idx) { case _eval_x(1,0): { - _der_x(1,0) = 0.1*_x(1,0)-0.1*_x(1,0)*_x(2,0); + _der_x(1,0) = 1.000000e-01*_x(1,0)-1.000000e-01*_x(1,0)*_x(2,0); _der_x(1,1) = (0)/2; _der_x(1,2) = (0)/6; return; } case _eval_x(2,0): { - _der_x(2,0) = 0.1*_x(1,0)*_x(2,0)-0.1*_x(2,0); + _der_x(2,0) = 1.000000e-01*_x(1,0)*_x(2,0)-1.000000e-01*_x(2,0); _der_x(2,1) = (0)/2; _der_x(2,2) = (0)/6; @@ -112,19 +112,19 @@ void MOD_dependencies(int idx, double *x, double *d, double *a, double t, double { switch(idx) { case _eval_x(1,0): { - _eval_dep_x(1,1) = 0.1*_x(1,0)-0.1*_x(1,0)*_x(2,0); + _eval_dep_x(1,1) = 1.000000e-01*_x(1,0)-1.000000e-01*_x(1,0)*_x(2,0); _eval_dep_x(1,2) = (0)/2; _eval_dep_x(1,3) = (0)/6; - _eval_dep_x(2,1) = 0.1*_x(1,0)*_x(2,0)-0.1*_x(2,0); + _eval_dep_x(2,1) = 1.000000e-01*_x(1,0)*_x(2,0)-1.000000e-01*_x(2,0); _eval_dep_x(2,2) = (0)/2; _eval_dep_x(2,3) = (0)/6; break; } case _eval_x(2,0): { - _eval_dep_x(1,1) = 0.1*_x(1,0)-0.1*_x(1,0)*_x(2,0); + _eval_dep_x(1,1) = 1.000000e-01*_x(1,0)-1.000000e-01*_x(1,0)*_x(2,0); _eval_dep_x(1,2) = (0)/2; _eval_dep_x(1,3) = (0)/6; - _eval_dep_x(2,1) = 0.1*_x(1,0)*_x(2,0)-0.1*_x(2,0); + _eval_dep_x(2,1) = 1.000000e-01*_x(1,0)*_x(2,0)-1.000000e-01*_x(2,0); _eval_dep_x(2,2) = (0)/2; _eval_dep_x(2,3) = (0)/6; break; @@ -140,13 +140,13 @@ void MOD_BDF_definition(double *x, double *d, double *a, double t, double *dx, i idx = BDFMap[__bdf_it]; switch(idx) { case _eval_x(1,0): { - _eval_dep_x(1,1) = 0.1*_x(1,0)-0.1*_x(1,0)*_x(2,0); + _eval_dep_x(1,1) = 1.000000e-01*_x(1,0)-1.000000e-01*_x(1,0)*_x(2,0); continue; } case _eval_x(2,0): { - _eval_dep_x(2,1) = 0.1*_x(1,0)*_x(2,0)-0.1*_x(2,0); + _eval_dep_x(2,1) = 1.000000e-01*_x(1,0)*_x(2,0)-1.000000e-01*_x(2,0); continue; @@ -165,8 +165,8 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int row, eq_var, c_row; int x_ind; int _d1; - _init_x(1,0) = 0.5; - _init_x(2,0) = 0.5; + _init_x(1,0) = 5.000000e-01; + _init_x(2,0) = 5.000000e-01; modelData->nSD[_idx_x(1,0)]++; modelData->nSD[_idx_x(1,0)]++; modelData->nSD[_idx_x(2,0)]++; diff --git a/src/mmoc/tests/system/gt_data/par_airconds/par_airconds.c b/src/mmoc/tests/system/gt_data/par_airconds/par_airconds.c index ae1bc9fd..5b4515bd 100644 --- a/src/mmoc/tests/system/gt_data/par_airconds/par_airconds.c +++ b/src/mmoc/tests/system/gt_data/par_airconds/par_airconds.c @@ -43,7 +43,7 @@ void MOD_zeroCrossing(int idx, double *x, double *d, double *a, double t, double _get_event_1_idxs(idx); _apply_usage_event_1(_d1); if ((i >= 1 && i <= 4000)) { - _zc(0) = _th(i,0)-_tref(i)+_on(i)-0.5-(0); + _zc(0) = _th(i,0)-_tref(i)+_on(i)-5.000000e-01-(0); _zc(1) = (0)/1; } @@ -88,7 +88,7 @@ void MOD_handlerPos(int idx, double *x, double* q, double *d, double *a, double _apply_usage_event_2(_d1); if ((i >= 1 && i <= 4000)) { if((_nextTref(i)==1000)) { - _tref(i) = 20.5; + _tref(i) = 2.050000e+01; }else { _tref(i) = 20; } @@ -218,7 +218,7 @@ void QSS_initializeDataStructs(QSS_simulator simulator) for(i = 1; i<=4000; i+=1) { _init_th(i,0) = __math__rand(4)+18; _CAP(i) = __math__rand(100)+550; - _RES(i) = __math__rand(0.4)+1.8; + _RES(i) = __math__rand(4.000000e-01)+1.800000e+00; _POT(i) = __math__rand(2)+13; _pmax = _pmax+_POT(i); _nextSample(i) = 1; @@ -227,7 +227,7 @@ void QSS_initializeDataStructs(QSS_simulator simulator) _nextTref(i) = 1000; } for(i = 1; i<=4000; i+=1) { - if(_init_th(i,0)-_tref(i)-0.5>0) { + if(_init_th(i,0)-_tref(i)-5.000000e-01>0) { _on(i) = 1; } } diff --git a/src/mmoc/tests/system/gt_data/par_airconds_cont/par_airconds_cont.c b/src/mmoc/tests/system/gt_data/par_airconds_cont/par_airconds_cont.c index abf76529..cf00c7f5 100644 --- a/src/mmoc/tests/system/gt_data/par_airconds_cont/par_airconds_cont.c +++ b/src/mmoc/tests/system/gt_data/par_airconds_cont/par_airconds_cont.c @@ -95,7 +95,7 @@ void MOD_zeroCrossing(int idx, double *x, double *d, double *a, double t, double _get_event_2_idxs(idx); _apply_usage_event_2(_d1); if ((i >= 1 && i <= 4)) { - _zc(0) = _update(i)-(0.5); + _zc(0) = _update(i)-(5.000000e-01); _zc(1) = (0)/1; _zc(2) = (0)/2; @@ -106,7 +106,7 @@ void MOD_zeroCrossing(int idx, double *x, double *d, double *a, double t, double _get_event_6_idxs(idx); _apply_usage_event_6(_d1); if ((i >= 1 && i <= 4000)) { - _zc(0) = _th(i,0)-_tref-_dtref+_on(i)-0.5-(0); + _zc(0) = _th(i,0)-_tref-_dtref+_on(i)-5.000000e-01-(0); _zc(1) = (0)/1; _zc(2) = (0)/2; @@ -132,11 +132,11 @@ void MOD_handlerPos(int idx, double *x, double* q, double *d, double *a, double int i; switch(idx) { case _eval_event_3: { - _pref = 0.4; + _pref = 4.000000e-01; return; } case _eval_event_4: { - _pref = 0.5; + _pref = 5.000000e-01; return; } case _eval_event_5: { @@ -339,24 +339,24 @@ void QSS_initializeDataStructs(QSS_simulator simulator) _partSample(_d1) = 1; } _pmax = 0; - _pref = 0.5; + _pref = 5.000000e-01; _tref = 20; for(i = 1; i<=4000; i+=1) { _init_th(i,0) = __math__random(4)+18; _CAP(i) = __math__random(100)+550; - _RES(i) = __math__random(0.4)+1.8; - _POT(i) = __math__random(0.2)+13; + _RES(i) = __math__random(4.000000e-01)+1.800000e+00; + _POT(i) = __math__random(2.000000e-01)+13; _pmax = _pmax+_POT(i); _noise(i) = 2*pow(sin(i),2); _sampleNoise(i) = __math__random(2); _sections(i) = __getSection(i); } for(i = 1; i<=4; i+=1) { - _sections_init(i) = (i-1)*4000/4; - _sections_end(i) = i*4000/4; + _sections_init(i) = (i-1)*4000/(double)4; + _sections_end(i) = i*4000/(double)4; } for(i = 1; i<=4000; i+=1) { - if(_init_th(i,0)-_tref-0.5>0) { + if(_init_th(i,0)-_tref-5.000000e-01>0) { _on(i) = 1; _init_ptotal(0) = _init_ptotal(0)+_POT(i); } diff --git a/src/mmoc/tests/system/gt_data/rectifier/rectifier.c b/src/mmoc/tests/system/gt_data/rectifier/rectifier.c index 712333c7..b9958d23 100644 --- a/src/mmoc/tests/system/gt_data/rectifier/rectifier.c +++ b/src/mmoc/tests/system/gt_data/rectifier/rectifier.c @@ -181,13 +181,13 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int* outputs = (int*) malloc(2*sizeof(int)); int row, eq_var, c_row; int x_ind; - _L = 0.001; + _L = 1.000000e-03; _R = 10; - _Rd = 100000; - _Roff = 100000; - _Ron = 1e-05; + _Rd = 1.000000e+05; + _Roff = 1.000000e+05; + _Ron = 1.000000e-05; _U = 311; - _w = 314.16; + _w = 3.141600e+02; modelData->nSD[_idx_iL(0)]++; modelData->nSD[_idx_u(0)]++; modelData->nSD[_idx_u(0)]++; diff --git a/src/mmoc/tests/system/gt_data/spikings/spikings.c b/src/mmoc/tests/system/gt_data/spikings/spikings.c index e15bea3e..e7c9380a 100644 --- a/src/mmoc/tests/system/gt_data/spikings/spikings.c +++ b/src/mmoc/tests/system/gt_data/spikings/spikings.c @@ -26,7 +26,7 @@ void MOD_definition(int idx, double *x, double *d, double *a, double t, double * _get_v_idxs(idx); _apply_usage_eq_1(_d1); if ((i >= 1 && i <= 1000)) { - _der_v(i,0) = 0.04*_v(i,0)*_v(i,0)+5*_v(i,0)+140-_u(i,0)+_I(i); + _der_v(i,0) = 4.000000e-02*_v(i,0)*_v(i,0)+5*_v(i,0)+140-_u(i,0)+_I(i); _der_v(i,1) = (0)/2; _der_v(i,2) = (0)/6; @@ -168,7 +168,7 @@ void MOD_dependencies(int idx, double *x, double *d, double *a, double t, double _get_u_idxs(idx); _apply_usage_eq_1(_d1); if ((i >= 1 && i <= 1000)) { - _eval_dep_v(i,1) = 0.04*_v(i,0)*_v(i,0)+5*_v(i,0)+140-_u(i,0)+_I(i); + _eval_dep_v(i,1) = 4.000000e-02*_v(i,0)*_v(i,0)+5*_v(i,0)+140-_u(i,0)+_I(i); _eval_dep_v(i,2) = (0)/2; _eval_dep_v(i,3) = (0)/6; } @@ -186,7 +186,7 @@ void MOD_dependencies(int idx, double *x, double *d, double *a, double t, double _get_v_idxs(idx); _apply_usage_eq_1(_d1); if ((i >= 1 && i <= 1000)) { - _eval_dep_v(i,1) = 0.04*_v(i,0)*_v(i,0)+5*_v(i,0)+140-_u(i,0)+_I(i); + _eval_dep_v(i,1) = 4.000000e-02*_v(i,0)*_v(i,0)+5*_v(i,0)+140-_u(i,0)+_I(i); _eval_dep_v(i,2) = (0)/2; _eval_dep_v(i,3) = (0)/6; } @@ -214,7 +214,7 @@ void MOD_BDF_definition(double *x, double *d, double *a, double t, double *dx, i _get_v_idxs(idx); _apply_usage_eq_1(_d1); if ((i >= 1 && i <= 1000)) { - _eval_dep_v(i,1) = 0.04*_v(i,0)*_v(i,0)+5*_v(i,0)+140-_u(i,0)+_I(i); + _eval_dep_v(i,1) = 4.000000e-02*_v(i,0)*_v(i,0)+5*_v(i,0)+140-_u(i,0)+_I(i); } @@ -246,8 +246,8 @@ void QSS_initializeDataStructs(QSS_simulator simulator) int _d1; int _rg_d1; int i; - _a = 0.02; - _b = 0.2; + _a = 2.000000e-02; + _b = 2.000000e-01; for(i = 1; i<=1000; i+=1) { _init_v(i,0) = -60; _init_u(i,0) = 0; diff --git a/src/mmoc/util/visitors/expression_printer.cpp b/src/mmoc/util/visitors/expression_printer.cpp index c8fa648a..2e83a19e 100644 --- a/src/mmoc/util/visitors/expression_printer.cpp +++ b/src/mmoc/util/visitors/expression_printer.cpp @@ -19,6 +19,7 @@ #include "expression_printer.h" +#include #include #include @@ -27,6 +28,7 @@ #include #include #include +#include namespace MicroModelica { using namespace IR; @@ -118,7 +120,7 @@ string ExpressionPrinter::foldTraverseElement(AST_Expression exp) break; } case EXPREAL: - buffer << exp->getAsReal()->val(); + buffer << std::scientific << exp->getAsReal()->val(); break; case EXPSTRING: buffer << exp->getAsString()->str(); @@ -163,9 +165,10 @@ string ExpressionPrinter::foldTraverseElement(string l, string r, BinOpType bot) case BINOPSUB: buffer << l << "-" << r; break; - case BINOPDIV: - buffer << l << "/" << r; - break; + case BINOPDIV: { + IsConstantExpression constant_exp(true, true); + buffer << l << "/" << ((constant_exp.apply(_right)) ? "(double)" : "") << r; + } break; case BINOPMULT: buffer << l << "*" << r; break; diff --git a/src/mmoc/util/visitors/is_constant_expression.cpp b/src/mmoc/util/visitors/is_constant_expression.cpp index 6344a705..4b30d443 100644 --- a/src/mmoc/util/visitors/is_constant_expression.cpp +++ b/src/mmoc/util/visitors/is_constant_expression.cpp @@ -27,9 +27,12 @@ namespace MicroModelica { using namespace IR; namespace Util { -IsConstantExpression::IsConstantExpression() : _in_index_list(false), _eval_int(false) {} +IsConstantExpression::IsConstantExpression() : _in_index_list(false), _eval_int(false), _integer_valued(false) {} -IsConstantExpression::IsConstantExpression(bool eval_int) : _in_index_list(false), _eval_int(eval_int) {} +IsConstantExpression::IsConstantExpression(bool eval_int, bool integer_valued) + : _in_index_list(false), _eval_int(eval_int), _integer_valued(integer_valued) +{ +} bool IsConstantExpression::foldTraverseElement(AST_Expression exp) { @@ -44,7 +47,9 @@ bool IsConstantExpression::foldTraverseElement(AST_Expression exp) cr->name().c_str()); break; } - if (!var->isConstant() && !var->isParameter() && (var->name() != "_chain_rule")) { + if (_integer_valued) { + ret = var->isConstant(); + } else if (!var->isConstant() && !var->isParameter() && (var->name() != "_chain_rule")) { ret = false; } break; @@ -55,6 +60,12 @@ bool IsConstantExpression::foldTraverseElement(AST_Expression exp) } break; } + case EXPREAL: { + if (_integer_valued) { + ret = false; + } + break; + } case EXPOUTPUT: { AST_Expression_Output out = exp->getAsOutput(); AST_ExpressionListIterator it; diff --git a/src/mmoc/util/visitors/is_constant_expression.h b/src/mmoc/util/visitors/is_constant_expression.h index 54453170..fe8eb78b 100644 --- a/src/mmoc/util/visitors/is_constant_expression.h +++ b/src/mmoc/util/visitors/is_constant_expression.h @@ -17,7 +17,7 @@ ******************************************************************************/ -#pragma once +#pragma once #include #include @@ -27,7 +27,7 @@ namespace Util { class IsConstantExpression : public AST_Expression_Visitor { public: IsConstantExpression(); - IsConstantExpression(bool eval_int); + IsConstantExpression(bool eval_int, bool integer_valued = false); ~IsConstantExpression() = default; private: @@ -36,6 +36,7 @@ class IsConstantExpression : public AST_Expression_Visitor { inline bool foldTraverseElement(bool l, bool r, BinOpType bot) { return l && r; } bool _in_index_list; bool _eval_int; + bool _integer_valued; }; } // namespace Util