|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r67603 - in branches/release: . boost boost/algorithm/string boost/archive boost/bimap boost/config boost/detail boost/filesystem boost/functional/hash boost/fusion boost/gil boost/graph boost/icl boost/integer boost/interprocess boost/intrusive boost/io boost/iostreams boost/math boost/msm boost/numeric/interval boost/numeric/interval/detail boost/numeric/ublas boost/program_options boost/property_tree boost/regex boost/serialization boost/signals boost/signals2 boost/spirit boost/spirit/home boost/spirit/home/karma boost/spirit/home/support boost/system boost/thread boost/tr1 boost/type_traits boost/typeof boost/unordered boost/utility boost/uuid boost/variant boost/wave doc libs libs/algorithm/string libs/array/doc libs/array/test libs/bimap libs/config libs/date_time libs/filesystem libs/functional/hash libs/fusion libs/graph_parallel libs/icl libs/icl/doc libs/integer libs/interprocess libs/intrusive libs/iostreams libs/math libs/math/doc libs/math/doc/sf_and_dist libs/mpi/build libs/mpl/doc/refmanual libs/mpl/doc/src/refmanual libs/msm libs/numeric/interval/doc libs/numeric/interval/examples libs/numeric/ublas libs/numeric/ublas/doc libs/program_options libs/property_tree libs/regex libs/serialization libs/serialization/doc libs/serialization/example libs/serialization/src libs/serialization/test libs/serialization/vc7ide libs/signals libs/signals2 libs/spirit libs/spirit/classic/example libs/spirit/doc libs/spirit/example libs/spirit/phoenix libs/spirit/test libs/spirit/test/qi libs/static_assert libs/system libs/thread libs/timer libs/tr1 libs/type_traits libs/type_traits/doc libs/typeof/doc libs/unordered libs/utility libs/utility/swap/test libs/uuid libs/wave more more/getting_started status tools tools/bcp tools/boostbook tools/build/v2 tools/inspect tools/quickbook tools/regression tools/regression/src tools/release tools/wave
From: steven_at_[hidden]
Date: 2011-01-02 22:57:31
Author: steven_watanabe
Date: 2011-01-02 22:57:26 EST (Sun, 02 Jan 2011)
New Revision: 67603
URL: http://svn.boost.org/trac/boost/changeset/67603
Log:
Merge Interval from the trunk
Properties modified:
branches/release/ (props changed)
branches/release/INSTALL (props changed)
branches/release/Jamroot (props changed)
branches/release/LICENSE_1_0.txt (props changed)
branches/release/boost/ (props changed)
branches/release/boost-build.jam (props changed)
branches/release/boost.css (props changed)
branches/release/boost.png (props changed)
branches/release/boost/algorithm/string/ (props changed)
branches/release/boost/archive/ (props changed)
branches/release/boost/bimap/ (props changed)
branches/release/boost/config/ (props changed)
branches/release/boost/config.hpp (props changed)
branches/release/boost/detail/ (props changed)
branches/release/boost/detail/endian.hpp (props changed)
branches/release/boost/filesystem/ (props changed)
branches/release/boost/filesystem.hpp (props changed)
branches/release/boost/functional/hash/ (props changed)
branches/release/boost/fusion/ (props changed)
branches/release/boost/gil/ (props changed)
branches/release/boost/graph/ (props changed)
branches/release/boost/icl/ (props changed)
branches/release/boost/integer/ (props changed)
branches/release/boost/interprocess/ (props changed)
branches/release/boost/intrusive/ (props changed)
branches/release/boost/io/ (props changed)
branches/release/boost/iostreams/ (props changed)
branches/release/boost/math/ (props changed)
branches/release/boost/math_fwd.hpp (props changed)
branches/release/boost/msm/ (props changed)
branches/release/boost/numeric/ublas/ (props changed)
branches/release/boost/numeric/ublas/functional.hpp (props changed)
branches/release/boost/program_options/ (props changed)
branches/release/boost/property_tree/ (props changed)
branches/release/boost/regex/ (props changed)
branches/release/boost/serialization/ (props changed)
branches/release/boost/signals/ (props changed)
branches/release/boost/signals2/ (props changed)
branches/release/boost/signals2.hpp (props changed)
branches/release/boost/spirit/ (props changed)
branches/release/boost/spirit/home/ (props changed)
branches/release/boost/spirit/home/karma/ (props changed)
branches/release/boost/spirit/home/support/attributes.hpp (props changed)
branches/release/boost/system/ (props changed)
branches/release/boost/thread/ (props changed)
branches/release/boost/thread.hpp (props changed)
branches/release/boost/token_functions.hpp (props changed)
branches/release/boost/tr1/ (props changed)
branches/release/boost/type_traits/ (props changed)
branches/release/boost/typeof/message.hpp (props changed)
branches/release/boost/typeof/register_functions.hpp (props changed)
branches/release/boost/typeof/register_functions_iterate.hpp (props changed)
branches/release/boost/typeof/typeof.hpp (props changed)
branches/release/boost/typeof/unsupported.hpp (props changed)
branches/release/boost/unordered/ (props changed)
branches/release/boost/utility/ (props changed)
branches/release/boost/utility/value_init.hpp (props changed)
branches/release/boost/uuid/ (props changed)
branches/release/boost/variant/ (props changed)
branches/release/boost/version.hpp (props changed)
branches/release/boost/wave/ (props changed)
branches/release/bootstrap.bat (props changed)
branches/release/bootstrap.sh (props changed)
branches/release/doc/ (props changed)
branches/release/index.htm (props changed)
branches/release/index.html (props changed)
branches/release/libs/ (props changed)
branches/release/libs/algorithm/string/ (props changed)
branches/release/libs/array/doc/array.xml (props changed)
branches/release/libs/array/test/Jamfile.v2 (props changed)
branches/release/libs/array/test/array0.cpp (props changed)
branches/release/libs/array/test/array2.cpp (props changed)
branches/release/libs/array/test/array6.cpp (props changed)
branches/release/libs/bimap/ (props changed)
branches/release/libs/config/ (props changed)
branches/release/libs/date_time/ (props changed)
branches/release/libs/filesystem/ (props changed)
branches/release/libs/functional/hash/ (props changed)
branches/release/libs/fusion/ (props changed)
branches/release/libs/graph_parallel/ (props changed)
branches/release/libs/icl/ (props changed)
branches/release/libs/icl/doc/ (props changed)
branches/release/libs/integer/ (props changed)
branches/release/libs/interprocess/ (props changed)
branches/release/libs/intrusive/ (props changed)
branches/release/libs/iostreams/ (props changed)
branches/release/libs/math/ (props changed)
branches/release/libs/math/doc/ (props changed)
branches/release/libs/math/doc/sf_and_dist/ (props changed)
branches/release/libs/mpi/build/ (props changed)
branches/release/libs/mpl/doc/refmanual/broken-compiler-workarounds.html (props changed)
branches/release/libs/mpl/doc/refmanual/categorized-index-concepts.html (props changed)
branches/release/libs/mpl/doc/refmanual/cfg-no-preprocessed-headers.html (props changed)
branches/release/libs/mpl/doc/refmanual/composition-and-argument-binding.html (props changed)
branches/release/libs/mpl/doc/refmanual/data-types-concepts.html (props changed)
branches/release/libs/mpl/doc/refmanual/data-types-miscellaneous.html (props changed)
branches/release/libs/mpl/doc/refmanual/extensible-associative-sequence.html (props changed)
branches/release/libs/mpl/doc/refmanual/inserter-class.html (props changed)
branches/release/libs/mpl/doc/refmanual/tag-dispatched-metafunction.html (props changed)
branches/release/libs/mpl/doc/refmanual/trivial-metafunctions-summary.html (props changed)
branches/release/libs/mpl/doc/src/refmanual/Iterators-Iterator.rst (props changed)
branches/release/libs/msm/ (props changed)
branches/release/libs/numeric/ublas/ (props changed)
branches/release/libs/numeric/ublas/doc/ (props changed)
branches/release/libs/program_options/ (props changed)
branches/release/libs/property_tree/ (props changed)
branches/release/libs/regex/ (props changed)
branches/release/libs/serialization/ (props changed)
branches/release/libs/serialization/doc/ (props changed)
branches/release/libs/serialization/example/ (props changed)
branches/release/libs/serialization/src/ (props changed)
branches/release/libs/serialization/test/test_diamond_complex.cpp (props changed)
branches/release/libs/serialization/vc7ide/ (props changed)
branches/release/libs/signals/ (props changed)
branches/release/libs/signals2/ (props changed)
branches/release/libs/spirit/ (props changed)
branches/release/libs/spirit/classic/example/ (props changed)
branches/release/libs/spirit/doc/ (props changed)
branches/release/libs/spirit/example/ (props changed)
branches/release/libs/spirit/phoenix/ (props changed)
branches/release/libs/spirit/test/ (props changed)
branches/release/libs/spirit/test/qi/optional.cpp (props changed)
branches/release/libs/static_assert/ (props changed)
branches/release/libs/system/ (props changed)
branches/release/libs/thread/ (props changed)
branches/release/libs/timer/ (props changed)
branches/release/libs/tr1/ (props changed)
branches/release/libs/type_traits/ (props changed)
branches/release/libs/type_traits/doc/ (props changed)
branches/release/libs/typeof/doc/typeof.qbk (props changed)
branches/release/libs/unordered/ (props changed)
branches/release/libs/utility/ (props changed)
branches/release/libs/utility/swap.html (props changed)
branches/release/libs/utility/swap/test/std_bitset.cpp (props changed)
branches/release/libs/utility/value_init.htm (props changed)
branches/release/libs/utility/value_init_test.cpp (props changed)
branches/release/libs/uuid/ (props changed)
branches/release/libs/wave/ (props changed)
branches/release/more/ (props changed)
branches/release/more/getting_started/ (props changed)
branches/release/rst.css (props changed)
branches/release/status/ (props changed)
branches/release/status/explicit-failures-markup.xml (props changed)
branches/release/tools/ (props changed)
branches/release/tools/bcp/ (props changed)
branches/release/tools/boostbook/ (props changed)
branches/release/tools/build/v2/ (props changed)
branches/release/tools/inspect/ (props changed)
branches/release/tools/quickbook/ (props changed)
branches/release/tools/regression/ (props changed)
branches/release/tools/regression/src/library_status.cpp (props changed)
branches/release/tools/release/ (props changed)
branches/release/tools/wave/ (props changed)
Text files modified:
branches/release/boost/numeric/interval/arith2.hpp | 2 +-
branches/release/boost/numeric/interval/detail/c99_rounding_control.hpp | 27 +++++++++++++++------------
branches/release/boost/numeric/interval/detail/c99sub_rounding_control.hpp | 4 ++--
branches/release/boost/numeric/interval/detail/msvc_rounding_control.hpp | 9 +++++++++
branches/release/boost/numeric/interval/detail/x86_rounding_control.hpp | 4 ++--
branches/release/boost/numeric/interval/transc.hpp | 2 +-
branches/release/boost/numeric/interval/utility.hpp | 4 ++--
branches/release/libs/numeric/interval/doc/guide.htm | 2 +-
branches/release/libs/numeric/interval/doc/interval.htm | 20 ++++++++++----------
branches/release/libs/numeric/interval/doc/rounding.htm | 6 +++---
branches/release/libs/numeric/interval/doc/todo.htm | 4 ++--
branches/release/libs/numeric/interval/examples/newton-raphson.cpp | 15 ++++++++++-----
12 files changed, 58 insertions(+), 41 deletions(-)
Modified: branches/release/boost/numeric/interval/arith2.hpp
==============================================================================
--- branches/release/boost/numeric/interval/arith2.hpp (original)
+++ branches/release/boost/numeric/interval/arith2.hpp 2011-01-02 22:57:26 EST (Sun, 02 Jan 2011)
@@ -185,7 +185,7 @@
return I(yl, yu, true);
} else if (interval_lib::user::is_neg(x.lower())) { // [-1,1]
if (pwr & 1) { // [-1,1]^1
- return I(-pow_up(-x.lower(), pwr, rnd), pow_up(x.upper(), pwr, rnd), true);
+ return I(-pow_up(static_cast<T>(-x.lower()), pwr, rnd), pow_up(x.upper(), pwr, rnd), true);
} else { // [-1,1]^2
return I(static_cast<T>(0), pow_up(max BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<T>(-x.lower()), x.upper()), pwr, rnd), true);
}
Modified: branches/release/boost/numeric/interval/detail/c99_rounding_control.hpp
==============================================================================
--- branches/release/boost/numeric/interval/detail/c99_rounding_control.hpp (original)
+++ branches/release/boost/numeric/interval/detail/c99_rounding_control.hpp 2011-01-02 22:57:26 EST (Sun, 02 Jan 2011)
@@ -16,27 +16,30 @@
namespace boost {
namespace numeric {
namespace interval_lib {
-namespace detail {
-
-struct c99_rounding_control: c99_rounding
-{
- template<class T>
- static T force_rounding(const T& r) { volatile T r_ = r; return r_; }
-};
-
-} // namespace detail
template<>
struct rounding_control<float>:
- detail::c99_rounding_control { };
+ detail::c99_rounding_control
+{
+ static float force_rounding(float const &r)
+ { volatile float r_ = r; return r_; }
+};
template<>
struct rounding_control<double>:
- detail::c99_rounding_control { };
+ detail::c99_rounding_control
+{
+ static double force_rounding(double const &r)
+ { volatile double r_ = r; return r_; }
+};
template<>
struct rounding_control<long double>:
- detail::c99_rounding_control { };
+ detail::c99_rounding_control
+{
+ static long double force_rounding(long double const &r)
+ { volatile long double r_ = r; return r_; }
+};
} // namespace interval_lib
} // namespace numeric
Modified: branches/release/boost/numeric/interval/detail/c99sub_rounding_control.hpp
==============================================================================
--- branches/release/boost/numeric/interval/detail/c99sub_rounding_control.hpp (original)
+++ branches/release/boost/numeric/interval/detail/c99sub_rounding_control.hpp 2011-01-02 22:57:26 EST (Sun, 02 Jan 2011)
@@ -20,11 +20,11 @@
extern "C" { double rint(double); }
-struct c99_rounding
+struct c99_rounding_control
{
typedef int rounding_mode;
- static void set_rounding_mode(const rounding_mode mode) { fesetround(mode); }
+ static void set_rounding_mode(rounding_mode mode) { fesetround(mode); }
static void get_rounding_mode(rounding_mode &mode) { mode = fegetround(); }
static void downward() { set_rounding_mode(FE_DOWNWARD); }
static void upward() { set_rounding_mode(FE_UPWARD); }
Modified: branches/release/boost/numeric/interval/detail/msvc_rounding_control.hpp
==============================================================================
--- branches/release/boost/numeric/interval/detail/msvc_rounding_control.hpp (original)
+++ branches/release/boost/numeric/interval/detail/msvc_rounding_control.hpp 2011-01-02 22:57:26 EST (Sun, 02 Jan 2011)
@@ -25,7 +25,16 @@
namespace interval_lib {
namespace detail {
+#if BOOST_MSVC < 1400 || defined(WIN64)
extern "C" { double rint(double); }
+#else
+inline double rint(double x)
+{
+_asm FLD [x] ;
+_asm FRNDINT ;
+//_asm RET ;
+}
+#endif
struct x86_rounding
{
Modified: branches/release/boost/numeric/interval/detail/x86_rounding_control.hpp
==============================================================================
--- branches/release/boost/numeric/interval/detail/x86_rounding_control.hpp (original)
+++ branches/release/boost/numeric/interval/detail/x86_rounding_control.hpp 2011-01-02 22:57:26 EST (Sun, 02 Jan 2011)
@@ -17,7 +17,7 @@
# include <boost/numeric/interval/detail/bcc_rounding_control.hpp>
#elif defined(_MSC_VER)
# include <boost/numeric/interval/detail/msvc_rounding_control.hpp>
-#elif defined(__MWERKS__) || defined(__ICC)
+#elif defined(__MWERKS__) || defined(__ICC) || defined (__SUNPRO_CC)
# define BOOST_NUMERIC_INTERVAL_USE_C99_SUBSYSTEM
# include <boost/numeric/interval/detail/c99sub_rounding_control.hpp>
#else
@@ -31,7 +31,7 @@
namespace detail {
#ifdef BOOST_NUMERIC_INTERVAL_USE_C99_SUBSYSTEM
-typedef c99_rounding x86_rounding_control;
+typedef c99_rounding_control x86_rounding_control;
#undef BOOST_NUMERIC_INTERVAL_USE_C99_SUBSYSTEM
#else
struct fpu_rounding_modes
Modified: branches/release/boost/numeric/interval/transc.hpp
==============================================================================
--- branches/release/boost/numeric/interval/transc.hpp (original)
+++ branches/release/boost/numeric/interval/transc.hpp 2011-01-02 22:57:26 EST (Sun, 02 Jan 2011)
@@ -176,7 +176,7 @@
else if (!interval_lib::user::is_neg(x.lower()))
return I(rnd.cosh_down(x.lower()), rnd.cosh_up(x.upper()), true);
else
- return I(static_cast<T>(0), rnd.cosh_up(-x.lower() > x.upper() ? x.lower() : x.upper()), true);
+ return I(static_cast<T>(1), rnd.cosh_up(-x.lower() > x.upper() ? x.lower() : x.upper()), true);
}
template<class T, class Policies> inline
Modified: branches/release/boost/numeric/interval/utility.hpp
==============================================================================
--- branches/release/boost/numeric/interval/utility.hpp (original)
+++ branches/release/boost/numeric/interval/utility.hpp 2011-01-02 22:57:26 EST (Sun, 02 Jan 2011)
@@ -144,8 +144,8 @@
const interval<T, Policies2>& y)
{
if (interval_lib::detail::test_input(x, y)) return false;
- return x.lower() <= y.lower() && y.lower() <= x.upper() ||
- y.lower() <= x.lower() && x.lower() <= y.upper();
+ return (x.lower() <= y.lower() && y.lower() <= x.upper()) ||
+ (y.lower() <= x.lower() && x.lower() <= y.upper());
}
template<class T, class Policies> inline
Modified: branches/release/libs/numeric/interval/doc/guide.htm
==============================================================================
--- branches/release/libs/numeric/interval/doc/guide.htm (original)
+++ branches/release/libs/numeric/interval/doc/guide.htm 2011-01-02 22:57:26 EST (Sun, 02 Jan 2011)
@@ -71,7 +71,7 @@
not really interested by the inclusion property; you are only interested by
the computation algorithms the library provides. So you do not need to use
any rounding; the checking also may not be useful. Use an "exact
- computation" rounding (you are allowed to think the name stangely applies
+ computation" rounding (you are allowed to think the name strangely applies
to the situation) and a checking that never tests for any invalid numbers
or empty intervals. By doing that, you will obtain library functions
reduced to their minimum (an addition of two intervals will only be two
Modified: branches/release/libs/numeric/interval/doc/interval.htm
==============================================================================
--- branches/release/libs/numeric/interval/doc/interval.htm (original)
+++ branches/release/libs/numeric/interval/doc/interval.htm 2011-01-02 22:57:26 EST (Sun, 02 Jan 2011)
@@ -146,10 +146,10 @@
methods (for instance, toward minus or plus infinity) if we want to
guarantee the inclusion property. Note that we also may explicitely specify
no rounding, for instance if the base number type is exact, i.e. the result
- of a mathematic operation is always computed and represented without loss
+ of a mathematical operation is always computed and represented without loss
of precision. If the number type is not exact, we may still explicitely
specify no rounding, with the obvious consequence that the inclusion
- property is no longuer guaranteed.</p>
+ property is no longer guaranteed.</p>
<p>Finally, because heavy loss of precision is always possible, some
numbers have to represent infinities or an exceptional behavior must be
@@ -214,7 +214,7 @@
<p>This library provides two quite distinct levels of usage. One is to use
the basic class template <code>interval<T></code> without specifying
- the policy. This only requires to know and understand the concepts
+ the policy. This only requires one to know and understand the concepts
developed above and the content of the namespace boost. In addition to the
class <code>interval<T></code>, this level of usage provides
arithmetic operators (<code>+</code>, <code>-</code>, <code>*</code>,
@@ -233,7 +233,7 @@
<code>width</code>, <code>median</code>, <code>empty</code>,
<code>singleton</code>, <code>equal</code>, <code>in</code>,
<code>zero_in</code>, <code>subset</code>, <code>proper_subset</code>,
- <code>overlap</code>, <code>intersection</code>, <code>hull</code>,
+ <code>overlap</code>, <code>intersect</code>, <code>hull</code>,
<code>bisect</code>).</p>
<p>For some functions which take several parameters of type
@@ -358,7 +358,7 @@
template <class T, class Policies> bool overlap(const interval<T, Policies>& x, const interval<T, Policies>& y);
/* set manipulation interval functions */
-template <class T, class Policies> interval<T, Policies> intersection(const interval<T, Policies>& x, const interval<T, Policies>& y);
+template <class T, class Policies> interval<T, Policies> intersect(const interval<T, Policies>& x, const interval<T, Policies>& y);
template <class T, class Policies> interval<T, Policies> hull(const interval<T, Policies>& x, const interval<T, Policies>& y);
template <class T, class Policies> interval<T, Policies> hull(const interval<T, Policies>& x, const T& y);
template <class T, class Policies> interval<T, Policies> hull(const T& x, const interval<T, Policies>& y);
@@ -480,7 +480,7 @@
set of values the intervals contain. E.g. with the default policies,
intervals are subsets of the set of real numbers. The static functions
<code>empty</code> and <code>whole</code> produce the intervals/subsets
- that are repectively the empty subset and the whole set. They are static
+ that are respectively the empty subset and the whole set. They are static
member functions rather than global functions because they cannot guess
their return types. Likewise for <code>hull</code>. <code>empty</code> and
<code>whole</code> involve the checking policy in order to get the bounds
@@ -566,7 +566,7 @@
<p>The functions <code>division_part1</code> and
<code>division_part2</code> are useful when the user expects the division
to return disjoint intervals if necessary. For example, the narrowest
- closed set containg [2,3] / [-2,1] is not ]-∞,∞[ but the union
+ closed set containing [2,3] / [-2,1] is not ]-∞,∞[ but the union
of ]-∞,-1] and [2,∞[. When the result of the division is
representable by only one interval, <code>division_part1</code> returns
this interval and sets the boolean reference to <code>false</code>.
@@ -808,7 +808,7 @@
<h4>Comparisons</h4>
- <p>One of the biggest problems is problably the correct use of the
+ <p>One of the biggest problems is probably the correct use of the
comparison functions and operators. First, functions and operators do not
try to know if two intervals are the same mathematical object. So, if the
comparison used is "certain", then <code>x != x</code> is always true
@@ -831,7 +831,7 @@
be equal: <code>x/x</code> and 1, <code>x*x</code> and
<code>square(x)</code>, <code>x-x</code> and 0, etc. So the main cause of
wide intervals is that interval arithmetic does not identify different
- occurences of the same variable. So, whenever possible, the user has to
+ occurrences of the same variable. So, whenever possible, the user has to
rewrite the formulas to eliminate multiple occurences of the same variable.
For example, <code>square(x)-2*x</code> is far less precise than
<code>square(x-1)-1</code>.</p>
@@ -884,7 +884,7 @@
implementations of the rounding policy for the primitive types float and
double. In order for these implementations to be correct and fast, the
library needs to work a lot with rounding modes. Some processors are
- directly dealt with and some mecanisms are provided in order to speed up
+ directly dealt with and some mechanisms are provided in order to speed up
the computations. It seems to be heavy and hazardous optimizations for a
gain of only a few computer cycles; but in reality, the speed-up factor can
easily go past 2 or 3 depending on the computer. Moreover, these
Modified: branches/release/libs/numeric/interval/doc/rounding.htm
==============================================================================
--- branches/release/libs/numeric/interval/doc/rounding.htm (original)
+++ branches/release/libs/numeric/interval/doc/rounding.htm 2011-01-02 22:57:26 EST (Sun, 02 Jan 2011)
@@ -41,7 +41,7 @@
<pre>
/* Rounding requirements */
struct rounding {
- // defaut constructor, destructor
+ // default constructor, destructor
rounding();
~rounding();
// mathematical operations
@@ -235,7 +235,7 @@
};
</pre>
- <h2>Synopsis.</h2>
+ <h2>Synopsis</h2>
<pre>
namespace boost {
namespace numeric {
@@ -375,7 +375,7 @@
argument correctly rounded accordingly to the current rounding mode if it
was not already the case. This function is necessary to handle delayed
rounding. Indeed, depending on the way the computations are done, the
- intermediate results may be internaly stored in a more precise format and
+ intermediate results may be internally stored in a more precise format and
it can lead to a wrong rounding. So the function enforces the rounding.
<a href="#extreg">Here</a> is an example of what happens when the rounding
is not enforced.</p>
Modified: branches/release/libs/numeric/interval/doc/todo.htm
==============================================================================
--- branches/release/libs/numeric/interval/doc/todo.htm (original)
+++ branches/release/libs/numeric/interval/doc/todo.htm 2011-01-02 22:57:26 EST (Sun, 02 Jan 2011)
@@ -16,7 +16,7 @@
<h2>Comments from the review process</h2>
<ul>
- <li>It would be nice to have a 100% portable Rouding policy class based
+ <li>It would be nice to have a 100% portable Rounding policy class based
on LIA-1 only, with no additional requirement such as IEEE 754 or even
more.</li>
@@ -42,7 +42,7 @@
<li>Safe conversions from <code>interval<double></code> to
<code>interval<float></code>? Requires partial specialization.</li>
- <li>It would be nice to use the expression template mecanism to
+ <li>It would be nice to use the expression template mechanism to
automatically use the more efficient unprotected rounding mode version
for small subexpressions (although you can do bigger expressions by
hand).</li>
Modified: branches/release/libs/numeric/interval/examples/newton-raphson.cpp
==============================================================================
--- branches/release/libs/numeric/interval/examples/newton-raphson.cpp (original)
+++ branches/release/libs/numeric/interval/examples/newton-raphson.cpp 2011-01-02 22:57:26 EST (Sun, 02 Jan 2011)
@@ -53,13 +53,15 @@
if (overlap(x1, x)) x1 = intersect(x, x1);
else if (x2_used) { x1 = x2; x2_used = false; }
else continue;
- if (x2_used)
+ if (x2_used) {
if (overlap(x2, x)) x2 = intersect(x, x2);
else x2_used = false;
+ }
if (x2_used && width(x2) > width(x1)) std::swap(x1, x2);
- if (!zero_in(f(x1)))
+ if (!zero_in(f(x1))) {
if (x2_used) { x1 = x2; x2_used = false; }
else continue;
+ }
if (width(x1) < max_width) res.push_back(x1);
else if (width(x1) > alpha * width(x)) {
std::pair<I1, I1> p = bisect(x);
@@ -67,9 +69,10 @@
x2 = p.second;
x2_used = true;
} else l.push_back(x1);
- if (x2_used && zero_in(f(x2)))
+ if (x2_used && zero_in(f(x2))) {
if (width(x2) < max_width) res.push_back(x2);
else l.push_back(x2);
+ }
}
return res;
}
@@ -98,18 +101,20 @@
x2 = intersect(x, xx - division_part2(vf, vd, x2_used));
}
if (width(x2) > width(x1)) std::swap(x1, x2);
- if (empty(x1) || !zero_in(f(x1)))
+ if (empty(x1) || !zero_in(f(x1))) {
if (!empty(x2)) { x1 = x2; x2 = I2::empty(); }
else continue;
+ }
if (width(x1) < max_width) res.push_back(x1);
else if (width(x1) > alpha * width(x)) {
std::pair<I2, I2> p = bisect(x);
if (zero_in(f(p.first))) l.push_back(p.first);
x2 = p.second;
} else l.push_back(x1);
- if (!empty(x2) && zero_in(f(x2)))
+ if (!empty(x2) && zero_in(f(x2))) {
if (width(x2) < max_width) res.push_back(x2);
else l.push_back(x2);
+ }
}
return res;
}
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk