this repo has no description
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>
39 forceinline RelTest
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>
46 forceinline RelTest
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>
53 forceinline RelTest
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>
61 forceinline RelTest
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>
69 forceinline RelTest
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>
77 forceinline RelTest
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