@@ -88,69 +88,66 @@ std::map<exprt, int> map_representation_of_sum(const exprt &f)
88
88
return elems;
89
89
}
90
90
91
- exprt
92
- sum_over_map (std::map<exprt, int > &m, const typet &type, bool negated)
91
+ exprt sum_over_map (std::map<exprt, int > &m, const typet &type, bool negated)
93
92
{
94
- exprt sum = nil_exprt ();
95
- mp_integer constants = 0 ;
96
- typet index_type;
97
93
if (m.empty ())
98
94
return from_integer (0 , type);
99
- else
100
- index_type = m.begin ()->first .type ();
95
+
96
+ exprt sum = nil_exprt ();
97
+ mp_integer constants = 0 ;
98
+ typet index_type = m.begin ()->first .type ();
101
99
102
100
for (const auto &term : m)
103
101
{
104
- // We should group constants together...
105
102
const exprt &t = term.first ;
106
- int second = negated ? (-term.second ) : term.second ;
103
+ int factor = negated ? (-term.second ) : term.second ;
107
104
if (t.id () == ID_constant)
108
105
{
106
+ // Constants are accumulated in the variable \c constants
109
107
const auto int_value = numeric_cast_v<mp_integer>(to_constant_expr (t));
110
- constants += int_value * second ;
108
+ constants += int_value * factor ;
111
109
}
112
110
else
113
111
{
114
- switch (second )
112
+ switch (factor )
115
113
{
116
- case -1 :
117
- if (sum.is_nil ())
118
- sum = unary_minus_exprt (t);
119
- else
120
- sum = minus_exprt (sum, t);
121
- break ;
114
+ case -1 :
115
+ if (sum.is_nil ())
116
+ sum = unary_minus_exprt (t);
117
+ else
118
+ sum = minus_exprt (sum, t);
119
+ break ;
120
+
121
+ case 1 :
122
+ if (sum.is_nil ())
123
+ sum = t;
124
+ else
125
+ sum = plus_exprt (sum, t);
126
+ break ;
122
127
123
- case 1 :
128
+ default :
129
+ if (factor > 1 )
130
+ {
124
131
if (sum.is_nil ())
125
132
sum = t;
126
133
else
127
- sum = plus_exprt (sum, t);
128
- break ;
129
-
130
- default :
131
- if (second > 1 )
132
- {
133
- if (sum.is_nil ())
134
- sum = t;
135
- else
136
- plus_exprt (sum, t);
137
- for (int i = 1 ; i < second; i++)
138
- sum = plus_exprt (sum, t);
139
- }
140
- else if (second < -1 )
141
- {
142
- if (sum.is_nil ())
143
- sum = unary_minus_exprt (t);
144
- else
145
- sum = minus_exprt (sum, t);
146
- for (int i = -1 ; i > second; i--)
147
- sum = minus_exprt (sum, t);
148
- }
134
+ plus_exprt (sum, t);
135
+ for (int i = 1 ; i < factor; i++) sum = plus_exprt (sum, t);
136
+ }
137
+ else if (factor < -1 )
138
+ {
139
+ if (sum.is_nil ())
140
+ sum = unary_minus_exprt (t);
141
+ else
142
+ sum = minus_exprt (sum, t);
143
+ for (int i = -1 ; i > factor; i--)
144
+ sum = minus_exprt (sum, t);
145
+ }
149
146
}
150
147
}
151
148
}
152
149
153
- exprt index_const = from_integer (constants, index_type);
150
+ const exprt index_const = from_integer (constants, index_type);
154
151
if (sum.is_not_nil ())
155
152
return plus_exprt (sum, index_const);
156
153
else
0 commit comments