Changeset 55b747 in git


Ignore:
Timestamp:
Apr 4, 2018, 6:55:03 PM (5 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
15d6bf96cee82d224cc98ac91b2ee533a290e13a
Parents:
d795761c5157c077e2f8451be201ede9fd36fb3f
Message:
opt: Z/p arithm.
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • factory/ffops.h

    rd795761 r55b747  
    4040{
    4141    int n = a % ff_prime;
    42 #if defined(i386) || defined(NTL_AVOID_BRANCHING)
     42#if defined(i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)
    4343    n += (n >> 31) & ff_prime;
    4444    return n;
     
    5252{
    5353    long n = a % ff_prime;
    54 #if defined(i386) || defined(NTL_AVOID_BRANCHING)
     54#if defined(i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)
    5555    n += (n >> 31) & ff_prime;
    5656    return n;
     
    8080{
    8181    int n = (int)(a % (long)ff_prime);
    82 #if defined(i386) || defined(NTL_AVOID_BRANCHING)
     82#if defined(i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)
    8383    n += (n >> 31) & ff_prime;
    8484    return n;
     
    9292{
    9393    int n = (int)(a % (FACTORY_INT64)ff_prime);
    94 #if defined(i386) || defined(NTL_AVOID_BRANCHING)
     94#if defined(i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)
    9595    n += (n >> 31) & ff_prime;
    9696    return n;
     
    104104{
    105105    //return ff_norm( a + b );
    106 #if defined(i386) || defined(NTL_AVOID_BRANCHING)
     106#if defined(i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)
    107107    int r=( a + b );
    108108    r -= ff_prime;
     
    119119{
    120120    //return ff_norm( a - b );
    121 #if defined(i386) || defined(NTL_AVOID_BRANCHING)
     121#if defined(i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)
    122122    int r=( a - b );
    123123    r += (r >> 31) & ff_prime;
     
    134134    //return ff_norm( -a );
    135135// EXPERIMENT
    136 #if defined(i386) || defined(NTL_AVOID_BRANCHING)
     136#if defined(i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)
    137137    int r= -a;
    138138    r += (r >> 31) & ff_prime;
  • libpolys/coeffs/modulop.h

    rd795761 r55b747  
    5656{
    5757  long x = (long)r->npLogTable[(long)a]+ r->npLogTable[(long)b];
    58   return (number)(long)r->npExpTable[x<=r->npPminus1M ? x : x- r->npPminus1M];
     58  #ifdef HAVE_GENERIC_ADD
     59  if (x>r->npPminus1M) x-=r->npPminus1M;
     60  #else
     61    x-=r->npPminus1M;
     62    #if SIZEOF_LONG == 8
     63     x += (x >> 63) & r->npPminus1M;
     64    #else
     65     x += (x >> 31) & r->npPminus1M;
     66    #endif
     67  #endif
     68  return (number)(long)r->npExpTable[x];
    5969}
    6070static inline void npInpMultM(number &a, number b, const coeffs r)
    6171{
    6272  long x = (long)r->npLogTable[(long)a]+ r->npLogTable[(long)b];
    63   a=(number)(long)r->npExpTable[x<=r->npPminus1M ? x : x- r->npPminus1M];
     73  #ifdef HAVE_GENERIC_ADD
     74  if (x>r->npPminus1M) x-=r->npPminus1M;
     75  #else
     76    x-=r->npPminus1M;
     77    #if SIZEOF_LONG == 8
     78     x += (x >> 63) & r->npPminus1M;
     79    #else
     80     x += (x >> 31) & r->npPminus1M;
     81    #endif
     82  #endif
     83  a=(number)(long)r->npExpTable[x];
    6484}
    6585#endif
Note: See TracChangeset for help on using the changeset viewer.