 |
My Project
debian-1:4.1.2-p1+ds-2
|
Go to the documentation of this file.
31 4, 8, 16, 32, 64, 128, 256, 512,1024,2048,4096,8192,16384, 32768,
33 9, 27, 81,243,729,2187, 6561,19683,59049,
35 25,125,625,3125,15625,
113 if (((
long)a<0L) || ((
long)a>(
long)r->m_nfCharQ))
115 Print(
"wrong %d in %s:%d\n",(
int)((
long)a),
f,
l);
121 if (r->m_nfPlus1Table[
i]>r->m_nfCharQ)
123 Print(
"wrong table %d=%d in %s:%d\n",
i,r->m_nfPlus1Table[
i],
f,
l);
127 }
while (i<r->m_nfCharQ);
130 #define nfTest(N, R) nfDBTest(N,__FILE__,__LINE__, R)
141 return (
long)r->m_nfCharQ == (long)a;
152 if (0L == (
long)a)
return FALSE;
153 return (
long)r->m_nfM1 == (long)a;
176 if (((
long)a == (
long)r->m_nfCharQ) || ((
long)
b == (
long)r->m_nfCharQ))
177 return (number)(long)r->m_nfCharQ;
179 int i=(
int)((long)a+(
long)
b);
180 if (
i>=r->m_nfCharQ1)
i-=r->m_nfCharQ1;
184 return (number)(long)
i;
195 if (
i==0)
return (number)(long)r->m_nfCharQ;
196 while (
i < 0)
i += r->m_nfCharP;
197 while (
i >= r->m_nfCharP)
i -= r->m_nfCharP;
198 if (
i==0)
return (number)(long)r->m_nfCharQ;
202 c=r->m_nfPlus1Table[c];
206 nfTest((number)(
long)c, r);
208 return (number)(long)c;
232 if((
long)r->m_nfCharQ == (
long)n)
return -1;
233 return (
int)((long)n);
242 unsigned short nn=(
unsigned short)(
long)n;
243 if (nn==r->m_nfCharQ)
return 0;
245 while ((c!=nn)&&(
i<r->m_nfCharP))
247 c=r->m_nfPlus1Table[c];
265 if ((
long)
R->m_nfCharQ == (
long)a)
return b;
266 if ((
long)
R->m_nfCharQ == (
long)
b)
return a;
268 if ((
long)a >= (
long)
b)
271 zab = (long)a-(
long)
b;
276 zab = (long)
b-(
long)a;
281 if (
R->m_nfPlus1Table[zab]==
R->m_nfCharQ) r=(long)
R->m_nfCharQ;
284 r= zb+(
long)
R->m_nfPlus1Table[zab];
285 if(r>=(
long)
R->m_nfCharQ1) r-=(
long)
R->m_nfCharQ1;
302 if ((
long)r->m_nfCharQ == (
long)c)
return c;
303 long i=(long)c+(
long)r->m_nfM1;
304 if (
i>=(
long)r->m_nfCharQ1)
i-=(
long)r->m_nfCharQ1;
317 return nfAdd(a,mb,r);
328 return 0L == (long)a;
339 if ((
long)
b==(
long)r->m_nfCharQ)
342 return (number)((long)r->m_nfCharQ);
347 if ((
long)a==(
long)r->m_nfCharQ)
348 return (number)((long)r->m_nfCharQ);
350 long s = (long)a - (
long)
b;
352 s += (long)r->m_nfCharQ1;
367 if ((
long)c==(
long)r->m_nfCharQ)
370 return (number)((long)r->m_nfCharQ);
373 nfTest(((number)((
long)r->m_nfCharQ1-(
long)c)), r);
375 return (number)((long)r->m_nfCharQ1-(
long)c);
387 return (
long)a != (long)
b;
399 return (
long)a == (long)
b;
417 unsigned short nn=(
unsigned short)(
long)a;
418 while ((c!=nn)&&(
i<r->m_nfCharQ))
420 c=r->m_nfPlus1Table[c];
451 unsigned short nn=(
unsigned short)(
long)a;
452 while ((c!=nn)&&(
i<r->m_nfCharQ))
454 c=r->m_nfPlus1Table[c];
488 if ((
long)a == (long)r->m_nfCharQ) rl=(long)r->m_nfCharQ;
489 else rl=((
long)a*(long)
i) % (long)r->m_nfCharQ1;
502 return nEati((
char *)
s,
i,r->m_nfCharP);
525 const int N = strlen(nf_Parameter);
526 if (strncmp(
s,nf_Parameter,
N)==0)
529 if ((*
s >=
'0') && (*
s <=
'9'))
532 while (
i>=r->m_nfCharQ1)
i-=r->m_nfCharQ1;
568 const char *
l=strchr(
s,
';')+1;
570 int i=strtol(
l,&n,10);
584 WerrorS(
"error in reading minpoly from gftables");
594 if ((c==r->m_nfCharQ)||(c== -r->m_nfCharQ))
610 if (r->m_nfCharQ > 1)
612 omFreeSize( (
ADDRESS)r->m_nfPlus1Table,(r->m_nfCharQ+1)*
sizeof(
unsigned short) );
613 r->m_nfPlus1Table=
NULL;
617 if (c>1) r->m_nfCharQ = c;
618 else r->m_nfCharQ = -c;
620 sprintf(
buf,
"gftables/%d",r->m_nfCharQ);
626 if(!fgets(
buf,
sizeof(
buf),
fp))
return;
627 if(strcmp(
buf,
"@@ factory GF(q) table @@\n")!=0)
639 res = sscanf(
buf,
"%d %d",&r->m_nfCharP,&q);
641 while((
res < 0) and (errno == EINTR));
644 r->m_nfCharQ1=r->m_nfCharQ-1;
646 r->m_nfPlus1Table= (
unsigned short *)
omAlloc0( (r->m_nfCharQ+1)*
sizeof(
unsigned short) );
651 while ( i < r->m_nfCharQ )
657 while ( (i < r->m_nfCharQ) && (
k < 30) )
660 if(r->m_nfPlus1Table[
i]>r->m_nfCharQ)
662 Print(
"wrong entry %d: %d(%c%c%c)\n",
i,r->m_nfPlus1Table[
i],bufptr[0],bufptr[1],bufptr[2]);
665 if (r->m_nfPlus1Table[
i]==r->m_nfCharQ)
679 r->m_nfPlus1Table[0]=r->m_nfPlus1Table[r->m_nfCharQ1];
688 Werror(
"illegal GF-table %d",r->m_nfCharQ);
696 return nfInit((
int)((
long)c), dst);
707 while (
i >src->m_nfCharQ1)
i-=src->m_nfCharQ1;
708 return (number)((long)
i);
715 int ex=(int)((
long)c);
719 return (number)(long)src->m_nfCharQ;
735 if ((src->m_nfCharQ % q)==0)
740 while(qq!=q) { qq *= r->m_nfCharP; n1++; }
743 while(qq!=src->m_nfCharQ) { qq *= r->m_nfCharP; n2++; }
747 int save_ch=r->m_nfCharQ;
749 int nn=r->m_nfPlus1Table[0];
755 else if ((n1 % n2)==0)
791 sprintf(
s,
"%d,%s",r->m_nfCharQ,
p);
799 nfCoeffName_buf[31]=
'\0';
800 snprintf(nfCoeffName_buf,31,
"ZZ/%d[%s]",r->m_nfCharQ,
p);
801 return nfCoeffName_buf;
806 return (number)(long)(
p() %(
cf->m_nfCharQ+1));
820 else PrintS(
"// minpoly : ...");
827 int c = (int)
pow ((
double)
p->GFChar, (double)
p->GFDegree);
849 r->cfExactDiv=
nfDiv;
899 const char *
name =
p->GFPar_name;
902 r->m_nfCharP =
p->GFChar;
905 r->iNumberOfParameters = 1;
908 char ** pParameterNames = (
char **)
omAlloc(
sizeof(
char *));
913 r->pParameterNames = (
const char**)pParameterNames;
915 r->m_nfPlus1Table=
NULL;
917 if (strlen(
name) > 1)
922 r->has_simple_Alloc=
TRUE;
923 r->has_simple_Inverse=
TRUE;
925 if(
p->GFChar > (2<<15))
928 WarnS(
"illegal characteristic");
933 const double check=
log ((
double) (
p->GFChar));
935 #define sixteenlog2 11.09035489
939 Warn(
"Sorry: illegal size: %u ^ %u",
p->GFChar,
p->GFDegree );
944 int c = (int)
pow ((
double)
p->GFChar, (double)
p->GFDegree);
948 if( r->m_nfPlus1Table ==
NULL )
954 assume (r -> m_nfCharQ > 0);
956 r->ch = r->m_nfCharP;
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
static nMapFunc nfSetMap(const coeffs src, const coeffs dst)
static FORCE_INLINE BOOLEAN nCoeff_is_Zp(const coeffs r)
void StringAppendS(const char *st)
static char * nfCoeffString(const coeffs r)
FILE * feFopen(const char *path, const char *mode, char *where, short useWerror, short path_only)
static void nfCoeffWrite(const coeffs r, BOOLEAN details)
Creation data needed for finite fields.
static BOOLEAN nfIsMOne(number a, const coeffs r)
static int nfParDeg(number n, const coeffs r)
const unsigned short fftable[]
static void nfPower(number a, int i, number *result, const coeffs r)
number ndCopyMap(number a, const coeffs aRing, const coeffs r)
static const char * nfEati(const char *s, int *i, const coeffs r)
const CanonicalForm CFMap CFMap & N
static FORCE_INLINE BOOLEAN nCoeff_is_GF(const coeffs r)
static number nfRandom(siRandProc p, number, number, const coeffs cf)
static number nfMapGGrev(number c, const coeffs src, const coeffs)
int gf_tab_numdigits62(int q)
static number nfInvers(number c, const coeffs r)
static void nfWriteLong(number a, const coeffs r)
int convertback62(char *p, int n)
static BOOLEAN nfIsZero(number a, const coeffs r)
static number nfDiv(number a, number b, const coeffs r)
static char * nfCoeffName(const coeffs r)
static const char * nfRead(const char *s, number *a, const coeffs r)
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst
static BOOLEAN nfEqual(number a, number b, const coeffs r)
int status int void * buf
const char *const nDivBy0
void PrintS(const char *s)
#define omFreeSize(addr, size)
static number nfSub(number a, number b, const coeffs r)
static BOOLEAN nfGreater(number a, number b, const coeffs r)
static BOOLEAN nfIsOne(number a, const coeffs r)
number nlModP(number q, const coeffs, const coeffs Zp)
STATIC_VAR int nfMapGG_factor
void nfShowMipo(const coeffs r)
Show the mininimal polynom.... NOTE: this is used by char * sleftv::String(void *d,...
static number nfInit(long i, const coeffs r)
static void nfReadTable(const int c, const coeffs r)
static FORCE_INLINE const char ** n_ParameterNames(const coeffs r)
Returns a (const!) pointer to (const char*) names of parameters.
STATIC_VAR int nfMinPoly[16]
static number nfAdd(number a, number b, const coeffs R)
static BOOLEAN nfGreaterZero(number k, const coeffs r)
void StringSetS(const char *st)
gmp_float log(const gmp_float &a)
static number nfNeg(number c, const coeffs r)
void Werror(const char *fmt,...)
char name(const Variable &v)
Rational pow(const Rational &a, int e)
void WerrorS(const char *s)
BOOLEAN nfDBTest(number a, const char *f, const int l, const coeffs r)
static long nfInt(number &n, const coeffs r)
const char * eati(const char *s, int *i)
static number nfMult(number a, number b, const coeffs r)
BOOLEAN nfInitChar(coeffs r, void *parameter)
static number nfMapGG(number c, const coeffs src, const coeffs)
char * nEati(char *s, int *i, int m)
divide by the first (leading) number and return it, i.e. make monic
static number nfParameter(int i, const coeffs)
const CanonicalForm int s
static void nfKillChar(coeffs r)
static number nfMapP(number c, const coeffs, const coeffs dst)
static void nfReadMipo(char *s)
static BOOLEAN nfCoeffIsEqual(const coeffs, n_coeffType, void *)
static void nfWriteShort(number a, const coeffs r)