17 using System.Collections.
Generic;
21 public virtual double DoVisit(Dictionary<Variable, double> coefficients,
27 public double Visit(Dictionary<Variable, double> coefficients)
29 return DoVisit(coefficients, 1.0);
174 return "(" + expr_.ToString() +
" * " + coeff_ +
")";
177 public override double DoVisit(Dictionary<Variable, double> coefficients,
180 double current_multiplier = multiplier * coeff_;
181 if (current_multiplier != 0.0)
183 return expr_.
DoVisit(coefficients, current_multiplier);
192 private double coeff_;
205 return "(" + expr_.ToString() +
" + " + coeff_ +
")";
208 public override double DoVisit(Dictionary<Variable, double> coefficients,
211 if (multiplier != 0.0)
213 return coeff_ * multiplier + expr_.
DoVisit(coefficients, multiplier);
222 private double coeff_;
237 public override double DoVisit(Dictionary<Variable, double> coefficients,
240 if (multiplier != 0.0)
242 if (coefficients.ContainsKey(var_))
244 coefficients[var_] += multiplier;
248 coefficients[var_] = multiplier;
268 return "(" + left_.ToString() +
" + " + right_.ToString() +
")";
271 public override double DoVisit(Dictionary<Variable, double> coefficients,
274 if (multiplier != 0.0)
276 return left_.
DoVisit(coefficients, multiplier) +
277 right_.
DoVisit(coefficients, multiplier);
296 public override double DoVisit(Dictionary<Variable, double> coefficients,
298 if (multiplier != 0.0)
300 double constant = 0.0;
303 constant += expr.
DoVisit(coefficients, multiplier);
323 public override double DoVisit(Dictionary<Variable, double> coefficients,
325 if (multiplier != 0.0)
329 if (coefficients.ContainsKey(var))
331 coefficients[var] += multiplier;
335 coefficients[var] = multiplier;