Changeset 8391d8 in git for kernel/longalg.cc
- Timestamp:
- Sep 24, 2009, 6:37:42 PM (15 years ago)
- Branches:
- (u'spielwiese', '2a584933abf2a2d3082034c7586d38bb6de1a30a')
- Children:
- 785e89b7306ebdeea35396a79b96dada09124098
- Parents:
- 493699ee1754bff0d1b7c8f580f0b29c26002e60
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/longalg.cc
r493699e r8391d8 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: longalg.cc,v 1.5 1 2009-09-16 12:26:26Singular Exp $ */4 /* $Id: longalg.cc,v 1.52 2009-09-24 16:37:41 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: algebraic numbers … … 33 33 #define napNormalize(p) p_Normalize(p,nacRing) 34 34 static int naIsChar0; 35 static int naPrimeM;35 static ring naMapRing; 36 36 37 37 #ifdef LDEBUG … … 49 49 static number (*nacLcm)(number a, number b, const ring r); 50 50 static void (*nacDelete)(number *a, const ring r); 51 number (*nacInit)(int i);51 static number (*nacInit)(int i, const ring r); 52 52 static int (*nacInt)(number &n, const ring r); 53 53 void (*nacNormalize)(number &a); … … 69 69 #define napCopy(p) (napoly)p_Copy((poly)p,nacRing) 70 70 71 static number nadGcd( number a, number b, const ring r) { return nacInit(1 ); }71 static number nadGcd( number a, number b, const ring r) { return nacInit(1,r); } 72 72 /*2 73 73 * sets the appropriate operators … … 123 123 #endif 124 124 nacRing = r->algring; 125 nacInit = nacRing->cf-> nInit;125 nacInit = nacRing->cf->cfInit; 126 126 nacInt = nacRing->cf->n_Int; 127 127 nacCopy = nacRing->cf->nCopy; … … 524 524 } 525 525 else 526 pGetCoeff(a) = nacInit(1 );526 pGetCoeff(a) = nacInit(1,nacRing); 527 527 i = 0; 528 528 const char *olds=s; … … 643 643 return; 644 644 p = ph; 645 h = nacInit(1 );645 h = nacInit(1,nacRing); 646 646 while (p!=NULL) 647 647 { … … 781 781 number napLcm(napoly a) 782 782 { 783 number h = nacInit(1 );783 number h = nacInit(1,nacRing); 784 784 785 785 if (naIsChar0) … … 890 890 * z:= i 891 891 */ 892 number naInit(int i )892 number naInit(int i, const ring r) 893 893 { 894 894 if (i!=0) 895 895 { 896 napoly z=napInit(i); 897 if (z!=NULL) 898 { 896 number c=n_Init(i,r->algring); 897 if (!n_IsZero(c,r->algring)) 898 { 899 poly z=p_Init(r->algring); 900 pSetCoeff0(z,c); 899 901 lnumber l = (lnumber)omAllocBin(rnumber_bin); 900 902 l->z = z; … … 1636 1638 { 1637 1639 number x; 1638 *rc = naInit(1 );1640 *rc = naInit(1,nacRing); 1639 1641 for (; i > 0; i--) 1640 1642 { … … 2065 2067 l->z=(napoly)p_Init(nacRing); 2066 2068 int i=(int)((long)c); 2067 if (i>( naPrimeM>>2)) i-=naPrimeM;2068 pGetCoeff(l->z)=nlInit(i );2069 if (i>((long)naMapRing->ch>>2)) i-=(long)naMapRing->ch; 2070 pGetCoeff(l->z)=nlInit(i, nacRing); 2069 2071 l->n=NULL; 2070 2072 return (number)l; … … 2106 2108 if (npIsZero(c)) return NULL; 2107 2109 int i=(int)((long)c); 2108 if (i> naPrimeM) i-=naPrimeM;2109 number n=npInit(i );2110 if (i>(long)naMapRing->ch) i-=(long)naMapRing->ch; 2111 number n=npInit(i,naMapRing); 2110 2112 if (npIsZero(n)) return NULL; 2111 2113 lnumber l=(lnumber)omAllocBin(rnumber_bin); … … 2123 2125 { 2124 2126 if (nlIsZero(c)) return NULL; 2125 number n=npInit(nlModP(c,npPrimeM) );2127 number n=npInit(nlModP(c,npPrimeM),nacRing); 2126 2128 if (npIsZero(n)) return NULL; 2127 2129 npTest(n); … … 2136 2138 static number (*nacMap)(number); 2137 2139 static int naParsToCopy; 2138 static ring napMapRing;2139 2140 static napoly napMap(napoly p) 2140 2141 { … … 2145 2146 int i; 2146 2147 for(i=1;i<=naParsToCopy;i++) 2147 napSetExp(a,i,napGetExpFrom(p,i,na pMapRing));2148 napSetExp(a,i,napGetExpFrom(p,i,naMapRing)); 2148 2149 p_Setm(a,nacRing); 2149 2150 pGetCoeff(w) = nacMap(pGetCoeff(p)); … … 2155 2156 pIter(a); 2156 2157 for(i=1;i<=naParsToCopy;i++) 2157 napSetExp(a,i,napGetExpFrom(p,i,na pMapRing));2158 napSetExp(a,i,napGetExpFrom(p,i,naMapRing)); 2158 2159 p_Setm(a,nacRing); 2159 2160 pGetCoeff(a) = nacMap(pGetCoeff(p)); … … 2245 2246 nMapFunc naSetMap(ring src, ring dst) 2246 2247 { 2248 naMapRing=src; 2247 2249 if (rField_is_Q_a(dst)) /* -> Q(a) */ 2248 2250 { … … 2253 2255 if (rField_is_Zp(src)) 2254 2256 { 2255 naPrimeM = rChar(src);2256 2257 return naMapP0; /* Z/p -> Q(a)*/ 2257 2258 } … … 2267 2268 naParsToCopy++; 2268 2269 } 2269 napMapRing=src;2270 2270 nacMap=nacCopy; 2271 2271 if ((naParsToCopy==rPar(dst))&&(naParsToCopy==rPar(src))) … … 2283 2283 if (rField_is_Zp(src)) 2284 2284 { 2285 int c=rChar(src); 2286 if (c==npPrimeM) 2285 if (src->ch==dst->ch) 2287 2286 { 2288 2287 return naMapPP; /* Z/p -> Z/p(a)*/ … … 2290 2289 else 2291 2290 { 2292 naPrimeM = c;2293 2291 return naMapPP1; /* Z/p' -> Z/p(a)*/ 2294 2292 } … … 2302 2300 else 2303 2301 { 2304 npMapPrime=rChar(src);2305 2302 nacMap = npMapP; 2306 2303 } … … 2314 2311 naParsToCopy++; 2315 2312 } 2316 napMapRing=src;2317 2313 if ((naParsToCopy==rPar(dst))&&(naParsToCopy==rPar(src)) 2318 2314 && (nacMap==nacCopy)) … … 2430 2426 return (number)rr; 2431 2427 } 2432 return r->cf->nInit(1);2428 return n_Init(1,r); 2433 2429 } 2434 2430
Note: See TracChangeset
for help on using the changeset viewer.