2
0
mirror of https://github.com/boostorg/math.git synced 2026-01-19 04:22:09 +00:00

105 Commits

Author SHA1 Message Date
ckormanyos
55a2181e8b Modify extreme test case from #1228 2024-12-23 18:51:41 +01:00
René Ferdinand Rivera Morell
41f07b0794 Add support for modular build structure. (#1160)
* Make the library modular usable.

* Fix -Wundef warnings

* Switch to library requirements instead of source. As source puts extra source in install targets.

* Add missing NO_LIB usage requirements.

* Remove boost-root relative include path.

* Add missing import-search for cconfig/predef checks.

* Add requires-b2 check to top-level build file.

* Sync upstream.

* Fix typo in test framework reference.

* Bump B2 require to 5.2

* Update copyright dates.

* Move inter-lib dependencies to a project variable and into the build targets.

* Switch to /boost/test//included target for header only mode of Boost.Test.

* Adjust doc build to avoid boost-root references.

* Update build deps.

* Fix project props not applying to the no_eh.obj compile.

* Update build deps.

* Add missing import-search.

* Fix float128_type checks to actually disable tests. Problem was that build is a non-free feature. Which can't be acquired through a usage requirement.

* GPU Batch 7

Fix igamma_large support on device

Add GPU support to toms748

Add GPU support to igamma_inv

Add GPU markers to gamma_inva

Add GPU Markers to lgamma_small

Remove STL usage from gamma

Remove NVRTC workaround

Fix fraction use of STL headers

Mark gamma functions in fwd

Disable declval on all GPU platforms

Disable more unneeded code on device

Add forward decl for NVRTC tgamma

Disable unneeded items for all GPU

Change workaround for missing overloads

Rearrange definition location

Add include path to cuda now that workaround is removed

Fix NVRTC incompatibility with recursion and forward decls

Add tgamma_ratio CUDA and NVRTC testing

Fix NVRTC handling of gamma_p_derivative

Add gamma_p_derivative CUDA and NVRTC testing

Remove recursion from gamma_incomplete_imp

Add SYCL testing of igamma, igamma_inv, and igamma_inva

Ignore literal-range warnings

Remove use of static const char* for function name

Fix missing CUDA header

Remove calls under NVRTC to fwd decl

Add more nvrtc workarounds

Use builtin erfc instead of header cycle

Add CUDA and NVRTC testing of gamma_p_inv

Adjust tolerances

Add GPU support to chi squared dist

Fix static local variable

Add chi squared dist SYCL testing

Add chi squared dist CUDA testing

Add chi squared dist NVRTC testing

Add GPU support to weibull dist

Add weibull dist SYCL testing

Add weibull dist CUDA testing

Add weibull dist NVRTC testing

* Fix policy macro definition for MSVC platforms

* Don't add quadmath lib for has_128bit_floatmax_t check. It was accidentally copy+pasted.

* Fix incorrect name for float128 type check that caused it to not apear.

---------

Co-authored-by: Matt Borland <matt@mattborland.com>
2024-09-06 08:45:23 -04:00
René Ferdinand Rivera Morell
de3462bed3 Don't use obsolete predef/checks/predef.jam B2 module. 2024-04-19 09:12:50 -05:00
Nick
7887d43f83 Numerical evaluation of Fourier transform of Daubechies scaling funct… (#921)
* Numerical evaluation of Fourier transform of Daubechies scaling functions.

* Update example/calculate_fourier_transform_daubechies_constants.cpp

Co-authored-by: Matt Borland <matt@mattborland.com>

* Update example/fourier_transform_daubechies_ulp_plot.cpp

Co-authored-by: Matt Borland <matt@mattborland.com>

* Update include/boost/math/special_functions/fourier_transform_daubechies_scaling.hpp

Co-authored-by: Matt Borland <matt@mattborland.com>

* Update include/boost/math/special_functions/fourier_transform_daubechies_scaling.hpp

Co-authored-by: Matt Borland <matt@mattborland.com>

* Rename include file to reflect it implements both the scaling and wavelet.

* Add performance to docs.

* Update test/math_unit_test.hpp

Co-authored-by: Matt Borland <matt@mattborland.com>

* Add boost-no-inspect to files with non-ASCII characters.

---------

Co-authored-by: Matt Borland <matt@mattborland.com>
2023-06-13 08:05:00 -07:00
Nick
4aac532a88 Add Estrin's method for polynomial evaluation (#932)
* Add Estrin's method for polynomial evaluation

N.B.: This is a slightly modified version of the code provided by Thomas Dybdahl Ahle in a github issue.

[CI SKIP] [ci skip]

* Add comparisons to Horner with std::array.
[CI SKIP]

* Add Estrin's method for polynomial evaluation

N.B.: This is a slightly modified version of the code provided by Thomas Dybdahl Ahle in a github issue.

[CI SKIP] [ci skip]

* Fix hang in n=0 case.

* Fix out of bounds access in test.

* Fix endsect for estrin.qbk.

* Apply clang-format to make the 'inspect' stage happy.

* Add type_traits header to includes.

* Add ulp plot.

* Document decreased accuracy of Estrin's method.

* Add assertion for size of scratch pad

* Remove std::size since it is C++17

* Add C++14 testing

* estrin -> evaluate_polynomial_estrin.

---------

Co-authored-by: jzmaddock <john@johnmaddock.co.uk>
Co-authored-by: Matt Borland <matt@mattborland.com>
2023-02-04 10:32:06 -08:00
Rose
fe48a3bba7 Junk removal
Removal of junk headers, typos, or mistakenly duplicated keywords
2022-11-05 12:14:12 -04:00
jzmaddock
10bd7be0f1 ellint_1/2 performance tweaks.
Add Google bench to probe changes more easily.
Update graphs and docs.
2022-08-17 19:21:03 +01:00
Matt Borland
e5eae18f14 Chatterjee Correlation Coefficient (#770)
* Implement rank vector

[ci skip]

* Add documentation. Admittedly terrible.

* Add unit tests.

* Cleanup method of detecting if execution policies are valid or not

[ci skip]

* Implement and test chatterjee correlation

[ci skip]

* Add spot checks and special handling for constant Y

[ci skip]

* Add performance file

[ci skip]

* Add execution policy support to rank

[ci skip]

* Remove duplicates from v when generating the order vector

[ci skip]

* Fix macro error for use of <execution>

[ci skip]

* Use explicit types instead of auto to avoid warnings 

[ci skip]

* Add execution policy testing to rank

[ci skip]

* Add threaded implementation

[ci skip]

* Added threaded testing

* Fix formatting and ASCII issues in test

* Fix more ASCII issues

* refactoring

* Fix threaded impl

* Remove non-ASCII apostrophe

[ci skip]

* Doc fixes and add test comparing generally to paper values

* Significantly tighten tolerance around expected values from paper

* Change tolerance for sin comparison

Co-authored-by: Nick Thompson <nathompson7@protonmail.com>
2022-05-25 08:13:24 -07:00
Matt Borland
e8c40e309c Implement logaddexp (#763)
* Implement logaddexp

* Disable test for ASAN

* Implement logsumexp

* Add performance file and include results in the docs

* Address review comments

* Simplify overflow test and comply with min/max guidelines

* Minor cleanup

* FIxes to comments and docs [ci skip]

* Return status code.

Co-authored-by: Nick Thompson <nathompson7@protonmail.com>
2022-02-24 07:55:25 -08:00
Matt Borland
3e950d9e3a Color Maps (#752)
* Color Maps

* Make color maps constexpr

[ci skip]

* Add newton fractal example

[ci skip]

* Remove some unused code.

* Make the color map base class generic in size

Fix naming convention
[ci skip]

* Begin documentation.

* Move helper functions from example into tools header

[ci skip]

* Update docs and remove non-ASCII characters from example

* Add image to docs

* Reduce size of virdis_newton_fractal from 1.31MB to 131KB

[ci skip]

* Add performance file

* Don't force linear complexity and fix CI failure for old clang versions

* Convert color_maps to free functions.

* Add missing header and remove constexpr test

* Convert tabs to spaces

[ci skip]

* Fix compile tests and make static constexpr uniform across data

* Add swatches to docs.

* Fix image links in docs

[ci skip]

Co-authored-by: Nick Thompson <nathompson7@protonmail.com>
2022-02-09 11:19:38 +01:00
Matt Borland
358b302f10 More C-Style Cast Removal (#746) 2022-01-22 10:36:50 +02:00
Matt Borland
e1601f129a Complete CI test with standalone mode (#680) 2022-01-14 08:12:22 -08:00
Nick
60d54e565f Quartic roots. (#718) 2022-01-02 17:58:09 -08:00
Nick
923ed19a07 Cubic roots (#703) 2021-10-26 20:54:29 -07:00
vindex10
78df4a61a8 no need for template in scale ranges 2021-07-30 09:32:33 +00:00
vindex10
1da2c29a31 fix domain error 2021-07-30 09:17:09 +00:00
vindex10
810e84d60d add test distributions mode benchmark 2021-07-30 09:10:25 +00:00
Nick
af14cdaf47 Bezier polynomials. (#650)
* Bezier polynomials.

* Bezier polynomials.

* Performance test.

* Implement de Casteljau's algorithm.

* Documentation and cleanup.

* Use thread_local storage to increase performance of interpolation.

* Inspect tool doesn't like asserts or anonymous namespaces.

* Test convex hull property of Bezier polynomial and add float128 tests.

* Allow editing of control points.

* Add .prime member function. Fix bug when scratch space size is larger than control point size. Document alternative implementations found in Bezier and B-spline techniques.

* Submit failing unit test so I don't forget to fix it later

* Add indefinite integral and tests.

* Do not test on gcc < 9 on MingW.
2021-07-01 19:31:51 -04:00
Nick
769f4f690d Interpolate a uniform grid with a bilinear function. (#643)
* Interpolate a uniform grid with a bilinear function.

* Typo removal.

* Invalid syntax in Jamfile.

* Do domain verification before computation.

* Fix OOB access on print.

* pimpl the class so it can be shared between threads.

* Add google/benchmark file to measure the performance of the bilinear interpolation.

* Fix up docs.

* Remove non-ASCII characters from print statements. Add a float128 test.

* Improve the documentation of the bilinear uniform class.

* Remove float128 as it doesn't support to_string.

* Don't use decltype(fieldData.size()) as the indexer; that makes MSVC 14.2 choke. Use RandomAccessContainer::size_type.

* Use ADL for to_string for compatibility with multiprecision.

* Improve error message which rows*cols != fieldData.size().
2021-06-22 10:38:00 -04:00
jzmaddock
858e8a66e9 Merge pull request #586 from mborland/gini
Fix for issue #585
2021-04-06 18:16:23 +01:00
Matt Borland
1924e3179c Complete redo of parallel gini calculation 2021-03-31 22:04:35 +03:00
jzmaddock
5f178548e0 Fix inspect issues under reporting/ 2021-03-30 11:34:39 +01:00
Matt Borland
8ebac14382 Bulk replacement of BOOST_MSVC 2021-03-23 18:39:09 +03:00
Matt Borland
26711525ca Remove uses of boost/cstdint without header called 2021-03-21 16:13:10 +03:00
Matt Borland
c1f7a55aa6 Merge remote-tracking branch 'origin/develop' into assert [ci skip] 2021-03-16 20:30:05 +03:00
Madhur Chauhan
68d6a75f7c Fibonacci numbers (#376)
* Fibonacci: Initial commit. Working.

* Fibonacci: Address Nick's comments. Added unchecked factorial.

* Fibonacci: Improved overflow testing

* Fibonacci: Added unit tests

* Fibonacci: Performance report

* Fibonacci: Nick's comments - Complexity

* Fibonacci: Add UT to Jamfile

* Make Fibonacci and UT C++03 friendly.

Add UT to Jamfile.

* Fibonacci: Remove GMP dependency

* 1. Added fibonacci generator with unit tests
2. Added example of reciprocal fibonacci constant

* [CI SKIP] Fibonacci: First cut at documentation

* Fibonacci: Finishing up changes [CI SKIP]

* Fibonacci: Removing unnecessary html files

* fibonacci: rename to unchecked_fibonacci

* fibonacci: remove documentation

Co-authored-by: Created by Ansible <madhur@dev-sng-build1.kdev>
2021-03-16 09:11:10 -04:00
Matt Borland
d59c734c5e Remove boost.assert 2021-03-14 12:22:26 +03:00
Matt Borland
5ae92ba0c3 Replace several boost types [ci skip] 2021-02-15 16:00:08 +03:00
Matt Borland
91ae2bfc77 Bivariate Stats Policies (#503)
* Add parallel impl and change seq impl [CI SKIP]

* Validate seq impl [CI SKIP]

* Remove old impl

* Add user interfaces [CI SKIP]

* Floating point covariance validated [CI SKIP]

* Integer covariance validated [CI SKIP]

* Change correlation_coeff impl interface [CI SKIP]

* Cleanup [CI SKIP]

* correlation passes all parameters for par impl
[CI SKIP]

* Finish framework [CI SKIP]

* Add correlation coefficient test cases

* Add benchmark and make small changes
[CI SKIP]

* Update docs
2021-01-30 11:09:12 -05:00
Matt Borland
1eb3c71f8a Implement Policies in Statistics (#434)
* Initial Commit [WIP][CI SKIP]
Policies for mean implemented and forced vectorization

* First cut at integer variance [CI SKIP]

* Functional variance impl [WIP][CI SKIP]

* Work on variance [CI SKIP]
Details are now moved into detail files.
Recursively decomposes sufficient range size until max threads achieved.
Single failing test for integral, not implemented for Reals.

* Parallel integer variance complete [CI SKIP]

* All variance policies complete [CI SKIP]

* Update mean_and_sample_variance [CI SKIP]

* Median complete for all types [CI SKIP]

* Median absolute deviation complete for all types
[CI SKIP]

* Refactored sequential first four moments impls
[CI SKIP]

* Setup test cases for first four moments [WIP]
[CI SKIP]

* Sequential impl pass [CI SKIP]

* Parallel interface impl. Fails some tests
[CI SKIP]

* Interquartile range passes for all existing test
[CI SKIP]

* Gini coefficient generally implemented
Does not support long double or cpp_bin_float_50s
[CI SKIP]

* Sample gini coef implemented w/same constraints
[CI SKIP]

* Add benchmarks [CI SKIP]

* First four moments complete for most types
[CI SKIP]

* Skewness restructured. Currently INOP for non-seq
[CI SKIP]

* Fix floating point skewness [CI SKIP]

* Skewness complete [CI SKIP]

* Kurtosis complete [CI SKIP]

* Gini coefficient complete [CI SKIP]

Removes atomics which expands number of compatible types.

* Mode complete [CI SKIP]

Additionally mode now supports floating types by using an unordered_map to store frequency

* Garbage cleanup [CI SKIP]

* Doc updates [CI SKIP]

* Mean cleanup [CI SKIP]

* Cleanup variance [CI SKIP]

Remove duplicate impls that vary only be return type

* Variance Cleanup [CI SKIP]

Remove duplicate impls

* Skewness cleanup [CI SKIP]

* Update performance [CI SKIP]

* Add swap file to gitignore [CI SKIP]

* Add missing comma [CI SKIP]

* Improve par mode performance regression [CI SKIP]
[WIP] Parallel mode still ~2 orders of magnitude slower

* mode performance improvement [CI SKIP]

* Improved data handling - mode [CI SKIP]

* Additional overloads to match STL proposal
[CI SKIP]

* Updates to mode and documentation

* Remove dependency and fix todo [CI SKIP]

* Minor fixes [CI SKIP]

* Fix multiprecision issues [CI SKIP]

* Remove dependency. Minor change to thread counting
[CI SKIP]

* Standardize seq mean impl [CI SKIP]

* Fix doc brackets [CI SKIP]

* Remove duplicated sort on gini coef [CI SKIP]

* C++11 all that is required for sequential methods
[CI SKIP]

* Fixes for CI failure

* More CI fixes

* Fixes for MSVC issues
Fix gitignore merge conflict
Adjust test tol to match others

* Fix MSVC lang macro

* More small fixes for vinatge compilers

* Minor fix for MSVC 14.2 c++17 [CI SKIP]

* Cleanup docs, test file, and remove cruft
[CI SKIP]

* Delete par_unseq tests [CI SKIP]

* Change link to accumulators [CI SKIP]

* Add bigobj flag to failing build

* Remove redundant impl [WIP][CI SKIP]

* Initial cut at linear decomposition [WIP][CI SKIP]

* Passes tests [CI SKIP]

* Various CI fixes

* More CI fixes

* Delete extra impl and add linker flags

* Try CI without TBB

* Restrict compiler support

* Restrict c++ version
2021-01-22 09:42:16 -05:00
Suyash Patil
01888dc929 fixed CSS property 2020-10-30 01:11:33 +05:30
Evan Miller
18ed616376 Kolmogorov-Smirnov distribution (#422)
* Kolmogorov-Smirnov distribution #421

Add a new distribution, kolmogorov_smirnov_distribution, which takes a
parameter that represents the number of observations used in a
Kolmogorov-Smirnov test. (The K-S test is a popular test for comparing
two CDFs, but the test statistic is not implemented here.)

This implementation includes Kolmogorov's original 1st order Taylor
expansion. There is a literature on the distribution's other
mathematical properties (higher order terms and exact version); this
literature is summarized in the main header file for anyone who may
want to expand the implementation later.

The CDF is implemented using a Jacobi theta function, and the PDF is a
hand-rolled derivative of that function. Quantiles plug the CDF and PDF
into a Newton-Raphson iteration. The mean and variance have nice
closed-form expressions, and the mode uses a dumb run-time maximizer.

This commit includes graphs, a ULP plotter for the PDF, and the usual
compilation and numerical tests. The test file is on the small side, but
it integrates the distribution from zero to infinity, and covers the
quantiles pretty well. As of now the numerical tests only verify
self-consistency (e.g. distribution moments and CDF-quantile relations),
so there's room to add some external checks.

* Implement skewness for K-S distribution [CI SKIP]

The third moment integrates nicely with the help of Apery's constant
(zeta_three). Verify the result via quadrature.

* Implement kurtosis for the K-S distribution

Verify the result via quadrature.
2020-09-04 08:48:51 -04:00
Evan Miller
d7141cd353 Jacobi Theta functions (#394)
* Jacobi Theta functions

Implementations, tests, and ULP plotting programs are provided for the
four Jacobi Theta functions per #373. Twenty-four public C++ functions
are provided in all, covering various precision-preserving scenarios.

Documentation for collaborators is provided in the code comments. Proper
documentation for end users will be provided when the implementation and
APIs are finalized.

Some tests are failing; this implementation is meant to start a
conversation. The core dilemma faced by the author was that large values
of |q| resulted in slow convergence, and sometimes wildly inaccurate
results. Following the implementation note in DLMF 20.14, I added code
to switch over to the imaginary versions of the theta functions when |q|
> 0.85.  This restored accuracy such that all of the identity tests
passed for a loose-enough epsilon, but then lost precision to the point
that the Wolfram Alpha spot checks failed. It is the author's hope that
someone with floating-point experience can tame the exponential dragons
and squeeze the ULPs back down to a reasonable range when |q| is large.

When #392 is merged I will add more thorough value tests, although I
fully expect them to fail until the underlying precision issues are
resolved.

As a final note, the precision issues do not affect the z=0 case - the
ULP plots indicate these return values within 2 ULP across all valid
|q|. So that's a start.

* [CI SKIP] Jacobi theta: Add special-value tests and more

* Add tests covering z=0 special values from MathWorld

* Add missing real_concept header

* Replace M_PI and friends with constants::pi etc

* Use BOOST_MATH_STD_USING in more places

* Jacobi theta: Test two more of Watson's identities [CI SKIP]

See https://mathworld.wolfram.com/JacobiThetaFunctions.html

(Equations 48 and 49)

* Improve precision of Jacobi theta functions [CI SKIP]

Rewrite the private imaginary versions to use double-sided summations
following DLMF 20.13.4 and 20.13.5. This cuts down the worst of the
precision issues by a factor of 10, and gets more of the tests to pass.

I am confident enough in the code path to eliminate the compile-time
__JACOBI_THETA_USE_IMAGINARY flag. In fact the imaginary-z code paths
are now enabled for all |q| > 0.04, i.e. most legal values of q.

More extensive tests will be needed to illuminate any remaining
precision issues.

* Jacobi theta: Make changes suggested in #394 [CI SKIP]

* Add LICENSE notice to main file

* Document convergence criteria

* Eliminate eps*eps = 0 logic. This causes some disagreement with the
zero returned by Wolfram Alpha for z=0, q > 0.99 in the fourth function.
Mathematically, the fourth function is never exactly zero, so I don't
trust Wolfram here.

* Per code-review comments, remove multiplications by floating-point 2.

* Tweak the plotting programs to display their titles, and to uniformly
use `float` as their CoarseType and `long double` as their
`PreciseType`.

* Add quadrature tests to Jacobi theta functions [CI SKIP]

The quadrature tests revealed a problem in the m1 functions: they too
should switch to the _IMAGINARY logic for q > exp(-pi), or will suffer
from slow convergence. Fix them.

Also tighten tolerances for many tests from sqrt(eps) to 100 * eps.

* Test Jacobi thetas against elliptic functions and elliptic integrals [CI SKIP]

See:

* https://dlmf.nist.gov/22.2
* https://dlmf.nist.gov/20.9#i

* Test Jacobi Thetas against their Laplace transforms [CI SKIP]

See:

* https://dlmf.nist.gov/20.10#ii

I did find some disagreement, and dropped the negative sign from the
theta1 equation. DLMF's theta2 and theta3 Laplace transform equations do
not agree at all with the computed values - will need to investigate.

In the meantime, the two implemented equations agree to 4 EPS so I am
keeping them.

* Add a note on using log1p with Jacobi theta functions [CI SKIP]

See discussion:

* https://github.com/boostorg/math/pull/394#issuecomment-655871762

* Add random data tests to Jacobi Theta functions [CI SKIP]

Add a test data generator program for the Jacobi theta functions.
This program will produce data for the tau parameterization, so that
precision isn't lost during the log-transformation. This distinguishes
it from the Wolfram Alpha data, which is parameterized by q.

A few of these new random-data tests are failing, but not by obscene
margins (< 100 EPS). These failures will be addressed when the test
tolerances are finalized.

* Add small-tau tests and simplify Jacobi Theta code [CI SKIP]

Add tests for small tau (i.e. large q). The tests are failing with mean
~ 200 EPS and max ~ 800 EPS. These look like worst-case input, and
should be the focus of future accuracy improvements.

This commit also simplifies the _IMAGINARY code by abstracting all of
the loops into a single svelte function.

* Add user documentation for Jacobi Theta functions [CI SKIP]

* Add function graphs to Jacobi Theta docs [CI SKIP]

* Define Jacobi Theta test tolerances [CI SKIP]

* Add implementation note on Jacobi theta functions [CI SKIP]

* Consolidate Jacobi Theta ULPs plotting programs [CI SKIP]

* Fix q domain checking of jacobi_theta4 [CI SKIP]

* Add ULPs plots to Jacobi Theta docs [CI SKIP]

Also add the built HTML files for easy evaluation. A full rebuild is
needed for the new docs to appear in the indexes.

* Add missing Jacobi Theta ULPs plots [CI SKIP]

* Add LaTeX source for Jacobi Theta equations [CI SKIP]

* Remove unused Jacobi Theta PNG equations [CI SKIP]

* Add Jacobi Theta performance script [CI SKIP]

Provided by @NAThompson.

* Remove vestigial eps*eps check from jacobi_theta3 [CI SKIP]

* Update Jacobi Theta docs per code review comments [CI SKIP]

* Enable arg promotion for Jacobi Theta functions [CI SKIP]

Add Jacobi theta functions to the instantiation tests and fix up
everything needed to make them pass. This changes the function
signatures to use promote_args.

* Fix Jacobi Theta plotting script [CI SKIP]

This script broke when the promote_args API was added.

* Change Jacobi Theta convergence criterion [CI SKIP]

Compare the non-oscillating part of the delta to the previous one.
This avoids some headaches comparing the delta to the partial sum,
because the partial sum can be a small number due to the oscillating
component alternating signs.

Because successive terms involve either q^n^2 or exp(-(pi*n)^2),
convergence should still happen pretty quickly. Graphs have been updated
and tests still passs with no noticeable difference.
2020-08-15 18:51:47 -04:00
Nick
cbd2af2890 Cohen acceleration (#415)
* Cohen acceleration

Accelerates convergence of an alternating series by a method designed by Cohen, Villegas, and Zagier.
2020-08-09 09:55:56 -04:00
Nick
fa23c83bb1 Laplace limit. (#409) 2020-07-27 21:26:24 -04:00
Nick
326faa4c28 Reciprocal Fibonacci constant and Dottie number. (#407) 2020-07-25 09:26:38 -04:00
Matt Borland
699d326f64 Implemented mode and associated tests (#390)
* Implemented mode and associated tests

* Clarity and complexity changes

* Added google benchmark

* Small changes to mode. More tests.

* Seperated into sorted and non-sorted functions

* Fixed data types and removed copying

* Fixed bounds checking

* Additional tests and cleanup.

* Added tests for std::list and std::forward_list

* Small testing changes and documentation

* Added modes memory allocation and faster insertion

* Changed return type, and modified tests

* Removed copied iterator and edge cases.

* Documentation fixes
2020-07-09 13:28:29 -04:00
Nick
4e510da7fd Performance reporting for constants (#366)
* Performance reporting for constants [CI SKIP]

* Remove itrunc overflow. [CI SKIP]
2020-06-06 09:11:52 -04:00
Nick
1186f1a7ff rsqrt (#361)
* rsqrt

* Link docs into math.qbk. [CI SKIP]

* Demo performance with a compiler that generates good instructions [CI SKIP]
2020-05-30 22:34:56 -04:00
Nick
9a45e6a358 AGM 2020-05-29 21:50:25 -04:00
Nick
c59659f4ed Reinch's modification to Clenshaw recurrence (#339)
* Reinch's modification to Clenshaw recurrence. [CI SKIP]

* Convert Chebyshev tests to math_unit_test.hpp

* Performance of translated Chebyshev Clenshaw recurrence. [CI SKIP]

* Prepare to use modified Clenshaw recurrence in Chebyshev transform.

* Remove unused headers from Chebyshev transform test [CI SKIP]

* Update Chebyshev transform tests to use math_unit_test.hpp
2020-04-25 09:01:05 -04:00
jzmaddock
875a8ca9b5 Update Linux performance results. 2020-04-03 23:49:28 +01:00
jzmaddock
08ce839e82 Update performance results on Win64. 2020-04-03 13:37:39 +01:00
jzmaddock
1e0179c883 Remove dispatching via mpl and stick to boost::integral_constant.
Simplify the dispatching logic to use mpl::if_ and broken compiler workarounds less often.
Fixes: https://github.com/boostorg/type_traits/issues/133.
2020-01-13 15:14:48 +00:00
Brian Wignall
56740d2257 Fix more typos, after another typochecker bug fix 2019-12-26 09:33:10 -05:00
pabristow
0ab00c3f9d [CI SKIP] changes to get inspect program problem-free, but one test failure in recurrence.cpp 2019-08-23 09:25:22 +01:00
jzmaddock
1783c3a74c Math: Fix inspection report errors. 2017-11-09 19:39:32 +00:00
jzmaddock
f6495af64c Polynomial: more simplifications and modernizations.
Also update msvc performance results.
2017-08-21 13:15:39 +01:00
jzmaddock
4e5c49cf28 Polynomial: Update msvc performance results. 2017-08-20 09:41:12 +01:00
jzmaddock
b70d7b1359 Add polynomial performance test. 2017-08-20 08:28:41 +01:00