Column.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_VIEWS_COLUMN_H_
36 #define _BLAZE_MATH_VIEWS_COLUMN_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
74 #include <blaze/util/DisableIf.h>
75 #include <blaze/util/EnableIf.h>
78 #include <blaze/util/mpl/And.h>
79 #include <blaze/util/mpl/Or.h>
80 #include <blaze/util/TrueType.h>
81 #include <blaze/util/Types.h>
82 
83 
84 namespace blaze {
85 
86 //=================================================================================================
87 //
88 // GLOBAL OPERATORS
89 //
90 //=================================================================================================
91 
92 //*************************************************************************************************
124 template< typename MT // Type of the matrix
125  , bool SO > // Storage order
126 inline DisableIf_< Or< IsComputation<MT>, IsTransExpr<MT>, IsDeclExpr<MT> >
127  , ColumnExprTrait_<MT> >
128  column( Matrix<MT,SO>& matrix, size_t index )
129 {
131 
132  return ColumnExprTrait_<MT>( ~matrix, index );
133 }
134 //*************************************************************************************************
135 
136 
137 //*************************************************************************************************
169 template< typename MT // Type of the matrix
170  , bool SO > // Storage order
171 inline const DisableIf_< Or< IsComputation<MT>, IsTransExpr<MT>, IsDeclExpr<MT> >
173  column( const Matrix<MT,SO>& matrix, size_t index )
174 {
176 
177  return ColumnExprTrait_<const MT>( ~matrix, index );
178 }
179 //*************************************************************************************************
180 
181 
182 //*************************************************************************************************
196 template< typename MT // Type of the matrix
197  , bool SO > // Storage order
198 inline DisableIf_< Or< IsComputation<MT>, IsTransExpr<MT>, IsDeclExpr<MT> >
200  column( Matrix<MT,SO>&& matrix, size_t index )
201 {
203 
204  return ColumnExprTrait_<MT>( ~matrix, index );
205 }
206 //*************************************************************************************************
207 
208 
209 
210 
211 //=================================================================================================
212 //
213 // GLOBAL RESTRUCTURING OPERATORS
214 //
215 //=================================================================================================
216 
217 //*************************************************************************************************
229 template< typename MT // Type of the matrix
230  , bool SO > // Storage order
232  column( const Matrix<MT,SO>& matrix, size_t index )
233 {
235 
236  return column( (~matrix).leftOperand(), index ) + column( (~matrix).rightOperand(), index );
237 }
239 //*************************************************************************************************
240 
241 
242 //*************************************************************************************************
254 template< typename MT // Type of the matrix
255  , bool SO > // Storage order
257  column( const Matrix<MT,SO>& matrix, size_t index )
258 {
260 
261  return column( (~matrix).leftOperand(), index ) - column( (~matrix).rightOperand(), index );
262 }
264 //*************************************************************************************************
265 
266 
267 //*************************************************************************************************
279 template< typename MT // Type of the matrix
280  , bool SO > // Storage order
282  column( const Matrix<MT,SO>& matrix, size_t index )
283 {
285 
286  return (~matrix).leftOperand() * column( (~matrix).rightOperand(), index );
287 }
289 //*************************************************************************************************
290 
291 
292 //*************************************************************************************************
304 template< typename MT // Type of the matrix
305  , bool SO > // Storage order
307  column( const Matrix<MT,SO>& matrix, size_t index )
308 {
310 
311  return (~matrix).leftOperand() * (~matrix).rightOperand()[index];
312 }
314 //*************************************************************************************************
315 
316 
317 //*************************************************************************************************
329 template< typename MT // Type of the matrix
330  , bool SO > // Storage order
332  column( const Matrix<MT,SO>& matrix, size_t index )
333 {
335 
336  return column( (~matrix).leftOperand(), index ) * (~matrix).rightOperand();
337 }
339 //*************************************************************************************************
340 
341 
342 //*************************************************************************************************
354 template< typename MT // Type of the matrix
355  , bool SO > // Storage order
357  column( const Matrix<MT,SO>& matrix, size_t index )
358 {
360 
361  return column( (~matrix).leftOperand(), index ) / (~matrix).rightOperand();
362 }
364 //*************************************************************************************************
365 
366 
367 //*************************************************************************************************
379 template< typename MT // Type of the matrix
380  , bool SO > // Storage order
382  column( const Matrix<MT,SO>& matrix, size_t index )
383 {
385 
386  return forEach( column( (~matrix).operand(), index ), (~matrix).operation() );
387 }
389 //*************************************************************************************************
390 
391 
392 //*************************************************************************************************
404 template< typename MT // Type of the matrix
405  , bool SO > // Storage order
407  column( const Matrix<MT,SO>& matrix, size_t index )
408 {
410 
411  return eval( column( (~matrix).operand(), index ) );
412 }
414 //*************************************************************************************************
415 
416 
417 //*************************************************************************************************
429 template< typename MT // Type of the matrix
430  , bool SO > // Storage order
432  column( const Matrix<MT,SO>& matrix, size_t index )
433 {
435 
436  return serial( column( (~matrix).operand(), index ) );
437 }
439 //*************************************************************************************************
440 
441 
442 //*************************************************************************************************
454 template< typename MT // Type of the matrix
455  , bool SO > // Storage order
457  column( const Matrix<MT,SO>& matrix, size_t index )
458 {
460 
461  return column( (~matrix).operand(), index );
462 }
464 //*************************************************************************************************
465 
466 
467 //*************************************************************************************************
479 template< typename MT // Type of the matrix
480  , bool SO > // Storage order
482  column( const Matrix<MT,SO>& matrix, size_t index )
483 {
485 
486  return trans( row( (~matrix).operand(), index ) );
487 }
489 //*************************************************************************************************
490 
491 
492 
493 
494 
495 
496 
497 
498 
499 
500 //=================================================================================================
501 //
502 // COLUMN OPERATORS
503 //
504 //=================================================================================================
505 
506 //*************************************************************************************************
509 template< typename MT, bool SO, bool DF, bool SF >
510 inline void reset( Column<MT,SO,DF,SF>& column );
511 
512 template< typename MT, bool SO, bool DF, bool SF >
513 inline void reset( Column<MT,SO,DF,SF>&& column );
514 
515 template< typename MT, bool SO, bool DF, bool SF >
516 inline void clear( Column<MT,SO,DF,SF>& column );
517 
518 template< typename MT, bool SO, bool DF, bool SF >
519 inline void clear( Column<MT,SO,DF,SF>&& column );
520 
521 template< bool RF, typename MT, bool SO, bool DF, bool SF >
522 inline bool isDefault( const Column<MT,SO,DF,SF>& column );
523 
524 template< typename MT, bool SO, bool DF, bool SF >
525 inline bool isIntact( const Column<MT,SO,DF,SF>& column ) noexcept;
526 
527 template< typename MT, bool SO, bool DF, bool SF >
528 inline bool isSame( const Column<MT,SO,DF,SF>& a, const Column<MT,SO,DF,SF>& b ) noexcept;
530 //*************************************************************************************************
531 
532 
533 //*************************************************************************************************
540 template< typename MT // Type of the matrix
541  , bool SO // Storage order
542  , bool DF // Density flag
543  , bool SF > // Symmetry flag
544 inline void reset( Column<MT,SO,DF,SF>& column )
545 {
546  column.reset();
547 }
548 //*************************************************************************************************
549 
550 
551 //*************************************************************************************************
558 template< typename MT // Type of the matrix
559  , bool SO // Storage order
560  , bool DF // Density flag
561  , bool SF > // Symmetry flag
562 inline void reset( Column<MT,SO,DF,SF>&& column )
563 {
564  column.reset();
565 }
566 //*************************************************************************************************
567 
568 
569 //*************************************************************************************************
578 template< typename MT // Type of the dense matrix
579  , bool SO // Storage order
580  , bool DF // Density flag
581  , bool SF > // Symmetry flag
582 inline void clear( Column<MT,SO,DF,SF>& column )
583 {
584  column.reset();
585 }
586 //*************************************************************************************************
587 
588 
589 //*************************************************************************************************
598 template< typename MT // Type of the dense matrix
599  , bool SO // Storage order
600  , bool DF // Density flag
601  , bool SF > // Symmetry flag
602 inline void clear( Column<MT,SO,DF,SF>&& column )
603 {
604  column.reset();
605 }
606 //*************************************************************************************************
607 
608 
609 //*************************************************************************************************
634 template< bool RF // Relaxation flag
635  , typename MT // Type of the matrix
636  , bool SO // Storage order
637  , bool DF // Density flag
638  , bool SF > // Symmetry flag
639 inline bool isDefault( const Column<MT,SO,DF,SF>& column )
640 {
641  for( size_t i=0UL; i<column.size(); ++i )
642  if( !isDefault<RF>( column[i] ) ) return false;
643  return true;
644 }
645 //*************************************************************************************************
646 
647 
648 //*************************************************************************************************
667 template< bool RF // Relaxation flag
668  , typename MT // Type of the sparse matrix
669  , bool SO // Storage order
670  , bool SF > // Symmetry flag
671 inline bool isDefault( const Column<MT,SO,false,SF>& column )
672 {
674 
675  const ConstIterator end( column.end() );
676  for( ConstIterator element=column.begin(); element!=end; ++element )
677  if( !isDefault<RF>( element->value() ) ) return false;
678  return true;
679 }
681 //*************************************************************************************************
682 
683 
684 //*************************************************************************************************
701 template< typename MT // Type of the matrix
702  , bool SO // Storage order
703  , bool DF // Density flag
704  , bool SF > // Symmetry flag
705 inline bool isIntact( const Column<MT,SO,DF,SF>& column ) noexcept
706 {
707  return ( column.col_ <= column.matrix_.columns() &&
708  isIntact( column.matrix_ ) );
709 }
710 //*************************************************************************************************
711 
712 
713 //*************************************************************************************************
725 template< typename MT // Type of the matrix
726  , bool SO // Storage order
727  , bool DF // Density flag
728  , bool SF > // Symmetry flag
729 inline bool isSame( const Column<MT,SO,DF,SF>& a, const Column<MT,SO,DF,SF>& b ) noexcept
730 {
731  return ( isSame( a.matrix_, b.matrix_ ) && ( a.col_ == b.col_ ) );
732 }
733 //*************************************************************************************************
734 
735 
736 //*************************************************************************************************
751 template< typename MT // Type of the matrix
752  , bool SO // Storage order
753  , bool DF // Density flag
754  , bool SF // Symmetry flag
755  , typename VT > // Type of the right-hand side vector
756 inline bool tryAssign( const Column<MT,SO,DF,SF>& lhs, const Vector<VT,false>& rhs, size_t index )
757 {
758  BLAZE_INTERNAL_ASSERT( index <= lhs.size(), "Invalid vector access index" );
759  BLAZE_INTERNAL_ASSERT( (~rhs).size() <= lhs.size() - index, "Invalid vector size" );
760 
761  return tryAssign( lhs.matrix_, ~rhs, index, lhs.col_ );
762 }
764 //*************************************************************************************************
765 
766 
767 //*************************************************************************************************
782 template< typename MT // Type of the matrix
783  , bool SO // Storage order
784  , bool DF // Density flag
785  , bool SF // Symmetry flag
786  , typename VT > // Type of the right-hand side vector
787 inline bool tryAddAssign( const Column<MT,SO,DF,SF>& lhs, const Vector<VT,false>& rhs, size_t index )
788 {
789  BLAZE_INTERNAL_ASSERT( index <= lhs.size(), "Invalid vector access index" );
790  BLAZE_INTERNAL_ASSERT( (~rhs).size() <= lhs.size() - index, "Invalid vector size" );
791 
792  return tryAddAssign( lhs.matrix_, ~rhs, index, lhs.col_ );
793 }
795 //*************************************************************************************************
796 
797 
798 //*************************************************************************************************
813 template< typename MT // Type of the matrix
814  , bool SO // Storage order
815  , bool DF // Density flag
816  , bool SF // Symmetry flag
817  , typename VT > // Type of the right-hand side vector
818 inline bool trySubAssign( const Column<MT,SO,DF,SF>& lhs, const Vector<VT,false>& rhs, size_t index )
819 {
820  BLAZE_INTERNAL_ASSERT( index <= lhs.size(), "Invalid vector access index" );
821  BLAZE_INTERNAL_ASSERT( (~rhs).size() <= lhs.size() - index, "Invalid vector size" );
822 
823  return trySubAssign( lhs.matrix_, ~rhs, index, lhs.col_ );
824 }
826 //*************************************************************************************************
827 
828 
829 //*************************************************************************************************
844 template< typename MT // Type of the matrix
845  , bool SO // Storage order
846  , bool DF // Density flag
847  , bool SF // Symmetry flag
848  , typename VT > // Type of the right-hand side vector
849 inline bool tryMultAssign( const Column<MT,SO,DF,SF>& lhs, const Vector<VT,false>& rhs, size_t index )
850 {
851  BLAZE_INTERNAL_ASSERT( index <= lhs.size(), "Invalid vector access index" );
852  BLAZE_INTERNAL_ASSERT( (~rhs).size() <= lhs.size() - index, "Invalid vector size" );
853 
854  return tryMultAssign( lhs.matrix_, ~rhs, index, lhs.col_ );
855 }
857 //*************************************************************************************************
858 
859 
860 //*************************************************************************************************
875 template< typename MT // Type of the matrix
876  , bool SO // Storage order
877  , bool DF // Density flag
878  , bool SF // Symmetry flag
879  , typename VT > // Type of the right-hand side vector
880 inline bool tryDivAssign( const Column<MT,SO,DF,SF>& lhs, const Vector<VT,false>& rhs, size_t index )
881 {
882  BLAZE_INTERNAL_ASSERT( index <= lhs.size(), "Invalid vector access index" );
883  BLAZE_INTERNAL_ASSERT( (~rhs).size() <= lhs.size() - index, "Invalid vector size" );
884 
885  return tryDivAssign( lhs.matrix_, ~rhs, index, lhs.col_ );
886 }
888 //*************************************************************************************************
889 
890 
891 //*************************************************************************************************
906 template< typename MT // Type of the matrix
907  , bool SO // Storage order
908  , bool DF // Density flag
909  , bool SF > // Symmetry flag
910 inline DerestrictTrait_< Column<MT,SO,DF,SF> > derestrict( Column<MT,SO,DF,SF>& column )
911 {
913  return ReturnType( derestrict( column.matrix_ ), column.col_ );
914 }
916 //*************************************************************************************************
917 
918 
919 
920 
921 //=================================================================================================
922 //
923 // ISRESTRICTED SPECIALIZATIONS
924 //
925 //=================================================================================================
926 
927 //*************************************************************************************************
929 template< typename MT, bool SO, bool DF, bool SF >
930 struct IsRestricted< Column<MT,SO,DF,SF> >
931  : public BoolConstant< IsRestricted<MT>::value >
932 {};
934 //*************************************************************************************************
935 
936 
937 
938 
939 //=================================================================================================
940 //
941 // DERESTRICTTRAIT SPECIALIZATIONS
942 //
943 //=================================================================================================
944 
945 //*************************************************************************************************
947 template< typename MT, bool SO, bool DF, bool SF >
948 struct DerestrictTrait< Column<MT,SO,DF,SF> >
949 {
951 };
953 //*************************************************************************************************
954 
955 
956 
957 
958 //=================================================================================================
959 //
960 // HASCONSTDATAACCESS SPECIALIZATIONS
961 //
962 //=================================================================================================
963 
964 //*************************************************************************************************
966 template< typename MT, bool SO, bool SF >
967 struct HasConstDataAccess< Column<MT,SO,true,SF> >
968  : public BoolConstant< HasConstDataAccess<MT>::value >
969 {};
971 //*************************************************************************************************
972 
973 
974 
975 
976 //=================================================================================================
977 //
978 // HASMUTABLEDATAACCESS SPECIALIZATIONS
979 //
980 //=================================================================================================
981 
982 //*************************************************************************************************
984 template< typename MT, bool SO, bool SF >
985 struct HasMutableDataAccess< Column<MT,SO,true,SF> >
986  : public BoolConstant< HasMutableDataAccess<MT>::value >
987 {};
989 //*************************************************************************************************
990 
991 
992 
993 
994 //=================================================================================================
995 //
996 // ISALIGNED SPECIALIZATIONS
997 //
998 //=================================================================================================
999 
1000 //*************************************************************************************************
1002 template< typename MT, bool SO, bool SF >
1003 struct IsAligned< Column<MT,SO,true,SF> >
1004  : public BoolConstant< And< IsAligned<MT>, Or< IsColumnMajorMatrix<MT>, IsSymmetric<MT> > >::value >
1005 {};
1007 //*************************************************************************************************
1008 
1009 
1010 
1011 
1012 //=================================================================================================
1013 //
1014 // ISPADDED SPECIALIZATIONS
1015 //
1016 //=================================================================================================
1017 
1018 //*************************************************************************************************
1020 template< typename MT, bool SO, bool SF >
1021 struct IsPadded< Column<MT,SO,true,SF> >
1022  : public BoolConstant< And< IsPadded<MT>, Or< IsColumnMajorMatrix<MT>, IsSymmetric<MT> > >::value >
1023 {};
1025 //*************************************************************************************************
1026 
1027 
1028 
1029 
1030 //=================================================================================================
1031 //
1032 // ISOPPOSEDVIEW SPECIALIZATIONS
1033 //
1034 //=================================================================================================
1035 
1036 //*************************************************************************************************
1038 template< typename MT, bool DF >
1039 struct IsOpposedView< Column<MT,false,DF,false> >
1040  : public TrueType
1041 {};
1043 //*************************************************************************************************
1044 
1045 
1046 
1047 
1048 //=================================================================================================
1049 //
1050 // ADDTRAIT SPECIALIZATIONS
1051 //
1052 //=================================================================================================
1053 
1054 //*************************************************************************************************
1056 template< typename MT, bool SO, bool DF, bool SF, typename T >
1057 struct AddTrait< Column<MT,SO,DF,SF>, T >
1058 {
1059  using Type = AddTrait_< ColumnTrait_<MT>, T >;
1060 };
1061 
1062 template< typename T, typename MT, bool SO, bool DF, bool SF >
1063 struct AddTrait< T, Column<MT,SO,DF,SF> >
1064 {
1065  using Type = AddTrait_< T, ColumnTrait_<MT> >;
1066 };
1068 //*************************************************************************************************
1069 
1070 
1071 
1072 
1073 //=================================================================================================
1074 //
1075 // SUBTRAIT SPECIALIZATIONS
1076 //
1077 //=================================================================================================
1078 
1079 //*************************************************************************************************
1081 template< typename MT, bool SO, bool DF, bool SF, typename T >
1082 struct SubTrait< Column<MT,SO,DF,SF>, T >
1083 {
1084  using Type = SubTrait_< ColumnTrait_<MT>, T >;
1085 };
1086 
1087 template< typename T, typename MT, bool SO, bool DF, bool SF >
1088 struct SubTrait< T, Column<MT,SO,DF,SF> >
1089 {
1090  using Type = SubTrait_< T, ColumnTrait_<MT> >;
1091 };
1093 //*************************************************************************************************
1094 
1095 
1096 
1097 
1098 //=================================================================================================
1099 //
1100 // MULTTRAIT SPECIALIZATIONS
1101 //
1102 //=================================================================================================
1103 
1104 //*************************************************************************************************
1106 template< typename MT, bool SO, bool DF, bool SF, typename T >
1107 struct MultTrait< Column<MT,SO,DF,SF>, T >
1108 {
1109  using Type = MultTrait_< ColumnTrait_<MT>, T >;
1110 };
1111 
1112 template< typename T, typename MT, bool SO, bool DF, bool SF >
1113 struct MultTrait< T, Column<MT,SO,DF,SF> >
1114 {
1115  using Type = MultTrait_< T, ColumnTrait_<MT> >;
1116 };
1118 //*************************************************************************************************
1119 
1120 
1121 
1122 
1123 //=================================================================================================
1124 //
1125 // CROSSTRAIT SPECIALIZATIONS
1126 //
1127 //=================================================================================================
1128 
1129 //*************************************************************************************************
1131 template< typename MT, bool SO, bool DF, bool SF, typename T >
1132 struct CrossTrait< Column<MT,SO,DF,SF>, T >
1133 {
1134  using Type = CrossTrait_< ColumnTrait_<MT>, T >;
1135 };
1136 
1137 template< typename T, typename MT, bool SO, bool DF, bool SF >
1138 struct CrossTrait< T, Column<MT,SO,DF,SF> >
1139 {
1140  using Type = CrossTrait_< T, ColumnTrait_<MT> >;
1141 };
1143 //*************************************************************************************************
1144 
1145 
1146 
1147 
1148 //=================================================================================================
1149 //
1150 // DIVTRAIT SPECIALIZATIONS
1151 //
1152 //=================================================================================================
1153 
1154 //*************************************************************************************************
1156 template< typename MT, bool SO, bool DF, bool SF, typename T >
1157 struct DivTrait< Column<MT,SO,DF,SF>, T >
1158 {
1159  using Type = DivTrait_< ColumnTrait_<MT>, T >;
1160 };
1161 
1162 template< typename T, typename MT, bool SO, bool DF, bool SF >
1163 struct DivTrait< T, Column<MT,SO,DF,SF> >
1164 {
1165  using Type = DivTrait_< T, ColumnTrait_<MT> >;
1166 };
1168 //*************************************************************************************************
1169 
1170 
1171 
1172 
1173 //=================================================================================================
1174 //
1175 // SUBVECTORTRAIT SPECIALIZATIONS
1176 //
1177 //=================================================================================================
1178 
1179 //*************************************************************************************************
1181 template< typename MT, bool SO, bool DF, bool SF >
1182 struct SubvectorTrait< Column<MT,SO,DF,SF> >
1183 {
1185 };
1187 //*************************************************************************************************
1188 
1189 } // namespace blaze
1190 
1191 #endif
typename DerestrictTrait< T >::Type DerestrictTrait_
Auxiliary alias declaration for the DerestrictTrait type trait.The DerestrictTrait_ alias declaration...
Definition: DerestrictTrait.h:110
Compile time check for low-level access to constant data.This type trait tests whether the given data...
Definition: HasConstDataAccess.h:75
Header file for the subtraction trait.
BLAZE_ALWAYS_INLINE bool isSame(const Matrix< MT1, SO1 > &a, const Matrix< MT2, SO2 > &b) noexcept
Returns whether the two given matrices represent the same observable state.
Definition: Matrix.h:721
Header file for basic type definitions.
BLAZE_ALWAYS_INLINE size_t size(const Vector< VT, TF > &vector) noexcept
Returns the current size/dimension of the vector.
Definition: Vector.h:261
Generic wrapper for a compile time constant integral value.The IntegralConstant class template repres...
Definition: IntegralConstant.h:71
Header file for the ColumnExprTrait class template.
Compile time check for resizable data types.This type trait tests whether the given data type is an o...
Definition: IsOpposedView.h:81
Header file for the IsColumnMajorMatrix type trait.
Header file for the implementation of the Column base template.
void reset(const DiagonalProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: DiagonalProxy.h:533
Header file for the And class template.
Header file for the IsTransExpr type trait class.
const DMatSerialExpr< MT, SO > serial(const DenseMatrix< MT, SO > &dm)
Forces the serial evaluation of the given dense matrix expression dm.
Definition: DMatSerialExpr.h:721
typename MultTrait< T1, T2 >::Type MultTrait_
Auxiliary alias declaration for the MultTrait class template.The MultTrait_ alias declaration provide...
Definition: MultTrait.h:245
Header file for the IsMatMatAddExpr type trait class.
Base template for the CrossTrait class.
Definition: CrossTrait.h:110
Compile time check for data types with restricted data access.This type trait tests whether the given...
Definition: IsRestricted.h:82
Base template for the SubvectorTrait class.
Definition: SubvectorTrait.h:120
Header file for the IsMatTransExpr type trait class.
Compile time check for low-level access to mutable data.This type trait tests whether the given data ...
Definition: HasMutableDataAccess.h:75
Compile time check for the alignment of data types.This type trait tests whether the given data type ...
Definition: IsAligned.h:87
Column specialization for dense matrices.
Header file for the DisableIf class template.
Header file for the multiplication trait.
Header file for the IsSymmetric type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Header file for the IsVecTVecMultExpr type trait class.
const Element * ConstIterator
Iterator over constant elements.
Definition: CompressedMatrix.h:2939
Compile time check for data types with padding.This type trait tests whether the given data type empl...
Definition: IsPadded.h:76
Header file for the Or class template.
Header file for the IsMatMatMultExpr type trait class.
typename SubvectorTrait< VT >::Type SubvectorTrait_
Auxiliary alias declaration for the SubvectorTrait type trait.The SubvectorTrait_ alias declaration p...
Definition: SubvectorTrait.h:155
const DMatForEachExpr< MT, OP, SO > forEach(const DenseMatrix< MT, SO > &dm, OP op)
Evaluates the given custom operation on each single element of the dense matrix dm.
Definition: DMatForEachExpr.h:1046
Header file for the IsMatSerialExpr type trait class.
Header file for the IsMatScalarMultExpr type trait class.
Header file for the subvector trait.
Reference to a specific column of a dense or sparse matrix.The Column template represents a reference...
Definition: BaseTemplate.h:354
Header file for the IsAligned type trait.
typename ColumnExprTrait< MT >::Type ColumnExprTrait_
Auxiliary alias declaration for the ColumnExprTrait type trait.The ColumnExprTrait_ alias declaration...
Definition: ColumnExprTrait.h:133
DisableIf_< Or< IsComputation< MT >, IsTransExpr< MT >, IsDeclExpr< MT > >, RowExprTrait_< MT > > row(Matrix< MT, SO > &matrix, size_t index)
Creating a view on a specific row of the given matrix.
Definition: Row.h:128
Header file for the IsOpposedView type trait.
Header file for the IsMatEvalExpr type trait class.
typename CrossTrait< T1, T2 >::Type CrossTrait_
Auxiliary alias declaration for the CrossTrait class template.The CrossTrait_ alias declaration provi...
Definition: CrossTrait.h:135
BLAZE_ALWAYS_INLINE MT::Iterator end(Matrix< MT, SO > &matrix, size_t i)
Returns an iterator just past the last element of row/column i.
Definition: Matrix.h:260
DisableIf_< Or< IsComputation< MT >, IsTransExpr< MT >, IsDeclExpr< MT > >, ColumnExprTrait_< MT > > column(Matrix< MT, SO > &matrix, size_t index)
Creating a view on a specific column of the given matrix.
Definition: Column.h:128
Header file for the EnableIf class template.
void clear(const DiagonalProxy< MT > &proxy)
Clearing the represented element.
Definition: DiagonalProxy.h:553
typename DivTrait< T1, T2 >::Type DivTrait_
Auxiliary alias declaration for the DivTrait class template.The DivTrait_ alias declaration provides ...
Definition: DivTrait.h:245
Header file for the HasConstDataAccess type trait.
Header file for the Matrix base class.
const Type & ReturnType
Return type for expression template evaluations.
Definition: CompressedMatrix.h:2934
Base template for the AddTrait class.
Definition: AddTrait.h:143
Header file for the IsMatScalarDivExpr type trait class.
Base template for the MultTrait class.
Definition: MultTrait.h:143
Header file for the addition trait.
Header file for the cross product trait.
Header file for the division trait.
#define BLAZE_FUNCTION_TRACE
Function trace macro.This macro can be used to reliably trace function calls. In case function tracin...
Definition: FunctionTrace.h:93
Header file for the column trait.
Base class for matrices.The Matrix class is a base class for all dense and sparse matrix classes with...
Definition: Forward.h:94
Header file for the HasMutableDataAccess type trait.
const DMatEvalExpr< MT, SO > eval(const DenseMatrix< MT, SO > &dm)
Forces the evaluation of the given dense matrix expression dm.
Definition: DMatEvalExpr.h:703
Header file for the IsMatMatSubExpr type trait class.
Evaluation of the return type of the derestrict function.Via this type trait it is possible to evalua...
Definition: DerestrictTrait.h:73
Header file for the IsDeclExpr type trait class.
typename EnableIf< Condition, T >::Type EnableIf_
Auxiliary alias declaration for the EnableIf class template.The EnableIf_ alias declaration provides ...
Definition: EnableIf.h:223
Base template for the DivTrait class.
Definition: DivTrait.h:143
typename T::ConstIterator ConstIterator_
Alias declaration for nested ConstIterator type definitions.The ConstIterator_ alias declaration prov...
Definition: Aliases.h:103
Base class for N-dimensional vectors.The Vector class is a base class for all arbitrarily sized (N-di...
Definition: Forward.h:164
const DMatTransExpr< MT,!SO > trans(const DenseMatrix< MT, SO > &dm)
Calculation of the transpose of the given dense matrix.
Definition: DMatTransExpr.h:733
Header file for the IsComputation type trait class.
typename SubTrait< T1, T2 >::Type SubTrait_
Auxiliary alias declaration for the SubTrait class template.The SubTrait_ alias declaration provides ...
Definition: SubTrait.h:245
Header file for the IntegralConstant class template.
bool isIntact(const DiagonalMatrix< MT, SO, DF > &m)
Returns whether the invariants of the given diagonal matrix are intact.
Definition: DiagonalMatrix.h:249
Column specialization for sparse matrices.
bool isDefault(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is in default state.
Definition: DiagonalProxy.h:573
Base template for the SubTrait class.
Definition: SubTrait.h:143
Header file for the IsMatForEachExpr type trait class.
typename AddTrait< T1, T2 >::Type AddTrait_
Auxiliary alias declaration for the AddTrait class template.The AddTrait_ alias declaration provides ...
Definition: AddTrait.h:245
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.In case of an invalid run time expression, the program execution is terminated. The BLAZE_INTERNAL_ASSERT macro can be disabled by setting the BLAZE_USER_ASSERTION flag to zero or by defining NDEBUG during the compilation.
Definition: Assert.h:101
Header file for the TrueType type/value trait base class.
Header file for the function trace functionality.