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

1888 Commits

Author SHA1 Message Date
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
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
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