51 const unsigned int Tuning_Default_Mult_Matrix_Threshold = 8;
52 const unsigned int Tuning_Default_Div_Max_Steps = 4;
53 const unsigned int Tuning_Default_CR_Sqrt_Max_Steps = 256;
54 const unsigned int Tuning_Default_DB_Sqrt_Max_Steps = 256;
55 const unsigned int Tuning_Default_Log_Max_Outer_Steps = 256;
56 const unsigned int Tuning_Default_Log_Max_Inner_Steps = 32;
57 const unsigned int Tuning_Default_Basis_Max_Count = 12;
58 const unsigned int Tuning_Default_Fast_Size_Threshold = 1 << 6;
59 const unsigned int Tuning_Default_Inv_Fast_Dim_Threshold = 1 << 3;
60 const unsigned int Tuning_Default_Products_Size_Threshold = 1 << 22;
61 const unsigned int Tuning_Default_Denom_Different_Bits = 8;
62 const unsigned int Tuning_Default_Extra_Different_Bits = 8;
63 const precision_t Tuning_Default_Function_Precision = precision_same;
68 unsigned int Mult_Matrix_Threshold = Tuning_Default_Mult_Matrix_Threshold,
69 unsigned int Div_Max_Steps = Tuning_Default_Div_Max_Steps,
70 unsigned int CR_Sqrt_Max_Steps = Tuning_Default_CR_Sqrt_Max_Steps,
71 unsigned int DB_Sqrt_Max_Steps = Tuning_Default_DB_Sqrt_Max_Steps,
72 unsigned int Log_Max_Outer_Steps = Tuning_Default_Log_Max_Outer_Steps,
73 unsigned int Log_Max_Inner_Steps = Tuning_Default_Log_Max_Inner_Steps,
74 unsigned int Basis_Max_Count = Tuning_Default_Basis_Max_Count,
75 unsigned int Fast_Size_Threshold = Tuning_Default_Fast_Size_Threshold,
76 unsigned int Inv_Fast_Dim_Threshold = Tuning_Default_Inv_Fast_Dim_Threshold,
77 unsigned int Products_Size_Threshold = Tuning_Default_Products_Size_Threshold,
78 unsigned int Denom_Different_Bits = Tuning_Default_Denom_Different_Bits,
79 unsigned int Extra_Different_Bits = Tuning_Default_Extra_Different_Bits,
80 precision_t Function_Precision = Tuning_Default_Function_Precision
82 struct tuning : policy
86 Mult_Matrix_Threshold,
94 Inv_Fast_Dim_Threshold,
95 Products_Size_Threshold,
102 enum { mult_matrix_threshold = Mult_Matrix_Threshold };
105 enum { div_max_steps = Div_Max_Steps };
108 enum { cr_sqrt_max_steps = CR_Sqrt_Max_Steps };
110 enum { db_sqrt_max_steps = DB_Sqrt_Max_Steps };
113 enum { log_max_outer_steps = Log_Max_Outer_Steps };
115 enum { log_max_inner_steps = Log_Max_Inner_Steps };
118 enum { basis_max_count = Basis_Max_Count };
121 enum { fast_size_threshold = Fast_Size_Threshold };
123 enum { inv_fast_dim_threshold = Inv_Fast_Dim_Threshold };
126 enum { products_size_threshold = Products_Size_Threshold };
129 enum { denom_different_bits = Denom_Different_Bits };
131 enum { extra_different_bits = Extra_Different_Bits };
133 static const precision_t function_precision = Function_Precision;
136 using tuning_demoted = tuning
138 Tuning_Default_Mult_Matrix_Threshold,
139 Tuning_Default_Div_Max_Steps,
140 Tuning_Default_CR_Sqrt_Max_Steps,
141 Tuning_Default_DB_Sqrt_Max_Steps,
142 Tuning_Default_Log_Max_Outer_Steps,
143 Tuning_Default_Log_Max_Inner_Steps,
144 Tuning_Default_Basis_Max_Count,
145 Tuning_Default_Fast_Size_Threshold,
146 Tuning_Default_Inv_Fast_Dim_Threshold,
147 Tuning_Default_Products_Size_Threshold,
148 Tuning_Default_Denom_Different_Bits,
149 Tuning_Default_Extra_Different_Bits,
153 using tuning_promoted = tuning
155 Tuning_Default_Mult_Matrix_Threshold,
156 Tuning_Default_Div_Max_Steps,
157 Tuning_Default_CR_Sqrt_Max_Steps,
158 Tuning_Default_DB_Sqrt_Max_Steps,
159 Tuning_Default_Log_Max_Outer_Steps,
160 Tuning_Default_Log_Max_Inner_Steps,
161 Tuning_Default_Basis_Max_Count,
162 Tuning_Default_Fast_Size_Threshold,
163 Tuning_Default_Inv_Fast_Dim_Threshold,
164 Tuning_Default_Products_Size_Threshold,
165 Tuning_Default_Denom_Different_Bits,
166 Tuning_Default_Extra_Different_Bits,
#define _GLUCAT_CTAssert(expr, msg)