fix acb_dft_bluestein for length 0

This commit is contained in:
fredrik 2018-09-18 06:57:26 +02:00
parent e9a9293516
commit 8f996d54d6
2 changed files with 18 additions and 7 deletions

View file

@ -262,9 +262,12 @@ acb_dft_bluestein_init(acb_dft_bluestein_t t, slong n, slong prec)
ACB_DFT_INLINE void
acb_dft_bluestein_clear(acb_dft_bluestein_t t)
{
_acb_vec_clear(t->z, t->n);
_acb_vec_clear(t->g, t->rad2->n);
acb_dft_rad2_clear(t->rad2);
if (t->n != 0)
{
_acb_vec_clear(t->z, t->n);
_acb_vec_clear(t->g, t->rad2->n);
acb_dft_rad2_clear(t->rad2);
}
}
void _acb_dft_crt_init(acb_dft_crt_t crt, slong dv, slong len, slong prec);

View file

@ -88,16 +88,21 @@ _acb_dft_bluestein_init(acb_dft_bluestein_t t, slong dv, slong n, slong prec)
{
acb_ptr z, g;
slong k, n2;
int e = n_clog(2 * n - 1, 2);
int e;
t->n = n;
t->dv = dv;
if (n == 0)
return;
e = n_clog(2 * n - 1, 2);
if (DFT_VERB)
flint_printf("dft_bluestein: init z[2^%i]\n", e);
acb_dft_rad2_init(t->rad2, e, prec);
t->n = n;
t->dv = dv;
t->z = z = _acb_vec_init(n);
_acb_vec_bluestein_factors(t->z, n, prec);
@ -118,6 +123,9 @@ acb_dft_bluestein_precomp(acb_ptr w, acb_srcptr v, const acb_dft_bluestein_t t,
slong n = t->n, np = t->rad2->n, dv = t->dv;
acb_ptr fp;
if (n == 0)
return;
fp = _acb_vec_init(np);
_acb_vec_kronecker_mul_step(fp, t->z, v, dv, n, prec);