Commit Graph

2189 Commits

Author SHA1 Message Date
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
jzmaddock
298c83e71c 1F1: improve method selection logic.
The only really gross failures now are exceptions due to non-convergence.
There are also some large errors in certain regions - notable b large and negative, a large and positive, we don't currently have a method that works for that, need to investigate Miller type methods.
[CI SKIP]
2018-12-15 11:59:25 +00:00
jzmaddock
d907eb347a 1F1: Improve bessel approximation fallback methods. 2018-12-15 11:57:16 +00:00
jzmaddock
b8a94228ad 1F1: rewrite the large-z asymptotic approximation to prevent moving into the divergent area. 2018-12-15 11:56:44 +00:00
Nick Thompson
efdafa2643 Add notes about beliefs about M2M4; add notes about potential improvements [CI SKIP] 2018-12-14 13:02:12 -07:00
Nick Thompson
3c13c588b0 Pearson's correlation coefficient [CI SKIP] 2018-12-14 12:27:10 -07:00
Nick Thompson
dc521aeb11 Clarify a case where solution to M2M4 estimator system does not exist. Split off a degenerate case where the signal is constant. [CI SKIP] 2018-12-13 11:45:52 -07:00
Nick Thompson
d940760e0b Implement the M2M4 SNR estimator. 2018-12-12 22:40:30 -07:00
Nick Thompson
87f4bc9b11 Add skewness and kurtosis [CI SKIP] 2018-12-11 14:01:28 -07:00
Nick Thompson
b0b0a6bb59 Add oracle_snr to signal_statistics [CI SKIP] 2018-12-11 10:53:33 -07:00
Nick Thompson
fb2ae307d6 Computation of covariance. [CI SKIP] 2018-12-10 14:38:42 -07:00
jzmaddock
0816bf0e87 1F1: improve bessel function failure modes, and improve selection logic. 2018-12-10 19:26:56 +00:00
Nick Thompson
94ceca1e43 Split descriptive_statistics.hpp into univariate_statistics.hpp and a currently-hypothetical bivariate_statistics.hpp [CI SKIP] 2018-12-10 12:05:05 -07:00
jzmaddock
ce6b50fb90 1F1: Fix up issues with very small a.
[CI SKIP]
2018-12-09 16:45:09 +00:00
jzmaddock
a6e2b2107e 1F1: change parameters to hypergeometric_1F1_AS_13_3_6.
In case we're applying Kummer's relation and then calling this.
[CI SKIP]
2018-12-09 08:47:56 +00:00
Nick Thompson
1a246db791 Change from vector_functionals.hpp to descriptive_statistics.hpp and norms.hpp. 2018-12-08 20:53:14 -07:00
Nick Thompson
38dd139b0a Get rid of grotesque typedefs and change to using declaration. [CI SKIP] 2018-12-08 20:11:38 -07:00
Nick Thompson
5f143244f5 Fully qualify std::nth_element, add tests for std::array. [CI SKIP] 2018-12-08 14:09:21 -07:00
Nick Thompson
37c9b68aa6 Merge branch 'develop' into sequence_tools [CI SKIP] 2018-12-08 12:29:36 -07:00
Nick Thompson
b7dabe272c Add branches for integral input types where sensible. [CI SKIP] 2018-12-08 12:29:05 -07:00
Nick Thompson
5a0ff712bd Add range calls. [CI SKIP] 2018-12-08 11:11:35 -07:00
Nick Thompson
bce92d78ba Add Shannon entropy and kick off build. 2018-12-07 18:44:40 -07:00
Nick Thompson
60f653a1fe L1 and L2 norms. [CI SKIP] 2018-12-07 15:05:14 -07:00
Nick Thompson
53d4ffe99e Merge branch 'develop' into sequence_tools 2018-12-07 10:35:50 -07:00
Nick Thompson
01c004bb06 Remove useless termination criteria [CI SKIP] 2018-12-07 10:17:33 -07:00
Nick Thompson
d2bf1b18fd Merge branch 'develop' into complex_newton 2018-12-07 09:03:08 -07:00
Nick Thompson
a9985e3e1c Hoyer sparsity [CI SKIP] 2018-12-07 09:02:25 -07:00
jzmaddock
0152cfa2a9 Incomplete gamma: add asymptotic approximation for large argument.
Allows the functions to be used with very large (or infinite) argument.
Fixes: https://github.com/boostorg/math/issues/168.
2018-12-07 09:37:50 +00:00
Nick Thompson
aa43b5b52b Vector functionals, first pass [CI SKIP] 2018-12-06 20:33:05 -07:00
Nick Thompson
37336e2372 Merge branch 'develop' into complex_newton 2018-12-04 14:28:52 -07:00
jzmaddock
847b39a0ab 1F1: rework recurrence relations.
[CI SKIP]
2018-12-04 19:24:34 +00:00
Nick Thompson
6e25e27d01 Merge branch 'develop' into complex_newton 2018-12-04 11:09:06 -07:00
Nick Thompson
baddf9509a The move constructor is 30% faster than the copy; hence remove the data copy and only allow move construction. [CI SKIP] 2018-12-02 13:34:51 -07:00
Nick Thompson
fd519a73d6 Implement suggestions from code review [CI SKIP] 2018-12-02 11:18:41 -07:00
jzmaddock
fad061124f 1F1: Slowly improving accuracy for small a, b, z.
Also added a new bessel approximation (which is not that useful to be honest).
[CI SKIP]
2018-12-02 18:04:27 +00:00
jzmaddock
c0f236e251 Merge branch 'develop' into catmull_rom
Fixed Conflicts:
	doc/Jamfile.v2

Corrected some doc formatting, and regenerated the docs.
2018-12-01 19:38:16 +00:00
jzmaddock
33d3d0942f Merge branch 'polynomial_constructor' into develop 2018-12-01 11:21:27 +00:00
jzmaddock
7abcd6ef4a roots.hpp: Don't allow division by zero (or overflow) even though it's harmless in this case.
Fixes: https://github.com/boostorg/math/issues/164
2018-12-01 10:09:39 +00:00
jzmaddock
889793b51e Add missing file. 2018-11-30 19:59:06 +00:00
jzmaddock
db408fde2b roots.hpp: clean up code so that there is no division by zero possible.
Fixes: https://github.com/boostorg/math/issues/160.
2018-11-30 19:54:34 +00:00
jzmaddock
451afc3102 Fix polynomial template constructors. 2018-11-30 19:31:51 +00:00
Nick Thompson
d46f746cb3 Move to clustered roots termination criteria rather than range magnitude. [CI SKIP] 2018-11-28 16:31:13 -07:00
Nick Thompson
66373a0b22 Fix failing unit test by using semi-scale invariant termination criteria. [CI SKIP] 2018-11-28 14:35:34 -07:00
jzmaddock
4041d6ee55 Merge branch 'hypergeometric_soc_2014' of https://github.com/boostorg/math into hypergeometric_soc_2014 2018-11-28 19:19:21 +00:00
jzmaddock
19150f8c0b 1F1: add addition theorem routines.
None of these are used yet...
[CI SKIP]
2018-11-28 19:18:58 +00:00
Nick Thompson
3ab69d00ee Complex Newton's method. Zero derivatives handled by Muller's Method. 2018-11-25 00:19:11 -07:00
Nick Thompson
fb71b01cfc Remove initialization order warning [CI SKIP] 2018-11-24 17:41:03 -07:00
jzmaddock
2a0f5f111c 1F1: more changes to negative a and b domain.
* Bessel approximation is now good for b-2a <= 0 via Tricomi's relations.
* Selection condition based on convergence is now more rigorous, or at least more conservative.  But...
* Error rates are much higher because a poorly converging bessel approximation has slightly less cancellation than the generic series.  Hopefully this can be fixed via https://dlmf.nist.gov/13.13.  And...
* We need to rewrite these new versions to use recurrence relations on the Bessel functions (but these need to be backwards, so we would calculate and cache say 50 evaluations, then the next 50 and so on).  And...
* Bessel approximations can underflow spuriously when b is large.... really need a log_bessel_j to fix this as we will be multiplying by tgamma(b).

[CI SKIP]
2018-11-24 12:10:10 +00:00
Nick Thompson
5c790ac358 Polynomials now work with float128 [CI SKIP] 2018-11-15 01:58:46 -07:00
Nick Thompson
207303585a Small changes so that we can template the polynomials on complex types. 2018-11-14 21:38:41 -07:00
Nick Thompson
54f475e58f Add call operator, .prime(), .integrate(), and move constructor to polynomial.hpp 2018-11-14 17:04:57 -07:00
jzmaddock
b5eb687556 Tanh_sinh: Fix for https://github.com/boostorg/math/issues/155. 2018-11-14 18:55:11 +00:00
jzmaddock
20cab7704e Merge branch 'hypergeometric_soc_2014' of https://github.com/boostorg/math into hypergeometric_soc_2014 2018-11-12 19:39:18 +00:00
jzmaddock
2a3dfb5030 1F1: add some more (currently unused) evaluation methods. 2018-11-12 19:39:06 +00:00
Nick Thompson
b306f54bee Silence incredibly verbose -Wsign-compare warning emitted from gcc 8. 2018-11-12 11:51:54 -07:00
jzmaddock
b8839ad167 1F1: Rationalise method selection logic - more tests fail but the code is in overall better shape.
[CI SKIP]
2018-11-10 17:51:40 +00:00
jzmaddock
bfb204937e Hypergeometric 1F1: Tentatively fix more issues. 2018-11-07 16:23:35 +00:00
Nick Thompson
381f663517 Merge and run CI 2018-10-28 23:27:41 -06:00
Nick Thompson
3f5e730d03 Fix compilation error by including trunc.hpp 2018-10-27 16:01:20 -06:00
jzmaddock
f066827858 1F1: Improve large-z asymptotic region.
[CI SKIP]
2018-10-25 10:42:26 +01:00
jzmaddock
b329c74f5a Add missing include. 2018-10-23 19:56:07 +01:00
jzmaddock
841233f034 Fix more F cases. 2018-10-23 19:50:29 +01:00
jzmaddock
62ef341156 Merge branch 'hypergeometric_soc_2014' of https://github.com/boostorg/math into hypergeometric_soc_2014
Fixed Conflicts:
	include/boost/math/special_functions/detail/hypergeometric_series.hpp
	include/boost/math/special_functions/hypergeometric_1F1.hpp
2018-10-23 19:49:30 +01:00
jzmaddock
d8225e6b06 hypergeometric_1F1: rework to better handle over/underflow. 2018-10-23 19:29:02 +01:00
Nick Thompson
60edddae72 Add Laplace and Mellin transform test so that 1F1 is tested over its entire domain. 2018-10-23 10:23:23 -06:00
Nick Thompson
1791a4b597 Make casing of pFq, 0F1, 1F1, etc, uniform. Make filename casing uniform to prevent compiler warnings/errors on non-portable include paths. 2018-10-22 14:13:29 -06:00
jzmaddock
a7c68f1c87 hypergeometrics: Update Jamfile so it can build the tests.
Fix missing includes in hypergeometric_0f1_bessel.hpp.
Remove unneeded includes from test files.
2018-10-22 18:46:15 +01:00
Nick Thompson
885cb0d998 Replace exp(z) -1 by expm1(z) to improve accuracy for small |z|. 2018-10-22 10:40:07 -06:00
jzmaddock
8de36dd6f8 hypergeometric_1F1: better comments and 2 more degenerate cases.
[CI SKIP]
2018-10-20 10:09:37 +01:00
jzmaddock
833b4c9b5f hypergeometric_1F1: begin to fix up remaining difficult cases.
Adds a checked series for those we can't fix.
[CI SKIP]
2018-10-20 09:58:11 +01:00
jzmaddock
52079d2d23 Merge branch 'develop' into hypergeometric_soc_2014
Fixed Conflicts:
	doc/equations/generate.sh
2018-10-18 11:11:13 +01:00
jzmaddock
d78af61023 Tentative fix for MacOS X test failure in relative_difference. 2018-10-15 13:48:56 +01:00
jzmaddock
5eca86157b Modify tanh_sinh to work with complex integrals. 2018-10-08 20:45:15 +01:00
Nikita Kniazev
5152160fea
constants: Removed extra semicolons 2018-10-01 18:37:45 +03:00
jzmaddock
34e6afacc2 Fixes that allow Math to be used with multiprecision::mpfr_float. 2018-09-26 18:10:05 +01:00
jzmaddock
bfabc65564
Merge pull request #150 from boostorg/remove_endian_deprecated
Remove deprecation warning from the BOOST_BIG_ENDIAN and BOOST_LITTLE…
2018-09-14 17:29:49 +01:00
Nick Thompson
6ec5838685 Change #if defined(BOOST_ENDIAN_*_BYTE) to #if BOOST_ENDIAN_*_BYTE on the advice of code review from pdimov. 2018-09-12 11:37:31 -06:00
Nick Thompson
a180b490f2 Remove deprecation warning from the BOOST_BIG_ENDIAN and BOOST_LITTLE_ENDIAN macros. 2018-09-12 10:20:05 -06:00
jzmaddock
95680e179d
Merge pull request #121 from boostorg/rational_derivatives
Add derivative of barycentric rational interpolation.
2018-09-04 13:01:31 +01:00
jzmaddock
0f02355a1c LambertW: remove dead file and move lambert_w_lookup_table.ipp into /detail/.
[CI SKIP]
2018-09-02 18:00:07 +01:00
jzmaddock
628ffd1c80
Merge branch 'develop' into rational_derivatives 2018-09-02 12:58:59 +01:00
jzmaddock
79871fe747 LambertW: CI fixes.
Fix definition of lambert_w0_small_z_series_term.
Move rational approximations into smaller functions to try and keep msvc happy.
2018-08-31 19:53:34 +01:00
jzmaddock
02c7df005d LambertW: Fix more CI failures:
Add fallback for 128-bit lambertW implementation.
Disable real_concept tests for msvc-12 and earlier as the compiler can't cope.
2018-08-31 09:56:03 +01:00
jzmaddock
982d82b2b5 LambertW: Hook up real_concept tests and fix resulting errors. 2018-08-30 19:48:27 +01:00
jzmaddock
3104f3ad79 LambertW: Fix for types with no numeric_limits.
Configuration fix for __float128 support.
2018-08-30 18:47:40 +01:00
jzmaddock
364952fd8a LambertW: pedantic changes to docs.
[CI SKIP]
2018-08-30 18:21:28 +01:00
jzmaddock
bed980e202 Merge branch 'develop' into lambertw 2018-08-30 10:17:19 +01:00
jzmaddock
3abd04ce50 LambertW: Hook up concept checks, and fix failures. 2018-08-30 08:57:35 +01:00
jzmaddock
45b86cf115 LambertW: Fix up GCC support.
Split tests into smaller units so as not to generate over-large object files.
2018-08-29 19:34:30 +01:00
jzmaddock
10e6f0d68f Lambert W: Add tests near the singularity.
Fix a couple of minor issues in the implementation to improve error rates.
NB: errors very near the singularity are still very high - this is an intrinsic property of the function - we are solving z = w exp(w) for w, but there are actually a wide range of w values which satisfy the equation once we get very close to the singularity.
2018-08-26 19:51:15 +01:00
jzmaddock
d002d1491a LambertW: Tidy up header includes. 2018-08-22 19:31:22 +01:00
jzmaddock
5f495d259e Correct spelling of "boost" ! 2018-08-21 08:34:21 +01:00
jzmaddock
386898c089 Update continued fractions and series:
To support complex types, and better docs.
Fixes: https://github.com/boostorg/math/issues/129.
2018-08-20 21:22:06 +01:00
jzmaddock
7cd5d420da roots.hpp: suppress warning and fix logic error caused by previous commit. 2018-08-20 10:30:37 +01:00
jzmaddock
5d590c812e Prevent logic error leading to infinite loop in toms748_solve.
Fixes: https://github.com/boostorg/math/issues/138.
2018-08-19 18:57:06 +01:00
jzmaddock
d7d6b1a99b Fix mean and standard_deviation for extreme_value_distribution.
Fixes: https://github.com/boostorg/math/issues/139.
2018-08-19 17:46:52 +01:00
jzmaddock
91c193d2d2 Improve heuristics used in newton_raphson_iterate.
Copies heuristics already in place for halley_iterate for the case where convergence fails.
Fixes: https://github.com/boostorg/math/issues/145
2018-08-19 16:27:45 +01:00
jzmaddock
26e2e61de9 Fix erf(NaN).
Fixes https://github.com/boostorg/math/issues/141
2018-08-19 09:28:37 +01:00
jzmaddock
9e3bf4e3e1 Fix for platforms where we have no atomic types: fixes https://github.com/boostorg/math/issues/134. 2018-07-30 18:15:31 +01:00
jzmaddock
bdb3f0e903 Fix for integer overflow in exponent calculation on decimal types in next.hpp: See https://github.com/boostorg/math/issues/135 2018-07-29 18:12:35 +01:00
pabristow
aaa38c3fee first draft of no-precision policy version. 2018-07-17 17:39:27 +01:00
pabristow
691f2a5852 Integration tests improved with simpler lambert W 2018-07-11 15:42:19 +01:00
Lakshay Garg
c275bf655e Refactor the polynomial addition function
* Remove in-loop calls to push_back thus eliminating the
  possibility of multiple reallocations of memory to the
  underlying vector.
* Remove redundant `sign` parameter from the addition method
* Delete the unused `detail::identity` struct
2018-06-25 02:46:25 -07:00
jzmaddock
838dd94193 sinc_pi: simplify and correct taylor series usage, improve tests.
See https://svn.boost.org/trac10/ticket/13606.
2018-06-19 18:26:43 +01:00
jzmaddock
ed83cdda6f Merge branch 'develop' of https://github.com/boostorg/math into develop 2018-06-17 19:16:57 +01:00
jzmaddock
658945d508 Improve sinc approximations and add better tests.
Fixes: https://svn.boost.org/trac10/ticket/13606 and https://svn.boost.org/trac10/ticket/13603.
2018-06-17 19:10:46 +01:00
Nick Thompson
cb954798d7 Support for complex-valued integrands in sinh-sinh quadrature. 2018-06-12 13:11:52 +08:00
jzmaddock
2267c6af67 exp_sinh: Regenerate quad precision abscissa and weights. 2018-05-22 19:58:35 +01:00
pabristow
23ecd1a1c0 All changes before getting develop up-to-date. 2018-05-15 14:00:34 +01:00
Nick Thompson
9d22c55d4a Merge branch 'develop' into rational_derivatives 2018-05-05 10:02:02 +08:00
Nick Thompson
0d67b045ae [CI SKIP] Merge branch 'develop' into complex_exp_sinh 2018-05-05 10:00:42 +08:00
Nick Thompson
728b6949ed Complex valued integrand support for exp-sinh quadrature 2018-05-03 12:19:04 +08:00
Nick Thompson
157e33a516 [CI SKIP] Merge develop 2018-05-03 09:22:53 +08:00
Nick Thompson
cc9d1cc7f9 Fix build by replacing fabs->abs. 2018-05-02 12:24:30 +08:00
Nick Thompson
60aa168556 Fix cpp_dec_float. 2018-05-02 09:31:09 +08:00
Nick Thompson
ea6acb3855 [CI SKIP] Real->{Real, Complex} integrand support for Gauss-Kronrod quadrature. 2018-05-01 15:50:55 +08:00
Nick Thompson
df0f02e412 [CI SKIP] Remove 'Control reaches end of non-void function warning.' 2018-05-01 10:45:11 +08:00
jzmaddock
e1a09b1f8e Gauss-complex - functions can still be static, simply error return. 2018-04-30 19:54:08 +01:00
jzmaddock
60640d3497 Merge branch 'develop' into gauss_complex
Simplify error handler return.
2018-04-30 17:59:58 +01:00
jzmaddock
2261ed0a63 Merge branch 'develop' into contour_integration 2018-04-29 09:48:36 +01:00
jzmaddock
72c56026f9 tanh_sinh: improve asserts on internal logic
and document why they might fail.
2018-04-23 18:21:57 +01:00
jzmaddock
b4ec109b83 tanh_sinh: change calculation method used for scaling ranges:
"naive" method is prone to generating a point at the endpoint if the endpoint is large, subtract scaled complement from the endpoint instead.
Open questions:
1) Can this still fail if the endpoint is a very large value?  For example if we have endpoints of [+large, +larger] where the difference between them is small?
2) Do we still need the asserts, or should they be replaced by some other check?
3) If the endpoints are replaced by some other check we could either massage the position to be one representable value below the endpoint, or else simply return 0.  The former risks evaluating at the same point over and over as we go down levels, the latter would seem to be incorrect for functions which do not go to zero at the endpoint.
2018-04-22 19:46:34 +01:00
Nick Thompson
e56e343435 Fix build errors. 2018-04-14 09:38:02 +08:00
Nick Thompson
84d36d785c Add derivative of barycentric rational interpolation. 2018-04-13 20:19:46 +08:00
Nick Thompson
1a75908850 std::result_of->typedef decltype(f(a)). 2018-04-06 10:51:17 +08:00
Nick Thompson
240ed8f770 Merge branch 'contour_integration' into gauss_complex 2018-04-06 09:49:41 +08:00
Nick Thompson
f099ceec9e [CI SKIP] Remove now-unused type_traits header 2018-04-06 09:48:03 +08:00
Nick Thompson
08bfb88181 Get rid of std::result_of/std::invoke_result in favor of typedef decltype(f(a)). 2018-04-05 20:23:54 +08:00
Nick Thompson
13b2070fef [CI SKIP] Update quadrature. 2018-04-05 20:14:16 +08:00
Nick Thompson
969a29a7a4 Merge branch 'contour_integration' into gauss_complex 2018-04-05 13:34:32 +08:00
Nick Thompson
d5aac62f64 auto return requires trailing return type in C++11 mode. 2018-04-03 12:24:24 +08:00
Nick Thompson
90273e12a7 Fix C++11/C++17 incompatibility by typdefs. Increase default max refinements. 2018-04-03 11:07:03 +08:00
Nick Thompson
9bfcbf4a24 Merge branch 'develop' into contour_integration 2018-03-31 14:55:17 +08:00
Nick Thompson
8448d9be98 Make sure that a minimum number of function calls have been achieve before exit in Monte-Carlo integration. 2018-03-22 11:02:16 +08:00
Nick Thompson
cf0201fa3d [CI SKIP] Gaussian quadrature now works with MPC 2018-03-22 10:47:29 +08:00
Nick Thompson
7a3803de05 [CI SKIP] Small diffs to make compilation more smooth. 2018-03-21 11:15:36 +08:00
Nick Thompson
3fb1409f49 Compile and include test also need to have C++11 support now. 2018-03-20 19:16:25 +08:00
Nick Thompson
1f5cea80ff [CI SKIP] Gaussian quadrature to support Real->Complex. 2018-03-18 20:55:11 +08:00
Nick Thompson
3da4c17f1c [CI SKIP] Remove auto. 2018-03-18 14:25:36 +08:00
jzmaddock
64e29bd874 naive_monte_carlo: Set a maximum number of retries and add some diagnostic info for when things go wrong. 2018-03-17 19:05:52 +00:00
jzmaddock
581d203254 naive_monte_carlo: Need to make sure the seed changes between outer loops in m_integrate.
Otherwise we go round and round and never complete if the first inner loop fails.
2018-03-16 11:47:38 +00:00
Nick Thompson
d30b7d62ef Update trapezoidal quadrature so that it can handle contour integrals. 2018-03-16 15:33:25 +08:00
jzmaddock
1ae4e63551 naive_monte_carlo: change tail recursion to do-while loop. 2018-03-15 19:29:38 +00:00
Nick Thompson
529a76b72c Use uint64_t rather than size_t to get some reproducibility on 32 bit platforms. Make sure that the final variance is within the error bounds. 2018-03-13 13:17:22 +08:00
Casey Carter
4921880587
Use constexpr when compiling with clang
Clang compilers do not define `__clang`, they define `__clang__`. (https://godbolt.org/g/R7gX4h)
2018-03-06 17:39:15 -08:00
jzmaddock
e348578b0f erfc: improve accuracy in exp calculation, add error plot generator program. 2018-03-02 19:23:41 +00:00
pabristow
3f1e3602ba Quadrature error diagnosis improved 2018-02-27 13:20:37 +00:00
jzmaddock
b5c4200ea5 Update std_real_concept_tests: we were missing a couple of test cases. 2018-02-24 18:39:14 +00:00
jzmaddock
0e9a9d340a Merge branch 'develop' of https://github.com/boostorg/math into develop
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2018-02-24 16:58:13 +00:00
jzmaddock
7017d658f7 next.hpp: fix forward declaration of real_concept.
[CI SKIP]
2018-02-24 13:13:08 +00:00
jzmaddock
73f85b699a ellint_d: Add some diagnostic code to try and track down some long double errors.
[CI SKIP]
2018-02-24 13:12:25 +00:00
jzmaddock
324a047f1e Uncomment #define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS which appears to have been accidentally disabled.
Disable some long double tests when BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS is set.
2018-02-22 18:25:02 +00:00
pabristow
413766bcdb Added lost prime functions and a ref 2018-02-22 18:18:34 +00:00
jzmaddock
3fa8aadde2 monte carlo integration: document and/or make explicit the semantics of all atomic operations. 2018-02-21 18:11:28 +00:00
pabristow
036dbae137 Return to overflow on inf and tested OK using test_integrals 2018-02-20 17:03:26 +00:00
jzmaddock
ce7a8bc918 monte carlo integration: Change to use unique_ptr rather than map internally.
Fix msvc object size issues.
2018-02-19 19:39:00 +00:00
pabristow
2a34f3c340 Restore current files after merge went wrong. 2018-02-19 17:30:57 +00:00
pabristow
de4d578fc5 deconflict lambert_w.hpp 2018-02-19 16:54:52 +00:00
Nick Thompson
578a1a6ed1 [ci skip] Revert to boost::atomic as std::atomic made things worse. 2018-02-18 22:19:04 -06:00
Nick Thompson
33ce9eb94e Swap out boost::atomic with std::atomic to determine how widespread compiler support is via the CI system. Replace RNG with RandomNumberGenerator to protect against weird macros. 2018-02-18 17:19:42 -06:00
Nick Thompson
cfd81335e9 [ci skip] Fix merge conflict from develop 2018-02-17 18:05:02 -06:00
Nick Thompson
ca66072ac9 [ci skip] Fix infinite limit transforms. Add user option to provide alternative random number generator. Allow deterministic seed for testing, though this is still not fully deterministic. Reduce time between observations. 2018-02-17 17:41:06 -06:00
jzmaddock
c5805cc8bc
Merge pull request #112 from boostorg/NAThompson-patch-1
[ci skip] Fix typo in error message.
2018-02-17 09:19:17 +00:00
jzmaddock
dce923bdf5 Merge branch 'develop' into naive_monte_carlo 2018-02-16 18:12:31 +00:00
jzmaddock
70e67bbc2d polynomial_gcd.hpp: Fix namespace name for gcd_range. 2018-02-16 18:07:28 +00:00
jzmaddock
6b9364dd3a Merge branch 'develop' into naive_monte_carlo 2018-02-16 18:05:52 +00:00
jzmaddock
073e7a7196 Merge branch 'develop' into naive_monte_carlo 2018-02-16 17:59:00 +00:00
Nick
f97fd25005
Fix build by using boost::integer::gcd over boost::math::gcd 2018-02-16 10:27:21 -06:00
Nick
5b9e412189
Fix typo in error message. 2018-02-15 18:36:12 -06:00
jzmaddock
49cbe80df1 naive_monte_carlo: add missing include, suppress some warnings and fix some min/max issues. 2018-02-15 20:10:18 +00:00
jzmaddock
5d5d063abe std_real_concept: update to allow testing in C++03 mode while retaining Nicks C++11 concepts when required. 2018-02-15 20:09:28 +00:00
jzmaddock
c4190aa7e2
Merge pull request #109 from boostorg/gcd_deprecation
Put explicit deprecation warning on boost/math/common_facto…
2018-02-15 11:55:27 +00:00
Nick Thompson
2bb193f93e [ci skip] Use boost::atomic<Real> instead of std::atomic<Real>. 2018-02-14 18:09:03 -06:00
jzmaddock
edd4b44d40
Merge pull request #97 from DanielaE/fix/replace-deprecated-allocator-members
Most members of std::allocate are deprecated in C++17
2018-02-14 20:34:28 +00:00
jzmaddock
c6b734a791
Merge pull request #110 from boostorg/pr64
Integration test PR64
2018-02-13 19:47:54 +00:00
Nick Thompson
a069b60588 [ci skip] Perturb boundaries rather than range of random number generator to ensure that singularities aren't hit in the integrand. Note that this breaks the double infinite limits; I need to let that one stew a bit before figuring out how to deal with it. Let the user specify if the integrand is singular, since peeling a high-dimensional orange leaves almost nothing. 2018-02-12 15:57:25 -06:00
jzmaddock
7403cbbd43 Make table driven functions constexpr:
unchecked_factorial, unchecked_bernoulli_b2n and prime.
2018-02-11 19:59:26 +00:00
Nick Thompson
36fc4bd783 [ci skip] Use BOOST_HEADER_DEPRECATED to deprecated header instead of one-off hacks. 2018-02-11 12:15:18 -06:00
jzmaddock
d32258fcea Numeric differentiation: make some trivial changes so we don't need C++17.
Update Jamfile to exclude testing compilers which can't handle the tests.
2018-02-11 17:52:22 +00:00
jzmaddock
f4dfb9088f Merge branch 'numerical_differentiation_2' of https://github.com/NAThompson/math into pr64
Fixed Conflicts:
   include/boost/math/concepts/std_real_concept.hpp
   test/Jamfile.v2

Changes:
   Minor changes to get things compiling with msvc.
2018-02-11 16:33:41 +00:00
Nick Thompson
353c2e0fd4 [ci skip] Remove hyperbolic language related to complex step derivative. Ensure macro substitution of 'max' doesn't break routines. Add copyright notices. 2018-02-10 16:24:16 -06:00
Nick Thompson
0c48214260 [ci skip] Put explicit deprecation warning on boost/math/common_factor.hpp 2018-02-10 13:23:55 -06:00
Daniela Engert
f6883a6595
Most members of std::allocate are deprecated in C++17
Replace them by their cousins from std::allocator_traits.

Signed-off-by: Daniela Engert <dani@ngrt.de>
2018-02-10 10:32:24 +01:00
Nick Thompson
0a8d5bfb37 [ci skip] Fix derivative at singularity at z = 0 of Lambert W -1. 2018-02-09 14:36:05 -06:00
Nick Thompson
8a7539c707 [ci skip] Pick the low hanging fruit of the Lambert-W derivative. Remove a few typos from the documentation. 2018-02-09 13:57:25 -06:00
Nick Thompson
4b55b42268 [ci skip] Use C++17 'if constexp' to avoid branch. Modularize stepsize logic into single call. Do not assume 3ULP evaluation in error, assume 1ULP. Add reference to great numerical analysis text which also promotes these methods and clean up documentation. 2018-02-09 11:53:44 -06:00
Nick Thompson
2718dded89 [ci skip] Ooura's method for computing Fourier sin and Fourier cosine transforms. 2018-02-06 13:15:56 -06:00
Nick Thompson
da4a027233 [ci skip] Remove 'print_coefficients()' as 'coefficients()' is implemented and 'print_coefficients()' requires including <iostream> which was previously not included in chebyshev_transform.hpp 2018-02-04 11:47:53 -06:00
Nick Thompson
5e78b298da [ci skip] Use Unix-style paths. Add tests for lambert-W testing integrals of the Lambert-W function. 2018-02-02 21:33:54 -06:00
pabristow
b4ffbedf1e Change to use JM W0 version. 2018-01-30 12:11:03 +00:00
jzmaddock
f0b5e17ebf Merge branch 'develop' of https://github.com/boostorg/math into develop 2018-01-30 08:27:10 +00:00
jzmaddock
426db8d929 Math.Quaternion: Fix forward declarations of quaternion.
See https://github.com/boostorg/math/issues/99
2018-01-30 08:26:50 +00:00
Nick Thompson
1781d47b78 [ci skip] Clarify conditions on the template point type. Add include and concept test. 2018-01-27 14:44:15 -06:00
jzmaddock
5ad688def2
Merge pull request #100 from kuhlenough/develop
Don't use std::fpclassify() on VxWorks as well
2018-01-25 10:16:51 +00:00
pabristow
6d73d8f517 commit so can switch to develop (problem in one polynomial nearest singularity 2018-01-23 14:38:56 +00:00
jzmaddock
bac580583b Math: Fix the distribution explorer build files for VS2017.
Fix lanczos.hpp to not use native code on managed builds.
2018-01-21 10:04:38 +00:00
jzmaddock
da9d77ef2e Hypergeometric: Begin fixing errors from large params in 1F1 2018-01-20 17:48:51 +00:00
jzmaddock
5a1f4d90ba Hypergeometric: start testing larger arguments to 1F1 and begin to fix the errors. 2018-01-20 17:46:57 +00:00
Brian Kuhl
72997d2963
Don't use std::fpclassify() on VxWorks as well
It doesn't exisit
2018-01-16 11:02:06 -05:00
Nick Thompson
7341a149de More review from codereview.stackexchange.com 2018-01-12 22:59:56 -06:00
Nick Thompson
a90aac3656 Cleanup based on codereview.stackexchange.com suggestions. 2018-01-12 16:33:07 -06:00