glucat  0.12.0
tuning.h
Go to the documentation of this file.
1 #ifndef GLUCAT_TEST_TUNING_H
2 #define GLUCAT_TEST_TUNING_H
3 /***************************************************************************
4  GluCat : Generic library of universal Clifford algebra templates
5  tuning.h : Class definitions to control test tuning
6  -------------------
7  begin : Sun 2001-12-09
8  copyright : (C) 2001-2021 by Paul C. Leopardi
9  ***************************************************************************
10 
11  This library is free software: you can redistribute it and/or modify
12  it under the terms of the GNU Lesser General Public License as published
13  by the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  This library is distributed in the hope that it will be useful,
17  but WITHOUT ANY WARRANTY; without even the implied warranty of
18  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  GNU Lesser General Public License for more details.
20 
21  You should have received a copy of the GNU Lesser General Public License
22  along with this library. If not, see <http://www.gnu.org/licenses/>.
23 
24  ***************************************************************************
25  This library is based on a prototype written by Arvind Raja and was
26  licensed under the LGPL with permission of the author. See Arvind Raja,
27  "Object-oriented implementations of Clifford algebras in C++: a prototype",
28  in Ablamowicz, Lounesto and Parra (eds.)
29  "Clifford algebras with numeric and symbolic computations", Birkhauser, 1996.
30  ***************************************************************************
31  See also Arvind Raja's original header comments in glucat.h
32  ***************************************************************************/
33 
34 namespace glucat
35 {
36  const unsigned int Tuning_Int_Digits = std::numeric_limits<int>::digits;
37  const unsigned int Tuning_Max_Threshold = 1 << Tuning_Int_Digits;
38 
39  // Specific tuning policy constants and tuning policies
40 
42  const unsigned int Tuning_Slow_Basis_Max_Count = 0;
46 
47  using tuning_slow = tuning
48  <
50  Tuning_Default_Div_Max_Steps,
51  Tuning_Default_CR_Sqrt_Max_Steps,
52  Tuning_Default_DB_Sqrt_Max_Steps,
53  Tuning_Default_Log_Max_Outer_Steps,
54  Tuning_Default_Log_Max_Inner_Steps,
59  Tuning_Default_Denom_Different_Bits,
60  Tuning_Default_Extra_Different_Bits,
61  Tuning_Default_Function_Precision
62  >;
63 
64  const unsigned int Tuning_Naive_Mult_Matrix_Threshold = 0;
68 
69  using tuning_naive = tuning
70  <
72  Tuning_Default_Div_Max_Steps,
73  Tuning_Default_CR_Sqrt_Max_Steps,
74  Tuning_Default_DB_Sqrt_Max_Steps,
75  Tuning_Default_Log_Max_Outer_Steps,
76  Tuning_Default_Log_Max_Inner_Steps,
80  Tuning_Default_Products_Size_Threshold,
81  Tuning_Default_Denom_Different_Bits,
82  Tuning_Default_Extra_Different_Bits,
83  Tuning_Default_Function_Precision
84  >;
85 
86  const unsigned int Tuning_Fast_Mult_Matrix_Threshold = 0;
87  const unsigned int Tuning_Fast_Div_Max_Steps = 0;
88  const unsigned int Tuning_Fast_CR_Sqrt_Max_Steps = 256;
89  const unsigned int Tuning_Fast_DB_Sqrt_Max_Steps = 256;
90  const unsigned int Tuning_Fast_Log_Max_Outer_Steps = 16;
91  const unsigned int Tuning_Fast_Log_Max_Inner_Steps = 8;
92  const unsigned int Tuning_Fast_Basis_Max_Count = 1;
93  const unsigned int Tuning_Fast_Fast_Size_Threshold = 0;
94  const unsigned int Tuning_Fast_Inv_Fast_Dim_Threshold = 0;
95  const unsigned int Tuning_Fast_Products_Size_Threshold = 0;
96 
97  using tuning_fast = tuning
98  <
109  Tuning_Default_Denom_Different_Bits,
110  Tuning_Default_Extra_Different_Bits,
111  Tuning_Default_Function_Precision
112  >;
113 }
114 #endif // GLUCAT_TEST_TUNING_H
const unsigned int Tuning_Slow_Mult_Matrix_Threshold
Definition: tuning.h:41
const unsigned int Tuning_Fast_Basis_Max_Count
Definition: tuning.h:92
const unsigned int Tuning_Fast_Div_Max_Steps
Definition: tuning.h:87
tuning< Tuning_Slow_Mult_Matrix_Threshold, Tuning_Default_Div_Max_Steps, Tuning_Default_CR_Sqrt_Max_Steps, Tuning_Default_DB_Sqrt_Max_Steps, Tuning_Default_Log_Max_Outer_Steps, Tuning_Default_Log_Max_Inner_Steps, Tuning_Slow_Basis_Max_Count, Tuning_Slow_Fast_Size_Threshold, Tuning_Slow_Inv_Fast_Dim_Threshold, Tuning_Slow_Products_Size_Threshold, Tuning_Default_Denom_Different_Bits, Tuning_Default_Extra_Different_Bits, Tuning_Default_Function_Precision > tuning_slow
Definition: tuning.h:62
tuning< Tuning_Naive_Mult_Matrix_Threshold, Tuning_Default_Div_Max_Steps, Tuning_Default_CR_Sqrt_Max_Steps, Tuning_Default_DB_Sqrt_Max_Steps, Tuning_Default_Log_Max_Outer_Steps, Tuning_Default_Log_Max_Inner_Steps, Tuning_Naive_Basis_Max_Count, Tuning_Naive_Fast_Size_Threshold, Tuning_Naive_Inv_Fast_Dim_Threshold, Tuning_Default_Products_Size_Threshold, Tuning_Default_Denom_Different_Bits, Tuning_Default_Extra_Different_Bits, Tuning_Default_Function_Precision > tuning_naive
Definition: tuning.h:84
const unsigned int Tuning_Int_Digits
Definition: tuning.h:36
const unsigned int Tuning_Naive_Mult_Matrix_Threshold
Definition: tuning.h:64
const unsigned int Tuning_Naive_Basis_Max_Count
Definition: tuning.h:65
const unsigned int Tuning_Fast_CR_Sqrt_Max_Steps
Definition: tuning.h:88
const unsigned int Tuning_Max_Threshold
Definition: tuning.h:37
const unsigned int Tuning_Naive_Fast_Size_Threshold
Definition: tuning.h:66
const unsigned int Tuning_Slow_Fast_Size_Threshold
Definition: tuning.h:43
const unsigned int Tuning_Fast_Log_Max_Outer_Steps
Definition: tuning.h:90
const unsigned int Tuning_Slow_Products_Size_Threshold
Definition: tuning.h:45
const unsigned int Tuning_Naive_Inv_Fast_Dim_Threshold
Definition: tuning.h:67
const unsigned int Tuning_Slow_Inv_Fast_Dim_Threshold
Definition: tuning.h:44
const unsigned int Tuning_Fast_Fast_Size_Threshold
Definition: tuning.h:93
const unsigned int Tuning_Slow_Basis_Max_Count
Definition: tuning.h:42
const unsigned int Tuning_Fast_DB_Sqrt_Max_Steps
Definition: tuning.h:89
const unsigned int Tuning_Fast_Mult_Matrix_Threshold
Definition: tuning.h:86
const unsigned int Tuning_Fast_Log_Max_Inner_Steps
Definition: tuning.h:91
const unsigned int Tuning_Fast_Products_Size_Threshold
Definition: tuning.h:95
const unsigned int Tuning_Fast_Inv_Fast_Dim_Threshold
Definition: tuning.h:94
tuning< Tuning_Fast_Mult_Matrix_Threshold, Tuning_Fast_Div_Max_Steps, Tuning_Fast_CR_Sqrt_Max_Steps, Tuning_Fast_DB_Sqrt_Max_Steps, Tuning_Fast_Log_Max_Outer_Steps, Tuning_Fast_Log_Max_Inner_Steps, Tuning_Fast_Basis_Max_Count, Tuning_Fast_Fast_Size_Threshold, Tuning_Fast_Inv_Fast_Dim_Threshold, Tuning_Fast_Products_Size_Threshold, Tuning_Default_Denom_Different_Bits, Tuning_Default_Extra_Different_Bits, Tuning_Default_Function_Precision > tuning_fast
Definition: tuning.h:112