 |
My Project
debian-1:4.1.1-p2+ds-4
|
Go to the source code of this file.
◆ multifastmult()
poly multifastmult |
( |
poly |
f, |
|
|
poly |
g, |
|
|
ring |
r |
|
) |
| |
◆ Mults()
◆ pFastPower()
poly pFastPower |
( |
poly |
f, |
|
|
int |
n, |
|
|
ring |
r |
|
) |
| |
Definition at line 342 of file fast_mult.cc.
345 if (n==0)
return p_ISet(1,r);
354 int field_size=pot_max+1;
355 int* int_pot_array=(
int*)
omAlloc(field_size*
sizeof(
int));
356 poly* pot_array=(poly*)
omAlloc(field_size*
sizeof(poly));
360 for(
i=0;
i<field_size;
i++)
362 int_pot_array[
i]=pot;
367 for(
i=1;
i<field_size;
i++)
369 poly
p=pot_array[
i-1];
379 assume(work_n>=int_pot_array[field_size-1]);
398 for(
i=field_size-1;
i>=0;
i--)
401 assume(work_n<2*int_pot_array[
i]);
402 if(int_pot_array[
i]<=work_n)
404 work_n-=int_pot_array[
i];
407 else int_pot_array[
i]=0;
410 for(
i=0;
i<field_size;
i++)
412 if(int_pot_array[
i]==1)
◆ pFastPowerMC()
poly pFastPowerMC |
( |
poly |
f, |
|
|
int |
n, |
|
|
ring |
r |
|
) |
| |
Definition at line 588 of file fast_mult.cc.
593 WerrorS(
"Char not 0, pFastPowerMC not implemented for this case");
595 WerrorS(
"not implemented for so small n, recursion fails");
597 WerrorS(
"not implemented for so small length of f, recursion fails");
599 number* facult=(number*)
omAlloc((n+1)*
sizeof(number));
600 facult[0]=
n_Init(1,r->cf);
605 facult[
i]=
n_Mult(this_n,facult[
i-1],r->cf);
616 poly* f_terms=(poly*)
omAlloc(f_len*
sizeof(poly));
617 poly** term_potences=(poly**)
omAlloc(f_len*
sizeof(poly*));
623 f_iter=
pNext(f_iter);
627 term_potences[
i]=(poly*)
omAlloc((n+1)*
sizeof(poly));
628 term_potences[
i][0]=
p_ISet(1,r);
637 number one=
n_Init(1,r->cf);
638 MC_iterate(
f,n,r,f_len,&facult[0], &
exp[0], &f_terms[0],erg_bucket,0,0,one,zw,tmp, term_potences);
653 for (
i=0;
i<f_len;
i++)
◆ unifastmult()
poly unifastmult |
( |
poly |
f, |
|
|
poly |
g, |
|
|
ring |
r |
|
) |
| |
poly multifastmult(poly f, poly g, ring r)
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
void p_Normalize(poly p, const ring r)
static poly p_MonMultCMB(poly p, poly q, ring r)
#define omGetSpecBin(size)
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
static unsigned pLength(poly a)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
static short rVar(const ring r)
#define rVar(r) (r->N)
void kBucketDestroy(kBucket_pt *bucket_pt)
void kBucketInit(kBucket_pt bucket, poly lm, int length)
static int max(int a, int b)
static poly pp_Mult_qq(poly p, poly q, const ring r)
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of 'a' and 'b', i.e., a*b
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
static poly p_Init(const ring r, omBin bin)
void kBucketClear(kBucket_pt bucket, poly *p, int *length)
gmp_float exp(const gmp_float &a)
static void p_Delete(poly *p, const ring r)
static int min(int a, int b)
static poly do_unifastmult(poly f, int df, poly g, int dg, int vn, fastmultrec rec, ring r)
#define omUnGetSpecBin(bin_ptr)
void WerrorS(const char *s)
kBucket_pt kBucketCreate(const ring bucket_ring)
Creation/Destruction of buckets.
poly p_ISet(long i, const ring r)
returns the poly representing the integer i
poly unifastmult(poly f, poly g, ring r)
static void MC_iterate(poly f, int n, ring r, int f_len, number *facult, int *exp, poly *f_terms, kBucket_pt erg_bucket, int pos, int sum, number coef, poly &zw, poly tmp, poly **term_pot)