|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r65665 - trunk/libs/math/example
From: pbristow_at_[hidden]
Date: 2010-09-29 06:32:57
Author: pbristow
Date: 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
New Revision: 65665
URL: http://svn.boost.org/trac/boost/changeset/65665
Log:
Changed to avoid using namespace boost::math
Removed:
trunk/libs/math/example/binomial_example3.cpp
Text files modified:
trunk/libs/math/example/c_error_policy_example.cpp | 8 ++++--
trunk/libs/math/example/chi_square_std_dev_test.cpp | 16 +++++++-------
trunk/libs/math/example/distribution_construction.cpp | 42 ++++++++++++++++++++--------------------
trunk/libs/math/example/error_handling_example.cpp | 30 ++++++++++++++++------------
trunk/libs/math/example/error_policies_example.cpp | 3 +
trunk/libs/math/example/policy_eg_1.cpp | 1
trunk/libs/math/example/policy_eg_2.cpp | 1
trunk/libs/math/example/policy_eg_4.cpp | 7 +++--
trunk/libs/math/example/policy_eg_5.cpp | 16 ++++++++------
trunk/libs/math/example/policy_eg_6.cpp | 19 +++++++++--------
trunk/libs/math/example/policy_eg_7.cpp | 1
trunk/libs/math/example/policy_eg_8.cpp | 3 +
trunk/libs/math/example/policy_eg_9.cpp | 31 ++++++++++++++---------------
trunk/libs/math/example/policy_ref_snip13.cpp | 4 +-
14 files changed, 98 insertions(+), 84 deletions(-)
Deleted: trunk/libs/math/example/binomial_example3.cpp
==============================================================================
--- trunk/libs/math/example/binomial_example3.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
+++ (empty file)
@@ -1,91 +0,0 @@
-// Copyright Paul A. 2006
-// Copyright John Maddock 2006
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// Simple example of computing probabilities for a binomial random variable.
-// Replication of source nag_binomial_dist (g01bjc).
-
-// Shows how to replace NAG C library calls by Boost Math Toolkit C++ calls.
-
-#ifdef _MSC_VER
-# pragma warning(disable: 4512) // assignment operator could not be generated.
-# pragma warning(disable: 4510) // default constructor could not be generated.
-# pragma warning(disable: 4610) // can never be instantiated - user defined constructor required.
-#endif
-
-#include <iostream>
-using std::cout;
-using std::endl;
-using std::ios;
-using std::showpoint;
-#include <iomanip>
-using std::fixed;
-using std::setw;
-#include <boost/math/distributions/binomial.hpp>
-
-int main()
-{
- cout << "Example 3 of using the binomial distribution to replicate a NAG library call." << endl;
- using boost::math::binomial_distribution;
-
- // This replicates the computation of the examples of using nag-binomial_dist
- // using g01bjc in section g01 Sample Calculations on Statistical Data.
- // http://www.nag.co.uk/numeric/cl/manual/pdf/G01/g01bjc.pdf
- // Program results section 8.3 page 3.g01bjc.3
- //8.2. Program Data
- //g01bjc Example Program Data
- //4 0.50 2 : n, p, k
- //19 0.44 13
- //100 0.75 67
- //2000 0.33 700
- //8.3. Program Results
- //g01bjc Example Program Results
- //n p k plek pgtk peqk
- //4 0.500 2 0.68750 0.31250 0.37500
- //19 0.440 13 0.99138 0.00862 0.01939
- //100 0.750 67 0.04460 0.95540 0.01700
- //2000 0.330 700 0.97251 0.02749 0.00312
-
- cout.setf(ios::showpoint); // Trailing zeros to show significant decimal digits.
- cout.precision(5); // Should be able to calculate this?
- cout << fixed;
- // Binomial distribution.
-
- // Note that cdf(dist, k) is equivalent to NAG library plek probability of <= k
- // cdf(complement(dist, k)) is equivalent to NAG library pgtk probability of > k
- // pdf(dist, k) is equivalent to NAG library peqk probability of == k
-
- cout << " n p k plek pgtk peqk " << endl;
- binomial_distribution<>my_dist(4, 0.5);
- cout << setw(4) << (int)my_dist.trials() << " " << my_dist.success_fraction() << " "<< 2 << " "
- << cdf(my_dist, 2) << " " << cdf(complement(my_dist, 2)) << " " << pdf(my_dist, 2) << endl;
- binomial_distribution<>two(19, 0.440);
- cout << setw(4) << (int)two.trials() << " " << two.success_fraction() << " " << 13 << " "
- << cdf(two, 13) << " " << cdf(complement(two, 13)) << " " << pdf(two, 13) << endl;
- binomial_distribution<>three(100, 0.750);
- cout << setw(4) << (int)three.trials() << " " << three.success_fraction() << " " << 67 << " "
- << cdf(three, 67) << " " << cdf(complement(three, 67)) << " " << pdf(three, 67) << endl;
- binomial_distribution<>four(2000, 0.330);
- cout << setw(4) << (int)four.trials() << " " << four.success_fraction() << " " << 700 << " "
- << cdf(four, 700) << " " << cdf(complement(four, 700)) << " " << pdf(four, 700) << endl;
-
- return 0;
-} // int main()
-
-/*
-
-Autorun "i:\boost-sandbox\math_toolkit\libs\math\test\msvc80\debug\binomial_example3.exe"
-Example 3 of using the binomial distribution.
- n p k plek pgtk peqk
- 4 0.50000 2 0.68750 0.31250 0.37500
- 19 0.44000 13 0.99138 0.00862 0.01939
- 100 0.75000 67 0.04460 0.95540 0.01700
-2000 0.33000 700 0.97251 0.02749 0.00312
-
-
-
- */
-
Modified: trunk/libs/math/example/c_error_policy_example.cpp
==============================================================================
--- trunk/libs/math/example/c_error_policy_example.cpp (original)
+++ trunk/libs/math/example/c_error_policy_example.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -11,6 +11,8 @@
// Suppose we want a call to tgamma to behave in a C-compatible way
// and set global ::errno rather than throw an exception.
+#include <cerrno> // for ::errno
+
#include <boost/math/special_functions/gamma.hpp>
using boost::math::tgamma;
@@ -58,7 +60,7 @@
overflow_error<errno_on_error>(),
evaluation_error<errno_on_error>()
));
- cout << "tgamma(4., make_policy( ...) = " << t << endl; // 6
+ cout << "tgamma(4., make_policy(...) = " << t << endl; // 6
return 0;
} // int main()
@@ -72,8 +74,8 @@
Finished generating code
c_error_policy_example.vcxproj -> J:\Cpp\MathToolkit\test\Math_test\Release\c_error_policy_example.exe
tgamma(4., C_error_policy() = 6
- tgamma(4., make_policy( ...) = 6
+ tgamma(4., make_policy(...) = 6
tgamma(4., C_error_policy() = 6
- tgamma(4., make_policy( ...) = 6
+ tgamma(4., make_policy(...) = 6
*/
Modified: trunk/libs/math/example/chi_square_std_dev_test.cpp
==============================================================================
--- trunk/libs/math/example/chi_square_std_dev_test.cpp (original)
+++ trunk/libs/math/example/chi_square_std_dev_test.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -76,10 +76,10 @@
void confidence_limits_on_std_deviation_alpha(
double Sd, // Sample Standard Deviation
- double alpha // confidence
- )
+ double alpha // confidence
+ )
{ // Calculate confidence intervals for the standard deviation.
- // for the alpha parameter, for a range number of observations,
+ // for the alpha parameter, for a range number of observations,
// from a mere 2 up to a million.
// O. L. Davies, Statistical Methods in Research and Production, ISBN 0 05 002437 X,
// 4.33 Page 68, Table H, pp 452 459.
@@ -111,7 +111,7 @@
unsigned int N = obs[i]; // Observations
// Start by declaring the distribution with the appropriate :
chi_squared dist(N - 1);
-
+
// Now print out the data for the table row.
cout << fixed << setprecision(3) << setw(10) << right << N;
// Calculate limits: (alpha /2 because it is a two-sided (upper and lower limit) test.
@@ -244,17 +244,17 @@
{
// Confidence value:
cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]);
- // calculate df for a lower single-sided test:
+ // Calculate df for a lower single-sided test:
double df = chi_squared::find_degrees_of_freedom(
-diff, alpha[i], alpha[i], variance);
- // convert to sample size:
+ // Convert to integral sample size (df is a floating point value in this implementation):
double size = ceil(df) + 1;
// Print size:
cout << fixed << setprecision(0) << setw(16) << right << size;
- // calculate df for an upper single-sided test:
+ // Calculate df for an upper single-sided test:
df = chi_squared::find_degrees_of_freedom(
diff, alpha[i], alpha[i], variance);
- // convert to sample size:
+ // Convert to integral sample size:
size = ceil(df) + 1;
// Print size:
cout << fixed << setprecision(0) << setw(16) << right << size << endl;
Modified: trunk/libs/math/example/distribution_construction.cpp
==============================================================================
--- trunk/libs/math/example/distribution_construction.cpp (original)
+++ trunk/libs/math/example/distribution_construction.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -42,7 +42,7 @@
int main()
{
//[distribution_construction2
-/*`
+/*`
First, a negative binomial distribution with 8 successes
and a success fraction 0.25, 25% or 1 in 4, is constructed like this:
*/
@@ -50,10 +50,10 @@
/*`
But this is inconveniently long, so we might be tempted to write
*/
- using namespace boost::math;
+ using namespace boost::math;
/*`
- but this might risk ambiguity with names in std random so *much better* is
- explicit 'using boost::math:: ' ... statements like
+ but this might risk ambiguity with names in std random so
+ *much better is explicit `using boost::math:: ` * ... statements like
*/
using boost::math::negative_binomial_distribution;
/*`
@@ -73,7 +73,7 @@
typedef negative_binomial_distribution<double> negative_binomial; // Reserved name of type double.
[caution
- This convenience typedef is /not/ provided if a clash would occur
+ This convenience typedef is /not/ provided if a clash would occur
with the name of a function: currently only "beta" and "gamma"
fall into this category.
]
@@ -82,7 +82,7 @@
*/
using boost::math::negative_binomial;
-
+
/*`
we have a convenient typedef to `negative_binomial_distribution<double>`:
*/
@@ -111,7 +111,7 @@
/*`
For cases when the typdef distribution name would clash with a math special function
(currently only beta and gamma)
- the typedef is deliberately not provided, and the longer version of the name
+ the typedef is deliberately not provided, and the longer version of the name
must be used. For example do not use:
using boost::math::beta;
@@ -119,12 +119,12 @@
Which produces the error messages:
- [pre
+ [pre
error C2146: syntax error : missing ';' before identifier 'mybetad0'
warning C4551: function call missing argument list
error C3861: 'mybetad0': identifier not found
]
-
+
Instead you should use:
*/
using boost::math::beta_distribution;
@@ -137,41 +137,41 @@
/*`
We can, of course, still provide the type explicitly thus:
*/
-
+
// Explicit double precision:
- negative_binomial_distribution<double> mydist1(8., 0.25);
+ negative_binomial_distribution<double> mydist1(8., 0.25);
// Explicit float precision, double arguments are truncated to float:
negative_binomial_distribution<float> mydist2(8., 0.25);
// Explicit float precision, integer & double arguments converted to float.
- negative_binomial_distribution<float> mydist3(8, 0.25);
+ negative_binomial_distribution<float> mydist3(8, 0.25);
// Explicit float precision, float arguments, so no conversion:
- negative_binomial_distribution<float> mydist4(8.F, 0.25F);
+ negative_binomial_distribution<float> mydist4(8.F, 0.25F);
// Explicit float precision, integer arguments promoted to float.
- negative_binomial_distribution<float> mydist5(8, 1);
+ negative_binomial_distribution<float> mydist5(8, 1);
// Explicit double precision:
- negative_binomial_distribution<double> mydist6(8., 0.25);
+ negative_binomial_distribution<double> mydist6(8., 0.25);
// Explicit long double precision:
- negative_binomial_distribution<long double> mydist7(8., 0.25);
+ negative_binomial_distribution<long double> mydist7(8., 0.25);
/*`
And if you have your own RealType called MyFPType,
for example NTL RR (an arbitrary precision type), then we can write:
-
+
negative_binomial_distribution<MyFPType> mydist6(8, 1); // Integer arguments -> MyFPType.
[heading Default arguments to distribution constructors.]
Note that default constructor arguments are only provided for some distributions.
So if you wrongly assume a default argument you will get an error message, for example:
-
+
negative_binomial_distribution<> mydist8;
-
+
[pre error C2512 no appropriate default constructor available.]
No default constructors are provided for the negative binomial,
@@ -179,13 +179,13 @@
For other distributions, like the normal distribution,
it is obviously very useful to provide 'standard'
defaults for the mean and standard deviation thus:
-
+
normal_distribution(RealType mean = 0, RealType sd = 1);
So in this case we can write:
*/
using boost::math::normal;
-
+
normal norm1; // Standard normal distribution.
normal norm2(2); // Mean = 2, std deviation = 1.
normal norm3(2, 3); // Mean = 2, std deviation = 3.
Modified: trunk/libs/math/example/error_handling_example.cpp
==============================================================================
--- trunk/libs/math/example/error_handling_example.cpp (original)
+++ trunk/libs/math/example/error_handling_example.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -1,6 +1,6 @@
// example_error_handling.cpp
-// Copyright Paul A. Bristow 2007.
+// Copyright Paul A. Bristow 2007, 2010.
// Copyright John Maddock 2007.
// Use, modification and distribution are subject to the
@@ -11,6 +11,11 @@
// Note that this file contains quickbook markup as well as code
// and comments, don't change any of the special comment markups!
+// Optional macro definitions described in text below:
+// #define BOOST_MATH_DOMAIN_ERROR_POLICY ignore_error
+// #define BOOST_MATH_DOMAIN_ERROR_POLICY errno_on_error
+// #define BOOST_MATH_DOMAIN_ERROR_POLICY is set to: throw_on_error
+
//[error_handling_example
/*`
The following example demonstrates the effect of
@@ -59,11 +64,9 @@
using std::exception;
/*`
-
Next we'll define the program's main() to call the student's t
-distribution with an invalid degrees of freedom parameter, the program
-is set up to handle either an exception or a NaN:
-
+distribution with an invalid degrees of freedom parameter,
+the program is set up to handle either an exception or a NaN:
*/
int main()
@@ -77,14 +80,17 @@
try
{
- errno = 0;
- students_t dist(degrees_of_freedom); // exception is thrown here if enabled
+ errno = 0; // Clear/reset.
+ students_t dist(degrees_of_freedom); // exception is thrown here if enabled.
double p = cdf(dist, t);
- // test for error reported by other means:
+ // Test for error reported by other means:
if((boost::math::isnan)(p))
{
cout << "cdf returned a NaN!" << endl;
- cout << "errno is set to: " << errno << endl;
+ if (errno != 0)
+ { // So errno has been set.
+ cout << "errno is set to: " << errno << endl;
+ }
}
else
cout << "Probability of Student's t is " << p << endl;
@@ -94,14 +100,13 @@
std::cout <<
"\n""Message from thrown exception was:\n " << e.what() << std::endl;
}
-
return 0;
} // int main()
/*`
Here's what the program output looks like with a default build
-(one that does throw exceptions):
+(one that *does throw exceptions*):
[pre
Example error handling using Student's t function.
@@ -122,14 +127,13 @@
Example error handling using Student's t function.
BOOST_MATH_DOMAIN_ERROR_POLICY is set to: ignore_error
cdf returned a NaN!
-errno is set to: 0
]
And finally let's build with:
#define BOOST_MATH_DOMAIN_ERROR_POLICY errno_on_error
-Which gives the output:
+Which gives the output show errno:
[pre
Example error handling using Student's t function.
Modified: trunk/libs/math/example/error_policies_example.cpp
==============================================================================
--- trunk/libs/math/example/error_policies_example.cpp (original)
+++ trunk/libs/math/example/error_policies_example.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -30,6 +30,8 @@
using std::cout;
using std::endl;
+// using namespace boost::math::policies; or
+
using boost::math::policies::policy;
// Possible errors
using boost::math::policies::overflow_error;
@@ -38,7 +40,6 @@
using boost::math::policies::pole_error;
using boost::math::policies::denorm_error;
using boost::math::policies::evaluation_error;
-
using boost::math::policies::ignore_error;
// Define a custom policy to ignore just overflow:
Modified: trunk/libs/math/example/policy_eg_1.cpp
==============================================================================
--- trunk/libs/math/example/policy_eg_1.cpp (original)
+++ trunk/libs/math/example/policy_eg_1.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -6,6 +6,7 @@
#include <iostream>
using std::cout; using std::endl;
+#include <cerrno> // for ::errno
//[policy_eg_1
Modified: trunk/libs/math/example/policy_eg_2.cpp
==============================================================================
--- trunk/libs/math/example/policy_eg_2.cpp (original)
+++ trunk/libs/math/example/policy_eg_2.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -6,6 +6,7 @@
#include <iostream>
using std::cout; using std::endl;
+#include <cerrno> // for ::errno
//[policy_eg_2
Modified: trunk/libs/math/example/policy_eg_4.cpp
==============================================================================
--- trunk/libs/math/example/policy_eg_4.cpp (original)
+++ trunk/libs/math/example/policy_eg_4.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -10,6 +10,7 @@
#include <iostream>
using std::cout; using std::endl;
+#include <cerrno> // for ::errno
//[policy_eg_4
@@ -17,7 +18,7 @@
Suppose we want `C::foo()` to behave in a C-compatible way and set
`::errno` on error rather than throwing any exceptions.
-We'll begin by including the needed header:
+We'll begin by including the needed header for our function:
*/
#include <boost/math/special_functions.hpp>
@@ -25,14 +26,14 @@
/*`
Open up the "C" namespace that we'll use for our functions, and
-define the policy type we want: in this case one that sets
+define the policy type we want: in this case a C-style one that sets
::errno and returns a standard value, rather than throwing exceptions.
Any policies we don't specify here will inherit the defaults.
*/
namespace C
-{
+{ // To hold our C-style policy.
//using namespace boost::math::policies; or explicitly:
using boost::math::policies::policy;
Modified: trunk/libs/math/example/policy_eg_5.cpp
==============================================================================
--- trunk/libs/math/example/policy_eg_5.cpp (original)
+++ trunk/libs/math/example/policy_eg_5.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -9,16 +9,17 @@
#include <iostream>
using std::cout; using std::endl;
+#include <cerrno> // for ::errno
//[policy_eg_5
#include <boost/math/special_functions.hpp>
- //using boost::math::tgamma; // Would create an ambiguity between
+// using boost::math::tgamma; // Would create an ambiguity between
// 'double boost::math::tgamma<int>(T)' and
// 'double 'anonymous-namespace'::tgamma<int>(RT)'.
namespace
-{ // not named
+{ // unnamed
using namespace boost::math::policies;
@@ -26,13 +27,14 @@
domain_error<errno_on_error>,
pole_error<errno_on_error>,
overflow_error<errno_on_error>,
- evaluation_error<errno_on_error>
+ evaluation_error<errno_on_error>
> c_policy;
BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(c_policy)
+
/*`
- So that when we call `tgamma(z)`, we really end up calling
-`boost::math::tgamma(z, anonymous-namespace::c_policy())`:
+So that when we call `tgamma(z)`, we really end up calling
+ `boost::math::tgamma(z, anonymous-namespace::c_policy())`.
*/
} // close unnamed namespace
@@ -40,11 +42,11 @@
int main()
{
errno = 0;
- cout << "Result of tgamma(30000) is: "
+ cout << "Result of tgamma(30000) is: "
<< tgamma(30000) << endl;
// tgamma in unnamed namespace in this translation unit (file) only.
cout << "errno = " << errno << endl;
- cout << "Result of tgamma(-10) is: "
+ cout << "Result of tgamma(-10) is: "
<< tgamma(-10) << endl;
cout << "errno = " << errno << endl;
// Default tgamma policy would throw an exception, and abort.
Modified: trunk/libs/math/example/policy_eg_6.cpp
==============================================================================
--- trunk/libs/math/example/policy_eg_6.cpp (original)
+++ trunk/libs/math/example/policy_eg_6.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -9,6 +9,7 @@
#include <iostream>
using std::cout; using std::endl;
+#include <cerrno> // for ::errno
//[policy_eg_6
@@ -27,9 +28,9 @@
/*`
-Open up an appropriate namespace for our distributions, and
-define the policy type we want. Any policies we don't
-specify here will inherit the defaults:
+Open up an appropriate namespace, calling it `my_distributions`,
+for our distributions, and define the policy type we want.
+Any policies we don't specify here will inherit the defaults:
*/
@@ -79,22 +80,22 @@
{
// Construct distribution with something we know will overflow
// (using double rather than if promoted to long double):
- my_distributions::normal norm(10, 2);
+ my_distributions::normal norm(10, 2);
errno = 0;
- cout << "Result of quantile(norm, 0) is: "
+ cout << "Result of quantile(norm, 0) is: "
<< quantile(norm, 0) << endl; // -infinity.
cout << "errno = " << errno << endl;
errno = 0;
- cout << "Result of quantile(norm, 1) is: "
+ cout << "Result of quantile(norm, 1) is: "
<< quantile(norm, 1) << endl; // +infinity.
cout << "errno = " << errno << endl;
// Now try a discrete distribution.
my_distributions::binomial binom(20, 0.25);
- cout << "Result of quantile(binom, 0.05) is: "
+ cout << "Result of quantile(binom, 0.05) is: "
<< quantile(binom, 0.05) << endl; // To check we get integer results.
- cout << "Result of quantile(complement(binom, 0.05)) is: "
+ cout << "Result of quantile(complement(binom, 0.05)) is: "
<< quantile(complement(binom, 0.05)) << endl;
}
@@ -111,7 +112,7 @@
Result of quantile(complement(binom, 0.05)) is: 8
]
-This mechanism is particularly useful when we want to define a
+This mechanism is particularly useful when we want to define a
project-wide policy, and don't want to modify the Boost source
or set project wide build macros (possibly fragile and easy to forget).
Modified: trunk/libs/math/example/policy_eg_7.cpp
==============================================================================
--- trunk/libs/math/example/policy_eg_7.cpp (original)
+++ trunk/libs/math/example/policy_eg_7.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -9,6 +9,7 @@
#include <iostream>
using std::cout; using std::endl;
+#include <cerrno> // for ::errno
//[policy_eg_7
Modified: trunk/libs/math/example/policy_eg_8.cpp
==============================================================================
--- trunk/libs/math/example/policy_eg_8.cpp (original)
+++ trunk/libs/math/example/policy_eg_8.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -45,7 +45,8 @@
So out first job is to include the header we want to use, and then
provide definitions for our user-defined error handlers that we want to use.
-We only provide our special domain and pole error handlers, other errors use the default.
+We only provide our special domain and pole error handlers;
+other errors like overflow and underflow use the default.
*/
#include <boost/math/special_functions.hpp>
Modified: trunk/libs/math/example/policy_eg_9.cpp
==============================================================================
--- trunk/libs/math/example/policy_eg_9.cpp (original)
+++ trunk/libs/math/example/policy_eg_9.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -22,8 +22,8 @@
template <class T>
T user_``['error_type]``(
- const char* function,
- const char* message,
+ const char* function,
+ const char* message,
const T& val);
and accepts three arguments:
@@ -32,7 +32,7 @@
[[const char* function]
[The name of the function that raised the error, this string
contains one or more %1% format specifiers that should be
- replaced by the name of type T.]]
+ replaced by the name of real type T, like float or double.]]
[[const char* message]
[A message associated with the error, normally this
contains a %1% format specifier that should be replaced with
@@ -53,7 +53,7 @@
#include <boost/math/special_functions.hpp>
/*`
-Next we'll implement our own error handlers for each type of error,
+Next we'll implement our own error handlers for each type of error,
starting with domain errors:
*/
@@ -85,7 +85,7 @@
// int prec = std::numeric_limits<T>::max_digits10; // For C++0X Standard Library
msg += (boost::format(message) % boost::io::group(std::setprecision(prec), val)).str();
/*`
- Now we just have to do something with the message, we could throw an
+ Now we just have to do something with the message, we could throw an
exception, but for the purposes of this example we'll just dump the message
to std::cerr:
*/
@@ -97,7 +97,7 @@
}
/*`
-Pole errors are essentially a special case of domain errors,
+Pole errors are essentially a special case of domain errors,
so in this example we'll just return the result of a domain error:
*/
@@ -126,9 +126,9 @@
msg += message;
std::cerr << msg << std::endl;
-
+
// Value passed to the function is an infinity, just return it:
- return val;
+ return val;
}
/*`
@@ -150,9 +150,9 @@
msg += message;
std::cerr << msg << std::endl;
-
+
// Value passed to the function is zero, just return it:
- return val;
+ return val;
}
/*`
@@ -174,13 +174,13 @@
msg += message;
std::cerr << msg << std::endl;
-
+
// Value passed to the function is denormalised, just return it:
- return val;
+ return val;
}
/*`
-Which leaves us with evaluation errors, these occur when an internal
+Which leaves us with evaluation errors: these occur when an internal
error occurs that prevents the function being fully evaluated.
The parameter /val/ contains the closest approximation to the result
found so far:
@@ -205,9 +205,8 @@
std::cerr << msg << std::endl;
- // What do we return here? This is generally a fatal error,
- // that should never occur, just return a NaN for the purposes
- // of the example:
+ // What do we return here? This is generally a fatal error, that should never occur,
+ // so we just return a NaN for the purposes of the example:
return std::numeric_limits<T>::quiet_NaN();
}
Modified: trunk/libs/math/example/policy_ref_snip13.cpp
==============================================================================
--- trunk/libs/math/example/policy_ref_snip13.cpp (original)
+++ trunk/libs/math/example/policy_ref_snip13.cpp 2010-09-29 06:32:55 EDT (Wed, 29 Sep 2010)
@@ -42,8 +42,8 @@
// myspace::mypolicy:
//
// This compiles but throws a domain error exception at runtime.
-// (Caution, if you omit the try'n'catch blocks, it will just terminate,
-// giving no clues as to why!
+// Caution! If you omit the try'n'catch blocks,
+// it will just silently terminate, giving no clues as to why!
// So try'n'catch blocks are very strongly recommended.
void test_cauchy()
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