fungrim refs for Coulomb wave function formulas in comments

This commit is contained in:
fredrik 2019-08-13 16:24:12 +02:00
parent 1875b0294c
commit a06da12ef2
2 changed files with 16 additions and 0 deletions

View file

@ -166,6 +166,7 @@ _acb_hypgeom_coulomb(acb_t F, acb_t G, acb_t Hpos, acb_t Hneg, const acb_t l, co
acb_mul_2exp_si(C, C, -1);
/* http://fungrim.org/entry/1976e1/ */
if (asymp)
{
/* T1 = exp(-(-iz + lv + u log(z1)) U1 */
@ -206,6 +207,7 @@ _acb_hypgeom_coulomb(acb_t F, acb_t G, acb_t Hpos, acb_t Hneg, const acb_t l, co
/* C *= exp(-iz) */
acb_div_onei(F, z);
acb_add(C, C, F, prec);
/* http://fungrim.org/entry/2a2f18/ */
acb_hypgeom_m(F, v, m, z1, 1, prec);
}
@ -255,6 +257,7 @@ _acb_hypgeom_coulomb(acb_t F, acb_t G, acb_t Hpos, acb_t Hneg, const acb_t l, co
if (G != NULL)
{
/* http://fungrim.org/entry/e2efbf/ */
if (asymp && arb_is_positive(acb_realref(z)))
{
if (G_real)
@ -273,8 +276,10 @@ _acb_hypgeom_coulomb(acb_t F, acb_t G, acb_t Hpos, acb_t Hneg, const acb_t l, co
}
else
{
/* http://fungrim.org/entry/8027e8/ */
acb_div_onei(u, F);
acb_add(u, H1, u, prec);
/* http://fungrim.org/entry/69e5fb/ */
acb_mul_onei(v, F);
acb_add(v, H2, v, prec);
@ -292,7 +297,9 @@ _acb_hypgeom_coulomb(acb_t F, acb_t G, acb_t Hpos, acb_t Hneg, const acb_t l, co
if (Hpos != NULL)
{
/* http://fungrim.org/entry/bcdfc6/ */
acb_set(u, H1);
/* http://fungrim.org/entry/f0414a/ */
acb_mul_onei(v, F);
acb_mul_2exp_si(v, v, 1);
acb_add(v, H2, v, prec);
@ -310,9 +317,11 @@ _acb_hypgeom_coulomb(acb_t F, acb_t G, acb_t Hpos, acb_t Hneg, const acb_t l, co
if (Hneg != NULL)
{
/* http://fungrim.org/entry/0cc301/ */
acb_div_onei(u, F);
acb_mul_2exp_si(u, u, 1);
acb_add(u, H1, u, prec);
/* http://fungrim.org/entry/781eae/ */
acb_set(v, H2);
if (cut)

View file

@ -28,6 +28,7 @@ _acb_hypgeom_coulomb_f_int_jet(acb_ptr F, const acb_t l, const acb_t eta, const
return;
}
/* http://fungrim.org/entry/2a2f18/ */
/* F = C * (z+x)^(l+1) e^(-+ i (z+x)) M(l + 1 -+ i eta, 2l+2, +- 2 i (z+x)) */
acb_poly_init(a);
@ -169,6 +170,9 @@ _acb_hypgeom_coulomb_jet(acb_ptr F, acb_ptr G, acb_ptr Hpos, acb_ptr Hneg, const
(Hneg == NULL) ? NULL : (Hneg + 1),
l1, eta, z, prec);
/* First derivatives:
http://fungrim.org/entry/a51a4b/, http://fungrim.org/entry/2fec14/ */
/* R_l = (2l+1) C_l / C_{l+1} = sqrt(l+i eta) sqrt(l-i eta) / l */
if (acb_is_real(l) && acb_is_real(eta) && arb_is_nonzero(acb_realref(eta)))
{
@ -233,6 +237,7 @@ _acb_hypgeom_coulomb_jet(acb_ptr F, acb_ptr G, acb_ptr Hpos, acb_ptr Hneg, const
acb_inv(w, z, prec);
acb_mul(w2, w, w, prec);
/* http://fungrim.org/entry/07a654/ */
/* F''/2 = q F, q = (2eta/z + l(l+1)/z^2 - 1)/2 */
acb_mul(q, l, l1, prec);
@ -247,6 +252,7 @@ _acb_hypgeom_coulomb_jet(acb_ptr F, acb_ptr G, acb_ptr Hpos, acb_ptr Hneg, const
if (Hpos != NULL) acb_mul(Hpos + 2, Hpos, q, prec);
if (Hneg != NULL) acb_mul(Hneg + 2, Hneg, q, prec);
/* http://fungrim.org/entry/faa118/ */
/* F'''/6 = (2qF' - q2 F)/6, q2 = 2(eta + l(l+1)/z)/z^2 */
if (len >= 4)
{
@ -286,6 +292,7 @@ _acb_hypgeom_coulomb_jet(acb_ptr F, acb_ptr G, acb_ptr Hpos, acb_ptr Hneg, const
}
}
/* http://fungrim.org/entry/eca10b/ */
if (len >= 5)
{
slong k;