From d719e4b567e68bda1faed2100a5f391fc786ace1 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 7 Sep 2015 19:35:29 +0100 Subject: [PATCH] Remove no longer needed special_functions sub-directory. Also fix lots of inspect-report failures. --- example/brent_minimise_example.cpp | 2 +- example/float_comparison_example.cpp | 4 +- example/hyperexponential_more_snips.cpp | 188 +-- example/numerical_derivative_example.cpp | 2 +- example/root_elliptic_finding.cpp | 2 +- example/root_finding_algorithms.cpp | 2 +- .../root_finding_multiprecision_example.cpp | 2 +- example/root_n_finding_algorithms.cpp | 2 +- .../boost/math/distributions/exponential.hpp | 4 +- .../distributions/non_central_chi_squared.hpp | 2 +- include/boost/math/distributions/rayleigh.hpp | 2 +- .../special_functions/detail/polygamma.hpp | 2 +- .../boost/math/special_functions/gamma.hpp | 18 +- special_functions/acosh_test.hpp | 83 -- special_functions/asinh_test.hpp | 83 -- special_functions/atanh_test.hpp | 158 --- special_functions/graphics/Im_exp_on_C.png | Bin 11293 -> 0 bytes special_functions/graphics/Re_exp_on_C.png | Bin 11596 -> 0 bytes special_functions/graphics/exp_on_R.png | Bin 3062 -> 0 bytes special_functions/graphics/hyperbolic.png | Bin 4244 -> 0 bytes .../graphics/sinc_pi_and_sinhc_pi_on_R.png | Bin 3403 -> 0 bytes .../graphics/special_functions_blurb1.jpeg | Bin 2043 -> 0 bytes .../graphics/special_functions_blurb10.jpeg | Bin 1178 -> 0 bytes .../graphics/special_functions_blurb11.jpeg | Bin 1181 -> 0 bytes .../graphics/special_functions_blurb12.jpeg | Bin 1178 -> 0 bytes .../graphics/special_functions_blurb13.jpeg | Bin 1178 -> 0 bytes .../graphics/special_functions_blurb14.jpeg | Bin 1177 -> 0 bytes .../graphics/special_functions_blurb15.jpeg | Bin 2940 -> 0 bytes .../graphics/special_functions_blurb16.jpeg | Bin 1030 -> 0 bytes .../graphics/special_functions_blurb17.jpeg | Bin 2408 -> 0 bytes .../graphics/special_functions_blurb18.jpeg | Bin 2401 -> 0 bytes .../graphics/special_functions_blurb19.jpeg | Bin 1022 -> 0 bytes .../graphics/special_functions_blurb2.jpeg | Bin 1656 -> 0 bytes .../graphics/special_functions_blurb20.jpeg | Bin 2841 -> 0 bytes .../graphics/special_functions_blurb21.jpeg | Bin 1022 -> 0 bytes .../graphics/special_functions_blurb22.jpeg | Bin 3014 -> 0 bytes .../graphics/special_functions_blurb23.jpeg | Bin 1370 -> 0 bytes .../graphics/special_functions_blurb24.jpeg | Bin 1339 -> 0 bytes .../graphics/special_functions_blurb25.jpeg | Bin 1132 -> 0 bytes .../graphics/special_functions_blurb26.jpeg | Bin 1182 -> 0 bytes .../graphics/special_functions_blurb27.jpeg | Bin 1176 -> 0 bytes .../graphics/special_functions_blurb28.jpeg | Bin 686 -> 0 bytes .../graphics/special_functions_blurb29.jpeg | Bin 1177 -> 0 bytes .../graphics/special_functions_blurb3.jpeg | Bin 997 -> 0 bytes .../graphics/special_functions_blurb4.jpeg | Bin 687 -> 0 bytes .../graphics/special_functions_blurb5.jpeg | Bin 2825 -> 0 bytes .../graphics/special_functions_blurb6.jpeg | Bin 2703 -> 0 bytes .../graphics/special_functions_blurb7.jpeg | Bin 2410 -> 0 bytes .../graphics/special_functions_blurb8.jpeg | Bin 1223 -> 0 bytes .../graphics/special_functions_blurb9.jpeg | Bin 1177 -> 0 bytes special_functions/graphics/trigonometric.png | Bin 7373 -> 0 bytes special_functions/output.txt | 32 - special_functions/output_more.txt | 1107 ----------------- special_functions/sinc_test.hpp | 83 -- special_functions/sinhc_test.hpp | 83 -- special_functions/special_functions_test.cpp | 139 --- 56 files changed, 116 insertions(+), 1884 deletions(-) delete mode 100644 special_functions/acosh_test.hpp delete mode 100644 special_functions/asinh_test.hpp delete mode 100644 special_functions/atanh_test.hpp delete mode 100644 special_functions/graphics/Im_exp_on_C.png delete mode 100644 special_functions/graphics/Re_exp_on_C.png delete mode 100644 special_functions/graphics/exp_on_R.png delete mode 100644 special_functions/graphics/hyperbolic.png delete mode 100644 special_functions/graphics/sinc_pi_and_sinhc_pi_on_R.png delete mode 100644 special_functions/graphics/special_functions_blurb1.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb10.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb11.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb12.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb13.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb14.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb15.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb16.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb17.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb18.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb19.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb2.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb20.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb21.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb22.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb23.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb24.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb25.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb26.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb27.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb28.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb29.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb3.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb4.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb5.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb6.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb7.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb8.jpeg delete mode 100644 special_functions/graphics/special_functions_blurb9.jpeg delete mode 100644 special_functions/graphics/trigonometric.png delete mode 100644 special_functions/output.txt delete mode 100644 special_functions/output_more.txt delete mode 100644 special_functions/sinc_test.hpp delete mode 100644 special_functions/sinhc_test.hpp delete mode 100644 special_functions/special_functions_test.cpp diff --git a/example/brent_minimise_example.cpp b/example/brent_minimise_example.cpp index 877160ef4..a80919855 100644 --- a/example/brent_minimise_example.cpp +++ b/example/brent_minimise_example.cpp @@ -579,4 +579,4 @@ f(x) == (0 compared to uncertainty 7.311312755e-26) is true RUN SUCCESSFUL (total time: 90ms) -*/ \ No newline at end of file +*/ diff --git a/example/float_comparison_example.cpp b/example/float_comparison_example.cpp index 71eb6abe3..ddb1324d8 100644 --- a/example/float_comparison_example.cpp +++ b/example/float_comparison_example.cpp @@ -160,7 +160,7 @@ relative_difference = 3.40282347e+038 /*` Note that finite values are always infinitely far away from infinities even if those finite values are very large:*/ - a = std::numeric_limits::max(); + a = (std::numeric_limits::max)(); b = std::numeric_limits::infinity(); std::cout << "a = " << a << std::endl; std::cout << "b = " << b << std::endl; @@ -377,7 +377,7 @@ A few values near zero are tested with varying tolerance below. c = std::numeric_limits::denorm_min(); // 1.40129846e-045 std::cout << "denorm_ min =" << c << ", is_small is " << is_small(c, epsilon) << std::endl; // true - c = std::numeric_limits::min(); // 1.17549435e-038 + c = (std::numeric_limits::min)(); // 1.17549435e-038 std::cout << "min = " << c << ", is_small is " << is_small(c, epsilon) << std::endl; // true c = 1 * epsilon; // 1.19209290e-007 diff --git a/example/hyperexponential_more_snips.cpp b/example/hyperexponential_more_snips.cpp index bbd13f348..ba9d5010e 100644 --- a/example/hyperexponential_more_snips.cpp +++ b/example/hyperexponential_more_snips.cpp @@ -16,140 +16,140 @@ struct ds_info { - std::string name; - double iat_sample_mean; - double iat_sample_sd; - boost::math::hyperexponential iat_he; - double multi_lt_sample_mean; - double multi_lt_sample_sd; - boost::math::hyperexponential multi_lt_he; - double single_lt_sample_mean; - double single_lt_sample_sd; - boost::math::hyperexponential single_lt_he; + std::string name; + double iat_sample_mean; + double iat_sample_sd; + boost::math::hyperexponential iat_he; + double multi_lt_sample_mean; + double multi_lt_sample_sd; + boost::math::hyperexponential multi_lt_he; + double single_lt_sample_mean; + double single_lt_sample_sd; + boost::math::hyperexponential single_lt_he; }; // DS1 dataset ds_info make_ds1() { - ds_info ds; + ds_info ds; - ds.name = "DS1"; + ds.name = "DS1"; - // VM interarrival time distribution - const double iat_fit_probs[] = {0.34561,0.08648,0.56791}; - const double iat_fit_rates[] = {0.0008,0.00005,0.02894}; - ds.iat_sample_mean = 2202.1; - ds.iat_sample_sd = 2.2e+4; - ds.iat_he = boost::math::hyperexponential(iat_fit_probs, iat_fit_rates); + // VM interarrival time distribution + const double iat_fit_probs[] = { 0.34561,0.08648,0.56791 }; + const double iat_fit_rates[] = { 0.0008,0.00005,0.02894 }; + ds.iat_sample_mean = 2202.1; + ds.iat_sample_sd = 2.2e+4; + ds.iat_he = boost::math::hyperexponential(iat_fit_probs, iat_fit_rates); - // Multi-core VM lifetime distribution - const double multi_lt_fit_probs[] = {0.24667,0.37948,0.37385}; - const double multi_lt_fit_rates[] = {0.00004,0.000002,0.00059}; - ds.multi_lt_sample_mean = 257173; - ds.multi_lt_sample_sd = 4.6e+5; - ds.multi_lt_he = boost::math::hyperexponential(multi_lt_fit_probs, multi_lt_fit_rates); + // Multi-core VM lifetime distribution + const double multi_lt_fit_probs[] = { 0.24667,0.37948,0.37385 }; + const double multi_lt_fit_rates[] = { 0.00004,0.000002,0.00059 }; + ds.multi_lt_sample_mean = 257173; + ds.multi_lt_sample_sd = 4.6e+5; + ds.multi_lt_he = boost::math::hyperexponential(multi_lt_fit_probs, multi_lt_fit_rates); - // Single-core VM lifetime distribution - const double single_lt_fit_probs[] = {0.09325,0.22251,0.68424}; - const double single_lt_fit_rates[] = {0.000003,0.00109,0.00109}; - ds.single_lt_sample_mean = 28754.4; - ds.single_lt_sample_sd = 1.6e+5; - ds.single_lt_he = boost::math::hyperexponential(single_lt_fit_probs, single_lt_fit_rates); + // Single-core VM lifetime distribution + const double single_lt_fit_probs[] = { 0.09325,0.22251,0.68424 }; + const double single_lt_fit_rates[] = { 0.000003,0.00109,0.00109 }; + ds.single_lt_sample_mean = 28754.4; + ds.single_lt_sample_sd = 1.6e+5; + ds.single_lt_he = boost::math::hyperexponential(single_lt_fit_probs, single_lt_fit_rates); - return ds; + return ds; } // DS2 dataset ds_info make_ds2() { - ds_info ds; + ds_info ds; - ds.name = "DS2"; + ds.name = "DS2"; - // VM interarrival time distribution - const double iat_fit_probs[] = {0.38881,0.18227,0.42892}; - const double iat_fit_rates[] = {0.000006,0.05228,0.00081}; - ds.iat_sample_mean = 41285.7; - ds.iat_sample_sd = 1.1e+05; - ds.iat_he = boost::math::hyperexponential(iat_fit_probs, iat_fit_rates); + // VM interarrival time distribution + const double iat_fit_probs[] = { 0.38881,0.18227,0.42892 }; + const double iat_fit_rates[] = { 0.000006,0.05228,0.00081 }; + ds.iat_sample_mean = 41285.7; + ds.iat_sample_sd = 1.1e+05; + ds.iat_he = boost::math::hyperexponential(iat_fit_probs, iat_fit_rates); - // Multi-core VM lifetime distribution - const double multi_lt_fit_probs[] = {0.42093,0.43960,0.13947}; - const double multi_lt_fit_rates[] = {0.00186,0.00008,0.0000008}; - ds.multi_lt_sample_mean = 144669.0; - ds.multi_lt_sample_sd = 7.9e+05; - ds.multi_lt_he = boost::math::hyperexponential(multi_lt_fit_probs, multi_lt_fit_rates); + // Multi-core VM lifetime distribution + const double multi_lt_fit_probs[] = { 0.42093,0.43960,0.13947 }; + const double multi_lt_fit_rates[] = { 0.00186,0.00008,0.0000008 }; + ds.multi_lt_sample_mean = 144669.0; + ds.multi_lt_sample_sd = 7.9e+05; + ds.multi_lt_he = boost::math::hyperexponential(multi_lt_fit_probs, multi_lt_fit_rates); - // Single-core VM lifetime distribution - const double single_lt_fit_probs[] = {0.44885,0.30675,0.2444}; - const double single_lt_fit_rates[] = {0.00143,0.00005,0.0000004}; - ds.single_lt_sample_mean = 599815.0; - ds.single_lt_sample_sd = 1.7e+06; - ds.single_lt_he = boost::math::hyperexponential(single_lt_fit_probs, single_lt_fit_rates); + // Single-core VM lifetime distribution + const double single_lt_fit_probs[] = { 0.44885,0.30675,0.2444 }; + const double single_lt_fit_rates[] = { 0.00143,0.00005,0.0000004 }; + ds.single_lt_sample_mean = 599815.0; + ds.single_lt_sample_sd = 1.7e+06; + ds.single_lt_he = boost::math::hyperexponential(single_lt_fit_probs, single_lt_fit_rates); - return ds; + return ds; } // DS3 dataset ds_info make_ds3() { - ds_info ds; + ds_info ds; - ds.name = "DS3"; + ds.name = "DS3"; - // VM interarrival time distribution - const double iat_fit_probs[] = {0.39442,0.24644,0.35914}; - const double iat_fit_rates[] = {0.00030,0.00003,0.00257}; - ds.iat_sample_mean = 11238.8; - ds.iat_sample_sd = 3.0e+04; - ds.iat_he = boost::math::hyperexponential(iat_fit_probs, iat_fit_rates); + // VM interarrival time distribution + const double iat_fit_probs[] = { 0.39442,0.24644,0.35914 }; + const double iat_fit_rates[] = { 0.00030,0.00003,0.00257 }; + ds.iat_sample_mean = 11238.8; + ds.iat_sample_sd = 3.0e+04; + ds.iat_he = boost::math::hyperexponential(iat_fit_probs, iat_fit_rates); - // Multi-core VM lifetime distribution - const double multi_lt_fit_probs[] = {0.37621,0.14838,0.47541}; - const double multi_lt_fit_rates[] = {0.00498,0.000005,0.00022}; - ds.multi_lt_sample_mean = 30739.2; - ds.multi_lt_sample_sd = 1.6e+05; - ds.multi_lt_he = boost::math::hyperexponential(multi_lt_fit_probs, multi_lt_fit_rates); + // Multi-core VM lifetime distribution + const double multi_lt_fit_probs[] = { 0.37621,0.14838,0.47541 }; + const double multi_lt_fit_rates[] = { 0.00498,0.000005,0.00022 }; + ds.multi_lt_sample_mean = 30739.2; + ds.multi_lt_sample_sd = 1.6e+05; + ds.multi_lt_he = boost::math::hyperexponential(multi_lt_fit_probs, multi_lt_fit_rates); - // Single-core VM lifetime distribution - const double single_lt_fit_probs[] = {0.34131,0.12544,0.53325}; - const double single_lt_fit_rates[] = {0.000297,0.000003,0.00410}; - ds.single_lt_sample_mean = 44447.8; - ds.single_lt_sample_sd = 2.2e+05; - ds.single_lt_he = boost::math::hyperexponential(single_lt_fit_probs, single_lt_fit_rates); + // Single-core VM lifetime distribution + const double single_lt_fit_probs[] = { 0.34131,0.12544,0.53325 }; + const double single_lt_fit_rates[] = { 0.000297,0.000003,0.00410 }; + ds.single_lt_sample_mean = 44447.8; + ds.single_lt_sample_sd = 2.2e+05; + ds.single_lt_he = boost::math::hyperexponential(single_lt_fit_probs, single_lt_fit_rates); - return ds; + return ds; } void print_fitted(ds_info const& ds) { - const double secs_in_a_hour = 3600; - const double secs_in_a_month = 30*24*secs_in_a_hour; + const double secs_in_a_hour = 3600; + const double secs_in_a_month = 30 * 24 * secs_in_a_hour; - std::cout << "### " << ds.name << std::endl; - std::cout << "* Fitted Request Interarrival Time" << std::endl; - std::cout << " - Mean (SD): " << boost::math::mean(ds.iat_he) << " (" << boost::math::standard_deviation(ds.iat_he) << ") seconds." << std::endl; - std::cout << " - 99th Percentile: " << boost::math::quantile(ds.iat_he, 0.99) << " seconds." << std::endl; - std::cout << " - Probability that a VM will arrive within 30 minutes: " << boost::math::cdf(ds.iat_he, secs_in_a_hour/2.0) << std::endl; - std::cout << " - Probability that a VM will arrive after 1 hour: " << boost::math::cdf(boost::math::complement(ds.iat_he, secs_in_a_hour)) << std::endl; - std::cout << "* Fitted Multi-core VM Lifetime" << std::endl; - std::cout << " - Mean (SD): " << boost::math::mean(ds.multi_lt_he) << " (" << boost::math::standard_deviation(ds.multi_lt_he) << ") seconds." << std::endl; - std::cout << " - 99th Percentile: " << boost::math::quantile(ds.multi_lt_he, 0.99) << " seconds." << std::endl; - std::cout << " - Probability that a VM will last for less than 1 month: " << boost::math::cdf(ds.multi_lt_he, secs_in_a_month) << std::endl; - std::cout << " - Probability that a VM will last for more than 3 months: " << boost::math::cdf(boost::math::complement(ds.multi_lt_he, 3.0*secs_in_a_month)) << std::endl; - std::cout << "* Fitted Single-core VM Lifetime" << std::endl; - std::cout << " - Mean (SD): " << boost::math::mean(ds.single_lt_he) << " (" << boost::math::standard_deviation(ds.single_lt_he) << ") seconds." << std::endl; - std::cout << " - 99th Percentile: " << boost::math::quantile(ds.single_lt_he, 0.99) << " seconds." << std::endl; - std::cout << " - Probability that a VM will last for less than 1 month: " << boost::math::cdf(ds.single_lt_he, secs_in_a_month) << std::endl; - std::cout << " - Probability that a VM will last for more than 3 months: " << boost::math::cdf(boost::math::complement(ds.single_lt_he, 3.0*secs_in_a_month)) << std::endl; + std::cout << "### " << ds.name << std::endl; + std::cout << "* Fitted Request Interarrival Time" << std::endl; + std::cout << " - Mean (SD): " << boost::math::mean(ds.iat_he) << " (" << boost::math::standard_deviation(ds.iat_he) << ") seconds." << std::endl; + std::cout << " - 99th Percentile: " << boost::math::quantile(ds.iat_he, 0.99) << " seconds." << std::endl; + std::cout << " - Probability that a VM will arrive within 30 minutes: " << boost::math::cdf(ds.iat_he, secs_in_a_hour / 2.0) << std::endl; + std::cout << " - Probability that a VM will arrive after 1 hour: " << boost::math::cdf(boost::math::complement(ds.iat_he, secs_in_a_hour)) << std::endl; + std::cout << "* Fitted Multi-core VM Lifetime" << std::endl; + std::cout << " - Mean (SD): " << boost::math::mean(ds.multi_lt_he) << " (" << boost::math::standard_deviation(ds.multi_lt_he) << ") seconds." << std::endl; + std::cout << " - 99th Percentile: " << boost::math::quantile(ds.multi_lt_he, 0.99) << " seconds." << std::endl; + std::cout << " - Probability that a VM will last for less than 1 month: " << boost::math::cdf(ds.multi_lt_he, secs_in_a_month) << std::endl; + std::cout << " - Probability that a VM will last for more than 3 months: " << boost::math::cdf(boost::math::complement(ds.multi_lt_he, 3.0*secs_in_a_month)) << std::endl; + std::cout << "* Fitted Single-core VM Lifetime" << std::endl; + std::cout << " - Mean (SD): " << boost::math::mean(ds.single_lt_he) << " (" << boost::math::standard_deviation(ds.single_lt_he) << ") seconds." << std::endl; + std::cout << " - 99th Percentile: " << boost::math::quantile(ds.single_lt_he, 0.99) << " seconds." << std::endl; + std::cout << " - Probability that a VM will last for less than 1 month: " << boost::math::cdf(ds.single_lt_he, secs_in_a_month) << std::endl; + std::cout << " - Probability that a VM will last for more than 3 months: " << boost::math::cdf(boost::math::complement(ds.single_lt_he, 3.0*secs_in_a_month)) << std::endl; } int main() { - print_fitted(make_ds1()); + print_fitted(make_ds1()); - print_fitted(make_ds2()); + print_fitted(make_ds2()); - print_fitted(make_ds3()); + print_fitted(make_ds3()); } //] diff --git a/example/numerical_derivative_example.cpp b/example/numerical_derivative_example.cpp index 3a194502c..ff45b4584 100644 --- a/example/numerical_derivative_example.cpp +++ b/example/numerical_derivative_example.cpp @@ -44,7 +44,7 @@ at x = 3= 2. In other words, The expected result is - 0:74535 59924 99929 89880 . (5) + 0:74535 59924 99929 89880 . (5) The program below uses the derivative template in order to perform the numerical calculation of this derivative. The program also compares the numerically-obtained result with the expected result and reports the absolute diff --git a/example/root_elliptic_finding.cpp b/example/root_elliptic_finding.cpp index 9bc03a783..1554aeebc 100644 --- a/example/root_elliptic_finding.cpp +++ b/example/root_elliptic_finding.cpp @@ -140,7 +140,7 @@ struct root_info std::vector times; // arbirary units (ticks). //boost::int_least64_t min_time = std::numeric_limits::max(); // Used to normalize times (as int). std::vector normed_times; - int min_time = std::numeric_limits::max(); // Used to normalize times. + int min_time = (std::numeric_limits::max)(); // Used to normalize times. std::vector iterations; std::vector distances; std::vector full_results; diff --git a/example/root_finding_algorithms.cpp b/example/root_finding_algorithms.cpp index ac1e077a7..02ee7619c 100644 --- a/example/root_finding_algorithms.cpp +++ b/example/root_finding_algorithms.cpp @@ -148,7 +148,7 @@ struct root_info std::vector times; //boost::int_least64_t min_time = std::numeric_limits::max(); // Used to normalize times (as int). std::vector normed_times; - boost::int_least64_t min_time = std::numeric_limits::max(); // Used to normalize times. + boost::int_least64_t min_time = (std::numeric_limits::max)(); // Used to normalize times. std::vector iterations; std::vector distances; std::vector full_results; diff --git a/example/root_finding_multiprecision_example.cpp b/example/root_finding_multiprecision_example.cpp index c291b27f4..d658f193e 100644 --- a/example/root_finding_multiprecision_example.cpp +++ b/example/root_finding_multiprecision_example.cpp @@ -229,4 +229,4 @@ value = 2, cube root =1.25992104989487 value = 2, cube root =1.2599210498948731647672106072782283505702514647015 -*/ \ No newline at end of file +*/ diff --git a/example/root_n_finding_algorithms.cpp b/example/root_n_finding_algorithms.cpp index 0a87ceee9..aa4cf8b89 100644 --- a/example/root_n_finding_algorithms.cpp +++ b/example/root_n_finding_algorithms.cpp @@ -141,7 +141,7 @@ struct root_info std::vector times; // arbirary units (ticks). //boost::int_least64_t min_time = std::numeric_limits::max(); // Used to normalize times (as int). std::vector normed_times; - int min_time = std::numeric_limits::max(); // Used to normalize times. + int min_time = (std::numeric_limits::max)(); // Used to normalize times. std::vector iterations; std::vector distances; std::vector full_results; diff --git a/include/boost/math/distributions/exponential.hpp b/include/boost/math/distributions/exponential.hpp index bfe7e6b4a..05c49374e 100644 --- a/include/boost/math/distributions/exponential.hpp +++ b/include/boost/math/distributions/exponential.hpp @@ -117,7 +117,7 @@ inline RealType pdf(const exponential_distribution& dist, cons return result; // Workaround for VC11/12 bug: if ((boost::math::isinf)(x)) - return 0; + return 0; result = lambda * exp(-lambda * x); return result; } // pdf @@ -178,7 +178,7 @@ inline RealType cdf(const complemented2_type= tools::max_value()) - return 0; + return 0; result = exp(-c.param * lambda); return result; diff --git a/include/boost/math/distributions/non_central_chi_squared.hpp b/include/boost/math/distributions/non_central_chi_squared.hpp index 302a208ff..97f87ed4c 100644 --- a/include/boost/math/distributions/non_central_chi_squared.hpp +++ b/include/boost/math/distributions/non_central_chi_squared.hpp @@ -442,7 +442,7 @@ namespace boost // noncentral chi squared", Biometrika 46: 364. // See also: // "A comparison of approximations to percentiles of the noncentral chi2-distribution", - // Hardeo Sahai and Mario Miguel Ojeda, Revista de Matematica: Teoria y Aplicaciones 2003 10(1–2) : 57–76. + // Hardeo Sahai and Mario Miguel Ojeda, Revista de Matematica: Teoria y Aplicaciones 2003 10(1-2) : 57-76. // Note that the latter reference refers to an approximation of the CDF, when they really mean the quantile. // value_type b = -(l * l) / (k + 3 * l); diff --git a/include/boost/math/distributions/rayleigh.hpp b/include/boost/math/distributions/rayleigh.hpp index 01f38c0b0..744733a9f 100644 --- a/include/boost/math/distributions/rayleigh.hpp +++ b/include/boost/math/distributions/rayleigh.hpp @@ -182,7 +182,7 @@ inline RealType cdf(const complemented2_type= tools::max_value()) - return 0; + return 0; result = exp(-ea); return result; } // cdf complement diff --git a/include/boost/math/special_functions/detail/polygamma.hpp b/include/boost/math/special_functions/detail/polygamma.hpp index 353c148eb..0267bd3ac 100644 --- a/include/boost/math/special_functions/detail/polygamma.hpp +++ b/include/boost/math/special_functions/detail/polygamma.hpp @@ -505,7 +505,7 @@ // would mean setting the limit to ~ 1 / n, // but we can tolerate a small amount of divergence: // - T small_x_limit = std::min(T(T(5) / n), T(0.25f)); + T small_x_limit = (std::min)(T(T(5) / n), T(0.25f)); if(x < small_x_limit) { return polygamma_nearzero(n, x, pol, function); diff --git a/include/boost/math/special_functions/gamma.hpp b/include/boost/math/special_functions/gamma.hpp index 718be01d9..3a3191a80 100644 --- a/include/boost/math/special_functions/gamma.hpp +++ b/include/boost/math/special_functions/gamma.hpp @@ -162,7 +162,7 @@ T gamma_imp(T z, const Policy& pol, const Lanczos& l) { if (z < 1 / tools::max_value()) result = policies::raise_overflow_error(function, 0, pol); - result *= 1 / z - constants::euler(); + result *= 1 / z - constants::euler(); } else { @@ -238,13 +238,13 @@ T lgamma_imp(T z, const Policy& pol, const Lanczos& l, int* sign = 0) } else if (z < tools::root_epsilon()) { - if (0 == z) - return policies::raise_pole_error(function, "Evaluation of lgamma at %1%.", z, pol); + if (0 == z) + return policies::raise_pole_error(function, "Evaluation of lgamma at %1%.", z, pol); if (fabs(z) < 1 / tools::max_value()) result = -log(fabs(z)); else - result = log(fabs(1 / z - constants::euler())); - if (z < 0) + result = log(fabs(1 / z - constants::euler())); + if (z < 0) sresult = -1; } else if(z < 15) @@ -526,9 +526,9 @@ T lgamma_imp(T z, const Policy& pol, const lanczos::undefined_lanczos&, int* sig if (zz < min_arg_for_recursion) { - // Here we simply take the logarithm of tgamma(). This is somewhat - // inefficient, but simple. The rationale is that the argument here - // is relatively small and overflow is not expected to be likely. + // Here we simply take the logarithm of tgamma(). This is somewhat + // inefficient, but simple. The rationale is that the argument here + // is relatively small and overflow is not expected to be likely. if (z > -tools::root_epsilon()) { // Reflection formula may fail if z is very close to zero, let the series @@ -540,7 +540,7 @@ T lgamma_imp(T z, const Policy& pol, const lanczos::undefined_lanczos&, int* sig } return log_gamma_value; } - else + else { // No issue with spurious overflow in reflection formula, // just fall through to regular code: diff --git a/special_functions/acosh_test.hpp b/special_functions/acosh_test.hpp deleted file mode 100644 index c2dddbde7..000000000 --- a/special_functions/acosh_test.hpp +++ /dev/null @@ -1,83 +0,0 @@ -// unit test file acosh.hpp for the special functions test suite - -// (C) Copyright Hubert Holin 2003. -// Distributed under 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) - - -#include -#include -#include - - -#include - - -#include - - -template -T acosh_error_evaluator(T x) -{ - using ::std::abs; - using ::std::sinh; - using ::std::cosh; - - using ::std::numeric_limits; - - using ::boost::math::acosh; - - - static T const epsilon = numeric_limits::epsilon(); - - T y = cosh(x); - T z = acosh(y); - - T absolute_error = abs(z-abs(x)); - T relative_error = absolute_error*abs(sinh(x)); - T scaled_error = relative_error/epsilon; - - return(scaled_error); -} - - -BOOST_TEST_CASE_TEMPLATE_FUNCTION(acosh_test, T) -{ - BOOST_TEST_MESSAGE("Testing acosh in the real domain for " - << string_type_name::_() << "."); - - for (int i = 0; i <= 100; i++) - { - T x = static_cast(i-50)/static_cast(5); - - BOOST_CHECK_PREDICATE(::std::less_equal(), - (acosh_error_evaluator(x)) - (static_cast(4))); - } -} - - -void acosh_manual_check() -{ - BOOST_TEST_MESSAGE(" "); - BOOST_TEST_MESSAGE("acosh"); - - for (int i = 0; i <= 100; i++) - { - float xf = static_cast(i-50)/static_cast(5); - double xd = static_cast(i-50)/static_cast(5); - long double xl = - static_cast(i-50)/static_cast(5); - - BOOST_TEST_MESSAGE( ::std::setw(15) - << acosh_error_evaluator(xf) - << ::std::setw(15) - << acosh_error_evaluator(xd) - << ::std::setw(15) - << acosh_error_evaluator(xl)); - } - - BOOST_TEST_MESSAGE(" "); -} - diff --git a/special_functions/asinh_test.hpp b/special_functions/asinh_test.hpp deleted file mode 100644 index a058364b6..000000000 --- a/special_functions/asinh_test.hpp +++ /dev/null @@ -1,83 +0,0 @@ -// unit test file asinh.hpp for the special functions test suite - -// (C) Copyright Hubert Holin 2003. -// Distributed under 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) - - -#include -#include -#include - - -#include - - -#include - - -template -T asinh_error_evaluator(T x) -{ - using ::std::abs; - using ::std::sinh; - using ::std::cosh; - - using ::std::numeric_limits; - - using ::boost::math::asinh; - - - static T const epsilon = numeric_limits::epsilon(); - - T y = sinh(x); - T z = asinh(y); - - T absolute_error = abs(z-x); - T relative_error = absolute_error*cosh(x); - T scaled_error = relative_error/epsilon; - - return(scaled_error); -} - - -BOOST_TEST_CASE_TEMPLATE_FUNCTION(asinh_test, T) -{ - BOOST_TEST_MESSAGE("Testing asinh in the real domain for " - << string_type_name::_() << "."); - - for (int i = 0; i <= 100; i++) - { - T x = static_cast(i-50)/static_cast(5); - - BOOST_CHECK_PREDICATE(::std::less_equal(), - (asinh_error_evaluator(x)) - (static_cast(4))); - } -} - - -void asinh_manual_check() -{ - BOOST_TEST_MESSAGE(" "); - BOOST_TEST_MESSAGE("asinh"); - - for (int i = 0; i <= 100; i++) - { - float xf = static_cast(i-50)/static_cast(5); - double xd = static_cast(i-50)/static_cast(5); - long double xl = - static_cast(i-50)/static_cast(5); - - BOOST_TEST_MESSAGE( ::std::setw(15) - << asinh_error_evaluator(xf) - << ::std::setw(15) - << asinh_error_evaluator(xd) - << ::std::setw(15) - << asinh_error_evaluator(xl)); - } - - BOOST_TEST_MESSAGE(" "); -} - diff --git a/special_functions/atanh_test.hpp b/special_functions/atanh_test.hpp deleted file mode 100644 index 97a7a2615..000000000 --- a/special_functions/atanh_test.hpp +++ /dev/null @@ -1,158 +0,0 @@ -// unit test file atanh.hpp for the special functions test suite - -// (C) Copyright Hubert Holin 2003. -// Distributed under 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) - - -#include -#include -//#include - - -#include - - -#include - -template -T atanh_error_evaluator(T x) -{ - using ::std::abs; - using ::std::tanh; - using ::std::cosh; - - using ::std::numeric_limits; - - using ::boost::math::atanh; - - - static T const epsilon = numeric_limits::epsilon(); - - T y = tanh(x); - T z = atanh(y); - - T absolute_error = abs(z-x); - T relative_error = absolute_error/(cosh(x)*cosh(x)); - T scaled_error = relative_error/epsilon; - - return(scaled_error); -} - - -BOOST_TEST_CASE_TEMPLATE_FUNCTION(atanh_test, T) -{ - using ::std::abs; - using ::std::tanh; - using ::std::log; - - using ::std::numeric_limits; - - using ::boost::math::atanh; - - - BOOST_TEST_MESSAGE("Testing atanh in the real domain for " - << string_type_name::_() << "."); - - BOOST_CHECK_PREDICATE(::std::less_equal(), - (abs(atanh(static_cast(0)))) - (numeric_limits::epsilon())); - - BOOST_CHECK_PREDICATE(::std::less_equal(), - (abs(atanh(static_cast(3)/5) - log(static_cast(2)))) - (numeric_limits::epsilon())); - - BOOST_CHECK_PREDICATE(::std::less_equal(), - (abs(atanh(static_cast(-3)/5) + log(static_cast(2)))) - (numeric_limits::epsilon())); - - for (int i = 0; i <= 100; i++) - { - T x = static_cast(i-50)/static_cast(5); - T y = tanh(x); - - if ( - (abs(y-static_cast(1)) >= numeric_limits::epsilon())&& - (abs(y+static_cast(1)) >= numeric_limits::epsilon()) - ) - { - BOOST_CHECK_PREDICATE(::std::less_equal(), - (atanh_error_evaluator(x)) - (static_cast(4))); - } - } -} - - -void atanh_manual_check() -{ - using ::std::abs; - using ::std::tanh; - - using ::std::numeric_limits; - - - BOOST_TEST_MESSAGE(" "); - BOOST_TEST_MESSAGE("atanh"); - - for (int i = 0; i <= 100; i++) - { - float xf = static_cast(i-50)/static_cast(5); - double xd = static_cast(i-50)/static_cast(5); - long double xl = - static_cast(i-50)/static_cast(5); - - float yf = tanh(xf); - double yd = tanh(xd); - (void) &yd; // avoid "unused variable" warning - long double yl = tanh(xl); - (void) &yl; // avoid "unused variable" warning - - if ( - std::numeric_limits::has_infinity && - std::numeric_limits::has_infinity && - std::numeric_limits::has_infinity - ) - { - BOOST_TEST_MESSAGE( ::std::setw(15) - << atanh_error_evaluator(xf) - << ::std::setw(15) - << atanh_error_evaluator(xd) - << ::std::setw(15) - << atanh_error_evaluator(xl)); - } - else - { - if ( - (abs(yf-static_cast(1)) < - numeric_limits::epsilon())|| - (abs(yf+static_cast(1)) < - numeric_limits::epsilon())|| - (abs(yf-static_cast(1)) < - numeric_limits::epsilon())|| - (abs(yf+static_cast(1)) < - numeric_limits::epsilon())|| - (abs(yf-static_cast(1)) < - numeric_limits::epsilon())|| - (abs(yf+static_cast(1)) < - numeric_limits::epsilon()) - ) - { - BOOST_TEST_MESSAGE("Platform's numerics may lack precision."); - } - else - { - BOOST_TEST_MESSAGE( ::std::setw(15) - << atanh_error_evaluator(xf) - << ::std::setw(15) - << atanh_error_evaluator(xd) - << ::std::setw(15) - << atanh_error_evaluator(xl)); - } - } - } - - BOOST_TEST_MESSAGE(" "); -} - diff --git a/special_functions/graphics/Im_exp_on_C.png b/special_functions/graphics/Im_exp_on_C.png deleted file mode 100644 index 68fb3d963dbb0693502ff1647c80023954b583d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11293 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 L^>bP0l+XkKy$YZe diff --git a/special_functions/graphics/Re_exp_on_C.png b/special_functions/graphics/Re_exp_on_C.png deleted file mode 100644 index 7f25e8f9a8cab852938deb630a0c10ecfe6cdaff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11596 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 KxvX>p0|Ns~x}&cn1H(;br)&NT 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 diff --git a/special_functions/graphics/special_functions_blurb1.jpeg b/special_functions/graphics/special_functions_blurb1.jpeg deleted file mode 100644 index f5ca0befb469326bb621723d5e1aa91c1b42b666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2043 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+s>RQ3IC-!=eVe&>y=O*B^AYDSq_U z>;6Nxoge-)Jbd1^CD%D<`{m`ip?d4K?vB)1>o>pH==|b19XsFqx1>C-xLne*e zulj4!r^?*5>O0%cW$#q#ovZs$LuG1%iqiB{hvN(GoHD9ZD0YxzeDt58bH1dV=^vHL zrSorYcDPn!T>gl4>f&o#TP{uV7SO$#`1j1FbBwW06_XyA7|CzCku}f5*lb>&UF!n= zc{%?Xa{n{5?Rws`r~bp|gZBhKws+Zhe)z=wy8EoYd$<3*SATW#l{fDb+pzV~2`SCg z7?s!DJ_}|S+B59B{_X6AQcshYCj8Cuf?xMqNA0%Co4zWudr|DIEb-UNd{^#WyLs6% zpK}|dV_eRyN{n1oam&Hcgz?hpk7oLvaSA`&lON3Wdw1XID(lf5>&wSj&lq>)E{NaTkx)0u$_*4GqE%U)$<~=2Q?f%`$ zEe>fqB&d6L#ZC{g$eW_`(>{r>MK3#G|a7&MX-E*#j*bUluOXfy< zU;nb(w%qB;T2oo`!0mnS&V9O+I*)sXO2Eg{A{}14j5egEst7o;vo+YvioZG8ukZA+ zs=UsR<&WapGaqy2KZ`JV8+Xs*OZxsjzw;J+sxO1A8C9z(=rJ!&b%1oF0ACOw^U@k)bS#- z!$mJvYByT2uXweeb?JvA^1Kg!Bo|jNKl&h6DWA>dqBr;5gNtGg<}*$c+v(om{o#G!mG`Fh;<374%%*>K__i&o`Jm|LJ1cKY z%1P_ZQ|I|)Y%t-N(LoN@BR>ou>i-D4C-oyFzs5a#aYfjEFqJHXm)LchxD@qA~omYmaxOaGpjoMh6PbmpxdpQ7^J8rhH5?jP45=CyzHbXotp$QQrnO)Fhpow-Kp z(cd?xB$Z0HZZ-B)J}D6HF~MYs)w+Xf0SpC#b=UWE+Bh$c%G%GjHPgoDd-*)c-sIo1 z&*sffxmFq-Yo$GPT6Mwtr?b}^E|NDtxpB|lgYDY`7+o1e0vKbCAG!Kbxjd9TRWy1SKR$1)PuVYg=S7_H zhw@JQ^!=@2-#`7R51)KUPUV`NRE3|V!WH$RUtag`+=%s-xg34eNaeNML>V^k$}(>& zE!*pt=dpcgKf?Ayy70l-{HUE5OMjpCjk@f$b9dp&yBXh#eGC6imOZ^@|I2W*ZTXop z=bxW^cABOAt+3eVIm|OY{AYNxdD)Nj5D$~T>3)+BeX9y@*|OK%eZJ4^+65Q#kAB@U dKcnlN(VJAG9nuV+WlZ*GxPI#2b%Fi=O#sC%mAL=_ diff --git a/special_functions/graphics/special_functions_blurb10.jpeg b/special_functions/graphics/special_functions_blurb10.jpeg deleted file mode 100644 index 98135ee6e83ded65eceb54404e3509b85bb6b541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1178 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+z;Fx7^E5W;=dN?|%Pvzd%;hwDphs z#iIO5b&G!e<4D-_k#A*ow&>a|pKZ)KCa4s?ZB*tFG-uOV67%u?(bH3Yq(9i-wV%gS zR`0jlN3;D8Ev|Y0=5G6)HgQdsSy}bNcq8%cvrq5y3|$h=oEX-vJC)(fZtj)u6*AYE zyq+x{xvayr;G(h7lAdmbPj|1UbS-jaY2$h&8~9!6y^HoI0f8@P8ZSIO!w^aAu`FQ_@=kmL|j$Jsu^5&+!pN>60zjcaa!~Hhqms|`V z{afXjriXn<@7X6(lkmg&*^Bj$`2}80>@79f>+gN-ZT{B3&OuuzX$V!$|DLJ3dDESv z+}cxbNvzaz{H<1Fci|sjhCE9RKH0u=Z|0iR zw#-@C)}Biyp9-6}AT;^u^xg*RZy#jWcm7daQDOe*ij;frn^Io4PnEe_ZME)shi}P# zsi%|sWP7UNiQGrOO%iVion@Ht=eX(dAI0B-f2cmJZ~eu7NLT-mcJAUIWzpFu^wy~5 z%KfW#k`Bzsf41xLzjJTPb*v{vItFX)Ud_}K)?iuxBWPCnq550OhwKIaN&eBe`jyu> z=)<>-57!pGJ09BPxK!u+E|YD_r>^J+98Khkx<7UM<}ks$d_A6%=PyiQ{C^Vw@T%L~ diff --git a/special_functions/graphics/special_functions_blurb11.jpeg b/special_functions/graphics/special_functions_blurb11.jpeg deleted file mode 100644 index 6bfe22f7b8884bb6c71657ec78e190e58dd8a99a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1181 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+z-)Z~w`ze^=XBnzn6!#J~B+`~&|~ zc3;`@bL;8Xy_U;2@A>e??9$O>m9x2duVv33(B;X9K38=Xruy<)o7@lWzx@wb={JAftM}=9tgqg0@2h$1^-H*S zXFS?seA2oy-FMDr|9q*{N0xf0M!fa>tyg#cf`8XJD=X=iSwFA(;rBP67yl8O#xMM0pUTJQJ+}|l zN$&jcz0E}W_gTy7{+DMym~rE#yw(ltotrjyrtF@1A|jbBH1=47*?)%gwcJN`u^;YC z{8--h?vMS-EIW;lZre(3?|i#_-YxFG?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+z;Fx7^E5W;=dN?|%Pvzd%;hwDphs z#iIO5b&G!e<4D-_k#A*ow&>a|pKZ)KCa4s?ZB*tFG-uOV67%u?(bH3Yq(9i-wV%gS zR`0jlN3;D8Ev|Y0=5G6)HgQdsSy}bNcq8%cvrq5y3|$h=oEX-vJC)(fZtj)u6*AYE zyq+x{xvayr;G(h7lAdmbPj|1UbS-jaY2$h&8~9!6y^HoI0f8@P8ZSIO!w^aAu`FQ_@=kmL|j$Jsu^5&+!pN>60zjcaa!~Hhqms|`V z{afXjriXn<@7X6(lkmg&*^Bj$`2}80>@79f>+gN-ZT{B3&OuuzX$V!$|DLJ3dDESv z+}cxbNvzaz{H<1Fci|sjhCE9RKH0u=Z|0iR zw#-@C)}Biyp9-6}AT;^u^xg*RZy#jWcm7daQDOe*ij;frn^Io4PnEe_ZME)shi}P# zsi%|sWP7UNiQGrOO%iVion@Ht=eX(dAI0B-f2cmJZ~eu7NLT-mcJAUIWzpFu^wy~5 z%KfW#k`Bzsf41xLzjJTPb*v{vItFX)Ud_}K)?iuxBWPCnq550OhwKIaN&eBe`jyu> z=)<>-57!pGJ09BPxK!u+E|YD_r>^J+98Khkx<7UM<}ks$d_A6%=PyiQ{C^Vw@T%L~ diff --git a/special_functions/graphics/special_functions_blurb13.jpeg b/special_functions/graphics/special_functions_blurb13.jpeg deleted file mode 100644 index 98135ee6e83ded65eceb54404e3509b85bb6b541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1178 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+z;Fx7^E5W;=dN?|%Pvzd%;hwDphs z#iIO5b&G!e<4D-_k#A*ow&>a|pKZ)KCa4s?ZB*tFG-uOV67%u?(bH3Yq(9i-wV%gS zR`0jlN3;D8Ev|Y0=5G6)HgQdsSy}bNcq8%cvrq5y3|$h=oEX-vJC)(fZtj)u6*AYE zyq+x{xvayr;G(h7lAdmbPj|1UbS-jaY2$h&8~9!6y^HoI0f8@P8ZSIO!w^aAu`FQ_@=kmL|j$Jsu^5&+!pN>60zjcaa!~Hhqms|`V z{afXjriXn<@7X6(lkmg&*^Bj$`2}80>@79f>+gN-ZT{B3&OuuzX$V!$|DLJ3dDESv z+}cxbNvzaz{H<1Fci|sjhCE9RKH0u=Z|0iR zw#-@C)}Biyp9-6}AT;^u^xg*RZy#jWcm7daQDOe*ij;frn^Io4PnEe_ZME)shi}P# zsi%|sWP7UNiQGrOO%iVion@Ht=eX(dAI0B-f2cmJZ~eu7NLT-mcJAUIWzpFu^wy~5 z%KfW#k`Bzsf41xLzjJTPb*v{vItFX)Ud_}K)?iuxBWPCnq550OhwKIaN&eBe`jyu> z=)<>-57!pGJ09BPxK!u+E|YD_r>^J+98Khkx<7UM<}ks$d_A6%=PyiQ{C^Vw@T%L~ diff --git a/special_functions/graphics/special_functions_blurb14.jpeg b/special_functions/graphics/special_functions_blurb14.jpeg deleted file mode 100644 index fd9b24cbd00b502056e6577fe99e9905131a0fea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1177 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+u#gp*p3H?^+k#jQOE{gtzd~`Of>| zdmi>yek+tjH++~rOzuG(1yWiX@+}o?foxOAox9sld)oEr$_aa2!*t6_YsMvgb z9`BZYAKQ8}cI}ax-eFSf_t{G>ZvMBq`eE~Z)hwP(UG8Xq^Il4fhk*9#6MW|lm>17} zfh!4 z{P}h4f1EabNbfP-tAAA7j`bt&y}tKLvS!&H-TOo;_UftSvrPo0qmOne7fsl$@-L|K zDo=_nL-qaEKgP=|tev)gcs99s)t#uQ{7+A=mS&%gd%1nLyEgsuLxV#-(R0!Kuhtls7w$iEX=|j;(_Pzdy;*!F+q(0CbyK^vYW~!=vTaYLt}y<;2>`y1*xCR9 diff --git a/special_functions/graphics/special_functions_blurb15.jpeg b/special_functions/graphics/special_functions_blurb15.jpeg deleted file mode 100644 index abb28b420555858ea2745882b777a64d3e2ff8b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2940 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 diff --git a/special_functions/graphics/special_functions_blurb18.jpeg b/special_functions/graphics/special_functions_blurb18.jpeg deleted file mode 100644 index fdb5ec7d8dd40b4c7389ed615ab94cd366267bad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2401 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+s>R)%lf~AF~89h3?;0{d>mf&cUop zD`rI`Wn7CCG~PK;D#O`8B3O&L_ppM(eBqv`nj|2sa{&Mb-h6C;@`@CJNI;H zuXR4*sCxY7!Zd#KX)VTY*s~`1vARC87tf3npYOJLpRjl3`d5K3t7^A!NqH_!tyD?i zWKbzMYI4r=p;8W8(y9YuHr|i8?YT0-=c!y-G;__C7k_?lYju`LV5!_J;Bo5M>?H|1 zlUCdgoy}Dec*!MFIpNd+(S#xnTMiS(>5uxwencO*C3?N9Ci_vW_TgW;)6Q>sWwrK6 zSlEXA(q5aBOH*C$yz4S@i)@gY72h_Al1BPsDJ$0E%#&bqCdo4Ke#PSez>CKE!Sz69lujAUVgjP^8M1;0hias zdu~BWz8#(Ka?)JHth!Iy2L(Bg_+Iej>Ws1rFQnW%OSf*CC!6jmRkvXB);klA^Iq-w{_a1+&C?kQ zEk0dwk5q03ADealNJpJ)^cE}qx7^FKe?32RU+QPrw*1Gufe)_7hc`VxJb(YTj@o%a zLBCH6znN$4)^+b=mk1x@l~;wY>J&fT>-=y(_&-DIeY=)A&HoHJnO2uy)Tw&UwRgU< zN7BUc*y?WqxlCENrd*gZ$z{?NvG9n+EpOiLldsqxKl`8L`{Vb8-~92I{_?~1*e%zR zub5chC>4HW@$gd0+`2=Fk@w2_jz?%rJm#~C+hyIFwGOiF2NSCw?#}NLsBzAh;PzDx z-#LxDU+8XpY_u#_NcImg&OFIQ(@%+)3!FF+dHtkEN?C*wx4-+2A1@!Azghe+ba~?+ zd%dNPz2o^`lvSPGvdeefl9${4m>$m3UYqO{nrO5@_xWa~!lwqRj~Pz>XkGOu`J?)q z+K+YjAJsRT20ohWefZb8{-v2!;ccOL>-JqvQrIeZ^X08|8{$ikyjkXNX|_V=O$bMw^T@I|W~sJ6*csEjoMcrG4M#pW1HNI%TJQ=6?qH zny4S1AC3q8*!f|<--mzO^B=q}yZZGlbI{g_=~uSASkn1!-{~5?Mc(FJSM#3U`EcjG zR@cTSxdr^X)$4^`)o=P;@%*6Sk8SZ{6}P_qeza|B;Uf2neDw|4U$5xo=BKuL`C7d+ zinzh8p6SxW$f6XnfN#D-h4sVzhjZor$#=-feK74^-cc&6b?;Pd*{1_@i(Xw!ZcXm` z_U(c6$r(BVY{I+kl45VBK49waGTq-_HtX%x{Z0F%{@7nF3Ay<#`)v5J@4r&7%yiX% z7VWwyW=TcSD?{UV0TORjR(<}@AYIC-Tc`YoH{y%GK)i~a#m?Qk=KEfFzg0r#K`wXb z#>l*7+gl%Rb1q&HrS>wCP4>RE($on|-`g(U|2FeSYsnfZ!3Xsmw}tr1PHn%ZTo(MI z%vbQ2!TO*DOkE7x){!6n^*<8X>>GD7&wlfJ#Vfke#ma{Zh4b9qgCzY!6=aO87qhvi zDhOpunazE~YZa>;zWulBoToM~yf>{`wMIJmt#XxNfFxh&l}#H`)7aiJh&sn#D5)3C zh??GJt9TMaqZW&wQF8U{e3oX4P*C-Y5yK&D)m`Tl63Jn)w;;Z&Efd6A9b~9uN^Pv z?Qu=!own9=j#2!r!|JnT#90}qnbtoFtvw+3APrRZGIcR%EZ_@2xKHki$=~>+c52rY pBi5U~4cQXdE+mn&_OW+$=^YEjKRfjdk6kV~RTMJ$Y5@EHn*drHOxpke diff --git a/special_functions/graphics/special_functions_blurb19.jpeg b/special_functions/graphics/special_functions_blurb19.jpeg deleted file mode 100644 index d81d831aaaf4e8a9223892db664cec39807829bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1022 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+vPm{Vl7{fj^EetuedsM>xNDQC8Kt zg$tH#HQV^)yz1H3&1dU%#GKfSq7Eu?yU$$e{B3#&N4OE+{zu}+?z7aWU0JL6qgVA? z^WwNQ+43Fl)^=V}p8G^&+jnt~h^T#K6E1f=$~Sa6adxKzyXnWQ`i?loAFCgnZ{5fB zW9Et?j{6U8_ewq^E9FoVn+8#S%3OHPsGdr8PYZLpFv6Fc{aV{1N+6{ju=N z?S843vwEgmImH}JEnoIJs;#$JBwTBCvH1LC8>1~j9gpuzCiQOQWLa@MctM7heQSxX o`C&P^%L^}mS*vtOnp@gKJg4m2M}?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+yyb_wVwW=<1Jo&mT^i&y~~LyT9+r zhlp!y_qbeIa^upu6>5EAo1HE#VQjhZ?zXTpqt1S{xBaX&W$iv6a%Sy6!m%fG)!jQ4 z`;SS5u9?N({57`t^w!H?f4{aanUYyn%u#mxD3i9A$jObf^$wn3*#2?-Bemt~Zw@~G z&(KxRXWCnTxN6$Ohq=*Fm)^ZMF~9s?ao#D-)Ii<7mDxK3?=da$)=gmXK%O^l#UKVvovR2)JgX;F(LSK-%Y#l&aq?DpIK+xI|=!RM5SMqY(pZjVr-r-4n{ z8$%T&;zWO(ez0HShurH&c@uU2GyGAya8@bmRerjnuak(@vS+tUcy%TiPYW$-t~>OK zCslTvX}nxTvWwK=tnkgpOeEeu-G4i^P<`5FAtmii#?MlkC(Q2p&mgA3Jo`uY$Mc8k zxwpPGJ}jqv+4N>9Z=Go@m$kP17T%~gCj@Rf9Nf0{P@5;mlw(awm-26l9MjW(eE+TH zBmbs*nz`)WKXMZvd7FHQTmR_iy4y$i6TWpWw^1tH(f_81<5B4jf4$K1^3sVm3tQ6| zzP&Yi_UyawmOXnnW@~po=<{4V^YDz=DPm5Cn?fcT-xtkluyFoh{cz?Llf988oR4>3 z{QCO7aMWqB<&~2EF77U??o8n}5Y`sA=<~g}f@{^PRSP0Mh9Astxo6*W>HZ_}!}Ixm z95ng4Zk^8g&XONnw{6XyX>;<3ZrLUik24}HL84(67ad$&1K3{OXWb|9>ON1t9oPC6 zU6c7N@wZQA+I273vr9zIWs;;?XWgL-TQZf6e|EKSvP{x$3ol5yUdR8(>SNsO#V_vZ zeYjJnwE4oCryDnQNAH*)A{VovyHYN=;9Z_t#&*Sdv7a7!*45uTxr1qY*FWwG^<%Tr zdY5F2%W1dWcHCO6ZU1J!`0FT_UT&R?(>B}63vDkdsr+1)$$!uC^v>M1(Ff!NuG>ie zXW)7reBt5r!|`ctC%0TUFQc0)c6Wk7khzPK)|Pawms1K(oms*Z&t0K^=pXymJsUpE z>*t%ESzE2QSa<8r)Rq|UW^H%5G8fslZy{VuZ{F!W_onOxbKl4MgZ~-YR7Hi;{jj9q^e22kqh|$-vj{D-^1Ae diff --git a/special_functions/graphics/special_functions_blurb20.jpeg b/special_functions/graphics/special_functions_blurb20.jpeg deleted file mode 100644 index c5da84fb824f9761e002aeb718fa01effc8f4bf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2841 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+s>RQ3IC-1BhT&KDtly(jMW5Yu%4l zUG~uVa=L7uYiIdsMH!t!HMgI#U5gZ+&YbG5w&(U^|F`n#AGi-fJnh@ln7emx8?QQ?UvTguhh0Sc)F-_WOz(UCnY_No_ruRlJHAHy z>XwW7wV7fI7rn0Pox1hy-Z|S14}9mkHYwKO-D-`AiAD<(xHh}p2@ikxUNSa5`*MZ( zkzJ|Vra$7&HM<_1p}X$ZyL%Z+q*V=kKDu1uSSRFhE;)G1fj29kvoOfIiZBE^u!0D= z>W`Zr^{xHTe`wk~jZ1&zZha|wRS#3PwQWNPQWOyNS8 z`%0Cm=ieHBl=r(L_b$I}m(8PE`-gWAY-m3g7~?2Xr@U|1<$E6K?Y`PN7w#=uc;r0G zx0f;(_vpo0GMMVw_^$g?eBqy9*7SXxJ1;Me?+o8|PyO_v@e$f}4E$tg0eBs^F zD_?4zPJO%VRjc%8=Wg#8lU_;O`|NkQ?Pb%?bqP5eQ*;>Lh6FIWGKezYzj3^lZ>H)K z?#e=u$w%{20(B<31*VkxJXy76Bb!2kq=5V$BL@HK^i16?;^75{b)PKbPMPGe)}&F& zse|*h*@-7PJabnZUtns>P&8lQpLm7&qir+OmsDIj_3P1n|6SFm!!}*bFWH$i^X>Aj zWx`RuB6ALw7PRCYQ#ohEC}Xzqw_*+Vwf92bYWa^$s|#H=F;R5i^vAaK-do%5dn;}^ z@p#+TeSH$wZaF?XBFc6$@~QluvLwd&AB7*jYyEKWkKm*K3|x_C*`_b83Cb7AHn{UD zJX~YaYlHaA>A_BFl`MjPmq&>6iqyqu|9)w(WM_Wv-o2YI=RChs%DrOk+T5hd<+H*$ zCb})yY;5>|fl*~%Lje2SKbk*2FZdIGb*rzo>xcQBUluNph~tCY$;X=TD5AkQm4Sy`i=|dAMy9x=d`g;Qr2A%|7xGX-l8Kp+q->sUb(w_hvr5fpVhWB@xj^r!~aA- zvh7`T>mcjYr>&3w&OdnksF<6l)U%A+OqRK+3Ej`cJOh(%B`e6i|Ii%sao_fZS<1)n zX?>9IFtyfoaM)hQ7x`$bpy}2<2i4j#pJy!NHU9W)Lq?BK&Avp}=YMz$i&xbI{J6Y6 z=6>|;_!qO<=0DtPm%YWvIX79ZKYfKxPvd2cyi)H?H&S(DR9R(`IU|Z~nLFKf}t;W{;oW+-c4bb>W|x zy!ao(i~lr!2tVB4VH2Le=8iX4<}S7M4^N+bPmqOEsVn(A}p zPLmW_yztmQKCVd?&o1EvWm6yBZ;jLV$ls&0kNMvPsdoz>O>Nw2ye8X@wPaew zVvm-G30D{0I;!N#VP7i2;ws~HhQB!ZBm1#1sedaUmHeIjPv_){R~K&|G`W;j$FHi; zVm_5CIaZ>_X7b7A$@?<-3LF^Z_Aj}2Co3v;-r~w7cVCu^hkZP&+j`sS@~zz(X>Gwg zlU!mswT_vWoUo2;Ls+igQI@_!)9?Ki-hUs@TD-jO?0<&M&wBH6zVtWR^Swzh-*#(a*X={UYBciR9%;JuIO`Dm zY=LTS0QZupQ%#ip3A6ZT+D9u=L-=59gh)uhB0#J^xKD)6GfR*)!B4 zg}4iXB)*?kl9bL&>ptgVa9SzGd3)-I^nHq&6HxT zTx*Rgln!{ru}ZUvd=y=GX?}X_0rArQ)_)RLOfvtNE_-Q}H*v|UUHiZ7+nJl1EMtGG z$Yfs4y}Yvv_FUFUOD`=}s_dvNczyi>qbozj{I{Zy{5uYs^t07y?fiIe^13^*jw}3E zXH7cLrJRVX$svJvK!vjioG6Sl zy;Nr$|7xP|hu6pNab5UwF>kf*zU>dC&!&~lFBU7EB^z}ylxxNTXK8`ZzE2WbpZ_y_ z=>2zP{+Eb+S7I y8@G7Z+J*0QOi$-Iq`&2~?bbcz+BN4DU3X?I4iskVZLr$~YKwpyBq)Ua|C<1P8W6ky diff --git a/special_functions/graphics/special_functions_blurb21.jpeg b/special_functions/graphics/special_functions_blurb21.jpeg deleted file mode 100644 index d81d831aaaf4e8a9223892db664cec39807829bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1022 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 diff --git a/special_functions/graphics/special_functions_blurb23.jpeg b/special_functions/graphics/special_functions_blurb23.jpeg deleted file mode 100644 index ee5d3ccd1417155abed177bcc4f50618071d4c8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1370 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+z;Fx7^E5W;=dN?|%Pvzd%;hwDphs z#iIO5b&G!e<4D-_k#A*ow&>a|pKZ)KCa4s?ZB*tFG-uOVQerRpC-qT2wk=X z#if0$Z#T(x(*Et4XLDQEJ#_2kWdd7@-Jkj_`rxt2U}Ak)$g%Rg0KQv?UR9rv%I>v# zcJx~2BEc9FpEE0!l}^}fFTJU>VxpsB)2{ZA+7o;HkJU?7%sx;jbJ6ra1JAzcGxx+l zJS!d0_3u)2zuD=)tGOjFTXbbE{tVXGBc#)#5`TB9;oRF(m{)$(?<&z}&%E&Jp3=VG zs!M*gwoR9r7kqlxt8cHQts_2kdE757-N7`{EV#2jh<+%kFTm7M*`~(=1CN>#2PKTs(__%7~Y&wfORrfip)KRA6|QG`4KVswN%*l^703@;_jE1@0strLp)5|es-!! zkxIF?%mR^f!Fgpi9S>yLkG^lX&s}Goc`I%1N9}{Z!Z!ZxT@m$4EckBbx9!1>Ph+F+ zoMbZj=($b0f75ZE7dt*Dra8Ge^8T3l!TONBaGjL%hlx*je0bl!HtJ0Dtryp}DRDg9 znrd)c+Ix28T9s{#f<8h{7vBb$_3$th-Dj$id}QBx&-mkihQ@a`l56za^}h022VAuA rdcVXyy*xjELB_1~Nx5%RJrn1j-MGU#?2-o4@)IE<&TmT?|K9`vvJ@-4 diff --git a/special_functions/graphics/special_functions_blurb24.jpeg b/special_functions/graphics/special_functions_blurb24.jpeg deleted file mode 100644 index fdbbd1951541442eb8ad6a42a76f048bae97b8b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1339 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+z-)Z~w`ze^=XBnzn6!#J~B+`~&|~ zc3;`@bL;8Xy_U;2@A>e??9$O>m9x2duVv33(B;X9K38mgYPxPbr z{6B;bU!SM_(QkpymfftuCi_Arn?+t#cIh)spX6Td;^LZCmKw@3L4#?1^Pc?V$E)q% z#>%^XWL-DsqW0n9)i1@ZtWQ0C>fRG|PbJ(V_;i@Aibl_7x8(Gn-|T%qnlA6%W4Yp$ z9m}=co{cfDqI|^5!-Bneq*~`5xmMh%pv!$~;@#*|OSBhEP`vTLXfH#B-^53?$;Y*S z>(=D#x$-sEI_l&1o59hSzr0NkY<8a~-OrUR)qSkwa>2Fp+g>V_PQ3VxN#o#zR?#nO z87h|d>|xbEs^4E#y1aLvz<-9!AMCCl>b5Vv7x#MQ()*cJYp*_i*I1q_6V_I#p0D$A z^R&#jk3%b_tjt+0#DCNH;kWh=#STA|AMi$pesG(*FiXm9&9An`^d*ODSKiM&o3Fa} z>}%g-9b=!%k+*zR<^^r(Wm+w-vnPk~g`DLN?+@D__1~y}m|A1{VR?7`W}EvP>+@b* z+co{>p0o4Pr#?S+FYdjb?d`(3-E$sh+h(1Mhzp8*JW1SLWs>n(hU^#ey#Ev=1h5AWwH ziT3A=spxw2>)GS5OIz;Rao@Q2=+U!B0!yMRgH#vpu6Vn6nx&A%MS;}~w;L>0$G6T? z`e3&9gYZN9)-Cp;KbjBS=h@1sul_M@b@Adg1rf{I*Sy?zZIX&U%cnDK@6IxMJ1w(a P^J#M@Z!M#P{QsK(G{`!1 diff --git a/special_functions/graphics/special_functions_blurb25.jpeg b/special_functions/graphics/special_functions_blurb25.jpeg deleted file mode 100644 index a74d12b7c6bf2f3115bffa97dfba75fd533c3abf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+z-)Z~w`ze^=XBnzn6!#J~B+`~&|~ zc3;`@bL;8Xy_U;2@A>e??9$O>m9x2duVv33(B;X9K38Sb!lbwg4o;c zq6_DF-ac)W^K@2q#nm`ft!S;|S^hVRzt#B~Zka3oP`|y#lsoR=ikUU~x&IkBo*uuI z=()Jde@o^u&P^Nd+&TXJL(roT%SZ_U?s@V*v>*OwV95S<>-=Gx48eQx$JIL&%BTH^ z&%AIe&NX}a?Vq14Hg0cw^vd#a*BzD2rzg6)RBKNEXW;qxLHM80{2zY%A9~c-|7U2K z{@eL?^zZb4f~)zr*X};^x$g3}e(f`#_uQX<=I-wDvvWQ>$YsrE{}cM*`nLs}f9zi9 z_&8qXrJV8h>x$Q%{TCc%Z(sNB>4z_2pOp-@%zYbn-d%7*aH)pa#0hIvCYkJa4PgI& F69A%V(CGjG diff --git a/special_functions/graphics/special_functions_blurb26.jpeg b/special_functions/graphics/special_functions_blurb26.jpeg deleted file mode 100644 index ce753c5941fff6dc7a980e9ac2aa1f7a376e40cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1182 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+z-)Z~w`ze^=XBnzn6!#J~B+`~&|~ zc3;`@bL;8Xy_U;2@A>e??9$O>m9x2duVv33(B;X9K38|U#9N3Ufr5{xnNIkQq(>4eSp(wj;vCORrM?P?FHJ+UWm;m6|-m(6?-&s*a)KX&JA z$B&bu?3z`VO|7mhUco(s_Y9M?MPl|eHI_=RpOr4XHxIQWG1#p9r}l&Uar#@!2mPEC z;m6|?=bb-1Pwe_1=knC$SytOR^UH0@e+gxN&)c}g@KssP`kIY9Kfg_7OE7=f@XM*e zCiqw!)AUEvkMFg*eC$3){gyw>i++G=kQsTZV@3%bLKIz`G zugf-0lU$a$=B?T!f6XYj#?bz0ab^tfZyzYzr~aXB;e-3#0hw~<8?Ts3pM1LQ%9quZ zx^WlRFWIqi`=q;5jw^2Oesi%s!P|t%`LoP*`G@Ck`ahW7`cM3YJja&(9Ba4rKfIZ{ zUSZdUnOmxVe&xt@UATYNYyaQYTkmXm=b6gtv+CU%F2g8>r~erqdS%|{{Lhfl&+*6o zNBW1w;a5z~dLO=Zylw00-LhevY*RMhdvWPTzjnZ0XVDhT?7FafXCqv9?%83iZtoPp H{{JQb?ECDE diff --git a/special_functions/graphics/special_functions_blurb27.jpeg b/special_functions/graphics/special_functions_blurb27.jpeg deleted file mode 100644 index e20a2054425bf6deb0ac0b3fe44dfcda74017efb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1176 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+z-)Z~w`ze^=XBnzn6!#J~B+`~&|~ zc3;`@bL;8Xy_U;2@A>e??9$O>m9x2duVv33(B;X9K38_ux_ z|E}5pkm+OF-b%5V4&<6x|0?V6-1PZm`@!kgd{;R0K8(KJS-N^hWXc&K&7{QG zquDQCF?{rwtl*08ikJKH+F!ax@!#bSeBBTJ=6mnidp+2D-=(k7t54r$dUwlWEzc*v zdy$vZbuQmNw(6s1(9JOGpt{rZH-F0PUGic-XN~p46;a=KT~0r&&i~=AXLp&)S0<=- zv7dqO)V^oW?DscK7g~7g#DRvG5C0hs#`FJRj^B2zPV%us-=}|;Hjd1DwjcWK*LLZX zcC6j~^AnHu?lBh+JTDXWP}yJ4B_vS$nXK@){2#^-&v!>HKh7)v@O}H+n#fhrM}_aX zF1dN^!#TOH&v$pZws>t1SNi8NFZRi)iB8Mk%{?H)R3rZ}{BZoOrt^>9wX*lt6fdbb ycR!{*me;OXL{4t^?&*gwMxW_8bg6u6w5^QWLEkG2qTHOeO!Bz&SJXlN|4jhLg5#_J diff --git a/special_functions/graphics/special_functions_blurb28.jpeg b/special_functions/graphics/special_functions_blurb28.jpeg deleted file mode 100644 index c0f122a1889af9f730236aa865db546f94d839d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+t3?Se^Ed&1>o|N3kF775aX3p3H|3 yshaZeS-ov-mmKR$yE|u@@15?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+u#gp*p3H?^+k#jQOE{gtzd~`Of>| zdmi>yek+tjH++~rOzuG(1yWiX@+}o?foxOAox9sld)oEr$_aa2!*t6_YsMvgb z9`BZYAKQ8}cI}ax-eFSf_t{G>ZvMBq`eE~Z)hwP(UG8Xq^Il4fhk*9#6MW|lm>17} zfh!4 z{P}h4f1EabNbfP-tAAA7j`bt&y}tKLvS!&H-TOo;_UftSvrPo0qmOne7fsl$@-L|K zDo=_nL-qaEKgP=|tev)gcs99s)t#uQ{7+A=mS&%gd%1nLyEgsuLxV#-(R0!Kuhtls7w$iEX=|j;(_Pzdy;*!F+q(0CbyK^vYW~!=vTaYLt}y<;2>`y1*xCR9 diff --git a/special_functions/graphics/special_functions_blurb3.jpeg b/special_functions/graphics/special_functions_blurb3.jpeg deleted file mode 100644 index f94f565b7ffa5f59e14204103bc515e36a3814ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 997 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+zO1!Fv`zwiZ6V&+%h@$dB3OwF@f_ zKPvCB5!P?L?{)d{rcIkJhsTLcI%wsfcjosNi_=>sTbbWdVHD1Kyy-*u@r;u5Y$sR$ zap*o8wf64u?mvl3qfRdPVIO+kW_PT8{JzcGJ>90K8?@){2~gUy&}X*frZ+MT-1Sob zl(LHI&dAySSpMO0#PvVsD>LQ9u5Mkc_wKWEt=%WdH;bl)3f*`$ZTD2!2U;!@nlA24 zQ7-bZt!uD(?EZJ2ozM$8TYKS>{d}=U*LAIW|*h1Z@d*43VboZ`f!spo@>NDdU zJ{=d@T{$Ub?%TQkqBUYad>{YN)%~YfWBK8IkFfu&SC7v8nC{;logKDw@|ihK*Rz#f zdJa0cDuyQaim)$=oCcoIleR`qe6HmoS8PnhB za=T43wx6-WVS=a9j?{AYRhLRm*NS^@zPRSe?n(C!-LuY^_wHTx$(w>sE2mY?eLC|5 SbIBxQYnjc4Dzg~=-vj^*^@7O& diff --git a/special_functions/graphics/special_functions_blurb4.jpeg b/special_functions/graphics/special_functions_blurb4.jpeg deleted file mode 100644 index 8b52f006b4bdb922dd1eb18711e7674882db1bca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 687 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 Ag8%>k diff --git a/special_functions/graphics/special_functions_blurb8.jpeg b/special_functions/graphics/special_functions_blurb8.jpeg deleted file mode 100644 index 1ca4a7794b0378f7ac63567ed42854d8bce364c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1223 zcmex=?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+z-)Z~w`ze^=XBnzn6!#J~B+`~&|~ zc3;`@bL;8Xy_U;2@A>e??9$O>m9x2duVv33(B;X9K38viq&3^{#(;0EL0sr2gGTn+rEAxOZM%Ht!!0F;iO09G^cc9@ zkytf>AwEkeJAP|=yW)n6Hjdxwc`D?OOq(@rp;>!v{&Jn~)91;~x}~vxNo(#p*~Qy- zs3uN4^;1tmGl<>sVg1d=57ZmC-i{afq5Yu!@P7vW*J08B&aQYFC$(YIuI4I}{HJF{ zyk72-`)BT>bgXz}z){n3Di*4cWK7OoDVcU)m-}-A8 zIWIc2&Hm?|zod|Vt{d?bVaM;I3|Ffg(*f&l{*FfuW-u(GjpaB^`oGBAUsKmmaka3YSZQ|TeofBv2)jPzs11A%*enb$SlZU&+u#gp*p3H?^+k#jQOE{gtzd~`Of>| zdmi>yek+tjH++~rOzuG(1yWiX@+}o?foxOAox9sld)oEr$_aa2!*t6_YsMvgb z9`BZYAKQ8}cI}ax-eFSf_t{G>ZvMBq`eE~Z)hwP(UG8Xq^Il4fhk*9#6MW|lm>17} zfh!4 z{P}h4f1EabNbfP-tAAA7j`bt&y}tKLvS!&H-TOo;_UftSvrPo0qmOne7fsl$@-L|K zDo=_nL-qaEKgP=|tev)gcs99s)t#uQ{7+A=mS&%gd%1nLyEgsuLxV#-(R0!Kuhtls7w$iEX=|j;(_Pzdy;*!F+q(0CbyK^vYW~!=vTaYLt}y<;2>`y1*xCR9 diff --git a/special_functions/graphics/trigonometric.png b/special_functions/graphics/trigonometric.png deleted file mode 100644 index 41e0cb3f47125c38bd9147bdd9d6698dbd85d191..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7373 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 -#include -#include -#include - - -#include - - -#include - - -BOOST_TEST_CASE_TEMPLATE_FUNCTION(sinc_pi_test, T) -{ - using ::std::abs; - - using ::std::numeric_limits; - - using ::boost::math::sinc_pi; - - - BOOST_TEST_MESSAGE("Testing sinc_pi in the real domain for " - << string_type_name::_() << "."); - - BOOST_CHECK_PREDICATE(::std::less_equal(), - (abs(sinc_pi(static_cast(0))-static_cast(1))) - (numeric_limits::epsilon())); -} - - -BOOST_TEST_CASE_TEMPLATE_FUNCTION(sinc_pi_complex_test, T) -{ - using ::std::abs; - using ::std::sinh; - - using ::std::numeric_limits; - - using ::boost::math::sinc_pi; - - - BOOST_TEST_MESSAGE("Testing sinc_pi in the complex domain for " - << string_type_name::_() << "."); - - BOOST_CHECK_PREDICATE(::std::less_equal(), - (abs(sinc_pi(::std::complex(0, 1))- - ::std::complex(sinh(static_cast(1))))) - (numeric_limits::epsilon())); -} - - -void sinc_pi_manual_check() -{ - using ::boost::math::sinc_pi; - - - BOOST_TEST_MESSAGE(" "); - BOOST_TEST_MESSAGE("sinc_pi"); - - for (int i = 0; i <= 100; i++) - { - BOOST_TEST_MESSAGE( ::std::setw(15) - << sinc_pi(static_cast(i-50)/ - static_cast(50)) - << ::std::setw(15) - << sinc_pi(static_cast(i-50)/ - static_cast(50)) - << ::std::setw(15) - << sinc_pi(static_cast(i-50)/ - static_cast(50))); - } - - BOOST_TEST_MESSAGE(" "); -} - - diff --git a/special_functions/sinhc_test.hpp b/special_functions/sinhc_test.hpp deleted file mode 100644 index 95375576d..000000000 --- a/special_functions/sinhc_test.hpp +++ /dev/null @@ -1,83 +0,0 @@ -// unit test file sinhc.hpp for the special functions test suite - -// (C) Copyright Hubert Holin 2003. -// Distributed under 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) - - -#include -#include -#include -#include - - -#include - - -#include - - -BOOST_TEST_CASE_TEMPLATE_FUNCTION(sinhc_pi_test, T) -{ - using ::std::abs; - - using ::std::numeric_limits; - - using ::boost::math::sinhc_pi; - - - BOOST_TEST_MESSAGE("Testing sinhc_pi in the real domain for " - << string_type_name::_() << "."); - - BOOST_CHECK_PREDICATE(::std::less_equal(), - (abs(sinhc_pi(static_cast(0))-static_cast(1))) - (numeric_limits::epsilon())); -} - - -BOOST_TEST_CASE_TEMPLATE_FUNCTION(sinhc_pi_complex_test, T) -{ - using ::std::abs; - using ::std::sin; - - using ::std::numeric_limits; - - using ::boost::math::sinhc_pi; - - - BOOST_TEST_MESSAGE("Testing sinhc_pi in the complex domain for " - << string_type_name::_() << "."); - - BOOST_CHECK_PREDICATE(::std::less_equal(), - (abs(sinhc_pi(::std::complex(0, 1))- - ::std::complex(sin(static_cast(1))))) - (numeric_limits::epsilon())); -} - - -void sinhc_pi_manual_check() -{ - using ::boost::math::sinhc_pi; - - - BOOST_TEST_MESSAGE(" "); - BOOST_TEST_MESSAGE("sinc_pi"); - - for (int i = 0; i <= 100; i++) - { - BOOST_TEST_MESSAGE( ::std::setw(15) - << sinhc_pi(static_cast(i-50)/ - static_cast(50)) - << ::std::setw(15) - << sinhc_pi(static_cast(i-50)/ - static_cast(50)) - << ::std::setw(15) - << sinhc_pi(static_cast(i-50)/ - static_cast(50))); - } - - BOOST_TEST_MESSAGE(" "); -} - - diff --git a/special_functions/special_functions_test.cpp b/special_functions/special_functions_test.cpp deleted file mode 100644 index c696b62c8..000000000 --- a/special_functions/special_functions_test.cpp +++ /dev/null @@ -1,139 +0,0 @@ -// test file for special functions. - -// (C) Copyright Hubert Holin 2003. -// Distributed under 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) - - -#include - - -#include - -#include -#include - -template -struct string_type_name; - -#define DEFINE_TYPE_NAME(Type) \ -template<> struct string_type_name \ -{ \ - static char const * _() \ - { \ - return #Type; \ - } \ -} - -DEFINE_TYPE_NAME(float); -DEFINE_TYPE_NAME(double); -DEFINE_TYPE_NAME(long double); - - -typedef boost::mpl::list test_types; - -// Apple GCC 4.0 uses the "double double" format for its long double, -// which means that epsilon is VERY small but useless for -// comparisons. So, don't do those comparisons. -#if defined(__APPLE_CC__) && defined(__GNUC__) && __GNUC__ == 4 -typedef boost::mpl::list near_eps_test_types; -#else -typedef boost::mpl::list near_eps_test_types; -#endif - -#include "sinc_test.hpp" -#include "sinhc_test.hpp" -#include "atanh_test.hpp" -#include "asinh_test.hpp" -#include "acosh_test.hpp" - - - -boost::unit_test::test_suite * init_unit_test_suite(int, char *[]) -{ - ::boost::unit_test::unit_test_log. - set_threshold_level(::boost::unit_test::log_messages); - - boost::unit_test::test_suite * test = - BOOST_TEST_SUITE("special_functions_test"); - - BOOST_TEST_MESSAGE("Results of special functions test."); - BOOST_TEST_MESSAGE(" "); - BOOST_TEST_MESSAGE("(C) Copyright Hubert Holin 2003-2005."); - BOOST_TEST_MESSAGE("Distributed under the Boost Software License, Version 1.0."); - BOOST_TEST_MESSAGE("(See accompanying file LICENSE_1_0.txt or copy at"); - BOOST_TEST_MESSAGE("http://www.boost.org/LICENSE_1_0.txt)"); - BOOST_TEST_MESSAGE(" "); - -#define BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR(fct) \ - test->add(BOOST_TEST_CASE_TEMPLATE(fct##_test, test_types)); - -#define BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR_NEAR_EPS(fct) \ - test->add(BOOST_TEST_CASE_TEMPLATE(fct##_test, near_eps_test_types)); - - -#define BOOST_SPECIAL_FUNCTIONS_COMMON_TEST \ - BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR(atanh) \ - BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR(asinh) \ - BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR(acosh) \ - BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR(sinc_pi) \ - BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR(sinhc_pi) - -#define BOOST_SPECIAL_FUNCTIONS_TEMPLATE_TEMPLATE_TEST \ - BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR_NEAR_EPS(sinc_pi_complex) \ - BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR_NEAR_EPS(sinhc_pi_complex) - - -#ifdef BOOST_NO_TEMPLATE_TEMPLATES - -#define BOOST_SPECIAL_FUNCTIONS_TEST \ - BOOST_SPECIAL_FUNCTIONS_COMMON_TEST \ - BOOST_TEST_MESSAGE("Warning: no template templates; curtailed functionality."); - -#else /* BOOST_NO_TEMPLATE_TEMPLATES */ - -#define BOOST_SPECIAL_FUNCTIONS_TEST \ - BOOST_SPECIAL_FUNCTIONS_COMMON_TEST \ - BOOST_SPECIAL_FUNCTIONS_TEMPLATE_TEMPLATE_TEST - -#endif /* BOOST_NO_TEMPLATE_TEMPLATES */ - - - BOOST_SPECIAL_FUNCTIONS_TEST - - -#undef BOOST_SPECIAL_FUNCTIONS_TEST - -#undef BOOST_SPECIAL_FUNCTIONS_TEMPLATE_TEMPLATE_TEST - -#undef BOOST_SPECIAL_FUNCTIONS_COMMON_TEST - -#undef BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR - -#undef BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR_NEAR_EPS - -#ifdef BOOST_SPECIAL_FUNCTIONS_TEST_VERBOSE - - using ::std::numeric_limits; - - BOOST_TEST_MESSAGE("epsilon"); - - BOOST_TEST_MESSAGE( ::std::setw(15) << numeric_limits::epsilon() - << ::std::setw(15) << numeric_limits::epsilon() - << ::std::setw(15) << numeric_limits::epsilon()); - - BOOST_TEST_MESSAGE(" "); - - test->add(BOOST_TEST_CASE(atanh_manual_check)); - test->add(BOOST_TEST_CASE(asinh_manual_check)); - test->add(BOOST_TEST_CASE(acosh_manual_check)); - test->add(BOOST_TEST_CASE(sinc_pi_manual_check)); - test->add(BOOST_TEST_CASE(sinhc_pi_manual_check)); - -#endif /* BOOST_SPECIAL_FUNCTIONS_TEST_VERBOSE */ - - return test; -} - -#undef DEFINE_TYPE_NAME