17 #include <OsiSolverInterface.hpp>
27 V(v),I1(i1),I2(i2),I3(i3),I4(i4),I5(i5) {
56 vector<Constant > multiplicators,
81 vector<Constant> multiplicators,
100 left->insertVariables(v);
101 right->insertVariables(v);
118 vector<Constant> multiplicators,
121 left->generate(domain, multiplicators, f, m);
122 right->generate(domain, multiplicators, f, m);
137 vector<Constant> multiplicators,
140 left->generate(domain, multiplicators, f, m);
141 right->generate(domain, multiplicators, f, -m);
156 vector<Constant> multiplicators,
159 multiplicators.push_back(
left);
160 right->generate(domain, multiplicators, f, m);
163 right->insertVariables(v);
178 vector<Constant> multiplicators,
181 multiplicators.push_back(1/
right);
182 left->generate(domain, multiplicators, f, m);
185 left->insertVariables(v);
202 vector<Constant> multiplicators,
206 exp->generate(
D*domain, multiplicators, f, m);
209 exp->insertVariables(v);
264 using namespace flopc;
285 double multiplicator = M;
287 for (
unsigned int i=0; i<multiplicators.size(); i++) {
288 multiplicator *= multiplicators[i]->evaluate();
289 if (multiplicators[i]->getStage() > stage) {
290 stage = multiplicators[i]->getStage();
295 rowNumber = R->row_number();
298 int colNumber = C->getColumn();
300 double val = multiplicator*C->getValue();
301 int tstage = C->getStage();
302 if (tstage > stage) {
306 Coefs.push_back(
MP::Coef(colNumber, rowNumber, val, stage));
friend MP_expression operator*(const Constant &e1, const MP_expression &e2)
void generate(const MP_domain &domain, vector< Constant > multiplicators, MP::GenerateFunctor &f, double m) const
friend MP_expression sum(const MP_domain &d, const MP_expression &e)
void setMultiplicator(vector< Constant > &mults, double m)
friend MP_expression operator/(const MP_expression &e1, const Constant &e2)
Expression_operator(const MP_expression &e1, const MP_expression &e2)
void generate(const MP_domain &domain, vector< Constant > multiplicators, MP::GenerateFunctor &f, double m) const
void generate(const MP_domain &domain, vector< Constant > multiplicators, MP::GenerateFunctor &f, double m) const
SumFunctor(MP_expression exp)
Symbolic representation of a linear expression.This is one of the main public interface classes...
Constant operator/(const Constant &a, const Constant &b)
Returns the quotient of two constants.This is used in the formation of an expression.
VariableRef(MP_variable *v, const MP_index_exp &i1, const MP_index_exp &i2, const MP_index_exp &i3, const MP_index_exp &i4, const MP_index_exp &i5)
Expression_constant(const Constant &c)
friend MP_expression operator+(const MP_expression &e1, const MP_expression &e2)
void generate(const MP_domain &domain, vector< Constant > multiplicators, MP::GenerateFunctor &f, double m) const
void setTerminalExpression(const TerminalExpression *c)
Expression_mult(const Constant &e1, const MP_expression &e2)
Expression_sum(const MP_domain &d, const MP_expression &e)
void insertVariables(set< MP_variable * > &v) const
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.
Representation of an expression involving an index.This is one of the main public interface classes...
int f(int i1=0, int i2=0, int i3=0, int i4=0, int i5=0) const
friend MP_expression operator-(const MP_expression &e1, const MP_expression &e2)
void insertVariables(set< MP_variable * > &v) const
The base class for all expressions.
void generate(const MP_domain &domain, vector< Constant > multiplicators, MP::GenerateFunctor &f, double m) const
const int outOfBound
Distinct return value on conditions where an index goes out of bounds.
void generate(const MP_domain &domain, vector< Constant > multiplicators, MP::GenerateFunctor &f, double m) const
Constant operator-(const Constant &a, const Constant &b)
Returns the difference of two constants.This is used in the formation of an expression.
All flopc++ code is contained within the flopc namespace.
OsiSolverInterface * Solver
Expression_minus(const MP_expression &e1, const MP_expression &e2)
Range over which some other constuct is defined.This is one of the main public interface classes...
Symantic representation of a variable.This is one of the main public interface classes. It should be directly declared by clients of the FlopC++. The parametersof construction are MP_set s which specify the indexes over which the variable is defined.
Function object. Often used.
Reference counted class for all "constant" types of data.
void forall(const Functor *op) const
Special conditional operation on the domain.
void generate(const MP_domain &domain, vector< Constant > multiplicators, MP::GenerateFunctor &f, double m) const
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.
Expression_div(const MP_expression &e, const Constant &c)
Constant sum(const MP_domain &i, const Constant &e)
Returns the sum of two constants.
bool operator()(const MP::Coef &a, const MP::Coef &b) const
void insertVariables(set< MP_variable * > &v) const
The base class for all expressions.
Expression_plus(const MP_expression &e1, const MP_expression &e2)
void insertVariables(set< MP_variable * > &v) const