Commit Graph

2189 Commits

Author SHA1 Message Date
jzmaddock
207005dcfb 1F1: Don't use infinity in hypergeometric_1F1_bessel.hpp, it breaks the concept checks. 2019-06-04 17:48:38 +01:00
Nick Thompson
725544c1fb small details [CI SKIP] 2019-06-04 12:13:59 -04:00
Nick Thompson
a48551221e Merge branch 'ooura_fourier_transform' of https://github.com/boostorg/math into ooura_fourier_transform [CI SKIP] 2019-06-04 12:00:13 -04:00
Nick Thompson
b06fbdbc5f merge develop [CI SKIP] 2019-06-04 11:54:51 -04:00
Nick Thompson
a97edb1139 Allow use of std::array [CI SKIP] 2019-06-04 11:47:17 -04:00
Nick
8f8b56019d Add missing include [CI SKIP] 2019-06-04 10:28:34 -04:00
jzmaddock
9432e32afa
Merge pull request #210 from boostorg/catmull_cxx11
Backport catmull_rom.hpp to C++11.
2019-05-30 21:03:48 +01:00
Nick
18feb0fc2a Documentation, more unit tests [CI SKIP] 2019-05-30 13:25:53 -04:00
Nick Thompson
9e21a89675 fix move constructor use [CI SKIP] 2019-05-30 11:12:38 -04:00
Nick
2f725f0299 Tests for vector-valued barycentric rational. [CI SKIP] 2019-05-29 15:52:23 -04:00
Nick Thompson
1f9e18e63b First pass at vector-valued interpolation in barycentric rational 2019-05-29 11:35:54 -04:00
jzmaddock
e415650f86 prime: Correct value of max_prime and add test.
Fixes https://github.com/boostorg/math/issues/214.
2019-05-26 11:45:35 +01:00
jzmaddock
15bfc148c7 roots.hpp: correct flaw in previous commit.
If the next step jumps out of bounds, we need to fix up the sign of
the result, otherwise the bounds get incorrectly updated.
2019-05-26 09:56:22 +01:00
jzmaddock
70162dbcb8 Update second order root finding code to bracket root when required.
When min and max differ by many orders of magnitude (as happens when one is
zero for example), then bisection can take a very long time to iterate down to
the root.  Instead use a bracketing strategy which doubles the step size with
each iteration until a bracket is found, then repeat recursively as required
until we have a reasonably small interval.  Note that this only kicks in when
a Halley step goes out of bounds and we're therefore forced to thrash around
looking for the root.  Fixes: https://github.com/boostorg/math/issues/204.
2019-05-25 18:18:20 +01:00
jzmaddock
bbcd180273 catmull_rom - second try at back porting to C++11. 2019-05-23 08:54:11 +01:00
jzmaddock
1b10acf47f Backport catmull_rom.hpp to C++11.
See https://github.com/boostorg/math/issues/208.
2019-05-22 19:38:34 +01:00
jzmaddock
9803ed1fa0
Merge pull request #207 from boostorg/ellint-range
Update the range of the elliptic integrals to support the k > 1 case.
2019-05-20 13:34:50 +01:00
jzmaddock
d11eb67c67 ellint_d: extend range to k > 1 same ellint_1/2/3. 2019-05-19 08:54:17 +01:00
jzmaddock
a033166f7f Elliptic Integrals: extend range of ellint_1/2/3.
See https://github.com/boostorg/math/issues/183.
2019-05-18 19:36:22 +01:00
Nick Thompson
c8062fbc90 Allow generic random access containers other than std::vector for Catmull-Rom. 2019-05-16 18:03:57 -04:00
jzmaddock
03cb3f04b5 Ellint_1: remove redundant check.
Fixes https://github.com/boostorg/math/issues/196.
2019-05-13 19:40:36 +01:00
jzmaddock
63f09b4c30 ellint_3: rearrange special cases for better performance and to avoid redundant check.
Fixes https://github.com/boostorg/math/issues/197.
2019-05-13 19:16:00 +01:00
jzmaddock
1e4703becb 1F1: remove some cases from direct series evaluation with negative z: better to go via the large abz code instead. 2019-05-13 18:05:19 +01:00
jzmaddock
d690ab88e9 1F1: regular series: when the maxima of the series is a long way from the origin, jump straight to it and work outwards from there. 2019-05-13 18:03:53 +01:00
jzmaddock
1e7a3e1e38 pFq: Figure out where the maxima of the series are and work outwards from there. 2019-05-13 18:02:53 +01:00
jzmaddock
a75d67b523 1F1: Update costs and preconditions in large abz case. 2019-05-13 18:01:42 +01:00
jzmaddock
c759981a2a Improve performance of sin_pi and cos_pi:
Use a static_cast to int when available for parity checking as it's much faster than itrunc.
Don't check for overflows in the result, since we know the result is in [-1,1].
2019-05-03 19:11:03 +01:00
jzmaddock
24b410d0b0 unchecked_factorial: correct numeric_limits usage to not instantiate numeric_limits<__float128>. 2019-04-30 18:22:16 +01:00
jzmaddock
9b1e5561af LambertW: break dependency to cstdfloat.hpp - it causes all sorts of failures based on include order. 2019-04-29 18:29:38 +01:00
jzmaddock
f265221bf6 Merge branch 'develop' of https://github.com/boostorg/math into develop 2019-04-28 20:36:53 +01:00
jzmaddock
e125ac18ab unchecked_factorial: when using a non-builtin type, default to the builtin versions if the precision is small enough. Requires updating beta.hpp as well. 2019-04-28 20:36:05 +01:00
jzmaddock
e414e316ab
Merge pull request #191 from boostorg/float128_patches_2
Next set of float128 patches for better std lib support.
2019-04-27 19:03:48 +01:00
John Maddock
067e778d75 Merge branch 'autodiff' of https://github.com/pulver/math into autodiff 2019-04-23 18:04:27 +01:00
jzmaddock
2bc18d3d44 On hypergeometric_soc_2014: working 2019-04-23 17:58:20 +01:00
jzmaddock
350d9a3cd1 1F1: Correct use of precision changing in pFq.
Correct test values which were effected by the above issue.
2019-04-21 19:03:54 +01:00
jzmaddock
70809e3c06 1F1: Add heuristic for large a in negative b regions. 2019-04-21 19:02:31 +01:00
jzmaddock
eddde433ec 1F1: Correct negative b regions for large a case. 2019-04-17 18:39:27 +01:00
jzmaddock
648ebfdc25 1F1: Add regularized version. 2019-04-17 18:27:42 +01:00
jzmaddock
2e1e8a0038 Supress macro expansion of isless etc 2019-04-14 12:09:44 +01:00
jzmaddock
f520bc9dff 1F1: Allow log_pochhammer to work when the argument is a negative integer as long as it doesn't cross the origin. Remove special series code for b < 0 as this now always goes to the checked implementation. 2019-04-14 09:50:35 +01:00
jzmaddock
b265ce14cf 1F1: Improve method selection logic for a,b < 0. 2019-04-14 09:49:11 +01:00
jzmaddock
08a47dba2d 1F1: Correct precision obtained calculation in hypergeometric_pFq. 2019-04-14 09:47:27 +01:00
jzmaddock
b3b0dd36de 1F1: correct rescaling in hypergeometric_1F1_checked_series_impl. 2019-04-14 09:46:17 +01:00
Nick
165cf9e480 Vectorize mean calculation. 2019-04-13 17:22:24 -04:00
jzmaddock
91731ab5fa 1F1: Fix up b < 0 domain for extended precision types.
Update docs for b < 0 case.
2019-04-08 18:25:40 +01:00
jzmaddock
b8c9267aec 1F1: better map out the regions for b < 0 where forwards/backwards recursion are stable and make use of them. 2019-04-05 18:56:46 +01:00
jzmaddock
fb4c9f669d pFq: Make sure we're using the correct precision. 2019-04-05 18:55:21 +01:00
jzmaddock
a94c402327 1f1: Make calls to tgamma/lgamma qualified. 2019-04-05 18:54:47 +01:00
jzmaddock
9b0d249f68 pFq: Add rescaling if term when b crosses the origin underflows. 2019-04-05 18:54:10 +01:00
jzmaddock
805161a5c8 1F1: Correct some conceptual errors in hypergeometric_1F1_by_ratios.hpp. 2019-04-05 18:53:23 +01:00
Nick Thompson
166e5fb513 Remove control character(?) from comment. [CI SKIP] 2019-04-03 19:39:49 -04:00
jzmaddock
4bc056bf9e
Make __float128 iostream operator inline. 2019-04-02 08:34:25 +01:00
jzmaddock
35dfb36af2
Add <ionstream> include for __float128 io operator. 2019-03-30 08:35:29 +00:00
jzmaddock
16ffd8b7e9 Fix typos in last commit 2019-03-27 18:58:35 +00:00
jzmaddock
05360ce5e8 Big reformat of cstdfloat header and code, removes the tabs. 2019-03-27 18:29:25 +00:00
jzmaddock
a9201f9a44 Add more cstdfloat functions for __float128 2019-03-26 19:57:11 +00:00
jzmaddock
f7f3e2301f Apply __float128 patches from Gero Peterhoff. 2019-03-24 19:08:49 +00:00
jzmaddock
072ebaac25 Apply numeric_limits patches for __float128 from Gero Peterhoff. 2019-03-22 19:45:35 +00:00
jzmaddock
08b7a6145f Correct lgamma multiprecision case to correctly return sign of tgamma when requested.
Found while testing 1F1.
2019-03-21 20:14:48 +00:00
jzmaddock
1313bf6d28 1F1: refine b < 0 a > 0 region. 2019-03-21 12:45:36 +00:00
jzmaddock
a41421a8e5 1F1: Correct selection logic for forward-ratio on negative b method.
[CI SKIP]
2019-03-17 19:08:55 +00:00
jzmaddock
aa916169d4 1F1: Add better support for a > 0, b < 0 with additional method of ratios.
[CI SKIP]
2019-03-17 17:00:54 +00:00
jzmaddock
31cc6ee069 1F1: Add missing doc files.
[CI SKIP]
2019-03-16 16:58:58 +00:00
jzmaddock
e07c435a0c 1F1: Fine tune recurrence on a and b for large abz case.
Update tests.
2019-03-11 19:20:36 +00:00
jzmaddock
33e67bb94d 1F1: Fine tune negative a,b fallback code, update tests. 2019-03-11 12:05:04 +00:00
jzmaddock
f28a934dcd 1F1: fine tune when Tricomi's approximation is taken. 2019-03-11 12:02:53 +00:00
jzmaddock
38d281e86a 1F1: correct spurious overflow in hypergeometric_1f1_recurrence_on_z. 2019-03-11 12:01:46 +00:00
jzmaddock
8d0a794b38 Suppress gcc warning from the use of Q constants when -pedantic is in effect 2019-03-02 19:43:41 +00:00
pulver
2ffd44200a
Merge branch 'develop' into autodiff 2019-02-28 08:45:53 -05:00
jzmaddock
9a41f39707 1F1: Add missing using declaration. 2019-02-26 18:39:44 +00:00
jzmaddock
28f5e46528 lgamma: switch to taylor series at z = 1 for lgamma with no lanczos support.
Previous version was non-convergent under some conditions.
2019-02-26 18:39:14 +00:00
jzmaddock
7c75df1a21 1F1: fix conceptual error in hypergeometric_1F1_small_a_negative_b_by_ratio. 2019-02-26 18:36:20 +00:00
jzmaddock
39c3d03db2 1F1: simplify log_pochhammer, add new test cases.
[CI SKIP]
2019-02-24 09:43:54 +00:00
jzmaddock
fa875495e2 1F1: Update logic to determine when to apply Kummer's transformation.
[CI SKIP]
2019-02-23 19:25:27 +00:00
jzmaddock
2618f779e6 1F1: correct/improv e method selection logic. 2019-02-23 18:39:51 +00:00
jzmaddock
9416a8d1c3 1F1: temporarily use ADL to find tgamma/lgamma to improve mpfr performance when generating test values. 2019-02-23 18:39:05 +00:00
jzmaddock
7386544439 1F1: Fixes for small b values when recursing. 2019-02-23 18:37:56 +00:00
jzmaddock
d92810c00b 1F1: Use a checked series summation for the Tricomi approximation as we can't always tell when it will be divergent in advance. 2019-02-23 18:37:23 +00:00
jzmaddock
bf4f3b6ced 1F1: Apply scaling to hypergeometric_1f1_recurrence_on_z_minus_zero. 2019-02-23 18:35:45 +00:00
jzmaddock
332fb32919 Merge branch 'develop' into hypergeometric_soc_2014
[CI SKIP]
2019-02-21 13:03:04 +00:00
jzmaddock
a3bb22494a Root finding: correct bug where we could incorrectly terminate when the last iteration was pathological and we had to bisect. Fixes: https://github.com/boostorg/math/issues/184. 2019-02-20 20:53:00 +00:00
jzmaddock
2d0e3db2db 1F1: Picked off a couple more bug cases, some more are currently "unfixable" and lodged as such.
[CI SKIP]
2019-02-18 19:31:17 +00:00
jzmaddock
23de7a57af big_constant.hpp: fully qualify names so they can be used outside namespace boost::math.
[CI SKIP]
2019-02-17 15:58:40 +00:00
jzmaddock
5c663c558d 1F1: Correct cancellation bug in log_pochhammer.
Refine termination condition for series.
Add previously failing tests to bug cases.
2019-02-17 15:57:33 +00:00
jzmaddock
f4e5abfbb1 pFq: Add timeout support to hypergeometric_pFq_precision.
[CI SKIP]
2019-02-17 10:00:53 +00:00
jzmaddock
867b68440c 1F1: Fix bug in recurrence relations. 2019-02-17 10:00:03 +00:00
pulver
4d8622d9bd
Merge branch 'develop' into autodiff 2019-02-16 15:06:12 -05:00
jzmaddock
bd9599fe3f 1F1: hypergeometric_1F1_small_a_negative_b_by_ratio doesn't work when b + i == a for some integer i. 2019-02-16 12:13:07 +00:00
jzmaddock
00dfd44470 1F1, asymptotic-z region: don't use logs unless we really have to.
Also don't take this branch when |a| is really small.
2019-02-16 12:11:49 +00:00
jzmaddock
612c827bc6 Hypergeometrics: add pFq to specified precision. 2019-02-15 20:00:55 +00:00
jzmaddock
a060a48a01 1F1: Add better support for very small a when b < 0. 2019-02-15 20:00:15 +00:00
jzmaddock
da18aae70f More warning suppression, fix function signatures. 2019-02-15 19:59:21 +00:00
jzmaddock
76cb52af91 Bit of msvc warning suppression. 2019-02-15 19:58:15 +00:00
Matt Pulver
1bf3ba6bd2 Fix example compiler requirements. Add <toolset>gcc-mingw:<cxxflags>-Wa,-mbig-obj to test/Jamefile.v2. Minor doc/code updates. 2019-02-14 10:54:42 -05:00
Nick Thompson
b44f37845a Use m_x(std::move(x)) rather than m_x{std::move(x)}. 2019-02-12 11:50:21 -07:00
jzmaddock
a71c2c0887 1F1, A&S 13.3.6 selection logic: improve estimate of Bessel I convergence rate so we don't accidentally take this method when it is non-convergent. 2019-02-12 18:14:28 +00:00
jzmaddock
fa3e94ff79 1F1: large z case: can't have b-a as a negative integer. 2019-02-12 18:09:14 +00:00
jzmaddock
9eb6d5fc58 1F1, hypergeometric_1F1_backwards_recursion_on_b_for_negative_a: correct use of scaling. 2019-02-12 18:08:21 +00:00
jzmaddock
61af0415f4 1F1: large abz: Can't use A&S 13.3.6 when b-a = 1/2. 2019-02-12 18:07:19 +00:00
jzmaddock
71340ca0ad 1F1: extend A&S 13.3.6 to large z. 2019-02-12 18:06:15 +00:00
Matt Pulver
9418a4e2d4 Doc: Add sections Migrating Code, and Function Writing Guidelines. Additional math function overloads: acosh, asinh, atanh, cosh, erf, lambert_w0, sinc, sinh, tanh. Attempt to fix appveyor errors. 2019-02-12 07:43:04 -05:00
Nick Thompson
5212ce1276 Merge branch 'develop' into barycentric_move_constructor [CI SKIP] 2019-02-09 18:10:11 -07:00
jzmaddock
ae71780588 1F1: Don't use special case for b-a == -1 when a is small. 2019-02-06 19:37:43 +00:00
jzmaddock
c603bf78a7 Hypergeometrics: Fix up some testing and conceptual errors flagged up by first CI run. 2019-02-06 18:42:09 +00:00
jzmaddock
978d10cacf 1F1: Fixes for expression template enabled types. 2019-02-04 18:21:48 +00:00
pulver
04aeb5fdd9
Merge branch 'develop' into autodiff 2019-02-03 20:59:39 -05:00
Matt Pulver
7748f2ea19 Feedback from boostorg/math/#176 2019-02-03 20:45:35 -05:00
jzmaddock
9c238c07e4 1F1: Add some limits to the circumstances where we will try out the Bessel function approximations.
[CI SKIP]
2019-02-03 19:11:18 +00:00
jzmaddock
3dddfaa916 1F1: Calculate and cache Bessel I and J values for A&S 13.3.7 Tricomi via recurrences.
This completes the Bessel approximation TODO's.
2019-02-03 19:09:39 +00:00
jzmaddock
bc96c5c44f 1F1: correct hypergeometric_1F1_backwards_recursion_on_b_for_negative_a for the case where b > 0. 2019-02-03 18:52:46 +00:00
jzmaddock
4f0f6817e0 1F1: Add missing typecast to enum. 2019-02-03 18:51:35 +00:00
jzmaddock
40d3871ea0 Bessel Iterators: Add missing constructor to bessel_j_backwards_iterator and new bessel_i_forwards_iterator for forward iteration on I_v(x) with v < 0. 2019-02-03 18:50:51 +00:00
jzmaddock
0f1dd75f08 BesselJY: Correct overflow handling so we get infinity rather than a NaN 2019-02-03 18:46:40 +00:00
Nick Thompson
c6d6f876d5 Take advice from https://codereview.stackexchange.com/questions/210762/discrete-lanczos-derivatives [CI SKIP] 2019-02-01 15:25:00 -07:00
Nick Thompson
6742ed83f6 Merge branch 'develop' into barycentric_move_constructor [CI SKIP] 2019-02-01 11:21:23 -07:00
Nick Thompson
9362bae4fc Add extra cxx11 feature tests to example. Prevent macro substitution of min. Decrease length of unit tests for barycentric_rational from 90 seconds to 24 seconds. 2019-02-01 11:19:56 -07:00
jzmaddock
a187b714e9 1F1: Apply backwards recurrence relations for GammaP in large a,b,z approximation.
[CI SKIP]
2019-01-31 19:06:17 +00:00
jzmaddock
30af3aebd2 Rewrite recurrence for negative a and b to use more efficient shifts.
Removes one more TODO.
[CI SKIP]
2019-01-30 18:28:24 +00:00
Nick Thompson
c8dfc96f88 Merge commit [CI SKIP] 2019-01-29 17:34:41 -07:00
Nick Thompson
680719b0c8 Add test for exponential sum [CI SKIP] 2019-01-29 17:23:04 -07:00
Nick Thompson
4c48f2d6e2 Lanczos smoothing now works with boost::range [CI SKIP] 2019-01-29 12:46:52 -07:00
Nick Thompson
037b6fe5eb Add tests for std::array and boost::numeric::ublas::vector. Clean up docs. [CI SKIP] 2019-01-28 14:06:14 -07:00
Nick Thompson
1a00352994 Second attempt at condition numbers file. [CI SKIP] 2019-01-28 13:48:36 -07:00
Nick Thompson
341c6a6c78 I dream of the day when it doesn't take me 12 builds to accomplish a simple task. 2019-01-27 23:02:17 -07:00
Nick Thompson
c00623da74 Add move constructor for barycentric rational interpolation. 2019-01-27 16:28:31 -07:00
Nick Thompson
12bc3eb885 Delete copy constructor, allow move constructor. Allow reuse of memory space for derivatives. [CI SKIP] 2019-01-27 07:24:46 -07:00
jzmaddock
8845f0d02a Remove unused recurrence relations. 2019-01-27 09:54:15 +00:00
jzmaddock
ff5ee61c69 hypergeometric_1F1_backward_recurrence_for_negative_a: remove dead code that can never be called in current version (code was inherited from original SOC project).
Also comment out some unused approximations.
2019-01-27 09:50:42 +00:00
jzmaddock
f00093cdf3 Test special cases, code tidy up, fix a couple of bugs exposed by new tests. 2019-01-27 09:28:56 +00:00
Nick Thompson
a1cade5a90 Save an xorpd instruction by initializing not to zero, but to the first value. Save a division for each element by dividing the filters by the spacing (square of the spacing for the second derivative). [CI SKIP] 2019-01-26 21:34:16 -07:00
Nick Thompson
d49133027a Remove (in this case harmless) division by zero to appease UBSan [CI SKIP] 2019-01-26 14:54:08 -07:00
Matt Pulver
ad96b617cc Add differentiation/autodiff.hpp. 2019-01-23 14:17:02 -05:00
Nick Thompson
afdd37bf00 Also change concept and include test [CI SKIP] 2019-01-23 14:17:01 -05:00
Nick Thompson
1f1e9974f0 Begin rearrangement. 2019-01-23 14:17:01 -05:00
Nick Thompson
175e375934 Rename filter computation functions to reflect the fact that multiple orders of differentiation may be computed. [CI SKIP] 2019-01-23 10:10:36 -07:00
Nick Thompson
b2f3054e2f Compute filters in higher precision and cast back to low precision so that high-p filters are accurate. [CI SKIP] 2019-01-22 15:46:19 -07:00
Nick Thompson
c9020ceb48 Consider using higher precision for calculation of filters. [CI SKIP] 2019-01-22 12:14:21 -07:00
Nick Thompson
b8cc83e49e Refactor so as to not store a reference member, make call threadsafe, compute entire vector in one go. 2019-01-22 12:14:21 -07:00
Nick Thompson
941bb1a008 Add denoising second derivative. 2019-01-22 12:14:21 -07:00
Nick Thompson
31ec7a9b0c Cleanup [CI SKIP] 2019-01-22 12:14:21 -07:00
Nick Thompson
bc10441044 Remove sign-compare warnings. Take advice of cppcheck. Grammar in documentation [CI SKIP] 2019-01-22 12:14:21 -07:00
Nick Thompson
119aff9ff2 Lanczos smoothing differentiators. 2019-01-22 12:14:21 -07:00
Nick Thompson
fedeabb06e Also change concept and include test [CI SKIP] 2019-01-22 12:12:11 -07:00
Nick Thompson
de584cc4ae Begin rearrangement. 2019-01-22 12:12:11 -07:00
Nick Thompson
1bface6481 Merge branch 'develop' into differentiation 2019-01-21 12:55:26 -07:00
Nick Thompson
e6f97af63f Add comment from Higham about overflow resistance. [CI SKIP] 2019-01-21 12:40:33 -07:00
Nick Thompson
c21ba1ad55 Include is_complex.hpp [CI SKIP] 2019-01-20 15:57:01 -07:00
Nick Thompson
dad9010fbe Do not include boost/type_traits.hpp; narrow the scope and include is_complex.hpp [CI SKIP] 2019-01-20 15:50:24 -07:00
jzmaddock
bb104ce44f 1F1: optimise performance of A&S 13.6.4 approximation.
Cache Bessel I values via backwards recursion.
[CI SKIP]
2019-01-20 18:26:59 +00:00
jzmaddock
d57b689b86 Merge branch 'hypergeometric_soc_2014' of https://github.com/boostorg/math into hypergeometric_soc_2014 2019-01-20 11:28:05 +00:00
jzmaddock
fbba64a30c 1F1: Fix some multiprecision errors, refactor difficult/unsolved cases into separate tests and only test where appropriate.
[CI SKIP]
2019-01-20 11:27:38 +00:00
Nick Thompson
8fd1d3cfae Do not include all of type traits, only include is_complex.hpp. 2019-01-19 15:00:03 -07:00
Nick Thompson
b576cb0ce7 Fix non-portable include path warning. [CI SKIP] 2019-01-18 20:45:36 -07:00
Nick Thompson
74de9889f9 Performance improvements for Hoyer sparsity [CI SKIP] 2019-01-18 20:19:27 -07:00
jzmaddock
695486b1ce hypergeometrics: Correct all the conceptual errors, fix up concept tests and generally test many more types.
[CI SKIP]
2019-01-18 19:31:50 +00:00
Nick Thompson
ff366e85a2 Add variance of N-sided die as unit test [CI SKIP] 2019-01-18 10:00:43 -07:00
Nick Thompson
8930420005 Performance improvements [CI SKIP] 2019-01-17 16:49:59 -07:00
jzmaddock
73cf58243e 1F1: Correct typo in type name. 2019-01-17 18:16:13 +00:00
Nick Thompson
d8514771ac Merge branch 'develop' into differentiation 2019-01-16 11:25:45 -07:00
Nick Thompson
75e7832a54 Add unsigned integer tests for Hoyer sparsity. 2019-01-16 11:14:53 -07:00
Nick Thompson
21e9e6cbc4 Merge branch 'develop' into sequence_tools [CI SKIP] 2019-01-16 10:52:30 -07:00
jzmaddock
def238994e Improve and test the recurrence tools.
[CI SKIP]
2019-01-15 19:31:31 +00:00
jzmaddock
7936e9892f 1F1: Lots of small corrections to support multiprecision types. 2019-01-14 18:58:45 +00:00
Nick Thompson
f3af883c6d Patch up univariate statistics for some integer types. [CI SKIP] 2019-01-12 14:57:16 -07:00
Nick Thompson
ce7fdbe581 Take care of integer overflow. [CI SKIP] 2019-01-12 12:53:53 -07:00
Nick Thompson
fb4f7748cd Refactor kurtosis calculation to use first_four_moments. 2019-01-11 15:19:48 -07:00
Nick Thompson
8d267da5e1 Add hamming_distance, l1_distance, l2_distance, sup_distance, lp_distance. Add more tests for integer datatypes. [CI SKIP] 2019-01-11 14:23:39 -07:00
Nick Thompson
df447ae00d Rename 'absolute_median' to 'median_absolute_deviation' [CI SKIP] 2019-01-07 10:50:06 -07:00
Matt Pulver
bdbf7d0206 return static_cast<result_type>(0) in round() for types whose arithmetic constructors are declared explicit. 2019-01-05 11:44:48 -05:00
jzmaddock
0703952423 1F1: Add special handling for a,b,z all positive and large.
[CI SKIP]
2019-01-03 12:00:58 +00:00
jzmaddock
f145a69538 1F1: Fix special case in Bessel approximation where b-a == 0 2019-01-03 11:59:51 +00:00
Nick Thompson
12a36657aa Merge branch 'develop' into differentiation 2018-12-29 10:57:02 -07:00
Nikita Kniazev
27c7e57b51
Do not include the whole Predef for a single macro 2018-12-28 14:56:27 +03:00
Nick Thompson
a27c4bc96c Also change concept and include test [CI SKIP] 2018-12-27 20:38:27 -07:00
Nick Thompson
a250691ed1 Begin rearrangement. 2018-12-27 18:59:44 -07:00
Nick Thompson
ff09a81d67 Reduce the number of stack variables and hopefully increase the probability of inlining discriminant calculation [CI SKIP] 2018-12-27 18:21:07 -07:00
Nick Thompson
ae17d3a8a3 Use quadratic_roots to simplify M2M4 SNR estimator. [CI SKIP] 2018-12-27 14:22:12 -07:00
Nick Thompson
bee2889e85 Change solve_quadratic to quadratic_roots. [CI SKIP] 2018-12-27 12:44:46 -07:00
jzmaddock
16f7c25c18 1F1: big method selection logic update:
* Hook up A&S 13.3.6 Bessel approximation for a ~ b.
* Refactor selection logic into separate functions.
* Remove one workaround-method that is no longer needed.
* Apply rescaling for a == b special case.
[CI SKIP]
2018-12-27 19:17:50 +00:00
jzmaddock
1c99408605 hypergeometric_pFq_checked_series.hpp: Big update to correctly handle negative b crossing the origin, also variable b values. 2018-12-27 19:13:59 +00:00
jzmaddock
020271df64 hypergeometric_1F1_by_ratios.hpp: rescale when the first value is large. 2018-12-27 19:11:07 +00:00
jzmaddock
9151be85c5 hypergeometric_1f1_addition_theorems_on_z.hpp: remove dead code. 2018-12-27 19:10:20 +00:00
jzmaddock
43a07c92f9 Recurrence: correct forward recurrence algorithm. 2018-12-27 19:09:31 +00:00
jzmaddock
dd8681a81c 1F1: add correction to hypergeometric_1F1_AS_13_3_6. 2018-12-27 19:08:49 +00:00
Nick Thompson
eab2b5260e Solve quadratic equations 2018-12-26 18:30:02 -07:00
Nick Thompson
4848accb77 Add unit tests demonstrating that the kurtosis of various continuous distributions is calculated correctly. Add excess_kurtosis to make clear the working definition of kurtosis. [CI SKIP] 2018-12-25 23:00:46 -07:00
jzmaddock
f0d7c5a3ae 1F1: apply scaling consistently throughout the recurrence relations. 2018-12-24 10:51:23 +00:00
jzmaddock
9759161f10 1F1: refactor fallbacks for negative a and b into separate routine. Hook up recursion for negative a and b when better than the series. 2018-12-24 09:54:00 +00:00
jzmaddock
5e3f679cbe 1F1: Use scaling in recurrence relations. 2018-12-24 09:52:33 +00:00
jzmaddock
21dcbe3278 1F1: Implement scaling in recurrence relations. 2018-12-24 09:51:38 +00:00
jzmaddock
2bc20f88e2 1F1: Add method of function ratios for a,b < 0.
We now have a broadly acceptable error (< 10^4eps) or an exception over all domains.
[CI SKIP]
2018-12-23 15:58:03 +00:00
jzmaddock
a128331e9c 1F1: Add support for calculating function ratios directly from recurrence relations.
Use this to implement 1F1 for b < 0 < a,z and z << -b.
[CI SKIP]
2018-12-23 11:57:53 +00:00
jzmaddock
456538ddd4 Merge branch 'develop' into hypergeometric_soc_2014
[CI SKIP]
2018-12-20 09:09:29 +00:00
jzmaddock
8164299495 1F1: improve recurrence code and hook up the selection logic.
This probably completes 1F1 for the domain a < 0 < b,z, although the code is still on the brain-dead side and badly needs optimizing.
[CI SKIP]
2018-12-20 08:56:06 +00:00
Nick Thompson
f51e55c3cb Take advice of cppcheck [CI SKIP] 2018-12-18 11:46:46 -07:00
Nick Thompson
aa91164f0e Documentation cleanup [CI SKIP] 2018-12-17 15:11:15 -07:00
Nick Thompson
d509957642 Instead of using 'population_stat' in calls, simply call 'stat', and provide 'sample_stat' when an unbiased estimator of stat exists. [CI SKIP] 2018-12-17 14:39:30 -07:00
Nick Thompson
b93acf94b2 Do not add Shannon entropy and Shannon cost until I have an use for them; without a use, serious design errors are easily made. [CI SKIP] 2018-12-17 11:45:38 -07:00
Nick Thompson
4d85b85a5c Do not allow computation of sparsity of a vector with a single element. [CI SKIP] 2018-12-17 00:18:16 -07:00
Nick Thompson
cee62a833c Add unit tests for Gini coefficient for uniform and exponential distribution of values. [CI SKIP] 2018-12-16 23:05:00 -07:00