2
0
mirror of https://github.com/boostorg/math.git synced 2026-02-13 12:32:15 +00:00
Commit Graph

1827 Commits

Author SHA1 Message Date
jzmaddock
9d0dac1df9 gcd: add the function objects back.
Improve the gcd/lcm tests.
2017-04-04 18:29:45 +01:00
jzmaddock
e4c0fdb0f2 Make gcd/lcm independent of type_traits and mpl.
Later we'll try and reconcile this version with that in Boost.Integer.
2017-04-02 20:10:46 +01:00
jzmaddock
8c9709b317 Fix cases where wchar_t is not an intrinsic type.
Fixes: https://svn.boost.org/trac/boost/ticket/12944
2017-03-30 19:35:59 +01:00
Nick Thompson
fff12aa16b Improve documentation for trapezoidal quadrature, explaining the role of the L1 norm calculation. Throw correct error type. 2017-03-28 13:56:18 -05:00
Nick Thompson
9f58f0d337 Add facility to check L1 norm and hence condition number of the quadrature sum. Throw when condition number exceeds the number of significant digits of the type. 2017-03-26 13:45:50 -05:00
pabristow
c5ee664a51 Refactored with policies and passes tests and timing. 2017-03-23 14:15:37 +00:00
pabristow
bdee37743d Bug in values near to -exp(-1) corrected. 2017-03-13 10:03:33 +00:00
pabristow
0048d41dd6 Added new constants expminusone and sixth 2017-03-10 13:06:44 +00:00
pabristow
cea2465e3e Need expminusone constant 2017-03-06 18:23:54 +00:00
pabristow
94d3cf4043 refactored to use local test_value.hpp 2017-03-06 18:10:52 +00:00
Nick Thompson
4efe710855 Add tests detailing the use cases which make it difficult to use std::unique_ptr for pimpl idiom. Also, test that evaluating the spline outside the interpolation region succeeds as best it can. 2017-03-06 11:12:51 -06:00
Nick Thompson
136e7411f5 Adaptive Trapezoidal Quadrature
This routine estimates the definite integral of a function f.
Assuming that f is periodic, it can be shown that this routine converges exponentially fast.
In fact, the test cases given exhibit exponential convergence with decreasing stepsize.

A potential improvement is using the Bulirsch sequence rather than the Romberg sequence to schedule the refinements.
However, the convergence is so rapid for functions of the class specified above that there seems to be no need at present.

This code is cppcheck clean, and runs successfully under AddressSanitizer and UndefinedBehaviorSanitizer.
2017-03-05 19:05:41 -06:00
Nick Thompson
446f8c415d Cite Kress's book 'Numerical Analysis' in MLA format. 2017-03-05 10:49:22 -06:00
Nick Thompson
2506d7ed1f Use PIMPL so that the interpolant can be passed as a functor. 2017-03-02 17:16:21 -06:00
Nick Thompson
2b9d88d352 Fixes suggested by code review of PR #57. 2017-03-02 11:54:55 -06:00
Nick Thompson
b157403fd9 Do not use Kahan summation to compute average; use update procedure that cannot overflow recommended by Knuth. 2017-02-27 20:58:42 -06:00
Nick Thompson
fee20ab932 Given a function f, known at evenly spaced samples y_j = f(a + jh),
this function constructs an interpolant using compactly supported cubic b splines.
The advantage of using splines of compact support over traditional cubic splines
is that compact support makes the splines well-conditioned.

The interpolant is constructed in O(N) time and can be evaluated in constant time.
Its error is O(h^4), and obeys the interpolating condition s(x_j) = f(x_j) for all samples.
In addition, f' can be estimated from s', albeit with lower accuracy.

This routine is cppcheck clean, and is clean under AddressSanitizer and MemorySanitizer.
2017-02-23 18:21:06 -06:00
jzmaddock
4c19a1ec34 Remove unneeded parameters in new beesel J/K code.
Also fix some multiprecision-conceptual errors.
2017-01-29 19:18:36 +00:00
jzmaddock
38eb9d3e38 Update docs for new Bessel K0 and K1 approximation code. 2017-01-24 18:35:54 +00:00
jzmaddock
fe66909b23 Reorder some declarations to keep GCC happy.
Remove some dead code.
2017-01-23 19:34:34 +00:00
jzmaddock
7922883e7b Add improved approximations for K0 and K1.
Based on http://www.advanpix.com/2016/01/05/rational-approximations-for-the-modified-bessel-function-of-the-second-kind-k1-for-computations-with-double-precision/
2017-01-23 17:45:51 +00:00
jzmaddock
2dc47a631a Improve constant initialization for I0 and I1. 2017-01-23 17:45:00 +00:00
jzmaddock
cc8e300bae Update I0 and I1 to use better approximations from Pavel Holoborodko
See: http://www.advanpix.com/2015/11/11/rational-approximations-for-the-modified-bessel-function-of-the-first-kind-i0-computations-double-precision/
2017-01-18 18:56:27 +00:00
pabristow
ffb025ca2c First very rough prototype of Lambert W function, example of calculating diode current versus voltage, and some tests, including multiprecision and fixed_point types. Not yet using policies and trouble near the singularity at z=-exp(-1) and large z. 2016-12-22 18:30:27 +00:00
pabristow
78320adb7a return 0 to T(0) in float_distance changed because fixed-point requires explicit construction 2016-12-05 16:41:18 +00:00
jzmaddock
1844134d07 Changes to call correct error handlers in C99 annex F cases. 2016-11-30 18:57:11 +00:00
zerotypos-found
3871f6a7e8 Fix issues in the inspection report
- Remove Non-ASCII characters (i.e. replace dashes with hyphens).
- Protect min from macro expansion.
2016-10-25 11:56:09 +09:00
jzmaddock
37fe39f2d9 Merge pull request #50 from kartikmohta/fix/boost-zero-polynomial-evaluate
Fix boost::math::polynomial::evaluate for the zero polynomial
2016-10-19 19:33:24 +01:00
jzmaddock
3370ea2f79 Add missing #include.
Fixes https://svn.boost.org/trac/boost/ticket/12537.
2016-10-19 19:27:37 +01:00
jzmaddock
21ab379ee9 Merge branch 'develop' of https://github.com/boostorg/math into develop 2016-10-19 19:22:51 +01:00
jzmaddock
4787d870c6 Suppress some msvc warnings. 2016-10-19 19:22:37 +01:00
Kartik Mohta
9dad3e2b62 Fix boost::math::polynomial::evaluate for the zero polynomial 2016-10-17 16:13:25 -04:00
zerotypos-found
4b9823768b Replace tabs to whitespace 2016-10-11 12:44:32 +09:00
jzmaddock
50e7ea3863 Sub-resultant GCD is only for integer types. 2016-08-26 18:40:11 +01:00
jzmaddock
accfe2f7eb Fix msvc compile failure, and add a using declaration so we overload boost::math::gcd. 2016-08-26 18:33:10 +01:00
jzmaddock
f888dcb129 Including polynomial.hpp should get the gcd overloads as well. 2016-08-26 18:32:27 +01:00
Jeremy W. Murphy
64c887a3c9 Add overload of gcd() for polynomials with multi-precision integral coeffs.
And add a unit test to show that it works.
2016-08-25 23:02:03 +10:00
Jeremy W. Murphy
d817274f3f Update some doxygen. 2016-08-25 23:00:59 +10:00
Jeremy W. Murphy
783dc6af46 Merge branch 'develop' into polynomial_ufd_gcd 2016-08-25 22:08:48 +10:00
inkstink
c9d9f446c5 fixed typos for real this time 2016-08-19 20:42:14 -04:00
inkstink
950d3990e4 fixed typos 2016-08-19 20:33:24 -04:00
pabristow
7786c7d5a8 Added Thomas Luu references 2016-08-09 16:05:20 +01:00
jzmaddock
53403a58f7 minor Intel fix. 2016-07-29 11:41:28 +01:00
Jeremy W. Murphy
3348f83fb7 Assert the loop invariant, degree(u) >= degree(v). 2016-07-27 17:47:03 +10:00
Jeremy W. Murphy
3b1f362a37 Let's not provide the subresultant algorithm as a default. 2016-07-26 19:07:51 +10:00
Jeremy W. Murphy
af290b272d The algorithm appears to assume that u is not smaller than v. 2016-07-26 19:07:21 +10:00
jzmaddock
d3a570e91a Fix Intel C++ test failures 2016-07-22 09:27:15 +01:00
Jeremy W. Murphy
2e024bd02d Merge branch 'polynomial_ufd_gcd' into polynomial_ufd_gcd_2
# Conflicts:
#	test/test_polynomial.cpp
2016-07-15 18:46:35 +10:00
Jeremy W. Murphy
579d6681bc Merge branch 'develop' into HEAD
# Conflicts:
#	test/test_polynomial.cpp
2016-07-15 18:42:53 +10:00
Jeremy W. Murphy
ce1d534414 Add case for zero to leading_coefficient and unit test. 2016-07-15 18:12:51 +10:00