Ppfac for the "new" B-coefficient
Former-commit-id: aea661c0419d2b619e79044960728a225a7f7132
This commit is contained in:
parent
16241b6556
commit
e3713d61a3
|
@ -477,7 +477,7 @@ static void qpms_trans_calculator_multipliers_A_general(
|
||||||
int Pp_order = mu - m;
|
int Pp_order = mu - m;
|
||||||
assert(p >= abs(Pp_order));
|
assert(p >= abs(Pp_order));
|
||||||
double a1q_n = a1q[q] / a1q0;
|
double a1q_n = a1q[q] / a1q0;
|
||||||
// Assuming non_normalized legendre polynomials!
|
// Assuming non_normalized legendre polynomials (normalisation done here by hand)!
|
||||||
double Ppfac = (Pp_order >= 0) ? 1 :
|
double Ppfac = (Pp_order >= 0) ? 1 :
|
||||||
min1pow(mu-m) * exp(lgamma(1+p+Pp_order)-lgamma(1+p-Pp_order));
|
min1pow(mu-m) * exp(lgamma(1+p+Pp_order)-lgamma(1+p-Pp_order));
|
||||||
double summandfac = (n*(n+1) + nu*(nu+1) - p*(p+1)) * min1pow(q) * a1q_n;
|
double summandfac = (n*(n+1) + nu*(nu+1) - p*(p+1)) * min1pow(q) * a1q_n;
|
||||||
|
@ -521,11 +521,16 @@ void qpms_trans_calculator_multipliers_B_general(
|
||||||
|
|
||||||
for(int q = BQ_OFFSET; q <= Qmax; ++q) {
|
for(int q = BQ_OFFSET; q <= Qmax; ++q) {
|
||||||
int p = n+nu-2*q;
|
int p = n+nu-2*q;
|
||||||
|
int Pp_order = mu - m;
|
||||||
|
// Assuming non-normalised Legendre polynomials, normalise here by hand.
|
||||||
|
// Ppfac_ differs from Ppfac in the A-case by the substitution p->p+1
|
||||||
|
double Ppfac_ = (Pp_order >= 0)? 1 :
|
||||||
|
min1pow(mu-m) * exp(lgamma(1+1+p+Pp_order)-lgamma(1+1+p-Pp_order));
|
||||||
double t = sqrt(
|
double t = sqrt(
|
||||||
(isq(p+1)-isq(n-nu))
|
(isq(p+1)-isq(n-nu))
|
||||||
* (isq(n+nu+1)-isq(p+1))
|
* (isq(n+nu+1)-isq(p+1))
|
||||||
);
|
);
|
||||||
dest[q-BQ_OFFSET] = presum * t
|
dest[q-BQ_OFFSET] = presum * t * Ppfac_
|
||||||
* cruzan_bfactor(-m,n,mu,nu,p) * ipow(p+1);
|
* cruzan_bfactor(-m,n,mu,nu,p) * ipow(p+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue