Changeset 60 for include/fflas-ffpack/fflas_bounds.inl
- Timestamp:
- 04/02/08 14:08:58 (9 months ago)
- Files:
-
- 1 modified
-
include/fflas-ffpack/fflas_bounds.inl (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
include/fflas-ffpack/fflas_bounds.inl
r56 r60 50 50 for (size_t i=0; i < w; ++i) ex *= 3; 51 51 //FFLAS_INT_TYPE c = (p-1)*(ex)/2; //bound for a centered representation 52 long longc;52 FFLAS_INT_TYPE c; 53 53 #ifndef _LINBOX_LINBOX_CONFIG_H 54 54 if (F.balanced) … … 62 62 } 63 63 else{ 64 long longc = p-1;65 long longcplt=0;64 FFLAS_INT_TYPE c = p-1; 65 FFLAS_INT_TYPE cplt=0; 66 66 if (!F.isZero (beta)) 67 67 if (F.isOne (beta) || F.areEqual (beta, mone)) … … 106 106 // Computes nmax s.t. (p-1)/2*(p^{nmax-1} + (p-2)^{nmax-1}) < 2^53 107 107 //--------------------------------------------------------------------- 108 inline size_t bound_compute_double(const long longpi) {109 110 long longp=pi,p1=1,p2=1;111 size_t nmax =1;112 double max = (( 1ULL<<(DOUBLE_MANTISSA+1) )/(p-1));108 inline size_t bound_compute_double(const FFLAS_INT_TYPE pi) { 109 110 FFLAS_INT_TYPE p=pi,p1=1,p2=1; 111 size_t nmax = 1; 112 FFLAS_INT_TYPE max = ( FFLAS_INT_TYPE( 1ULL<<(DOUBLE_MANTISSA+1) )/(p-1)); 113 113 while ( (p1 + p2) < max ){ 114 114 p1*=p; … … 119 119 return nmax; 120 120 } 121 inline size_t bound_compute_double_balanced(const long longpi) {122 123 long longp=(pi+1)/2,p1=1;121 inline size_t bound_compute_double_balanced(const FFLAS_INT_TYPE pi) { 122 123 FFLAS_INT_TYPE p=(pi+1)/2,p1=1; 124 124 size_t nmax=0; 125 double max = (( 1ULL<<(DOUBLE_MANTISSA))/(p-1));125 FFLAS_INT_TYPE max = ( FFLAS_INT_TYPE( 1ULL<<(DOUBLE_MANTISSA))/(p-1)); 126 126 while ( (p1) < max ){ 127 127 p1*=p; … … 130 130 return nmax; 131 131 } 132 inline size_t bound_compute_float(const long longpi) {133 134 long longp=pi,p1=1,p2=1;132 inline size_t bound_compute_float(const FFLAS_INT_TYPE pi) { 133 134 FFLAS_INT_TYPE p=pi,p1=1,p2=1; 135 135 size_t nmax=1; 136 double max = ( (1ULL<<(FLOAT_MANTISSA+1) )/(p-1));136 FFLAS_INT_TYPE max = (FFLAS_INT_TYPE( 1ULL<<(FLOAT_MANTISSA+1) )/(p-1)); 137 137 while ( (p1 + p2) < max ){ 138 138 p1*=p; … … 143 143 return nmax; 144 144 } 145 inline size_t bound_compute_float_balanced(const long longpi) {146 147 long longp=(pi+1)/2,p1=1;145 inline size_t bound_compute_float_balanced(const FFLAS_INT_TYPE pi) { 146 147 FFLAS_INT_TYPE p=(pi+1)/2,p1=1; 148 148 size_t nmax=0; 149 double max = (( 1ULL<<(FLOAT_MANTISSA))/(p-1));149 FFLAS_INT_TYPE max = ( FFLAS_INT_TYPE( 1ULL<<(FLOAT_MANTISSA))/(p-1)); 150 150 while ( (p1) < max ){ 151 151 p1*=p;
