Changeset 3510a6 in git
- Timestamp:
- May 5, 2010, 4:02:31 PM (13 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- d0a51ee4394b5f223004bd691b3fd91403cea0a1
- Parents:
- dc093ce0cffbd8b24b4eb47a678f5b0d90e52231
- git-author:
- Martin Lee <martinlee84@web.de>2010-05-05 16:02:31+02:00
- git-committer:
- Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 11:51:40+01:00
- Location:
- coeffs
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
coeffs/ffields.cc
rdc093ce r3510a6 8 8 9 9 #include <string.h> 10 #include <kernel/mod2.h> 11 #include <omalloc/mylimits.h> 12 #include <kernel/febase.h> 13 #include <omalloc/omalloc.h> 14 #include <kernel/numbers.h> 15 #include <kernel/ring.h> 16 #include <kernel/ffields.h> 10 #include "coeffs.h" 11 #include <mylimits.h> 12 #include <output.h> 13 #include <omalloc.h> 14 #include "numbers.h" 15 #include "ffields.h" 17 16 18 17 int nfCharQ=0; /* the number of elemts: q*/ … … 91 90 0 }; 92 91 92 const char* eati(const char *s, int *i) 93 { 94 int l=0; 95 96 if (*s >= '0' && *s <= '9') 97 { 98 *i = 0; 99 while (*s >= '0' && *s <= '9') 100 { 101 *i *= 10; 102 *i += *s++ - '0'; 103 l++; 104 if ((l>=MAX_INT_LEN)||((*i) <0)) 105 { 106 s-=l; 107 Werror("`%s` greater than %d(max. integer representation)", 108 s,MAX_INT_VAL); 109 return s; 110 } 111 } 112 } 113 else *i = 1; 114 return s; 115 } 116 93 117 /*1 94 118 * numbers in GF(p^n): … … 127 151 * k >= 0 ? 128 152 */ 129 BOOLEAN nfGreaterZero (number k )153 BOOLEAN nfGreaterZero (number k, const coeffs r) 130 154 { 131 155 #ifdef LDEBUG 132 156 nfTest(k); 133 157 #endif 134 return !nfIsZero(k ) && !nfIsMOne(k);158 return !nfIsZero(k, r) && !nfIsMOne(k, r); 135 159 } 136 160 … … 138 162 * a*b 139 163 */ 140 number nfMult (number a,number b )164 number nfMult (number a,number b, const coeffs r) 141 165 { 142 166 #ifdef LDEBUG … … 158 182 * int -> number 159 183 */ 160 number nfInit (int i, const ringr)184 number nfInit (int i, const coeffs r) 161 185 { 162 186 // Hmm .. this is just to prevent initialization … … 181 205 * the generating element `z` 182 206 */ 183 number nfPar (int i )207 number nfPar (int i, const coeffs r) 184 208 { 185 209 return (number)1; … … 189 213 * the degree of the "alg. number" 190 214 */ 191 int nfParDeg(number n )215 int nfParDeg(number n, const coeffs r) 192 216 { 193 217 #ifdef LDEBUG … … 201 225 * number -> int 202 226 */ 203 int nfInt (number &n, const ringr)227 int nfInt (number &n, const coeffs r) 204 228 { 205 229 return 0; … … 209 233 * a + b 210 234 */ 211 number nfAdd (number a, number b )235 number nfAdd (number a, number b, const coeffs R) 212 236 { 213 237 /*4 z^a+z^b=z^b*(z^(a-b)+1), if a>=b; * … … 248 272 * a - b 249 273 */ 250 number nfSub (number a, number b )251 { 252 number mb = nfNeg(b );253 return nfAdd(a,mb );274 number nfSub (number a, number b, const coeffs r) 275 { 276 number mb = nfNeg(b, r); 277 return nfAdd(a,mb,r); 254 278 } 255 279 … … 257 281 * a == 0 ? 258 282 */ 259 BOOLEAN nfIsZero (number a )283 BOOLEAN nfIsZero (number a, const coeffs r) 260 284 { 261 285 #ifdef LDEBUG … … 268 292 * a == 1 ? 269 293 */ 270 BOOLEAN nfIsOne (number a )294 BOOLEAN nfIsOne (number a, const coeffs r) 271 295 { 272 296 #ifdef LDEBUG … … 279 303 * a == -1 ? 280 304 */ 281 BOOLEAN nfIsMOne (number a )305 BOOLEAN nfIsMOne (number a, const coeffs r) 282 306 { 283 307 #ifdef LDEBUG … … 291 315 * a / b 292 316 */ 293 number nfDiv (number a,number b )317 number nfDiv (number a,number b, const coeffs r) 294 318 { 295 319 #ifdef LDEBUG … … 319 343 * 1 / c 320 344 */ 321 number nfInvers (number c )345 number nfInvers (number c, const coeffs r) 322 346 { 323 347 #ifdef LDEBUG … … 338 362 * -c 339 363 */ 340 number nfNeg (number c )364 number nfNeg (number c, const coeffs r) 341 365 { 342 366 /*4 -z^c=z^c*(-1)=z^c*nfM1*/ … … 356 380 * a > b ? 357 381 */ 358 BOOLEAN nfGreater (number a,number b )382 BOOLEAN nfGreater (number a,number b, const coeffs r) 359 383 { 360 384 #ifdef LDEBUG … … 368 392 * a == b ? 369 393 */ 370 BOOLEAN nfEqual (number a,number b )394 BOOLEAN nfEqual (number a,number b, const coeffs r) 371 395 { 372 396 #ifdef LDEBUG … … 380 404 * write via StringAppend 381 405 */ 382 void nfWrite (number &a, const ringr)406 void nfWrite (number &a, const coeffs r) 383 407 { 384 408 #ifdef LDEBUG … … 387 411 if ((long)a==(long)nfCharQ) StringAppendS("0"); 388 412 else if ((long)a==0L) StringAppendS("1"); 389 else if (nfIsMOne(a )) StringAppendS("-1");413 else if (nfIsMOne(a, r)) StringAppendS("-1"); 390 414 else 391 415 { … … 402 426 * 403 427 */ 404 char * nfName(number a )428 char * nfName(number a, const coeffs r) 405 429 { 406 430 #ifdef LDEBUG … … 408 432 #endif 409 433 char *s; 410 char *nfParameter= currRing->parameter[0];434 char *nfParameter=r->parameter[0]; 411 435 if (((long)a==(long)nfCharQ) || ((long)a==0L)) return NULL; 412 436 else if ((long)a==1L) … … 424 448 * c ^ i with i>=0 425 449 */ 426 void nfPower (number a, int i, number * result )450 void nfPower (number a, int i, number * result, const coeffs r) 427 451 { 428 452 #ifdef LDEBUG … … 440 464 else 441 465 { 442 nfPower(a,i-1,result );443 *result = nfMult(a,*result );466 nfPower(a,i-1,result, r); 467 *result = nfMult(a,*result, r); 444 468 } 445 469 #ifdef LDEBUG … … 472 496 * read a number 473 497 */ 474 const char * nfRead (const char *s, number *a )498 const char * nfRead (const char *s, number *a, const coeffs r) 475 499 { 476 500 int i; … … 479 503 480 504 s = nfEati(s, &i); 481 z=nfInit(i, currRing);505 z=nfInit(i, r); 482 506 *a=z; 483 507 if (*s == '/') … … 485 509 s++; 486 510 s = nfEati(s, &i); 487 n=nfInit(i, currRing);488 *a = nfDiv(z,n );489 } 490 char *nfParameter= currRing->parameter[0];511 n=nfInit(i, r); 512 *a = nfDiv(z,n,r); 513 } 514 char *nfParameter=r->parameter[0]; 491 515 if (strncmp(s,nfParameter,strlen(nfParameter))==0) 492 516 { … … 500 524 i=1; 501 525 z=(number)(long)i; 502 *a=nfMult(*a,z );526 *a=nfMult(*a,z,r); 503 527 } 504 528 #ifdef LDEBUG … … 701 725 nMapFunc nfSetMap(const ring src, const ring dst) 702 726 { 703 if ( rField_is_GF(src,nfCharQ))727 if (nField_is_GF(src,nfCharQ)) 704 728 { 705 729 return ndCopy; /* GF(p,n) -> GF(p,n) */ 706 730 } 707 if ( rField_is_GF(src))731 if (nField_is_GF(src)) 708 732 { 709 733 int q=src->ch; … … 738 762 } 739 763 } 740 if ( rField_is_Zp(src,nfCharP))764 if (nField_is_Zp(src,nfCharP)) 741 765 { 742 766 return nfMapP; /* Z/p -> GF(p,n) */ -
coeffs/ffields.h
rdc093ce r3510a6 10 10 #include "coeffs.h" 11 11 12 // #define MAX_INT_VAL 0x7fffffff 12 13 13 14 BOOLEAN nfGreaterZero (number k, const coeffs r);
Note: See TracChangeset
for help on using the changeset viewer.