Changeset 206e158 in git for kernel/rmodulo2m.cc
- Timestamp:
- May 11, 2007, 12:48:05 PM (17 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- d15996cd44ce997d3360fac629f4062adb1c4836
- Parents:
- 3fd4df896525da08d34f33e88e6239994fa4d0e6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/rmodulo2m.cc
r3fd4df r206e158 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: rmodulo2m.cc,v 1. 8 2007-05-10 08:12:43wienand Exp $ */4 /* $Id: rmodulo2m.cc,v 1.9 2007-05-11 10:48:05 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT: numbers modulo 2^m … … 70 70 res++; 71 71 } 72 if ((NATNUMBER) b % 2 == 0)73 {74 return (number) ((1L << res));// * (NATNUMBER) a); // (2**res)*a a ist Einheit75 }76 else77 {72 // if ((NATNUMBER) b % 2 == 0) 73 // { 74 // return (number) ((1L << res));// * (NATNUMBER) a); // (2**res)*a a ist Einheit 75 // } 76 // else 77 // { 78 78 return (number) ((1L << res));// * (NATNUMBER) b); // (2**res)*b b ist Einheit 79 }79 // } 80 80 } 81 81 … … 163 163 } 164 164 return ((NATNUMBER) b % 2 == 1); 165 } 166 167 int nr2mComp(number as, number bs) 168 { 169 NATNUMBER a = (NATNUMBER) as; 170 NATNUMBER b = (NATNUMBER) bs; 171 assume(a != 0 && b != 0); 172 while (a % 2 == 0 && b % 2 == 0) 173 { 174 a = a / 2; 175 b = b / 2; 176 } 177 if (a % 2 == 0) 178 { 179 return -1; 180 } 181 else 182 { 183 if (b % 2 == 1) 184 { 185 return 0; 186 } 187 else 188 { 189 return 1; 190 } 191 } 165 192 } 166 193 … … 271 298 if ((NATNUMBER)a==0) 272 299 { 273 return (number) 0; 274 } 275 else 276 { 300 if ((NATNUMBER)b==0) 301 return (number) 1; 302 return (number) (nr2mModul / (NATNUMBER) b); 303 } 304 else 305 { 306 if ((NATNUMBER)b==0) 307 return (number) 0; 277 308 return (number) ((NATNUMBER) a / (NATNUMBER) b); 278 309 }
Note: See TracChangeset
for help on using the changeset viewer.