Changeset 8145ac in git
- Timestamp:
- May 22, 2018, 5:04:36 PM (6 years ago)
- Branches:
- (u'spielwiese', '2a584933abf2a2d3082034c7586d38bb6de1a30a')
- Children:
- 12ee77b62cb7d3d9f449254ecb5a95bcd817ff4c
- Parents:
- e289a43a50430377cea7498d5fd2ec6ce97604e3
- Location:
- factory
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/ffops.cc
re289a4 r8145ac 19 19 void ff_setprime ( const int p ) 20 20 { 21 if ( p != ff_prime ) { 21 if ( p != ff_prime ) 22 { 22 23 ff_prime = p; 23 24 ff_halfprime = ff_prime / 2; -
factory/ffops.h
re289a4 r8145ac 40 40 { 41 41 int n = a % ff_prime; 42 #if defined( i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)42 #if defined(NTL_AVOID_BRANCHING) 43 43 n += (n >> 31) & ff_prime; 44 44 return n; … … 51 51 inline long ff_norm ( const long a ) 52 52 { 53 long n = a % ff_prime;54 #if defined( i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)53 long n = a % (long)ff_prime; 54 #if defined(NTL_AVOID_BRANCHING) 55 55 #if SIZEOF_LONG==8 56 56 n += (n >> 63) & ff_prime; … … 60 60 return n; 61 61 #else 62 if (n < 0) n += ff_prime;62 if (n < 0) n += (long)ff_prime; 63 63 return n; 64 64 #endif … … 81 81 } 82 82 83 inline int ff_longnorm ( const long a ) 83 #if SIZEOF_LONG==4 84 inline int ff_bignorm ( const FACTORY_INT64 a ) 84 85 { 85 int n = (int)(a % ( long)ff_prime);86 #if defined( i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)86 int n = (int)(a % (FACTORY_INT64)ff_prime); 87 #if defined(NTL_AVOID_BRANCHING) 87 88 n += (n >> 31) & ff_prime; 88 89 return n; … … 92 93 #endif 93 94 } 94 95 inline int ff_bignorm ( const FACTORY_INT64 a )96 {97 int n = (int)(a % (FACTORY_INT64)ff_prime);98 #if defined(i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)99 n += (n >> 31) & ff_prime;100 return n;101 #else102 if (n < 0) n += ff_prime;103 return n;104 95 #endif 105 }106 96 107 97 inline int ff_add ( const int a, const int b ) 108 98 { 109 99 //return ff_norm( a + b ); 110 #if defined( i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)100 #if defined(NTL_AVOID_BRANCHING) 111 101 int r=( a + b ); 112 102 r -= ff_prime; … … 123 113 { 124 114 //return ff_norm( a - b ); 125 #if defined( i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)115 #if defined(NTL_AVOID_BRANCHING) 126 116 int r=( a - b ); 127 117 r += (r >> 31) & ff_prime; … … 138 128 //return ff_norm( -a ); 139 129 // EXPERIMENT 140 #if defined( i386) || defined(__x86_64__) || defined(NTL_AVOID_BRANCHING)130 #if defined(NTL_AVOID_BRANCHING) 141 131 int r= -a; 142 132 r += (r >> 31) & ff_prime; … … 149 139 inline int ff_mul ( const int a, const int b ) 150 140 { 141 #if SIZEOF_LONG==4 151 142 if ( ff_big ) 152 143 return ff_bignorm( (FACTORY_INT64)a * (FACTORY_INT64)b ); 153 144 else 154 return ff_longnorm ( (long)a * (long)b ); 145 #endif /* else: FACTORY_INT64 is long, i.e. ff_bignorm is the same as ff_norm(long) */ 146 return ff_norm ( (long)a * (long)b ); 155 147 } 156 148
Note: See TracChangeset
for help on using the changeset viewer.