53 (floor (l/
pi2 - 0.75) <
54 floor (u/
pi2 - 0.75)))
56 else lb = CoinMin (
sin (l),
sin (u));
59 (floor (l/
pi2 - 0.25) <
60 floor (u/
pi2 - 0.25)))
62 else ub = CoinMax (
sin (l),
sin (u));
72 *xu = u + xind, wu = u [wind];
79 else {fl =
cos (*xl); fu =
cos (*xu); displacement = 0.;}
150 int period = (
int)(curr/
pi2);
154 if (curr_noperiod < inv) {
158 else if (curr_noperiod <
pi2-inv) {
160 right =
pi2*(period+1) - inv;
163 left =
pi2*(period+1) - inv;
164 right =
pi2*(period+1) + inv;
class to compute lower bound of a sine based on the bounds on its arguments
bool updateBound(register int sign, register CouNumber *dst, register CouNumber src)
updates maximum violation.
status of lower/upper bound of a variable, to be checked/modified in bound tightening ...
void getBounds(expression *&, expression *&)
Get lower and upper bound of an expression (if any)
expression * argument_
single argument taken by this expression
bool trigImpliedBound(enum cou_trig, int, int, CouNumber *, CouNumber *, t_chg_bounds *)
generalized implied bound procedure for sine/cosine
static const CouNumber pih
CouNumber inv(register CouNumber arg)
the operator itself
virtual void closestFeasible(expression *varind, expression *vardep, CouNumber &left, CouNumber &right) const
closest feasible points in function in both directions
class to compute lower bound of a sine based on the bounds on its arguments
expression clone (points to another expression)
static const CouNumber pi
cou_trig
specify which trigonometric function is dealt with in trigEnvelope
double CouNumber
main number type in Couenne
CouExpr & cos(CouExpr &e)
expression * differentiate(int index)
differentiation
CouExpr & sin(CouExpr &e)
static const CouNumber pi2
class for multiplications,