1#ifndef ZONOOPT_INTERVAL_HPP_
2#define ZONOOPT_INTERVAL_HPP_
19#include <Eigen/Sparse>
21#include <boost/numeric/interval.hpp>
29 struct rounded_transc_fixed : boost::numeric::interval_lib::rounded_transc_std<T> {
30 static T asinh_down(
const T& x) {
using std::asinh;
return asinh(x); }
31 static T asinh_up (
const T& x) {
using std::asinh;
return asinh(x); }
32 static T acosh_down(
const T& x) {
using std::acosh;
return acosh(x); }
33 static T acosh_up (
const T& x) {
using std::acosh;
return acosh(x); }
34 static T atanh_down(
const T& x) {
using std::atanh;
return atanh(x); }
35 static T atanh_up (
const T& x) {
using std::atanh;
return atanh(x); }
39 using namespace detail;
474 std::string
print()
const;
487 typedef boost::numeric::interval_lib::policies<
488 boost::numeric::interval_lib::save_state<rounded_transc_fixed<zono_float>>,
489 boost::numeric::interval_lib::checking_base<zono_float>
492 boost::numeric::interval<zono_float, interval_policy> _val;
494 explicit Interval(
const boost::numeric::interval<zono_float, interval_policy>& val) : _val(val) {}
Interval class.
Definition Interval.hpp:48
friend Interval operator/(const zono_float alpha, const Interval &interval)
Interval division with scalar.
Definition Interval.cpp:113
void operator/=(const Interval &other)
Interval division in-place.
Definition Interval.cpp:98
bool is_single_valued() const
Checks whether interval is single-valued (i.e., width is 0 within numerical tolerance)
Definition Interval.cpp:173
std::string print() const
Print method for interval.
Definition Interval.cpp:301
friend Interval operator+(const zono_float alpha, const Interval &interval)
Interval addition with scalar.
Definition Interval.cpp:38
Interval arctanh() const
Compute interval containing arctanh(x) for all x in interval.
Definition Interval.cpp:296
Interval()
Default constructor.
Definition Interval.hpp:55
Interval intersect(const Interval &other) const
Interval intersection.
Definition Interval.cpp:153
Interval tanh() const
Compute interval containing tanh(x) for all x in interval.
Definition Interval.cpp:281
Interval arctan() const
Compute interval containing arctan(x) for all x in interval.
Definition Interval.cpp:266
Interval log() const
Compute interval containing log(x) (base e) for all x in interval.
Definition Interval.cpp:236
Interval sinh() const
Compute interval containing sinh(x) for all x in interval.
Definition Interval.cpp:271
Interval exp() const
Compute interval containing exp(x) for all x in interval.
Definition Interval.cpp:231
bool operator==(const Interval &other) const
Set equality operator.
Definition Interval.cpp:143
Interval sqrt() const
Get square root of interval.
Definition Interval.cpp:204
Interval arcsin() const
Compute interval containing arcsin(x) for all x in interval.
Definition Interval.cpp:256
zono_float upper() const
Get upper bound.
Definition Interval.cpp:14
Interval pow(const int n) const
Interval power.
Definition Interval.cpp:209
Interval arcsinh() const
Compute interval containing arcsinh(x) for all x in interval.
Definition Interval.cpp:286
Interval operator|(const Interval &other) const
Interval hull.
Definition Interval.cpp:128
zono_float lower() const
Get lower bound.
Definition Interval.cpp:12
Interval operator&(const Interval &other) const
Interval intersection.
Definition Interval.cpp:123
void operator-=(const Interval &other)
Interval subtraction in-place.
Definition Interval.cpp:48
Interval abs() const
Get absolute value of interval.
Definition Interval.cpp:199
Interval radius() const
Get radius of interval.
Definition Interval.cpp:193
friend Interval operator*(const zono_float alpha, const Interval &interval)
Interval multiplication with scalar.
Definition Interval.cpp:88
Interval arccosh() const
Compute interval containing arccosh(x) for all x in interval.
Definition Interval.cpp:291
friend std::ostream & operator<<(std::ostream &os, const Interval &interval)
Print to ostream.
Definition Interval.cpp:306
bool contains_set(const Interval &other) const
Set containment for intervals.
Definition Interval.cpp:168
Interval tan() const
Compute interval containing tan(x) for all x in interval.
Definition Interval.cpp:251
friend Interval operator-(const zono_float alpha, const Interval &interval)
Interval subtraction with scalar.
Definition Interval.cpp:63
Interval inv() const
Interval inverse.
Definition Interval.cpp:148
void operator*=(const Interval &other)
Interval multiplication in-place.
Definition Interval.cpp:73
zono_float width() const
Get width of interval.
Definition Interval.cpp:188
bool operator>=(const Interval &other) const
Set containment operator.
Definition Interval.cpp:138
zono_float center() const
Get center of interval.
Definition Interval.cpp:183
bool operator<=(const Interval &other) const
Set containment operator.
Definition Interval.cpp:133
Interval sin() const
Compute interval containing sin(x) for all x in interval.
Definition Interval.cpp:241
bool is_empty() const
Checks whether interval is empty.
Definition Interval.cpp:178
Interval nth_root(const int n) const
Interval nth root.
Definition Interval.cpp:226
Interval cos() const
Compute interval containing cos(x) for all x in interval.
Definition Interval.cpp:246
Interval cosh() const
Compute interval containing cosh(x) for all x in interval.
Definition Interval.cpp:276
Interval interval_hull(const Interval &other) const
Interval hull.
Definition Interval.cpp:158
Interval * clone() const
Clone Interval object.
Definition Interval.cpp:7
bool contains(const zono_float x) const
Checks whether interval contains a value.
Definition Interval.cpp:163
Interval(const zono_float y_min, const zono_float y_max)
Interval constructor.
Definition Interval.hpp:62
Interval arccos() const
Compute interval containing arccos(x) for all x in interval.
Definition Interval.cpp:261
void operator+=(const Interval &other)
Interval addition in-place.
Definition Interval.cpp:23
#define zono_float
Defines the floating-point type used in ZonoOpt.
Definition ZonoOpt.hpp:45
Definition ZonoOpt.hpp:58