Generated on Tue Feb 11 2025 17:33:26 for Gecode by doxygen 1.12.0
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
36namespace 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>
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>
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>
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
int n
Number of negative literals for node type.
Float value type.
Definition float.hh:334
bool assigned(void) const
Test whether view is assigned.
Definition var.hpp:111
RelTest
Result of testing relation.
Definition view.hpp:533
@ RT_TRUE
Relation does hold.
Definition view.hpp:536
@ RT_FALSE
Relation does not hold.
Definition view.hpp:534
@ RT_MAYBE
Relation may hold or not.
Definition view.hpp:535
RelTest rtest_le(View x, View y)
Test whether view x is less than view y.
Definition rel-test.hpp:70
RelTest rtest_eq(View x, View y)
Test whether views x and y are equal.
Definition rel-test.hpp:40
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:1734
Gecode toplevel namespace
Post propagator for SetVar SetOpType SetVar y
Definition set.hh:767
Post propagator for SetVar x
Definition set.hh:767
#define forceinline
Definition config.hpp:187