seems to work
This commit is contained in:
parent
354d2ec286
commit
9a572e33b5
1 changed files with 5 additions and 6 deletions
|
@ -355,7 +355,6 @@ NOINLINE static void map2alm_alt_kernel(s0data_v * restrict d,
|
||||||
d->lam2[i] = tmp;
|
d->lam2[i] = tmp;
|
||||||
}
|
}
|
||||||
vhsum_cmplx_special (atmp[0], atmp[1], atmp[2], atmp[3], &alm[l]);
|
vhsum_cmplx_special (atmp[0], atmp[1], atmp[2], atmp[3], &alm[l]);
|
||||||
l+=2;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -498,7 +497,6 @@ NOINLINE static void calc_map2alm_alt (sharp_job * restrict job,
|
||||||
iter_to_ieee_alt(gen, d, &l, &il, nv2);
|
iter_to_ieee_alt(gen, d, &l, &il, nv2);
|
||||||
job->opcnt += il * 4*nth;
|
job->opcnt += il * 4*nth;
|
||||||
if (l>lmax) return;
|
if (l>lmax) return;
|
||||||
// printf("beep\n");
|
|
||||||
job->opcnt += (lmax+1-l) * 6*nth;
|
job->opcnt += (lmax+1-l) * 6*nth;
|
||||||
|
|
||||||
const sharp_ylmgen_dbl2 * restrict ab = gen->ab;
|
const sharp_ylmgen_dbl2 * restrict ab = gen->ab;
|
||||||
|
@ -532,10 +530,8 @@ NOINLINE static void calc_map2alm_alt (sharp_job * restrict job,
|
||||||
}
|
}
|
||||||
vhsum_cmplx_special (atmp[0], atmp[1], atmp[2], atmp[3], &alm[l]);
|
vhsum_cmplx_special (atmp[0], atmp[1], atmp[2], atmp[3], &alm[l]);
|
||||||
l+=2; ++il;
|
l+=2; ++il;
|
||||||
full_ieee=0;
|
|
||||||
}
|
}
|
||||||
if (l>lmax) return;
|
if (l>lmax) return;
|
||||||
// printf("boop\n");
|
|
||||||
|
|
||||||
for (int i=0; i<nv2; ++i)
|
for (int i=0; i<nv2; ++i)
|
||||||
{
|
{
|
||||||
|
@ -1153,13 +1149,16 @@ d.s.p2i[nth]*=d.s.cth[nth];
|
||||||
}
|
}
|
||||||
//adjust the a_lm for the new algorithm
|
//adjust the a_lm for the new algorithm
|
||||||
dcmplx * restrict alm=job->almtmp;
|
dcmplx * restrict alm=job->almtmp;
|
||||||
|
dcmplx alm2 = 0.;
|
||||||
|
double alold=0;
|
||||||
for (int il=0, l=gen->m; l<=gen->lmax; ++il,l+=2)
|
for (int il=0, l=gen->m; l<=gen->lmax; ++il,l+=2)
|
||||||
{
|
{
|
||||||
dcmplx al = alm[l];
|
dcmplx al = alm[l];
|
||||||
dcmplx al1 = (l+1>gen->lmax) ? 0. : alm[l+1];
|
dcmplx al1 = (l+1>gen->lmax) ? 0. : alm[l+1];
|
||||||
dcmplx alm2 = (l<gen->m+2) ? 0. : alm[l-2];
|
alm[l ] = gen->alpha[il]*gen->eps[l+1]*al + alold*gen->eps[l]*alm2;
|
||||||
alm[l ] = gen->alpha[il]*(gen->eps[l+1]*al + gen->eps[l]*alm2);
|
|
||||||
alm[l+1] = gen->alpha[il]*al1;
|
alm[l+1] = gen->alpha[il]*al1;
|
||||||
|
alm2=al;
|
||||||
|
alold=gen->alpha[il];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue