1 //=================================================================================================
2 /*!
3 //  \file blaze/math/TypeTraits.h
4 //  \brief Header file for all type traits
5 //
6 //  Copyright (C) 2012-2020 Klaus Iglberger - All Rights Reserved
7 //
8 //  This file is part of the Blaze library. You can redistribute it and/or modify it under
9 //  the terms of the New (Revised) BSD License. Redistribution and use in source and binary
10 //  forms, with or without modification, are permitted provided that the following conditions
11 //  are met:
12 //
13 //  1. Redistributions of source code must retain the above copyright notice, this list of
14 //     conditions and the following disclaimer.
15 //  2. Redistributions in binary form must reproduce the above copyright notice, this list
16 //     of conditions and the following disclaimer in the documentation and/or other materials
17 //     provided with the distribution.
18 //  3. Neither the names of the Blaze development group nor the names of its contributors
19 //     may be used to endorse or promote products derived from this software without specific
20 //     prior written permission.
21 //
22 //  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
23 //  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
24 //  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
25 //  SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 //  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
27 //  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
28 //  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 //  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30 //  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
31 //  DAMAGE.
32 */
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_TYPETRAITS_H_
36 #define _BLAZE_MATH_TYPETRAITS_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
43 #include <blaze/math/typetraits/CustomOppositeType.h>
44 #include <blaze/math/typetraits/CustomTransposeType.h>
45 #include <blaze/math/typetraits/DynamicAllocator.h>
46 #include <blaze/math/typetraits/GetAllocator.h>
47 #include <blaze/math/typetraits/HasAbs.h>
48 #include <blaze/math/typetraits/HasAcos.h>
49 #include <blaze/math/typetraits/HasAcosh.h>
50 #include <blaze/math/typetraits/HasAdd.h>
51 #include <blaze/math/typetraits/HasAsin.h>
52 #include <blaze/math/typetraits/HasAsinh.h>
53 #include <blaze/math/typetraits/HasAtan.h>
54 #include <blaze/math/typetraits/HasAtan2.h>
55 #include <blaze/math/typetraits/HasAtanh.h>
56 #include <blaze/math/typetraits/HasCbrt.h>
57 #include <blaze/math/typetraits/HasCeil.h>
58 #include <blaze/math/typetraits/HasClamp.h>
59 #include <blaze/math/typetraits/HasCompositeType.h>
60 #include <blaze/math/typetraits/HasConj.h>
61 #include <blaze/math/typetraits/HasConstDataAccess.h>
62 #include <blaze/math/typetraits/HasCos.h>
63 #include <blaze/math/typetraits/HasCosh.h>
64 #include <blaze/math/typetraits/HasDiv.h>
65 #include <blaze/math/typetraits/HasErf.h>
66 #include <blaze/math/typetraits/HasErfc.h>
67 #include <blaze/math/typetraits/HasExp.h>
68 #include <blaze/math/typetraits/HasExp2.h>
69 #include <blaze/math/typetraits/HasExp10.h>
70 #include <blaze/math/typetraits/HasFloor.h>
71 #include <blaze/math/typetraits/HasHypot.h>
72 #include <blaze/math/typetraits/HasImag.h>
73 #include <blaze/math/typetraits/HasInvCbrt.h>
74 #include <blaze/math/typetraits/HasInvSqrt.h>
75 #include <blaze/math/typetraits/HasLGamma.h>
76 #include <blaze/math/typetraits/HasLoad.h>
77 #include <blaze/math/typetraits/HasLog.h>
78 #include <blaze/math/typetraits/HasLog1p.h>
79 #include <blaze/math/typetraits/HasLog2.h>
80 #include <blaze/math/typetraits/HasLog10.h>
81 #include <blaze/math/typetraits/HasMax.h>
82 #include <blaze/math/typetraits/HasMin.h>
83 #include <blaze/math/typetraits/HasMult.h>
84 #include <blaze/math/typetraits/HasMutableDataAccess.h>
85 #include <blaze/math/typetraits/HasPow.h>
86 #include <blaze/math/typetraits/HasReal.h>
87 #include <blaze/math/typetraits/HasResultType.h>
88 #include <blaze/math/typetraits/HasRound.h>
89 #include <blaze/math/typetraits/HasSign.h>
90 #include <blaze/math/typetraits/HasSIMDAbs.h>
91 #include <blaze/math/typetraits/HasSIMDAcos.h>
92 #include <blaze/math/typetraits/HasSIMDAcosh.h>
93 #include <blaze/math/typetraits/HasSIMDAdd.h>
94 #include <blaze/math/typetraits/HasSIMDAsin.h>
95 #include <blaze/math/typetraits/HasSIMDAsinh.h>
96 #include <blaze/math/typetraits/HasSIMDAtan.h>
97 #include <blaze/math/typetraits/HasSIMDAtan2.h>
98 #include <blaze/math/typetraits/HasSIMDAtanh.h>
99 #include <blaze/math/typetraits/HasSIMDBitand.h>
100 #include <blaze/math/typetraits/HasSIMDBitor.h>
101 #include <blaze/math/typetraits/HasSIMDBitxor.h>
102 #include <blaze/math/typetraits/HasSIMDCbrt.h>
103 #include <blaze/math/typetraits/HasSIMDCeil.h>
104 #include <blaze/math/typetraits/HasSIMDConj.h>
105 #include <blaze/math/typetraits/HasSIMDCos.h>
106 #include <blaze/math/typetraits/HasSIMDCosh.h>
107 #include <blaze/math/typetraits/HasSIMDDiv.h>
108 #include <blaze/math/typetraits/HasSIMDEqual.h>
109 #include <blaze/math/typetraits/HasSIMDErf.h>
110 #include <blaze/math/typetraits/HasSIMDErfc.h>
111 #include <blaze/math/typetraits/HasSIMDExp.h>
112 #include <blaze/math/typetraits/HasSIMDExp2.h>
113 #include <blaze/math/typetraits/HasSIMDExp10.h>
114 #include <blaze/math/typetraits/HasSIMDFloor.h>
115 #include <blaze/math/typetraits/HasSIMDHypot.h>
116 #include <blaze/math/typetraits/HasSIMDInvCbrt.h>
117 #include <blaze/math/typetraits/HasSIMDInvSqrt.h>
118 #include <blaze/math/typetraits/HasSIMDLGamma.h>
119 #include <blaze/math/typetraits/HasSIMDLog.h>
120 #include <blaze/math/typetraits/HasSIMDLog1p.h>
121 #include <blaze/math/typetraits/HasSIMDLog2.h>
122 #include <blaze/math/typetraits/HasSIMDLog10.h>
123 #include <blaze/math/typetraits/HasSIMDMax.h>
124 #include <blaze/math/typetraits/HasSIMDMin.h>
125 #include <blaze/math/typetraits/HasSIMDMult.h>
126 #include <blaze/math/typetraits/HasSIMDPow.h>
127 #include <blaze/math/typetraits/HasSIMDRound.h>
128 #include <blaze/math/typetraits/HasSIMDShiftLI.h>
129 #include <blaze/math/typetraits/HasSIMDShiftLV.h>
130 #include <blaze/math/typetraits/HasSIMDShiftRI.h>
131 #include <blaze/math/typetraits/HasSIMDShiftRV.h>
132 #include <blaze/math/typetraits/HasSIMDSign.h>
133 #include <blaze/math/typetraits/HasSIMDSin.h>
134 #include <blaze/math/typetraits/HasSIMDSinh.h>
135 #include <blaze/math/typetraits/HasSIMDSqrt.h>
136 #include <blaze/math/typetraits/HasSIMDSub.h>
137 #include <blaze/math/typetraits/HasSIMDTan.h>
138 #include <blaze/math/typetraits/HasSIMDTanh.h>
139 #include <blaze/math/typetraits/HasSIMDTrunc.h>
140 #include <blaze/math/typetraits/HasSin.h>
141 #include <blaze/math/typetraits/HasSinh.h>
142 #include <blaze/math/typetraits/HasSqrt.h>
143 #include <blaze/math/typetraits/HasSub.h>
144 #include <blaze/math/typetraits/HasTan.h>
145 #include <blaze/math/typetraits/HasTanh.h>
146 #include <blaze/math/typetraits/HasTrunc.h>
147 #include <blaze/math/typetraits/HighType.h>
148 #include <blaze/math/typetraits/IsAdaptor.h>
149 #include <blaze/math/typetraits/IsAddExpr.h>
150 #include <blaze/math/typetraits/IsAligned.h>
151 #include <blaze/math/typetraits/IsBand.h>
152 #include <blaze/math/typetraits/IsBinaryMapExpr.h>
153 #include <blaze/math/typetraits/IsBLASCompatible.h>
154 #include <blaze/math/typetraits/IsColumn.h>
155 #include <blaze/math/typetraits/IsColumnMajorMatrix.h>
156 #include <blaze/math/typetraits/IsColumns.h>
157 #include <blaze/math/typetraits/IsColumnVector.h>
158 #include <blaze/math/typetraits/IsCommutative.h>
159 #include <blaze/math/typetraits/IsComputation.h>
160 #include <blaze/math/typetraits/IsContiguous.h>
161 #include <blaze/math/typetraits/IsCrossExpr.h>
162 #include <blaze/math/typetraits/IsCUDAAssignable.h>
163 #include <blaze/math/typetraits/IsCustom.h>
164 #include <blaze/math/typetraits/IsDeclaration.h>
165 #include <blaze/math/typetraits/IsDeclDiagExpr.h>
166 #include <blaze/math/typetraits/IsDeclExpr.h>
167 #include <blaze/math/typetraits/IsDeclHermExpr.h>
168 #include <blaze/math/typetraits/IsDeclLowExpr.h>
169 #include <blaze/math/typetraits/IsDeclStrLowExpr.h>
170 #include <blaze/math/typetraits/IsDeclStrUppExpr.h>
171 #include <blaze/math/typetraits/IsDeclSymExpr.h>
172 #include <blaze/math/typetraits/IsDeclUniLowExpr.h>
173 #include <blaze/math/typetraits/IsDeclUniUppExpr.h>
174 #include <blaze/math/typetraits/IsDeclUppExpr.h>
175 #include <blaze/math/typetraits/IsDenseMatrix.h>
176 #include <blaze/math/typetraits/IsDenseVector.h>
177 #include <blaze/math/typetraits/IsDiagonal.h>
178 #include <blaze/math/typetraits/IsDivExpr.h>
179 #include <blaze/math/typetraits/IsEigenExpr.h>
180 #include <blaze/math/typetraits/IsElements.h>
181 #include <blaze/math/typetraits/IsEvalExpr.h>
182 #include <blaze/math/typetraits/IsExpandExpr.h>
183 #include <blaze/math/typetraits/IsExpression.h>
184 #include <blaze/math/typetraits/IsGeneral.h>
185 #include <blaze/math/typetraits/IsGenExpr.h>
186 #include <blaze/math/typetraits/IsHermitian.h>
187 #include <blaze/math/typetraits/IsIdentity.h>
188 #include <blaze/math/typetraits/IsInitializer.h>
189 #include <blaze/math/typetraits/IsInvertible.h>
190 #include <blaze/math/typetraits/IsKronExpr.h>
191 #include <blaze/math/typetraits/IsLower.h>
192 #include <blaze/math/typetraits/IsMatEvalExpr.h>
193 #include <blaze/math/typetraits/IsMatExpExpr.h>
194 #include <blaze/math/typetraits/IsMatGenExpr.h>
195 #include <blaze/math/typetraits/IsMatInvExpr.h>
196 #include <blaze/math/typetraits/IsMatMapExpr.h>
197 #include <blaze/math/typetraits/IsMatMatAddExpr.h>
198 #include <blaze/math/typetraits/IsMatMatKronExpr.h>
199 #include <blaze/math/typetraits/IsMatMatMapExpr.h>
200 #include <blaze/math/typetraits/IsMatMatMultExpr.h>
201 #include <blaze/math/typetraits/IsMatMatSolveExpr.h>
202 #include <blaze/math/typetraits/IsMatMatSubExpr.h>
203 #include <blaze/math/typetraits/IsMatNoAliasExpr.h>
204 #include <blaze/math/typetraits/IsMatNoSIMDExpr.h>
205 #include <blaze/math/typetraits/IsMatReduceExpr.h>
206 #include <blaze/math/typetraits/IsMatRepeatExpr.h>
207 #include <blaze/math/typetraits/IsMatrix.h>
208 #include <blaze/math/typetraits/IsMatScalarDivExpr.h>
209 #include <blaze/math/typetraits/IsMatScalarMultExpr.h>
210 #include <blaze/math/typetraits/IsMatSerialExpr.h>
211 #include <blaze/math/typetraits/IsMatTransExpr.h>
212 #include <blaze/math/typetraits/IsMatVecMultExpr.h>
213 #include <blaze/math/typetraits/IsMatVecSolveExpr.h>
214 #include <blaze/math/typetraits/IsModification.h>
215 #include <blaze/math/typetraits/IsMultExpr.h>
216 #include <blaze/math/typetraits/IsNoAliasExpr.h>
217 #include <blaze/math/typetraits/IsNoSIMDExpr.h>
218 #include <blaze/math/typetraits/IsOperation.h>
219 #include <blaze/math/typetraits/IsOpposedView.h>
220 #include <blaze/math/typetraits/IsPadded.h>
221 #include <blaze/math/typetraits/IsPaddingEnabled.h>
222 #include <blaze/math/typetraits/IsProxy.h>
223 #include <blaze/math/typetraits/IsReduceExpr.h>
224 #include <blaze/math/typetraits/IsRepeatExpr.h>
225 #include <blaze/math/typetraits/IsResizable.h>
226 #include <blaze/math/typetraits/IsRestricted.h>
227 #include <blaze/math/typetraits/IsRow.h>
228 #include <blaze/math/typetraits/IsRowMajorMatrix.h>
229 #include <blaze/math/typetraits/IsRows.h>
230 #include <blaze/math/typetraits/IsRowVector.h>
231 #include <blaze/math/typetraits/IsScalar.h>
232 #include <blaze/math/typetraits/IsSchurExpr.h>
233 #include <blaze/math/typetraits/IsSerialExpr.h>
234 #include <blaze/math/typetraits/IsShrinkable.h>
235 #include <blaze/math/typetraits/IsSIMDCombinable.h>
236 #include <blaze/math/typetraits/IsSIMDEnabled.h>
237 #include <blaze/math/typetraits/IsSIMDPack.h>
238 #include <blaze/math/typetraits/IsSMPAssignable.h>
239 #include <blaze/math/typetraits/IsSolveExpr.h>
240 #include <blaze/math/typetraits/IsSparseElement.h>
241 #include <blaze/math/typetraits/IsSparseMatrix.h>
242 #include <blaze/math/typetraits/IsSparseVector.h>
243 #include <blaze/math/typetraits/IsSquare.h>
244 #include <blaze/math/typetraits/IsStatic.h>
245 #include <blaze/math/typetraits/IsStrictlyLower.h>
246 #include <blaze/math/typetraits/IsStrictlyTriangular.h>
247 #include <blaze/math/typetraits/IsStrictlyUpper.h>
248 #include <blaze/math/typetraits/IsSubExpr.h>
249 #include <blaze/math/typetraits/IsSubmatrix.h>
250 #include <blaze/math/typetraits/IsSubvector.h>
251 #include <blaze/math/typetraits/IsSVDExpr.h>
252 #include <blaze/math/typetraits/IsSymmetric.h>
253 #include <blaze/math/typetraits/IsTemporary.h>
254 #include <blaze/math/typetraits/IsTransExpr.h>
255 #include <blaze/math/typetraits/IsTransformation.h>
256 #include <blaze/math/typetraits/IsTriangular.h>
257 #include <blaze/math/typetraits/IsTVecMatMultExpr.h>
258 #include <blaze/math/typetraits/IsUnaryMapExpr.h>
259 #include <blaze/math/typetraits/IsUniform.h>
260 #include <blaze/math/typetraits/IsUniLower.h>
261 #include <blaze/math/typetraits/IsUniTriangular.h>
262 #include <blaze/math/typetraits/IsUniUpper.h>
263 #include <blaze/math/typetraits/IsUpper.h>
264 #include <blaze/math/typetraits/IsVecEvalExpr.h>
265 #include <blaze/math/typetraits/IsVecExpandExpr.h>
266 #include <blaze/math/typetraits/IsVecGenExpr.h>
267 #include <blaze/math/typetraits/IsVecMapExpr.h>
268 #include <blaze/math/typetraits/IsVecNoAliasExpr.h>
269 #include <blaze/math/typetraits/IsVecNoSIMDExpr.h>
270 #include <blaze/math/typetraits/IsVecRepeatExpr.h>
271 #include <blaze/math/typetraits/IsVecScalarDivExpr.h>
272 #include <blaze/math/typetraits/IsVecScalarMultExpr.h>
273 #include <blaze/math/typetraits/IsVecSerialExpr.h>
274 #include <blaze/math/typetraits/IsVector.h>
275 #include <blaze/math/typetraits/IsVecTransExpr.h>
276 #include <blaze/math/typetraits/IsVecTVecMapExpr.h>
277 #include <blaze/math/typetraits/IsVecTVecMultExpr.h>
278 #include <blaze/math/typetraits/IsVecVecAddExpr.h>
279 #include <blaze/math/typetraits/IsVecVecDivExpr.h>
280 #include <blaze/math/typetraits/IsVecVecKronExpr.h>
281 #include <blaze/math/typetraits/IsVecVecMapExpr.h>
282 #include <blaze/math/typetraits/IsVecVecMultExpr.h>
283 #include <blaze/math/typetraits/IsVecVecSubExpr.h>
284 #include <blaze/math/typetraits/IsView.h>
285 #include <blaze/math/typetraits/IsZero.h>
286 #include <blaze/math/typetraits/LowType.h>
287 #include <blaze/math/typetraits/MakeComplex.h>
288 #include <blaze/math/typetraits/MaxSize.h>
289 #include <blaze/math/typetraits/RemoveAdaptor.h>
290 #include <blaze/math/typetraits/RequiresEvaluation.h>
291 #include <blaze/math/typetraits/Size.h>
292 #include <blaze/math/typetraits/StorageOrder.h>
293 #include <blaze/math/typetraits/TransposeFlag.h>
294 #include <blaze/math/typetraits/UnderlyingBuiltin.h>
295 #include <blaze/math/typetraits/UnderlyingElement.h>
296 #include <blaze/math/typetraits/UnderlyingNumeric.h>
297 #include <blaze/math/typetraits/UnderlyingScalar.h>
298 #include <blaze/math/typetraits/YieldsDiagonal.h>
299 #include <blaze/math/typetraits/YieldsHermitian.h>
300 #include <blaze/math/typetraits/YieldsIdentity.h>
301 #include <blaze/math/typetraits/YieldsLower.h>
302 #include <blaze/math/typetraits/YieldsStrictlyLower.h>
303 #include <blaze/math/typetraits/YieldsStrictlyTriangular.h>
304 #include <blaze/math/typetraits/YieldsStrictlyUpper.h>
305 #include <blaze/math/typetraits/YieldsSymmetric.h>
306 #include <blaze/math/typetraits/YieldsTriangular.h>
307 #include <blaze/math/typetraits/YieldsUniform.h>
308 #include <blaze/math/typetraits/YieldsUniLower.h>
309 #include <blaze/math/typetraits/YieldsUniTriangular.h>
310 #include <blaze/math/typetraits/YieldsUniUpper.h>
311 #include <blaze/math/typetraits/YieldsUpper.h>
312 #include <blaze/math/typetraits/YieldsZero.h>
313 
314 #endif
315