2
0
mirror of https://github.com/boostorg/math.git synced 2026-02-11 11:52:21 +00:00
Commit Graph

1880 Commits

Author SHA1 Message Date
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
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
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
jzmaddock
0816bf0e87 1F1: improve bessel function failure modes, and improve selection logic. 2018-12-10 19:26:56 +00: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
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
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
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