| 302 | | template <class Field> |
| 303 | | inline FFLAS::FFLAS_BASE FFLAS::BaseCompute (const Field& F, const size_t w){ |
| 304 | | |
| 305 | | FFLAS_INT_TYPE pi; |
| 306 | | F.characteristic(pi); |
| 307 | | FFLAS_BASE base; |
| 308 | | switch (w) { |
| 309 | | case 0: base = (pi < FLOAT_DOUBLE_THRESHOLD_0)? FflasFloat : FflasDouble; |
| 310 | | break; |
| 311 | | case 1: base = (pi < FLOAT_DOUBLE_THRESHOLD_1)? FflasFloat : FflasDouble; |
| 312 | | break; |
| 313 | | case 2: base = (pi < FLOAT_DOUBLE_THRESHOLD_2)? FflasFloat : FflasDouble; |
| 314 | | break; |
| 315 | | default: base = FflasDouble; |
| 316 | | break; |
| 317 | | } |
| 318 | | //cerr<<"base = "<<base<<endl; |
| 319 | | return base; |
| 320 | | // case 0: return (pi < FLOAT_DOUBLE_THRESHOLD_0)? FflasFloat : FflasDouble; |
| 321 | | // case 1: return (pi < FLOAT_DOUBLE_THRESHOLD_1)? FflasFloat : FflasDouble; |
| 322 | | // case 2: return (pi < FLOAT_DOUBLE_THRESHOLD_2)? FflasFloat : FflasDouble; |
| 323 | | // default: return FflasDouble; |
| 324 | | |
| 325 | | } |
| 326 | | |
| | 302 | template <class Element> |
| | 303 | class FFLAS::BaseCompute { |
| | 304 | public: |
| | 305 | template <class Field> |
| | 306 | FFLAS::FFLAS_BASE operator() (const Field& F, const size_t w){ |
| | 307 | |
| | 308 | FFLAS_INT_TYPE pi; |
| | 309 | F.characteristic(pi); |
| | 310 | FFLAS_BASE base; |
| | 311 | switch (w) { |
| | 312 | case 0: base = (pi < FLOAT_DOUBLE_THRESHOLD_0)? FflasFloat : FflasDouble; |
| | 313 | break; |
| | 314 | case 1: base = (pi < FLOAT_DOUBLE_THRESHOLD_1)? FflasFloat : FflasDouble; |
| | 315 | break; |
| | 316 | case 2: base = (pi < FLOAT_DOUBLE_THRESHOLD_2)? FflasFloat : FflasDouble; |
| | 317 | break; |
| | 318 | default: base = FflasDouble; |
| | 319 | break; |
| | 320 | } |
| | 321 | //cerr<<"base = "<<base<<endl; |
| | 322 | return base; |
| | 323 | // case 0: return (pi < FLOAT_DOUBLE_THRESHOLD_0)? FflasFloat : FflasDouble; |
| | 324 | // case 1: return (pi < FLOAT_DOUBLE_THRESHOLD_1)? FflasFloat : FflasDouble; |
| | 325 | // case 2: return (pi < FLOAT_DOUBLE_THRESHOLD_2)? FflasFloat : FflasDouble; |
| | 326 | // default: return FflasDouble; |
| | 327 | } |
| | 328 | }; |
| | 329 | |
| | 330 | template<> |
| | 331 | class FFLAS::BaseCompute<double> { |
| | 332 | public: |
| | 333 | template <class Field> |
| | 334 | FFLAS::FFLAS_BASE operator() (const Field& F, const size_t w){ |
| | 335 | return FflasDouble; |
| | 336 | } |
| | 337 | }; |
| | 338 | |
| | 339 | template<> |
| | 340 | class FFLAS::BaseCompute<float> { |
| | 341 | public: |
| | 342 | template <class Field> |
| | 343 | FFLAS::FFLAS_BASE operator() (const Field& F, const size_t w){ |
| | 344 | return FflasFloat; |
| | 345 | } |
| | 346 | }; |