~verifydtapn-contributers/verifydtapn/trunk

« back to all changes in this revision

Viewing changes to src/DiscreteVerification/Util/IntervalOps.hpp

  • Committer: Jiri Srba
  • Date: 2017-09-18 13:43:37 UTC
  • mfrom: (334.1.8 verifydtapn)
  • Revision ID: srba.jiri@gmail.com-20170918134337-fi97wtwg1i1689kt
merged in branch lp:~verifydtapn-contributers/verifydtapn/win-compile 
allowing to cross compile to windows (min mac version is 10.9)

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
#define INTERVALOPS_HPP_
10
10
 
11
11
#include <vector>
12
 
#include "boost/numeric/interval.hpp"
 
12
#include <limits>
13
13
 
14
14
namespace VerifyTAPN {
15
15
namespace DiscreteVerification {
16
16
namespace Util {
17
17
 
18
 
typedef boost::numeric::interval_lib::rounded_math< int > rounding_policy;
19
 
typedef boost::numeric::interval_lib::checking_no_nan< int > checking_policy;
20
 
typedef boost::numeric::interval_lib::policies< rounding_policy, checking_policy > interval_policies;
21
 
typedef boost::numeric::interval< int, interval_policies > interval;
 
18
    struct interval {
 
19
        int low, high;
 
20
        interval(int l, int h) : low(l), high(h) 
 
21
        {
 
22
            if(low > high)
 
23
            {
 
24
                low = std::numeric_limits<int>::max();
 
25
                high = std::numeric_limits<int>::min();
 
26
            }
 
27
        };
 
28
        auto upper() const {return high; }
 
29
        auto lower() const {return low; }
 
30
        auto empty() const { return high < low; }
 
31
    };
22
32
 
23
 
void setAdd(std::vector< interval >& first, const interval& element);
24
 
std::vector<interval > setIntersection(const std::vector<interval >& first,
25
 
                const std::vector<interval >& second);
 
33
    interval intersect(const interval& l, const interval r);
 
34
    interval hull(const interval& l, const interval r);
 
35
    bool overlap(const interval& l, const interval r);
 
36
    
 
37
    
 
38
    void setAdd(std::vector< interval >& first, const interval& element);
 
39
    std::vector<interval > setIntersection(const std::vector<interval >& first,
 
40
                    const std::vector<interval >& second);
26
41
 
27
42
} /* namespace Util */
28
43
} /* namespace DiscreteVerification */