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