Couenne  0.5.8
CouenneExprBQuad.hpp
Go to the documentation of this file.
1 /* $Id: CouenneExprBQuad.hpp 490 2011-01-14 16:07:12Z pbelotti $ */
2 /*
3  * Name: exprBQuad.hpp
4  * Author: Pietro Belotti
5  * Purpose: definition of operators to compute lower/upper bounds of quadratic forms
6  *
7  * (C) Carnegie-Mellon University, 2006.
8  * This file is licensed under the Eclipse Public License (EPL)
9  */
10 
11 #ifndef COUENNE_EXPRBQUAD_H
12 #define COUENNE_EXPRBQUAD_H
13 
14 #include "CouenneExprOp.hpp"
15 #include "CouenneExprQuad.hpp"
16 
17 namespace Couenne {
18 
21 
22 class exprLBQuad: public expression {
23 
24  exprQuad *ref_;
25 
26  public:
27 
30  ref_ (ref) {}
31 
33  exprLBQuad (const exprLBQuad &src, Domain *d = NULL):
34  ref_ (dynamic_cast <exprQuad *> (src.ref_ -> isaCopy () ?
35  src.ref_ -> Copy () -> clone (d) :
36  src.ref_ -> clone (d))) {}
37 
40 
42  expression *clone (Domain *d = NULL) const
43  {return new exprLBQuad (*this, d);}
44 
47  {return ref_ -> computeQBound (-1);}
48 
50  virtual void print (std::ostream &s = std::cout, //< output stream
51  bool descend = false) const //< descend into auxiliaries' image?
52 
53  {s << "quadLower("; ref_ -> print (s, descend); s << ')';}
54 };
55 
56 
59 
60 class exprUBQuad: public expression {
61 
62  exprQuad *ref_;
63 
64  public:
65 
68  ref_ (ref) {}
69 
71  exprUBQuad (const exprUBQuad &src, Domain *d = NULL):
72  ref_ (dynamic_cast <exprQuad *> (src.ref_ -> isaCopy () ?
73  src.ref_ -> Copy () -> clone (d) :
74  src.ref_ -> clone (d))) {}
75 
78 
80  expression *clone (Domain *d = NULL) const
81  {return new exprUBQuad (*this, d);}
82 
85  {return ref_ -> computeQBound (1);}
86 
88  virtual void print (std::ostream &s = std::cout, //< output stream
89  bool descend = false) const //< descend into auxiliaries' image?
90 
91  {s << "quadUpper("; ref_ -> print (s, descend); s << ')';}
92 };
93 
94 }
95 
96 #endif
Couenne::expression::Copy
virtual expression * Copy() const
return copy of this expression (only makes sense in exprCopy)
Definition: CouenneExpression.hpp:272
Couenne::exprUBQuad::print
virtual void print(std::ostream &s=std::cout, bool descend=false) const
I/O.
Definition: CouenneExprBQuad.hpp:88
Couenne::exprLBQuad::exprLBQuad
exprLBQuad(const exprLBQuad &src, Domain *d=NULL)
copy constructor
Definition: CouenneExprBQuad.hpp:33
Couenne::exprLBQuad::exprLBQuad
exprLBQuad(exprQuad *ref)
Constructor.
Definition: CouenneExprBQuad.hpp:29
Couenne::exprLBQuad::clone
expression * clone(Domain *d=NULL) const
cloning method
Definition: CouenneExprBQuad.hpp:42
Couenne
general include file for different compilers
Definition: CouenneAggrProbing.hpp:24
Couenne::exprUBQuad::exprUBQuad
exprUBQuad(exprQuad *ref)
Constructor.
Definition: CouenneExprBQuad.hpp:67
Couenne::exprUBQuad::~exprUBQuad
~exprUBQuad()
destructor
Definition: CouenneExprBQuad.hpp:77
Couenne::expression::isaCopy
virtual bool isaCopy() const
return true if this is a copy of something (i.e. an exprCopy)
Definition: CouenneExpression.hpp:268
Couenne::exprUBQuad::clone
expression * clone(Domain *d=NULL) const
cloning method
Definition: CouenneExprBQuad.hpp:80
Couenne::CouNumber
double CouNumber
main number type in Couenne
Definition: CouenneTypes.hpp:100
Couenne::exprUBQuad::exprUBQuad
exprUBQuad(const exprUBQuad &src, Domain *d=NULL)
copy constructor
Definition: CouenneExprBQuad.hpp:71
Couenne::exprUBQuad::operator()
CouNumber operator()()
function for the evaluation of the expression
Definition: CouenneExprBQuad.hpp:84
Couenne::exprLBQuad::operator()
CouNumber operator()()
function for the evaluation of the expression
Definition: CouenneExprBQuad.hpp:46
Couenne::exprUBQuad
class to compute upper bound of a fraction based on the bounds of both numerator and denominator
Definition: CouenneExprBQuad.hpp:60
CouenneExprQuad.hpp
CouenneExprOp.hpp
Couenne::exprLBQuad::~exprLBQuad
~exprLBQuad()
destructor
Definition: CouenneExprBQuad.hpp:39
Couenne::expression
Expression base class.
Definition: CouenneExpression.hpp:48
Couenne::exprLBQuad::print
virtual void print(std::ostream &s=std::cout, bool descend=false) const
I/O.
Definition: CouenneExprBQuad.hpp:50
Couenne::exprLBQuad
class to compute lower bound of a fraction based on the bounds of both numerator and denominator
Definition: CouenneExprBQuad.hpp:22
Couenne::Domain
Define a dynamic point+bounds, with a way to save and restore previous points+bounds through a LIFO s...
Definition: CouenneDomain.hpp:104
Couenne::exprQuad
class exprQuad, with constant, linear and quadratic terms
Definition: CouenneExprQuad.hpp:44