| 1 | // TestInterval101.cpp
|
|---|
| 2 | //
|
|---|
| 3 | // Tests for Interval arithmetic.
|
|---|
| 4 | //
|
|---|
| 5 | // (C) Datasim Education BV 2009-2011
|
|---|
| 6 |
|
|---|
| 7 | #include <boost/numeric/interval.hpp>
|
|---|
| 8 |
|
|---|
| 9 |
|
|---|
| 10 | template<class T, class Policies>
|
|---|
| 11 | std::ostream &operator<<(std::ostream &os,
|
|---|
| 12 | const boost::numeric::interval<T, Policies> &x) {
|
|---|
| 13 | os << "[" << x.lower() << ", " << x.upper() << "]";
|
|---|
| 14 | return os;
|
|---|
| 15 | }
|
|---|
| 16 |
|
|---|
| 17 | typedef boost::numeric::interval<double> Range;
|
|---|
| 18 |
|
|---|
| 19 |
|
|---|
| 20 |
|
|---|
| 21 | int main()
|
|---|
| 22 | {
|
|---|
| 23 |
|
|---|
| 24 | using namespace boost::numeric;
|
|---|
| 25 |
|
|---|
| 26 | // Create and manipulate some numbers.
|
|---|
| 27 | Range r1(0.0, 1,0);
|
|---|
| 28 |
|
|---|
| 29 | Range r2(-10.0, 20.0);
|
|---|
| 30 | Range r3(20.8, 44.9);
|
|---|
| 31 |
|
|---|
| 32 | double t = 2.0;
|
|---|
| 33 | r1 += t; r1 -= t; r1 *= t; r1 /= t;
|
|---|
| 34 |
|
|---|
| 35 | Range rTmp(2.0, 3.0);
|
|---|
| 36 | r1 += rTmp; r1 -= rTmp; r1 *= rTmp; r1 /= rTmp;
|
|---|
| 37 |
|
|---|
| 38 | // Numeric operations.
|
|---|
| 39 | Range r4 = r1 + r2;
|
|---|
| 40 | Range r5 = r1 - r2;
|
|---|
| 41 | Range r6 = r1 * r2;
|
|---|
| 42 | Range r7 = r1 / r2;
|
|---|
| 43 |
|
|---|
| 44 | // More numeric operations.
|
|---|
| 45 | t = 3.0;
|
|---|
| 46 | r4 = r1 + t;
|
|---|
| 47 | r5 = r1 - t;
|
|---|
| 48 | r6 = r1 * t;
|
|---|
| 49 | r7 = r1 / t;
|
|---|
| 50 |
|
|---|
| 51 | // Algebraic functions.
|
|---|
| 52 | r4 = abs(r1);
|
|---|
| 53 | r5 = sqrt(r2);
|
|---|
| 54 | r6 = square(r3);
|
|---|
| 55 | r7 = pow(r1, 2); // r1^2
|
|---|
| 56 | Range r8 = nth_root(r1, 4);
|
|---|
| 57 |
|
|---|
| 58 | // NONE COMPILES
|
|---|
| 59 | // Transcendental functions
|
|---|
| 60 | // r4 = exp(r1);
|
|---|
| 61 | // boost::numeric::interval<double, boost::numeric::interval_lib::default_policies<double> > myI;
|
|---|
| 62 | // myI = boost::numeric::exp(myI);
|
|---|
| 63 | //r5 = log(r2);
|
|---|
| 64 |
|
|---|
| 65 | // Trigonometric functions
|
|---|
| 66 | /* r4 = sin(r1);
|
|---|
| 67 | r5 = cos(r1);
|
|---|
| 68 | r6 = tan(r1);
|
|---|
| 69 | r7 = asin(r2);
|
|---|
| 70 | r7 = acos(r2);
|
|---|
| 71 | r7 = atan(r2);
|
|---|
| 72 |
|
|---|
| 73 | // Hyperbolic trigonometric functions
|
|---|
| 74 | r4 = sinh(r1);
|
|---|
| 75 | r5 = cosh(r1);
|
|---|
| 76 | r6 = tanh(r1);
|
|---|
| 77 | r7 = asinh(r2);
|
|---|
| 78 | r8 = acosh(r2);
|
|---|
| 79 | r6 = atanh(r2);*/
|
|---|
| 80 |
|
|---|
| 81 |
|
|---|
| 82 |
|
|---|
| 83 |
|
|---|
| 84 | return 0;
|
|---|
| 85 | }
|
|---|