Changeset 76e501 in git for kernel/rmodulo2m.h


Ignore:
Timestamp:
Jul 21, 2010, 10:37:19 AM (13 years ago)
Author:
Frank Seelisch <seelisch@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a657104b677b4c461d018cbf3204d72d34ad66a9')
Children:
f0a801bdd99a5337cb60770f49d314447999474b
Parents:
cf21dd42f35f06862c90e2223eea0f33e4ff0fbc
Message:
extends Z/2^m to m =32 resp. 64 (depending on platform)

git-svn-id: file:///usr/local/Singular/svn/trunk@13036 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/rmodulo2m.h

    rcf21dd4 r76e501  
    1212
    1313extern int nr2mExp;
    14 extern NATNUMBER nr2mModul;
     14extern NATNUMBER nr2mModul; /* for storing 2^m - 1, i.e., the
     15                               bit pattern '11..1' of length m */
    1516
    1617BOOLEAN nr2mGreaterZero (number k);
     
    5152static inline number nr2mMultM(number a, number b)
    5253{
    53   return (number) 
    54     ((((NATNUMBER) a)*((NATNUMBER) b)) % ((NATNUMBER) currRing->nr2mModul));
     54  return (number)
     55    ((((NATNUMBER) a) * ((NATNUMBER) b)) & ((NATNUMBER) currRing->nr2mModul));
    5556}
    5657
    5758static inline number nr2mAddM(number a, number b)
    5859{
    59   NATNUMBER r = (NATNUMBER)a + (NATNUMBER)b;
    60   return (number) (r >= currRing->nr2mModul ? r - currRing->nr2mModul : r);
     60  return (number)
     61    ((((NATNUMBER) a) + ((NATNUMBER) b)) & ((NATNUMBER) currRing->nr2mModul));
    6162}
    6263
    6364static inline number nr2mSubM(number a, number b)
    6465{
    65   return (number)((NATNUMBER)a<(NATNUMBER)b ?
    66                        currRing->nr2mModul-(NATNUMBER)b+(NATNUMBER)a : (NATNUMBER)a-(NATNUMBER)b);
     66  return (number)((NATNUMBER)a < (NATNUMBER)b ?
     67                     currRing->nr2mModul - (NATNUMBER)b + (NATNUMBER)a + 1 :
     68                     (NATNUMBER)a - (NATNUMBER)b);
    6769}
    6870
    69 #define nr2mNegM(A) (number)(currRing->nr2mModul-(NATNUMBER)(A))
     71#define nr2mNegM(A) (number)(currRing->nr2mModul - (NATNUMBER)(A) + 1)
    7072#define nr2mEqualM(A,B)  ((A)==(B))
    7173
Note: See TracChangeset for help on using the changeset viewer.