jzmaddock
f145a69538
1F1: Fix special case in Bessel approximation where b-a == 0
2019-01-03 11:59:51 +00: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
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