jzmaddock
978d10cacf
1F1: Fixes for expression template enabled types.
2019-02-04 18:21:48 +00: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
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
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
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
b576cb0ce7
Fix non-portable include path warning. [CI SKIP]
2019-01-18 20:45:36 -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
jzmaddock
73cf58243e
1F1: Correct typo in type name.
2019-01-17 18:16:13 +00: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
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