39 vector<Constant> multiplicators,
59 return left->level()+right->level();
62 vector<Constant> multiplicators,
65 left->generate(domain, multiplicators,f,m);
66 right->generate(domain, multiplicators,f,m);
78 return left->level()-right->level();
81 vector<Constant> multiplicators,
84 left->generate(domain, multiplicators,f,m);
85 right->generate(domain, multiplicators,f,-m);
95 left(e1), right(e2) {}
97 return left->evaluate()*right->level();
100 vector<Constant> multiplicators,
103 multiplicators.push_back(left);
104 right->generate(domain, multiplicators, f, m);
107 right->insertVariables(v);
119 the_sum += exp->level();
127 vector<Constant> multiplicators,
131 exp->generate(D*domain, multiplicators, f, m);
134 exp->insertVariables(v);
179 using namespace flopc;
193 double multiplicator =
m_;
205 double val = multiplicator*
C->
getValue();
207 if (tstage > stage) {
212 Coefs.push_back(
Coef(colNumber, rowNumber, val, stage));
void generate(const MP_domain &domain, vector< Constant > multiplicators, GenerateFunctor &f, double m) const
void generate(const MP_domain &domain, vector< Constant > multiplicators, GenerateFunctor &f, double m) const
void generate(const MP_domain &domain, vector< Constant > multiplicators, GenerateFunctor &f, double m) const
virtual int row_number() const
Symbolic representation of a linear expression.This is one of the main public interface classes...
virtual double getValue() const =0
Expression_constant(const Constant &c)
void generate(const MP_domain &domain, vector< Constant > multiplicators, GenerateFunctor &f, double m) const
Expression_mult(const Constant &e1, const MP_expression &e2)
Expression_sum(const MP_domain &d, const MP_expression &e)
void Forall(const Functor *op) const
Special conditional operation on the domain.
Utility for doing reference counted pointers.
Constant operator+(const Constant &a, const Constant &b)
Returns the sum of two constants.This is used in the formation of an expression.
const TerminalExpression * C
void insertVariables(set< MP_variable * > &v) const
std::vector< Coef > & Coefs
The base class for all expressions.
virtual int getColumn() const =0
const int outOfBound
Distinct return value on conditions where an index goes out of bounds.
Constant operator-(const Constant &a, const Constant &b)
Returns the difference of two constants.This is used in the formation of an expression.
void setTerminalExpression(const TerminalExpression *c)
Expression_minus(const MP_expression &e1, const MP_expression &e2)
void generate(const MP_domain &domain, vector< Constant > multiplicators, GenerateFunctor &f, double m) const
std::vector< Constant > multiplicators
Internal representation of a Coefficient in a matrix.
Range over which some other constuct is defined.This is one of the main public interface classes...
Function object. Often used.
Reference counted class for all "constant" types of data.
Functor to facilitate generation of coefficients.
void insertVariables(set< MP_variable * > &v) const
Constant operator*(const Constant &a, const Constant &b)
Returns the product of two constants.This is used in the formation of an expression.
void setMultiplicator(std::vector< Constant > &mults, double m)
MP_expression()
default constructor
Constant sum(const MP_domain &i, const Constant &e)
Returns the sum of two constants.
virtual int getStage() const =0
void insertVariables(set< MP_variable * > &v) const
The base class for all expressions.
Expression_plus(const MP_expression &e1, const MP_expression &e2)
The base class for all expressions.