Changeset 2b957a in git
- Timestamp:
- Jun 8, 2010, 11:40:27 PM (13 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '0604212ebb110535022efecad887940825b97c3f')
- Children:
- c4c8181ff644b04ae3f3b82007442444a629e055
- Parents:
- c3d17527305d0cf9da8226a23b8fc95f6e3f37d0
- git-author:
- Oleksandr Motsak <motsak@mathematik.uni-kl.de>2010-06-08 23:40:27+02:00
- git-committer:
- Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 11:55:03+01:00
- Location:
- coeffs
- Files:
-
- 1 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
coeffs/Makefile.in
rc3d175 r2b957a 35 35 CXXTEMPLFLAGS = -fno-implicit-templates --no-exceptions 36 36 CPPFLAGS = -I${srcdir} -I${includedir} -I${srcdir}/../misc/ -I${srcdir}/../resource/ -I${srcdir}/../output/ -L${srcdir}/../output/ -L${libdir} -lgmp 37 DEFS = -DNDEBUG -DOM_NDEBUG -Dix86_Linux -DHAVE_CONFIG_H 37 DEFS = -Dix86_Linux -DHAVE_CONFIG_H -DLDEBUG -DDEBUG -DOM_DEBUG -DHAVE_ASSUME 38 39 # -DNDEBUG -DOM_NDEBUG 38 40 39 41 ## End configuration dependend stuff … … 92 94 $(INSTALL_DATA) coeffs.h $(includedir)/coeffs.h 93 95 94 test: libcoeffs.a96 test: test.cc libcoeffs.a 95 97 ${CXX} ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} test.cc -L. -I. -lcoeffs -o test -lomalloc -loutput -
coeffs/gnumpc.cc
rc3d175 r2b957a 375 375 376 376 377 static BOOLEAN ngcCoeffsEqual(const coeffs r, n_coeffType n, int)377 static BOOLEAN ngcCoeffsEqual(const coeffs r, n_coeffType n, void*) 378 378 { 379 379 assume( getCoeffType(r) == ID ); … … 382 382 }; 383 383 384 void ngcInitChar(coeffs n, int)384 void ngcInitChar(coeffs n, void*) 385 385 { 386 386 assume( getCoeffType(n) == ID ); -
coeffs/gnumpc.h
rc3d175 r2b957a 14 14 15 15 /// Initialize r 16 void ngcInitChar(coeffs r, int);16 void ngcInitChar(coeffs r, void*); 17 17 18 18 /// test, whether r is an instance of nInitCoeffs(n, parameter) */ 19 static BOOLEAN ngcCoeffsEqual(const coeffs r, n_coeffType n, intparameter);19 static BOOLEAN ngcCoeffsEqual(const coeffs r, n_coeffType n, void* parameter); 20 20 21 21 -
coeffs/longrat.cc
rc3d175 r2b957a 191 191 192 192 #ifdef LDEBUG 193 BOOLEAN nlDBTest(number a, const char *f,const int l )193 BOOLEAN nlDBTest(number a, const char *f,const int l, const coeffs r) 194 194 { 195 195 if (a==NULL) … … 376 376 res=nlShort3(res); 377 377 } 378 nlTest(res );378 nlTest(res, dst); 379 379 return res; 380 380 } … … 476 476 int nlInt(number &i, const coeffs r) 477 477 { 478 nlTest(i );478 nlTest(i, r); 479 479 nlNormalize(i,r); 480 480 if (SR_HDL(i) &SR_INT) return SR_TO_INT(i); … … 505 505 number nlBigInt(number &i, const coeffs r) 506 506 { 507 nlTest(i );507 nlTest(i, r); 508 508 nlNormalize(i,r); 509 509 if (SR_HDL(i) &SR_INT) return (i); … … 523 523 number nlInvers(number a, const coeffs r) 524 524 { 525 nlTest(a );525 nlTest(a, r); 526 526 number n; 527 527 if (SR_HDL(a) & SR_INT) … … 551 551 mpz_init_set_si(n->n,(long)-SR_TO_INT(a)); 552 552 } 553 nlTest(n );553 nlTest(n, r); 554 554 return n; 555 555 } … … 592 592 } 593 593 } 594 nlTest(n );594 nlTest(n, r); 595 595 return n; 596 596 } … … 600 600 * u := a / b in Z, if b | a (else undefined) 601 601 */ 602 number nlExactDiv(number a, number b )602 number nlExactDiv(number a, number b, const coeffs r) 603 603 { 604 604 if (b==INT_TO_SR(0)) … … 644 644 } 645 645 u=nlShort3(u); 646 nlTest(u );646 nlTest(u, r); 647 647 return u; 648 648 } … … 651 651 * u := a / b in Z 652 652 */ 653 number nlIntDiv (number a, number b )653 number nlIntDiv (number a, number b, const coeffs r) 654 654 { 655 655 if (b==INT_TO_SR(0)) … … 710 710 } 711 711 u=nlShort3(u); 712 nlTest(u );712 nlTest(u, r); 713 713 return u; 714 714 } … … 794 794 } 795 795 u=nlShort3(u); 796 nlTest(u );796 nlTest(u, r); 797 797 return u; 798 798 } … … 900 900 u=nlShort3(u); 901 901 } 902 nlTest(u );902 nlTest(u, r); 903 903 return u; 904 904 } … … 912 912 if (!nlIsZero(x,r)) 913 913 { 914 nlTest(x );914 nlTest(x, r); 915 915 number aa=NULL; 916 916 if (SR_HDL(x) & SR_INT) … … 952 952 #ifdef LDEBUG 953 953 if (exp<0) Print("nlPower: neg. exp. %d\n",exp); 954 nlTest(*u );954 nlTest(*u, r); 955 955 #endif 956 956 } … … 960 960 * za >= 0 ? 961 961 */ 962 BOOLEAN nlGreaterZero (number a )963 { 964 nlTest(a );962 BOOLEAN nlGreaterZero (number a, const coeffs r) 963 { 964 nlTest(a, r); 965 965 if (SR_HDL(a) & SR_INT) return SR_HDL(a)>1L /* represents number(0) */; 966 966 return (!mpz_isNeg(a->z)); … … 972 972 BOOLEAN nlGreater (number a, number b, const coeffs r) 973 973 { 974 nlTest(a );975 nlTest(b );974 nlTest(a, r); 975 nlTest(b, r); 976 976 number re; 977 977 BOOLEAN rr; … … 985 985 * a == -1 ? 986 986 */ 987 BOOLEAN nlIsMOne (number a )987 BOOLEAN nlIsMOne (number a, const coeffs r) 988 988 { 989 989 #ifdef LDEBUG 990 990 if (a==NULL) return FALSE; 991 nlTest(a );991 nlTest(a, r); 992 992 #endif 993 993 //if (SR_HDL(a) & SR_INT) return (a==INT_TO_SR(-1L)); … … 1002 1002 { 1003 1003 number result; 1004 nlTest(a );1005 nlTest(b );1004 nlTest(a, r); 1005 nlTest(b, r); 1006 1006 //nlNormalize(a); 1007 1007 //nlNormalize(b); … … 1032 1032 else 1033 1033 result=INT_TO_SR(i); 1034 nlTest(result );1034 nlTest(result,r); 1035 1035 return result; 1036 1036 } … … 1045 1045 else 1046 1046 result=INT_TO_SR(t); 1047 nlTest(result);1048 1047 } 1049 1048 else … … 1056 1055 else 1057 1056 result=INT_TO_SR(t); 1058 nlTest(result);1059 1057 } 1060 1058 else … … 1068 1066 #endif 1069 1067 result=nlShort3(result); 1070 nlTest(result);1071 }1068 } 1069 nlTest(result, r); 1072 1070 return result; 1073 1071 } … … 1101 1099 { 1102 1100 x=nlShort3_noinline(x); 1103 nlTest(x );1101 nlTest(x,r); 1104 1102 return; 1105 1103 } … … 1137 1135 } 1138 1136 } 1139 nlTest(x );1137 nlTest(x, r); 1140 1138 } 1141 1139 … … 1146 1144 { 1147 1145 number result; 1148 nlTest(a );1149 nlTest(b );1146 nlTest(a, r); 1147 nlTest(b, r); 1150 1148 if ((SR_HDL(b) & SR_INT) 1151 1149 || (b->s==3)) … … 1184 1182 mpz_clear(gcd); 1185 1183 result=nlShort3(result); 1186 nlTest(result );1184 nlTest(result, r); 1187 1185 return result; 1188 1186 } … … 1216 1214 { 1217 1215 // Hier brauche ich einfach die GMP Zahl 1218 nlTest(i );1216 nlTest(i, r); 1219 1217 nlNormalize(i); 1220 1218 if (SR_HDL(i) & SR_INT) … … 1341 1339 1342 1340 // copy not immediate number a 1343 number _nlCopy_NoImm(number a )1341 number _nlCopy_NoImm(number a, const coeffs r) 1344 1342 { 1345 1343 assume(!((SR_HDL(a) & SR_INT)||(a==NULL))); 1346 nlTest(a );1344 nlTest(a, r); 1347 1345 number b=ALLOC_RNUMBER(); 1348 1346 #if defined(LDEBUG) … … 1359 1357 } 1360 1358 b->s = a->s; 1361 nlTest(b );1359 nlTest(b, r); 1362 1360 return b; 1363 1361 } … … 1381 1379 } 1382 1380 1383 number _nlNeg_NoImm(number a )1381 number _nlNeg_NoImm(number a, const coeffs r) 1384 1382 { 1385 1383 { … … 1390 1388 } 1391 1389 } 1392 nlTest(a );1390 nlTest(a, r); 1393 1391 return a; 1394 1392 } 1395 1393 1396 number _nlAdd_aNoImm_OR_bNoImm(number a, number b )1394 number _nlAdd_aNoImm_OR_bNoImm(number a, number b, const coeffs r) 1397 1395 { 1398 1396 number u=ALLOC_RNUMBER(); … … 1557 1555 } 1558 1556 } 1559 nlTest(u );1557 nlTest(u, r); 1560 1558 return u; 1561 1559 } 1562 1560 1563 number _nlSub_aNoImm_OR_bNoImm(number a, number b )1561 number _nlSub_aNoImm_OR_bNoImm(number a, number b, const coeffs r) 1564 1562 { 1565 1563 number u=ALLOC_RNUMBER(); … … 1781 1779 } 1782 1780 } 1783 nlTest(u );1781 nlTest(u, r); 1784 1782 return u; 1785 1783 } 1786 1784 1787 1785 // a and b are intermediate, but a*b not 1788 number _nlMult_aImm_bImm_rNoImm(number a, number b )1786 number _nlMult_aImm_bImm_rNoImm(number a, number b, const coeffs r) 1789 1787 { 1790 1788 number u=ALLOC_RNUMBER(); … … 1795 1793 mpz_init_set_si(u->z,SR_TO_INT(a)); 1796 1794 mpz_mul_si(u->z,u->z,SR_TO_INT(b)); 1797 nlTest(u );1795 nlTest(u, r); 1798 1796 return u; 1799 1797 } 1800 1798 1801 1799 // a or b are not immediate 1802 number _nlMult_aNoImm_OR_bNoImm(number a, number b )1800 number _nlMult_aNoImm_OR_bNoImm(number a, number b, const coeffs r) 1803 1801 { 1804 1802 assume(! (SR_HDL(a) & SR_HDL(b) & SR_INT)); … … 1898 1896 } 1899 1897 } 1900 nlTest(u );1898 nlTest(u, r); 1901 1899 return u; 1902 1900 } … … 1914 1912 return a; 1915 1913 } 1916 return _nlCopy_NoImm(a); 1917 } 1914 return _nlCopy_NoImm(a, src); // dst? 1915 } 1916 1918 1917 nMapFunc nlSetMap(const coeffs src, const coeffs dst) 1919 1918 { 1920 1919 assume( getCoeffType(dst) == ID ); 1921 assume( getCoeffType(src) == ID );1920 // assume( getCoeffType(src) == ID ); 1922 1921 1923 1922 if (nField_is_Q(src)) … … 2018 2017 * a = b ? 2019 2018 */ 2020 LINLINE BOOLEAN nlEqual (number a, number b )2021 { 2022 nlTest(a );2023 nlTest(b );2019 LINLINE BOOLEAN nlEqual (number a, number b, const coeffs r) 2020 { 2021 nlTest(a, r); 2022 nlTest(b, r); 2024 2023 // short - short 2025 2024 if (SR_HDL(a) & SR_HDL(b) & SR_INT) return a==b; … … 2034 2033 if ( ((ii << 3) >> 3) == ii ) n=INT_TO_SR(ii); 2035 2034 else n=nlRInit(ii); 2036 nlTest(n );2035 nlTest(n, r); 2037 2036 return n; 2038 2037 } … … 2042 2041 * a == 1 ? 2043 2042 */ 2044 LINLINE BOOLEAN nlIsOne (number a )2043 LINLINE BOOLEAN nlIsOne (number a, const coeffs r) 2045 2044 { 2046 2045 #ifdef LDEBUG 2047 2046 if (a==NULL) return FALSE; 2048 nlTest(a );2047 nlTest(a, r); 2049 2048 #endif 2050 2049 return (a==INT_TO_SR(1)); … … 2066 2065 return a; 2067 2066 } 2068 return _nlCopy_NoImm(a );2067 return _nlCopy_NoImm(a, r); 2069 2068 } 2070 2069 … … 2077 2076 if (*a!=NULL) 2078 2077 { 2079 nlTest(*a );2078 nlTest(*a, r); 2080 2079 if ((SR_HDL(*a) & SR_INT)==0) 2081 2080 { … … 2091 2090 LINLINE number nlNeg (number a, const coeffs r) 2092 2091 { 2093 nlTest(a );2092 nlTest(a, r); 2094 2093 if(SR_HDL(a) &SR_INT) 2095 2094 { … … 2099 2098 return a; 2100 2099 } 2101 return _nlNeg_NoImm(a );2100 return _nlNeg_NoImm(a, r); 2102 2101 } 2103 2102 … … 2116 2115 return nlRInit(SR_TO_INT(r)); 2117 2116 } 2118 return _nlAdd_aNoImm_OR_bNoImm(a, b );2117 return _nlAdd_aNoImm_OR_bNoImm(a, b, r); 2119 2118 } 2120 2119 … … 2198 2197 } 2199 2198 } 2200 nlTest(u );2199 nlTest(u, r); 2201 2200 return u; 2202 2201 } … … 2268 2267 } 2269 2268 } 2270 nlTest(a );2269 nlTest(a, r); 2271 2270 return a; 2272 2271 } … … 2275 2274 LINLINE number nlMult (number a, number b, const coeffs R) 2276 2275 { 2277 nlTest(a); 2278 nlTest(b); 2279 2276 nlTest(a, R); 2277 nlTest(b, R); 2280 2278 if (a==INT_TO_SR(0)) return INT_TO_SR(0); 2281 2279 if (b==INT_TO_SR(0)) return INT_TO_SR(0); … … 2289 2287 return nlRInit(SR_HDL(u)>>2); 2290 2288 } 2291 return _nlMult_aImm_bImm_rNoImm(a, b );2292 } 2293 return _nlMult_aNoImm_OR_bNoImm(a, b );2289 return _nlMult_aImm_bImm_rNoImm(a, b, R); 2290 } 2291 return _nlMult_aNoImm_OR_bNoImm(a, b, R); 2294 2292 } 2295 2293 … … 2310 2308 return nlRInit(SR_TO_INT(r)); 2311 2309 } 2312 return _nlSub_aNoImm_OR_bNoImm(a, b );2310 return _nlSub_aNoImm_OR_bNoImm(a, b, r); 2313 2311 } 2314 2312 … … 2365 2363 if ((SR_HDL(b)|SR_HDL(a))&SR_INT) 2366 2364 { 2367 number n=nlIntDiv(a,b );2365 number n=nlIntDiv(a,b, r); 2368 2366 nlDelete(&a,r); 2369 2367 a=n; … … 2464 2462 } 2465 2463 2466 void nlInitChar(coeffs r, int ch) 2467 { 2464 void nlInitChar(coeffs r, void* p) 2465 { 2466 const int ch = (int)(long)(p); 2467 2468 2468 r->cfKillChar=NULL; 2469 2469 r->cfSetChar=NULL; … … 2491 2491 r->cfNeg = nlNeg; 2492 2492 r->cfInvers= nlInvers; 2493 r->cfCopy = nl _Copy;2494 r->cfRePart = nl _Copy;2493 r->cfCopy = nlCopy; 2494 r->cfRePart = nlCopy; 2495 2495 //r->cfImPart = ndReturn0; 2496 2496 r->cfWrite = nlWrite; -
coeffs/longrat.h
rc3d175 r2b957a 58 58 LINLINE number nlMult(number a, number b, const coeffs r); 59 59 60 void nlInitChar(coeffs r, int ch); 60 void nlInitChar(coeffs r, void*); 61 static BOOLEAN nlCoeffsEqual(const coeffs r, n_coeffType n, void * parameter); 61 62 62 63 number nlInit2 (int i, int j, const coeffs r); … … 115 116 116 117 #ifdef LDEBUG 117 #define nlTest(a ) nlDBTest(a,__FILE__,__LINE__)118 BOOLEAN nlDBTest(number a, char *f,int l );118 #define nlTest(a, r) nlDBTest(a,__FILE__,__LINE__, r) 119 BOOLEAN nlDBTest(number a, char *f,int l, const coeffs r); 119 120 #else 120 #define nlTest(a ) ((void)0)121 #define nlTest(a, r) ((void)0) 121 122 #endif 122 123 -
coeffs/modulop.cc
rc3d175 r2b957a 439 439 440 440 #ifdef LDEBUG 441 BOOLEAN npDBTest (number a, const c oeffs r, const char *f, const int l)441 BOOLEAN npDBTest (number a, const char *f, const int l, const coeffs r) 442 442 { 443 443 if (((long)a<0) || ((long)a>r->npPrimeM)) … … 452 452 number npMap0(number from, const coeffs src, const coeffs dst_r) 453 453 { 454 return npInit(nlModP(from,dst_r->npPrimeM),dst_r); 454 int nlModP(number n, int p, const coeffs r); 455 456 return npInit(nlModP(from, dst_r->npPrimeM, src),dst_r); 455 457 } 456 458 -
coeffs/modulop.h
rc3d175 r2b957a 44 44 const char * npRead (const char *s, number *a,const coeffs r); 45 45 #ifdef LDEBUG 46 BOOLEAN npDBTest (number a, const coeffs r, const char *f, const int l);47 #define npTest(A,r) npDBTest(A, r,__FILE__,__LINE__)46 BOOLEAN npDBTest (number a, const char *f, const int l, const coeffs r); 47 #define npTest(A,r) npDBTest(A,__FILE__,__LINE__, r) 48 48 #else 49 49 #define npTest(A,r) (0) -
coeffs/mpr_complex.cc
rc3d175 r2b957a 38 38 size_t gmp_output_digits= DEFPREC; 39 39 40 extern int mmInit(void); 41 int dummy=mmInit(); 40 // extern int mmInit(void); // TODO: From Factory??? 41 //{ return 0; }; // 42 // int dummy=mmInit(); 43 44 42 45 static gmp_float *gmpRel=NULL; 43 46 static gmp_float *diff=NULL; -
coeffs/numbers.cc
rc3d175 r2b957a 60 60 #ifdef LDEBUG 61 61 void nDBDummy1(number* d,char *f, int l) { *d=NULL; } 62 BOOLEAN ndDBTest(number a, const char *f, const int l )62 BOOLEAN ndDBTest(number a, const char *f, const int l, const coeffs r) 63 63 { 64 64 return TRUE; -
coeffs/numbers.h
rc3d175 r2b957a 32 32 #ifdef LDEBUG 33 33 void nDBDummy1(number* d,char *f, int l); 34 BOOLEAN ndDBTest(number a, const char *f, const int l, const coeffs r); 34 35 #endif 35 36 -
coeffs/shortfl.cc
rc3d175 r2b957a 353 353 * test valid numbers: not implemented yet 354 354 */ 355 BOOLEAN nrDBTest(number a, const char *f, const int l, const coeffs r) ;355 BOOLEAN nrDBTest(number a, const char *f, const int l, const coeffs r) 356 356 { 357 357 assume( getCoeffType(r) == ID ); … … 538 538 539 539 /// test, whether r is an instance of nInitCoeffs(n, parameter) */ 540 static BOOLEAN nrCoeffsEqual(const coeffs r, n_coeffType n, intparameter)540 static BOOLEAN nrCoeffsEqual(const coeffs r, n_coeffType n, void* parameter) 541 541 { 542 542 assume( getCoeffType(r) == ID ); … … 547 547 548 548 549 void nrInitChar(coeffs n, int)549 void nrInitChar(coeffs n, void*) 550 550 { 551 551 assume( getCoeffType(n) == ID ); -
coeffs/shortfl.h
rc3d175 r2b957a 15 15 16 16 /// Initialize r 17 void nrInitChar(coeffs r, int);17 void nrInitChar(coeffs r, void*); 18 18 19 19 /// test, whether r is an instance of nInitCoeffs(n, parameter) */ 20 static BOOLEAN nrCoeffsEqual(const coeffs r, n_coeffType n, intparameter);20 static BOOLEAN nrCoeffsEqual(const coeffs r, n_coeffType n, void* parameter); 21 21 22 22 23 / * // Private interface should be hidden!!!23 // Private interface should be hidden!!! 24 24 25 25 BOOLEAN nrGreaterZero (number k, const coeffs r); … … 43 43 BOOLEAN nrDBTest(number a, const coeffs r, const char *f, const int l); 44 44 #endif 45 */46 45 47 46 -
coeffs/test.cc
rc3d175 r2b957a 8 8 9 9 10 //#include <longrat.h>10 #include <longrat.h> 11 11 #include <gnumpc.h> 12 #include <shortfl.h> 12 13 13 14 … … 18 19 int main() 19 20 { 20 const n_coeffType type = n_long_C; // n_Q; 21 SPrintStart(); 22 23 const n_coeffType type = nRegister( n_Q, nlInitChar); assume( type == n_Q ); 24 // const n_coeffType type = nRegister( n_long_C, ngcInitChar); assume( type == n_long_C ); 25 // const n_coeffType type = nRegister( n_R, nrInitChar); assume( type == n_R ); 26 21 27 22 28 const coeffs r = nInitChar( type, NULL ); 23 29 24 30 assume( r != NULL ); 31 32 nSetChar( r ); 33 34 assume( getCoeffType(r) == type ); 25 35 26 36 assume( r->cfInit != NULL ); … … 28 38 assume( r->cfAdd != NULL ); 29 39 assume( r->cfDelete != NULL ); 30 31 assume( getCoeffType(r) == type ); 40 32 41 33 42 if( type == n_Q ) 34 43 { 35 36 /*37 44 assume( r->cfInit == nlInit ); 38 45 assume( r->cfWrite == nlWrite ); 39 46 assume( r->cfAdd == nlAdd ); 40 47 assume( r->cfDelete == nlDelete ); 41 */ 42 } 48 } 43 49 else if( type == n_long_C ) 44 50 { … … 48 54 assume( r->cfDelete == ngcDelete ); 49 55 } 56 else if( type == n_R ) 57 { 58 assume( r->cfInit == nrInit ); 59 assume( r->cfWrite == nrWrite ); 60 assume( r->cfAdd == nrAdd ); 61 // assume( r->cfDelete == nrDelete ); // No? 62 } else 63 { 64 // ... 65 } 50 66 51 67 52 68 53 69 number a = r->cfInit(666, r); 70 number b = r->cfAdd( a, a, r); 71 54 72 r->cfWrite( a, r ); 55 number b = r->cfAdd( a, a, r);56 73 r->cfWrite( b, r ); 74 57 75 r->cfDelete( &a, r); 58 76 r->cfDelete( &b, r); 59 77 60 78 nKillChar( r ); 79 80 cout << "OUTPUT BUFFER: " << SPrintEnd(); 61 81 62 82 return 0;
Note: See TracChangeset
for help on using the changeset viewer.