mirror of
https://github.com/vale981/arb
synced 2025-03-05 17:31:38 -05:00
factor out code for generating tables of powers
This commit is contained in:
parent
e66b930ab4
commit
c1ecf12e18
6 changed files with 40 additions and 44 deletions
18
fmpcb.h
18
fmpcb.h
|
@ -696,4 +696,22 @@ _fmpcb_vec_bits(const fmpcb_struct * vec, long len)
|
|||
return _fmprb_vec_bits((const fmprb_struct *) vec, 2 * len);
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
_fmpcb_vec_set_powers(fmpcb_struct * xs, const fmpcb_t x, long len, long prec)
|
||||
{
|
||||
long i;
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
fmpcb_one(xs + i);
|
||||
else if (i == 1)
|
||||
fmpcb_set_round(xs + i, x, prec);
|
||||
else if (i % 2 == 0)
|
||||
fmpcb_mul(xs + i, xs + i / 2, xs + i / 2, prec);
|
||||
else
|
||||
fmpcb_mul(xs + i, xs + i - 1, x, prec);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
18
fmprb.h
18
fmprb.h
|
@ -670,4 +670,22 @@ _fmprb_vec_bits(const fmprb_struct * x, long len)
|
|||
return b;
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
_fmprb_vec_set_powers(fmprb_struct * xs, const fmprb_t x, long len, long prec)
|
||||
{
|
||||
long i;
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
fmprb_one(xs + i);
|
||||
else if (i == 1)
|
||||
fmprb_set_round(xs + i, x, prec);
|
||||
else if (i % 2 == 0)
|
||||
fmprb_mul(xs + i, xs + i / 2, xs + i / 2, prec);
|
||||
else
|
||||
fmprb_mul(xs + i, xs + i - 1, x, prec);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -65,17 +65,7 @@ _fmprb_poly_evaluate2_fmpcb_rectangular(fmpcb_t y, fmpcb_t z,
|
|||
fmpcb_init(t);
|
||||
fmprb_init(c);
|
||||
|
||||
for (i = 0; i <= m; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
fmpcb_one(xs + i);
|
||||
else if (i == 1)
|
||||
fmpcb_set(xs + i, x);
|
||||
else if (i % 2 == 0)
|
||||
fmpcb_mul(xs + i, xs + i / 2, xs + i / 2, prec);
|
||||
else
|
||||
fmpcb_mul(xs + i, xs + i - 1, x, prec);
|
||||
}
|
||||
_fmpcb_vec_set_powers(xs, x, m + 1, prec);
|
||||
|
||||
fmpcb_set_fmprb(y, poly + (r - 1) * m);
|
||||
for (j = 1; (r - 1) * m + j < len; j++)
|
||||
|
|
|
@ -64,17 +64,7 @@ _fmprb_poly_evaluate2_rectangular(fmprb_t y, fmprb_t z, const fmprb_struct * pol
|
|||
fmprb_init(t);
|
||||
fmprb_init(c);
|
||||
|
||||
for (i = 0; i <= m; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
fmprb_one(xs + i);
|
||||
else if (i == 1)
|
||||
fmprb_set(xs + i, x);
|
||||
else if (i % 2 == 0)
|
||||
fmprb_mul(xs + i, xs + i / 2, xs + i / 2, prec);
|
||||
else
|
||||
fmprb_mul(xs + i, xs + i - 1, x, prec);
|
||||
}
|
||||
_fmprb_vec_set_powers(xs, x, m + 1, prec);
|
||||
|
||||
fmprb_set(y, poly + (r - 1) * m);
|
||||
for (j = 1; (r - 1) * m + j < len; j++)
|
||||
|
|
|
@ -59,17 +59,7 @@ _fmprb_poly_evaluate_fmpcb_rectangular(fmpcb_t y, const fmprb_struct * poly,
|
|||
fmpcb_init(t);
|
||||
fmpcb_init(c);
|
||||
|
||||
for (i = 0; i <= m; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
fmpcb_one(xs + i);
|
||||
else if (i == 1)
|
||||
fmpcb_set(xs + i, x);
|
||||
else if (i % 2 == 0)
|
||||
fmpcb_mul(xs + i, xs + i / 2, xs + i / 2, prec);
|
||||
else
|
||||
fmpcb_mul(xs + i, xs + i - 1, x, prec);
|
||||
}
|
||||
_fmpcb_vec_set_powers(xs, x, m + 1, prec);
|
||||
|
||||
fmpcb_set_fmprb(y, poly + (r - 1) * m);
|
||||
for (j = 1; (r - 1) * m + j < len; j++)
|
||||
|
|
|
@ -59,17 +59,7 @@ _fmprb_poly_evaluate_rectangular(fmprb_t y, const fmprb_struct * poly,
|
|||
fmprb_init(t);
|
||||
fmprb_init(c);
|
||||
|
||||
for (i = 0; i <= m; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
fmprb_one(xs + i);
|
||||
else if (i == 1)
|
||||
fmprb_set(xs + i, x);
|
||||
else if (i % 2 == 0)
|
||||
fmprb_mul(xs + i, xs + i / 2, xs + i / 2, prec);
|
||||
else
|
||||
fmprb_mul(xs + i, xs + i - 1, x, prec);
|
||||
}
|
||||
_fmprb_vec_set_powers(xs, x, m + 1, prec);
|
||||
|
||||
fmprb_set(y, poly + (r - 1) * m);
|
||||
for (j = 1; (r - 1) * m + j < len; j++)
|
||||
|
|
Loading…
Add table
Reference in a new issue