Blaze  3.6
MatVecMultExpr.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_CONSTRAINTS_MATVECMULTEXPR_H_
36 #define _BLAZE_MATH_CONSTRAINTS_MATVECMULTEXPR_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
47 
48 
49 namespace blaze {
50 
51 //=================================================================================================
52 //
53 // MUST_BE_MATVECMULTEXPR_TYPE CONSTRAINT
54 //
55 //=================================================================================================
56 
57 //*************************************************************************************************
64 #define BLAZE_CONSTRAINT_MUST_BE_MATVECMULTEXPR_TYPE(T) \
65  static_assert( ::blaze::IsMatVecMultExpr_v<T>, "Non-matrix/vector multiplication expression type detected" )
66 //*************************************************************************************************
67 
68 
69 
70 
71 //=================================================================================================
72 //
73 // MUST_NOT_BE_MATVECMULTEXPR_TYPE CONSTRAINT
74 //
75 //=================================================================================================
76 
77 //*************************************************************************************************
84 #define BLAZE_CONSTRAINT_MUST_NOT_BE_MATVECMULTEXPR_TYPE(T) \
85  static_assert( !::blaze::IsMatVecMultExpr_v<T>, "Matrix/vector multiplication expression type detected" )
86 //*************************************************************************************************
87 
88 
89 
90 
91 //=================================================================================================
92 //
93 // MUST_FORM_VALID_MATVECMULTEXPR CONSTRAINT
94 //
95 //=================================================================================================
96 
97 //*************************************************************************************************
104 #define BLAZE_CONSTRAINT_MUST_FORM_VALID_MATVECMULTEXPR(T1,T2) \
105  static_assert( ::blaze::IsMatrix_v<T1> && \
106  ::blaze::IsColumnVector_v<T2> && \
107  ( ( ::blaze::Size_v<T1,1UL> == -1L ) || \
108  ( ::blaze::Size_v<T2,0UL> == -1L ) || \
109  ( ::blaze::Size_v<T1,1UL> == ::blaze::Size_v<T2,0UL> ) ) \
110  , "Invalid matrix/vector multiplication expression detected" )
111 //*************************************************************************************************
112 
113 } // namespace blaze
114 
115 #endif
Header file for the IsMatVecMultExpr type trait class.
Header file for the IsMatrix type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
Header file for the IsColumnVector type trait.
Header file for the Size type trait.