35 #ifndef _BLAZE_MATH_ADAPTORS_STRICTLYUPPERMATRIX_H_
36 #define _BLAZE_MATH_ADAPTORS_STRICTLYUPPERMATRIX_H_
81 template<
typename MT,
bool SO,
bool DF >
82 inline void reset( StrictlyUpperMatrix<MT,SO,DF>& m );
84 template<
typename MT,
bool SO,
bool DF >
85 inline void reset( StrictlyUpperMatrix<MT,SO,DF>& m,
size_t i );
87 template<
typename MT,
bool SO,
bool DF >
88 inline void clear( StrictlyUpperMatrix<MT,SO,DF>& m );
90 template<
typename MT,
bool SO,
bool DF >
91 inline bool isDefault(
const StrictlyUpperMatrix<MT,SO,DF>& m );
93 template<
typename MT,
bool SO,
bool DF >
94 inline void swap( StrictlyUpperMatrix<MT,SO,DF>& a, StrictlyUpperMatrix<MT,SO,DF>& b ) ;
106 template<
typename MT
129 template<
typename MT
146 template<
typename MT
167 template<
typename MT
170 inline bool isDefault_backend(
const StrictlyUpperMatrix<MT,SO,DF>& m,
TrueType )
172 return ( m.rows() == 0UL );
189 template<
typename MT
192 inline bool isDefault_backend(
const StrictlyUpperMatrix<MT,SO,DF>& m,
FalseType )
220 template<
typename MT
239 template<
typename MT
263 template<
typename MT
266 inline MT& derestrict( StrictlyUpperMatrix<MT,SO,DF>& m )
284 template<
typename MT,
bool SO,
bool DF >
285 struct Rows< StrictlyUpperMatrix<MT,SO,DF> > :
public Rows<MT>
301 template<
typename MT,
bool SO,
bool DF >
302 struct Columns< StrictlyUpperMatrix<MT,SO,DF> > :
public Columns<MT>
318 template<
typename MT,
bool SO,
bool DF >
319 struct IsSquare< StrictlyUpperMatrix<MT,SO,DF> > :
public TrueType
338 template<
typename MT,
bool SO,
bool DF >
339 struct IsStrictlyUpper< StrictlyUpperMatrix<MT,SO,DF> > :
public TrueType
358 template<
typename MT,
bool SO,
bool DF >
359 struct IsAdaptor< StrictlyUpperMatrix<MT,SO,DF> > :
public TrueType
378 template<
typename MT,
bool SO,
bool DF >
379 struct IsRestricted< StrictlyUpperMatrix<MT,SO,DF> > :
public TrueType
398 template<
typename MT,
bool SO >
399 struct HasConstDataAccess< StrictlyUpperMatrix<MT,SO,true> > :
public TrueType
418 template<
typename MT,
bool SO,
bool DF >
419 struct IsResizable< StrictlyUpperMatrix<MT,SO,DF> > :
public IsResizable<MT>::Type
421 enum { value = IsResizable<MT>::value };
422 typedef typename IsResizable<MT>::Type Type;
438 template<
typename MT,
bool SO,
bool DF >
439 struct RemoveAdaptor< StrictlyUpperMatrix<MT,SO,DF> >
457 template<
typename MT,
bool SO,
bool DF >
458 struct DerestrictTrait< StrictlyUpperMatrix<MT,SO,DF> >
476 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
477 struct AddTrait< StrictlyUpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
479 typedef typename AddTrait< MT, StaticMatrix<T,M,N,SO2> >::Type Type;
482 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
483 struct AddTrait< StaticMatrix<T,M,N,SO1>, StrictlyUpperMatrix<MT,SO2,DF> >
485 typedef typename AddTrait< StaticMatrix<T,M,N,SO1>, MT >::Type Type;
488 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
489 struct AddTrait< StrictlyUpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
491 typedef typename AddTrait< MT, HybridMatrix<T,M,N,SO2> >::Type Type;
494 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
495 struct AddTrait< HybridMatrix<T,M,N,SO1>, StrictlyUpperMatrix<MT,SO2,DF> >
497 typedef typename AddTrait< HybridMatrix<T,M,N,SO1>, MT >::Type Type;
500 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
501 struct AddTrait< StrictlyUpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
503 typedef typename AddTrait< MT, DynamicMatrix<T,SO2> >::Type Type;
506 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
507 struct AddTrait< DynamicMatrix<T,SO1>, StrictlyUpperMatrix<MT,SO2,DF> >
509 typedef typename AddTrait< DynamicMatrix<T,SO1>, MT >::Type Type;
512 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
513 struct AddTrait< StrictlyUpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
515 typedef typename AddTrait< MT, CompressedMatrix<T,SO2> >::Type Type;
518 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
519 struct AddTrait< CompressedMatrix<T,SO1>, StrictlyUpperMatrix<MT,SO2,DF> >
521 typedef typename AddTrait< CompressedMatrix<T,SO1>, MT >::Type Type;
524 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
525 struct AddTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
527 typedef typename AddTrait<MT1,MT2>::Type Type;
530 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
531 struct AddTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, StrictlyUpperMatrix<MT2,SO2,DF2> >
533 typedef typename AddTrait<MT1,MT2>::Type Type;
536 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
537 struct AddTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
539 typedef typename AddTrait<MT1,MT2>::Type Type;
542 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
543 struct AddTrait< LowerMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
545 typedef typename AddTrait<MT1,MT2>::Type Type;
548 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
549 struct AddTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
551 typedef typename AddTrait<MT1,MT2>::Type Type;
554 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
555 struct AddTrait< UniLowerMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
557 typedef typename AddTrait<MT1,MT2>::Type Type;
560 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
561 struct AddTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
563 typedef typename AddTrait<MT1,MT2>::Type Type;
566 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
567 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
569 typedef typename AddTrait<MT1,MT2>::Type Type;
572 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
573 struct AddTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
575 typedef UpperMatrix< typename AddTrait<MT1,MT2>::Type > Type;
578 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
579 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
581 typedef UpperMatrix< typename AddTrait<MT1,MT2>::Type > Type;
584 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
585 struct AddTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
587 typedef UniUpperMatrix< typename AddTrait<MT1,MT2>::Type > Type;
590 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
591 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
593 typedef UniUpperMatrix< typename AddTrait<MT1,MT2>::Type > Type;
596 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
597 struct AddTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
599 typedef StrictlyUpperMatrix< typename AddTrait<MT1,MT2>::Type > Type;
615 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
616 struct SubTrait< StrictlyUpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
618 typedef typename SubTrait< MT, StaticMatrix<T,M,N,SO2> >::Type Type;
621 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
622 struct SubTrait< StaticMatrix<T,M,N,SO1>, StrictlyUpperMatrix<MT,SO2,DF> >
624 typedef typename SubTrait< StaticMatrix<T,M,N,SO1>, MT >::Type Type;
627 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
628 struct SubTrait< StrictlyUpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
630 typedef typename SubTrait< MT, HybridMatrix<T,M,N,SO2> >::Type Type;
633 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
634 struct SubTrait< HybridMatrix<T,M,N,SO1>, StrictlyUpperMatrix<MT,SO2,DF> >
636 typedef typename SubTrait< HybridMatrix<T,M,N,SO1>, MT >::Type Type;
639 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
640 struct SubTrait< StrictlyUpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
642 typedef typename SubTrait< MT, DynamicMatrix<T,SO2> >::Type Type;
645 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
646 struct SubTrait< DynamicMatrix<T,SO1>, StrictlyUpperMatrix<MT,SO2,DF> >
648 typedef typename SubTrait< DynamicMatrix<T,SO1>, MT >::Type Type;
651 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
652 struct SubTrait< StrictlyUpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
654 typedef typename SubTrait< MT, CompressedMatrix<T,SO2> >::Type Type;
657 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
658 struct SubTrait< CompressedMatrix<T,SO1>, StrictlyUpperMatrix<MT,SO2,DF> >
660 typedef typename SubTrait< CompressedMatrix<T,SO1>, MT >::Type Type;
663 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
664 struct SubTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
666 typedef typename SubTrait<MT1,MT2>::Type Type;
669 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
670 struct SubTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, StrictlyUpperMatrix<MT2,SO2,DF2> >
672 typedef typename SubTrait<MT1,MT2>::Type Type;
675 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
676 struct SubTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
678 typedef typename SubTrait<MT1,MT2>::Type Type;
681 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
682 struct SubTrait< LowerMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
684 typedef typename SubTrait<MT1,MT2>::Type Type;
687 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
688 struct SubTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
690 typedef typename SubTrait<MT1,MT2>::Type Type;
693 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
694 struct SubTrait< UniLowerMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
696 typedef typename SubTrait<MT1,MT2>::Type Type;
699 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
700 struct SubTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
702 typedef typename SubTrait<MT1,MT2>::Type Type;
705 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
706 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
708 typedef typename SubTrait<MT1,MT2>::Type Type;
711 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
712 struct SubTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
714 typedef UpperMatrix< typename SubTrait<MT1,MT2>::Type > Type;
717 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
718 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
720 typedef UpperMatrix< typename SubTrait<MT1,MT2>::Type > Type;
723 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
724 struct SubTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
726 typedef UpperMatrix< typename SubTrait<MT1,MT2>::Type > Type;
729 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
730 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
732 typedef UniUpperMatrix< typename SubTrait<MT1,MT2>::Type > Type;
735 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
736 struct SubTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
738 typedef StrictlyUpperMatrix< typename SubTrait<MT1,MT2>::Type > Type;
754 template<
typename MT,
bool SO,
bool DF,
typename T >
755 struct MultTrait< StrictlyUpperMatrix<MT,SO,DF>, T >
757 typedef StrictlyUpperMatrix< typename MultTrait<MT,T>::Type > Type;
761 template<
typename T,
typename MT,
bool SO,
bool DF >
762 struct MultTrait< T, StrictlyUpperMatrix<MT,SO,DF> >
764 typedef StrictlyUpperMatrix< typename MultTrait<T,MT>::Type > Type;
768 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
769 struct MultTrait< StrictlyUpperMatrix<MT,SO,DF>, StaticVector<T,N,false> >
771 typedef typename MultTrait< MT, StaticVector<T,N,false> >::Type Type;
774 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
775 struct MultTrait< StaticVector<T,N,true>, StrictlyUpperMatrix<MT,SO,DF> >
777 typedef typename MultTrait< StaticVector<T,N,true>, MT >::Type Type;
780 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
781 struct MultTrait< StrictlyUpperMatrix<MT,SO,DF>, HybridVector<T,N,false> >
783 typedef typename MultTrait< MT, HybridVector<T,N,false> >::Type Type;
786 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
787 struct MultTrait< HybridVector<T,N,true>, StrictlyUpperMatrix<MT,SO,DF> >
789 typedef typename MultTrait< HybridVector<T,N,true>, MT >::Type Type;
792 template<
typename MT,
bool SO,
bool DF,
typename T >
793 struct MultTrait< StrictlyUpperMatrix<MT,SO,DF>, DynamicVector<T,false> >
795 typedef typename MultTrait< MT, DynamicVector<T,false> >::Type Type;
798 template<
typename T,
typename MT,
bool SO,
bool DF >
799 struct MultTrait< DynamicVector<T,true>, StrictlyUpperMatrix<MT,SO,DF> >
801 typedef typename MultTrait< DynamicVector<T,true>, MT >::Type Type;
804 template<
typename MT,
bool SO,
bool DF,
typename T >
805 struct MultTrait< StrictlyUpperMatrix<MT,SO,DF>, CompressedVector<T,false> >
807 typedef typename MultTrait< MT, CompressedVector<T,false> >::Type Type;
810 template<
typename T,
typename MT,
bool SO,
bool DF >
811 struct MultTrait< CompressedVector<T,true>, StrictlyUpperMatrix<MT,SO,DF> >
813 typedef typename MultTrait< CompressedVector<T,true>, MT >::Type Type;
816 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
817 struct MultTrait< StrictlyUpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
819 typedef typename MultTrait< MT, StaticMatrix<T,M,N,SO2> >::Type Type;
822 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
823 struct MultTrait< StaticMatrix<T,M,N,SO1>, StrictlyUpperMatrix<MT,SO2,DF> >
825 typedef typename MultTrait< StaticMatrix<T,M,N,SO1>, MT >::Type Type;
828 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
829 struct MultTrait< StrictlyUpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
831 typedef typename MultTrait< MT, HybridMatrix<T,M,N,SO2> >::Type Type;
834 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
835 struct MultTrait< HybridMatrix<T,M,N,SO1>, StrictlyUpperMatrix<MT,SO2,DF> >
837 typedef typename MultTrait< HybridMatrix<T,M,N,SO1>, MT >::Type Type;
840 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
841 struct MultTrait< StrictlyUpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
843 typedef typename MultTrait< MT, DynamicMatrix<T,SO2> >::Type Type;
846 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
847 struct MultTrait< DynamicMatrix<T,SO1>, StrictlyUpperMatrix<MT,SO2,DF> >
849 typedef typename MultTrait< DynamicMatrix<T,SO1>, MT >::Type Type;
852 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
853 struct MultTrait< StrictlyUpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
855 typedef typename MultTrait< MT, CompressedMatrix<T,SO2> >::Type Type;
858 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
859 struct MultTrait< CompressedMatrix<T,SO1>, StrictlyUpperMatrix<MT,SO2,DF> >
861 typedef typename MultTrait< CompressedMatrix<T,SO1>, MT >::Type Type;
864 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
865 struct MultTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
867 typedef typename MultTrait<MT1,MT2>::Type Type;
870 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
871 struct MultTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, StrictlyUpperMatrix<MT2,SO2,DF2> >
873 typedef typename MultTrait<MT1,MT2>::Type Type;
876 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
877 struct MultTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
879 typedef typename MultTrait<MT1,MT2>::Type Type;
882 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
883 struct MultTrait< LowerMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
885 typedef typename MultTrait<MT1,MT2>::Type Type;
888 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
889 struct MultTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
891 typedef typename MultTrait<MT1,MT2>::Type Type;
894 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
895 struct MultTrait< UniLowerMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
897 typedef typename MultTrait<MT1,MT2>::Type Type;
900 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
901 struct MultTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
903 typedef typename MultTrait<MT1,MT2>::Type Type;
906 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
907 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
909 typedef typename MultTrait<MT1,MT2>::Type Type;
912 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
913 struct MultTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
915 typedef StrictlyUpperMatrix< typename MultTrait<MT1,MT2>::Type > Type;
918 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
919 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
921 typedef StrictlyUpperMatrix< typename MultTrait<MT1,MT2>::Type > Type;
924 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
925 struct MultTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
927 typedef StrictlyUpperMatrix< typename MultTrait<MT1,MT2>::Type > Type;
930 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
931 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
933 typedef StrictlyUpperMatrix< typename MultTrait<MT1,MT2>::Type > Type;
936 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
937 struct MultTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
939 typedef StrictlyUpperMatrix< typename MultTrait<MT1,MT2>::Type > Type;
955 template<
typename MT,
bool SO,
bool DF,
typename T >
956 struct DivTrait< StrictlyUpperMatrix<MT,SO,DF>, T >
958 typedef StrictlyUpperMatrix< typename DivTrait<MT,T>::Type > Type;
975 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
976 struct MathTrait< StrictlyUpperMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
978 typedef StrictlyUpperMatrix< typename MathTrait<MT1,MT2>::HighType > HighType;
979 typedef StrictlyUpperMatrix< typename MathTrait<MT1,MT2>::LowType > LowType;
995 template<
typename MT,
bool SO,
bool DF >
996 struct SubmatrixTrait< StrictlyUpperMatrix<MT,SO,DF> >
998 typedef typename SubmatrixTrait<MT>::Type Type;
1014 template<
typename MT,
bool SO,
bool DF >
1015 struct RowTrait< StrictlyUpperMatrix<MT,SO,DF> >
1017 typedef typename RowTrait<MT>::Type Type;
1033 template<
typename MT,
bool SO,
bool DF >
1034 struct ColumnTrait< StrictlyUpperMatrix<MT,SO,DF> >
1036 typedef typename ColumnTrait<MT>::Type Type;
Constraint on the data type.
Header file for the Rows type trait.
Header file for the subtraction trait.
Header file for the row trait.
void reset(const DiagonalProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: DiagonalProxy.h:821
StrictlyUpperMatrix specialization for sparse matrices.
Header file for the implementation of the base template of the UniUpperMatrix.
bool isDefault(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is in default state.
Definition: DiagonalProxy.h:861
Header file for the implementation of the base template of the UpperMatrix.
StrictlyUpperMatrix specialization for dense matrices.
Header file for the IsSquare type trait.
Header file for the multiplication trait.
Header file for the IsStrictlyUpper type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Matrix adapter for strictly upper triangular matrices.
Definition: Forward.h:50
Header file for all forward declarations of the math module.
Header file for the Columns type trait.
Header file for the RemoveAdaptor type trait.
void clear(const DiagonalProxy< MT > &proxy)
Clearing the represented element.
Definition: DiagonalProxy.h:841
Header file for the IsAdaptor type trait.
Header file for the implementation of the base template of the StrictlyUpperMatrix.
Header file for the DerestrictTrait class template.
Header file for the HasConstDataAccess type trait.
Compile time check for resizable data types.This type trait tests whether the given data type is a re...
Definition: IsResizable.h:75
Header file for the addition trait.
Header file for the division trait.
Header file for the submatrix trait.
#define BLAZE_CONSTRAINT_MUST_BE_NUMERIC_TYPE(T)
Constraint on the data type.In case the given data type T is not a numeric (integral or floating poin...
Definition: Numeric.h:79
Header file for the column trait.
void swap(DiagonalMatrix< MT, SO, DF > &a, DiagonalMatrix< MT, SO, DF > &b)
Swapping the contents of two matrices.
Definition: DiagonalMatrix.h:200
Header file for the mathematical trait.
boost::false_type FalseType
Type/value traits base class.The FalseType class is used as base class for type traits and value trai...
Definition: FalseType.h:61
boost::true_type TrueType
Type traits base class.The TrueType class is used as base class for type traits and value traits that...
Definition: TrueType.h:61
Header file for the IsResizable type trait.
Header file for the IsRestricted type trait.
bool isIdentity(const DenseMatrix< MT, SO > &dm)
Checks if the give dense matrix is an identity matrix.
Definition: DenseMatrix.h:1525