source: branches/Couenne/Couenne/src/include/operators/exprExp.h @ 467

Last change on this file since 467 was 467, checked in by pbelotti, 13 years ago

fixed comparison of exprGroup

File size: 1.5 KB
Line 
1/*
2 * Name:    exprExp.h
3 * Author:  Pietro Belotti
4 * Purpose: definition of the exponential of a function
5 *
6 * (C) Pietro Belotti. This file is licensed under the Common Public License (CPL)
7 */
8
9#ifndef COUENNE_EXPREXP_H
10#define COUENNE_EXPREXP_H
11
12#include <exprUnary.h>
13#include <math.h>
14
15// class for the exponential
16
17class exprExp: public exprUnary {
18
19 public:
20
21  // Constructors, destructor
22  exprExp  (expression *al): 
23    exprUnary (al) {} //< non-leaf expression, with argument list
24
25  // cloning method
26  expression *clone () const
27    {return new exprExp (argument_ -> clone ());}
28
29  /// the operator's function
30  inline unary_function F () {return exp;}
31
32  // output
33  void print (std::ostream&) const;
34
35  // differentiation
36  expression *differentiate (int index); 
37
38  // return expression of this same type with argument arg
39  inline expression *mirror (expression *arg)
40    {return new exprExp (arg);}
41
42  // return derivative of univariate function of this type
43  inline expression *mirror_d (expression *arg)
44    {return new exprExp (arg);}
45
46  // Get lower and upper bound of an expression (if any)
47  void getBounds (expression *&, expression *&);
48
49  // generate equality between *this and *w
50  void generateCuts (exprAux *w, const OsiSolverInterface &si, 
51                     OsiCuts &cs, const CouenneCutGenerator *cg);
52
53  /// code for comparisons
54  virtual enum expr_type code () {return COU_EXPREXP;}
55
56  /// implied bound processing
57  bool impliedBound (int, CouNumber *, CouNumber *, char *);
58};
59
60#endif
Note: See TracBrowser for help on using the repository browser.