Changeset ed7cb5 in git
- Timestamp:
- Aug 24, 2001, 3:41:35 PM (22 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- 47c8f1203dc6663433e108e9e01f128d3ca726e3
- Parents:
- f299facd1825ad4aaf3bc53207a5cfcb6892f886
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/longrat.cc
rf299fac red7cb5 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: longrat.cc,v 1.3 8 2001-03-22 19:11:06Singular Exp $ */4 /* $Id: longrat.cc,v 1.39 2001-08-24 13:41:35 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: computation with long rational numbers (Hubert Grassmann) … … 102 102 103 103 /*************************************************************** 104 * 104 * 105 105 * Routines which are never inlined by p_Numbers.h 106 106 * … … 109 109 110 110 omBin rnumber_bin = omGetSpecBin(sizeof(rnumber)); 111 112 number nlOne=nlInit(1); 111 113 112 114 static int nlPrimeM; … … 487 489 if (SR_HDL(i) &SR_INT) return SR_TO_INT(i); 488 490 nlGmpSimple(&i->z); 489 if ((i->s!=3)||(mpz_size1(&i->z)>MP_SMALL)) return 0; 490 int ul=(int)mpz_get_si(&i->z); 491 if (mpz_cmp_si(&i->z,(long)ul)!=0) return 0; 491 if (i->s==3) 492 { 493 if(mpz_size1(&i->z)>MP_SMALL) return 0; 494 int ul=(int)mpz_get_si(&i->z); 495 if (mpz_cmp_si(&i->z,(long)ul)!=0) return 0; 496 return ul; 497 } 498 lint tmp; 499 int ul; 500 mpz_init(&tmp); 501 MPZ_DIV(&tmp,&i->z,&i->n); 502 if(mpz_size1(&tmp)>MP_SMALL) ul=0; 503 else 504 { 505 ul=(int)mpz_get_si(&tmp); 506 if (mpz_cmp_si(&tmp,(long)ul)!=0) ul=0; 507 } 508 mpz_clear(&tmp); 492 509 return ul; 493 510 } … … 516 533 } 517 534 n=(number)omAllocBin(rnumber_bin); 518 #if defined(LDEBUG) 535 #if defined(LDEBUG) 519 536 n->debug=123456; 520 537 #endif … … 539 556 } 540 557 n=(number)omAllocBin(rnumber_bin); 541 #if defined(LDEBUG) 558 #if defined(LDEBUG) 542 559 n->debug=123456; 543 560 #endif … … 624 641 } 625 642 u=(number)omAllocBin(rnumber_bin); 626 #if defined(LDEBUG) 643 #if defined(LDEBUG) 627 644 u->debug=123456; 628 645 #endif … … 720 737 } 721 738 u=(number)omAllocBin(rnumber_bin); 722 #if defined(LDEBUG) 739 #if defined(LDEBUG) 723 740 u->debug=123456; 724 741 #endif … … 838 855 } 839 856 u=(number)omAllocBin(rnumber_bin); 840 #if defined(LDEBUG) 857 #if defined(LDEBUG) 841 858 u->debug=123456; 842 859 #endif … … 887 904 u=(number)omAllocBin(rnumber_bin); 888 905 u->s=0; 889 #if defined(LDEBUG) 906 #if defined(LDEBUG) 890 907 u->debug=123456; 891 908 #endif … … 1039 1056 } 1040 1057 *u=(number)omAllocBin(rnumber_bin); 1041 #if defined(LDEBUG) 1058 #if defined(LDEBUG) 1042 1059 (*u)->debug=123456; 1043 1060 #endif … … 1176 1193 } 1177 1194 result=(number)omAllocBin(rnumber_bin); 1178 #if defined(LDEBUG) 1195 #if defined(LDEBUG) 1179 1196 result->debug=123456; 1180 1197 #endif … … 1268 1285 { 1269 1286 mpz_clear(&x->z); 1270 #if defined(LDEBUG) 1287 #if defined(LDEBUG) 1271 1288 x->debug=654324; 1272 1289 #endif … … 1312 1329 } 1313 1330 result=(number)omAllocBin(rnumber_bin); 1314 #if defined(LDEBUG) 1331 #if defined(LDEBUG) 1315 1332 result->debug=123456; 1316 1333 #endif … … 1388 1405 number u=(number)omAllocBin(rnumber_bin); 1389 1406 u->s=3; 1390 #if defined(LDEBUG) 1407 #if defined(LDEBUG) 1391 1408 u->debug=123456; 1392 1409 #endif … … 1411 1428 1412 1429 /*************************************************************** 1413 * 1430 * 1414 1431 * routines which are needed by Inline(d) routines 1415 1432 * … … 1483 1500 #endif 1484 1501 number b=(number)omAllocBin(rnumber_bin); 1485 #if defined(LDEBUG) 1502 #if defined(LDEBUG) 1486 1503 b->debug=123456; 1487 1504 #endif … … 1543 1560 { 1544 1561 number u=(number)omAllocBin(rnumber_bin); 1545 #if defined(LDEBUG) 1562 #if defined(LDEBUG) 1546 1563 u->debug=123456; 1547 1564 #endif … … 1755 1772 { 1756 1773 number u=(number)omAllocBin(rnumber_bin); 1757 #if defined(LDEBUG) 1774 #if defined(LDEBUG) 1758 1775 u->debug=123456; 1759 1776 #endif … … 2034 2051 { 2035 2052 number u=(number)omAllocBin(rnumber_bin); 2036 #if defined(LDEBUG) 2053 #if defined(LDEBUG) 2037 2054 u->debug=123456; 2038 2055 #endif … … 2054 2071 } 2055 2072 2056 // a or b are not immediate 2073 // a or b are not immediate 2057 2074 number _nlMult_aNoImm_OR_bNoImm(number a, number b) 2058 2075 { 2059 2076 assume(! (SR_HDL(a) & SR_HDL(b) & SR_INT)); 2060 2077 number u=(number)omAllocBin(rnumber_bin); 2061 #if defined(LDEBUG) 2078 #if defined(LDEBUG) 2062 2079 u->debug=123456; 2063 2080 #endif … … 2176 2193 { 2177 2194 number z=(number)omAllocBin(rnumber_bin); 2178 #if defined(LDEBUG) 2195 #if defined(LDEBUG) 2179 2196 z->debug=123456; 2180 2197 #endif 2181 2198 mpz_init_set_si(&z->z,(long)i); 2182 2199 z->s = 3; 2200 return z; 2201 } 2202 2203 /*2 2204 * z := i/j 2205 */ 2206 number nlInit2 (int i, int j) 2207 { 2208 number z=(number)omAllocBin(rnumber_bin); 2209 #if defined(LDEBUG) 2210 z->debug=123456; 2211 #endif 2212 mpz_init_set_si(&z->z,(long)i); 2213 mpz_init_set_si(&z->n,(long)j); 2214 z->s = 0; 2215 nlNormalize(z); 2183 2216 return z; 2184 2217 } … … 2201 2234 2202 2235 /*************************************************************** 2203 * 2236 * 2204 2237 * Routines which might be inlined by p_Numbers.h 2205 2238 * … … 2258 2291 */ 2259 2292 LINLINE number nlCopy(number a) 2260 {2261 if ((SR_HDL(a) & SR_INT)||(a==NULL))2262 {2263 return a;2264 }2265 return _nlCopy_NoImm(a);2266 }2267 2268 LINLINE number nl_Copy(number a, ring r)2269 2293 { 2270 2294 if ((SR_HDL(a) & SR_INT)||(a==NULL))
Note: See TracChangeset
for help on using the changeset viewer.