Changeset fef045c in git
- Timestamp:
- Oct 10, 2009, 7:15:40 PM (14 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- 05998dae5a4237480bafa680febec202b19a3bf6
- Parents:
- 259111f4634d94bbfd66d60c471984b56b91d4b2
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/longalg.cc
r259111f rfef045c 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: longalg.cc,v 1.6 1 2009-10-10 10:44:37Singular Exp $ */4 /* $Id: longalg.cc,v 1.62 2009-10-10 17:15:40 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: algebraic numbers … … 70 70 #define napCopy(p) p_Copy(p,nacRing) 71 71 72 void naCoefNormalize(number pp);73 74 72 static number nadGcd( number a, number b, const ring r) { return nacInit(1,r); } 75 73 /*2 … … 197 195 { 198 196 number t; 199 poly pp=p;200 197 201 198 while (p!=NULL) 202 199 { 203 200 t = nacMult(pGetCoeff(p), z); 201 nacNormalize(t); 204 202 n_Delete(&pGetCoeff(p),nacRing); 205 203 pGetCoeff(p) = t; 206 204 pIter(p); 207 205 } 208 p_Normalize(pp,nacRing);209 206 } 210 207 … … 227 224 pGetCoeff(qq) = nacDiv(pGetCoeff(a), pGetCoeff(g)); 228 225 pGetCoeff(qq) = nacNeg(pGetCoeff(qq)); 226 nacNormalize(pGetCoeff(qq)); 229 227 h = napCopy(g); 230 228 napMultT(h, qq); 229 p_Normalize(h,nacRing); 231 230 n_Delete(&pGetCoeff(qq),nacRing); 232 231 a = napAdd(a, h); … … 259 258 h = napCopy(g); 260 259 napMultT(h, qq); 260 p_Normalize(h,nacRing); 261 261 n_Delete(&pGetCoeff(qq),nacRing); 262 262 a = napAdd(a, h); … … 286 286 if (!nacIsOne(pGetCoeff(x))) 287 287 { 288 nacNormalize(pGetCoeff(x)); 288 289 t = nacInvers(pGetCoeff(x)); 289 290 nacNormalize(t); … … 301 302 if (p_GetExp(r,1,nacRing)==0) 302 303 { 304 nacNormalize(pGetCoeff(r)); 303 305 t = nacInvers(pGetCoeff(r)); 306 nacNormalize(t); 304 307 t = nacNeg(t); 305 308 napMultN(qa, t); 306 309 n_Delete(&t,nacRing); 310 p_Normalize(qa,nacRing); 307 311 p_Delete(&x,nacRing); 308 312 p_Delete(&r,nacRing); … … 320 324 q = p_Mult_q(q, qa,nacRing); 321 325 q = napAdd(q, p_ISet(1,nacRing)); 326 nacNormalize(pGetCoeff(r)); 322 327 t = nacInvers(pGetCoeff(r)); 323 328 napMultN(q, t); 329 p_Normalize(q,nacRing); 324 330 n_Delete(&t,nacRing); 325 331 p_Delete(&x,nacRing); … … 346 352 q = napNeg(q); 347 353 q = napAdd(q, qa); 354 nacNormalize(pGetCoeff(r)); 348 355 t = nacInvers(pGetCoeff(r)); 356 //nacNormalize(t); 349 357 napMultN(q, t); 358 p_Normalize(q,nacRing); 350 359 n_Delete(&t,nacRing); 351 360 p_Delete(&x,nacRing); … … 938 947 { 939 948 lnumber l=(lnumber)n; 949 naNormalize(n); 940 950 if ((l!=NULL)&&(l->n==NULL)&&(p_IsConstant(l->z,r->algring))) 941 951 { … … 968 978 if (p==NULL) return NULL; 969 979 naTest(p); 980 //naNormalize(p); 970 981 lnumber erg; 971 982 lnumber src = (lnumber)p; … … 1042 1053 lu->n = x; 1043 1054 lu->s = FALSE; 1044 number luu=(number)lu; 1045 naCoefNormalize(luu); 1046 lu=(lnumber)luu; 1055 if (lu->n!=NULL) 1056 { 1057 number luu=(number)lu; 1058 naNormalize(luu); 1059 lu=(lnumber)luu; 1060 } 1047 1061 naTest((number)lu); 1048 1062 return (number)lu; … … 1104 1118 lu->n = x; 1105 1119 lu->s = FALSE; 1106 number luu=(number)lu; 1107 naCoefNormalize(luu); 1108 lu=(lnumber)luu; 1120 if (lu->n!=NULL) 1121 { 1122 number luu=(number)lu; 1123 naNormalize(luu); 1124 lu=(lnumber)luu; 1125 } 1109 1126 naTest((number)lu); 1110 1127 return (number)lu; … … 1177 1194 lo=NULL; 1178 1195 } 1179 else 1196 #if 1 1197 else if (lo->n!=NULL) 1180 1198 { 1181 1199 lo->s = 0; 1182 1200 number luu=(number)lo; 1183 na CoefNormalize(luu);1201 naNormalize(luu); 1184 1202 lo=(lnumber)luu; 1185 1203 } 1204 else 1205 lo->s=3; 1206 #endif 1186 1207 naTest((number)lo); 1187 1208 return (number)lo; … … 1268 1289 p_Delete(&x,nacRing); 1269 1290 lo->n = x; 1270 number luu=(number)lo; 1271 naCoefNormalize(luu); 1272 lo=(lnumber)luu; 1291 if (lo->n!=NULL) 1292 { 1293 lo->s = 0; 1294 number luu=(number)lo; 1295 naNormalize(luu); 1296 lo=(lnumber)luu; 1297 } 1298 else 1299 lo->s=3; 1273 1300 naTest((number)lo); 1274 1301 return (number)lo; … … 1689 1716 number nz; // all denom. of the numerator 1690 1717 nz=p_GetAllDenom(p->z,nacRing); 1691 number nn;1692 nn=p_GetAllDenom(p->n,nacRing);1693 1718 BOOLEAN norm=FALSE; 1694 1719 if (!n_IsOne(nz,nacRing)) … … 1710 1735 n_Delete(&nz, nacRing); 1711 1736 } 1737 if (norm) 1738 { 1739 norm=FALSE; 1740 p_Normalize(p->z,nacRing); 1741 p_Normalize(p->n,nacRing); 1742 } 1743 number nn; 1744 nn=p_GetAllDenom(p->n,nacRing); 1712 1745 if (!n_IsOne(nn,nacRing)) 1713 1746 { … … 1726 1759 p_Normalize(p->n,nacRing); 1727 1760 } 1761 // remove common factors in n, z: 1762 if (p->n!=NULL) 1763 { 1764 poly pp=p->z; 1765 nz=n_Copy(pGetCoeff(pp),nacRing); 1766 pIter(pp); 1767 while(pp!=NULL) 1768 { 1769 if (n_IsOne(nz,nacRing)) break; 1770 number d=n_Gcd(nz,pGetCoeff(pp),nacRing); 1771 n_Delete(&nz,nacRing); nz=d; 1772 pIter(pp); 1773 } 1774 if (!n_IsOne(nz,nacRing)) 1775 { 1776 pp=p->n; 1777 nn=n_Copy(pGetCoeff(pp),nacRing); 1778 pIter(pp); 1779 while(pp!=NULL) 1780 { 1781 if (n_IsOne(nn,nacRing)) break; 1782 number d=n_Gcd(nn,pGetCoeff(pp),nacRing); 1783 n_Delete(&nn,nacRing); nn=d; 1784 pIter(pp); 1785 } 1786 number ng=n_Gcd(nz,nn,nacRing); 1787 n_Delete(&nn,nacRing); 1788 if (!n_IsOne(ng,nacRing)) 1789 { 1790 number ni=n_Invers(ng,nacRing); 1791 p->z=p_Mult_nn(p->z,ni,nacRing); 1792 p->n=p_Mult_nn(p->n,ni,nacRing); 1793 p_Normalize(p->z,nacRing); 1794 p_Normalize(p->n,nacRing); 1795 n_Delete(&ni,nacRing); 1796 } 1797 n_Delete(&ng,nacRing); 1798 } 1799 n_Delete(&nz,nacRing); 1800 } 1801 1728 1802 if ((p->n!=NULL) 1729 1803 && (p_IsConstant(p->n,nacRing))
Note: See TracChangeset
for help on using the changeset viewer.