Generated on Sat Oct 20 2018 12:43:45 for Gecode by doxygen 1.8.13
rel-test.hpp
Go to the documentation of this file.
1 /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2 /*
3  * Main authors:
4  * Christian Schulte <schulte@gecode.org>
5  * Vincent Barichard <Vincent.Barichard@univ-angers.fr>
6  *
7  * Copyright:
8  * Christian Schulte, 2003
9  * Vincent Barichard, 2012
10  *
11  * This file is part of Gecode, the generic constraint
12  * development environment:
13  * http://www.gecode.org
14  *
15  * Permission is hereby granted, free of charge, to any person obtaining
16  * a copy of this software and associated documentation files (the
17  * "Software"), to deal in the Software without restriction, including
18  * without limitation the rights to use, copy, modify, merge, publish,
19  * distribute, sublicense, and/or sell copies of the Software, and to
20  * permit persons to whom the Software is furnished to do so, subject to
21  * the following conditions:
22  *
23  * The above copyright notice and this permission notice shall be
24  * included in all copies or substantial portions of the Software.
25  *
26  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
27  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
28  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
29  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
30  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
31  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
32  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33  *
34  */
35 
36 namespace Gecode { namespace Float {
37 
38  template<class View>
40  rtest_eq(View x, View y) {
41  if ((x.min() > y.max()) || (x.max() < y.min())) return RT_FALSE;
42  return (x.assigned() && y.assigned()) ? RT_TRUE : RT_MAYBE;
43  }
44 
45  template<class View>
47  rtest_eq(View x, FloatVal n) {
48  if ((x.min() > n.max()) || (x.max() < n.min())) return RT_FALSE;
49  return x.assigned() ? RT_TRUE : RT_MAYBE;
50  }
51 
52  template<class View>
54  rtest_lq(View x, View y) {
55  if (x.max() <= y.min()) return RT_TRUE;
56  if (x.min() > y.max()) return RT_FALSE;
57  return RT_MAYBE;
58  }
59 
60  template<class View>
62  rtest_lq(View x, FloatVal n) {
63  if (x.max() <= n.min()) return RT_TRUE;
64  if (x.min() > n.max()) return RT_FALSE;
65  return RT_MAYBE;
66  }
67 
68  template<class View>
70  rtest_le(View x, View y) {
71  if (x.max() < y.min()) return RT_TRUE;
72  if (x.min() >= y.max()) return RT_FALSE;
73  return RT_MAYBE;
74  }
75 
76  template<class View>
78  rtest_le(View x, FloatVal n) {
79  if (x.max() < n.min()) return RT_TRUE;
80  if (x.min() >= n.max()) return RT_FALSE;
81  return RT_MAYBE;
82  }
83 
84 }}
85 
86 // STATISTICS: float-var
87 
RelTest rtest_lq(View x, View y)
Test whether view x is less or equal than view y.
Definition: rel-test.hpp:54
RelTest
Result of testing relation.
Definition: view.hpp:533
Relation does hold.
Definition: view.hpp:536
Relation does not hold.
Definition: view.hpp:534
#define forceinline
Definition: config.hpp:185
int n
Number of negative literals for node type.
Definition: bool-expr.cpp:234
Post propagator for SetVar SetOpType SetVar y
Definition: set.hh:767
Float value type.
Definition: float.hh:334
RelTest rtest_eq(View x, View y)
Test whether views x and y are equal.
Definition: rel-test.hpp:40
Post propagator for SetVar x
Definition: set.hh:767
RelTest rtest_le(View x, View y)
Test whether view x is less than view y.
Definition: rel-test.hpp:70
Gecode toplevel namespace
Relation may hold or not.
Definition: view.hpp:535
friend FloatVal max(const FloatVal &x, const FloatVal &y)
Definition: val.hpp:386
friend FloatVal min(const FloatVal &x, const FloatVal &y)
Definition: val.hpp:398