35 #ifndef _BLAZE_MATH_ADAPTORS_LOWERMATRIX_H_
36 #define _BLAZE_MATH_ADAPTORS_LOWERMATRIX_H_
79 template<
typename MT,
bool SO,
bool DF >
80 inline void reset( LowerMatrix<MT,SO,DF>& m );
82 template<
typename MT,
bool SO,
bool DF >
83 inline void reset( LowerMatrix<MT,SO,DF>& m,
size_t i );
85 template<
typename MT,
bool SO,
bool DF >
86 inline void clear( LowerMatrix<MT,SO,DF>& m );
88 template<
typename MT,
bool SO,
bool DF >
89 inline bool isDefault(
const LowerMatrix<MT,SO,DF>& m );
91 template<
typename MT,
bool SO,
bool DF >
92 inline void swap( LowerMatrix<MT,SO,DF>& a, LowerMatrix<MT,SO,DF>& b ) ;
104 template<
typename MT
127 template<
typename MT
144 template<
typename MT
172 template<
typename MT
191 template<
typename MT
215 template<
typename MT
218 inline MT& derestrict( LowerMatrix<MT,SO,DF>& m )
236 template<
typename MT,
bool SO,
bool DF >
237 struct Rows< LowerMatrix<MT,SO,DF> > :
public Rows<MT>
253 template<
typename MT,
bool SO,
bool DF >
254 struct Columns< LowerMatrix<MT,SO,DF> > :
public Columns<MT>
270 template<
typename MT,
bool SO,
bool DF >
271 struct IsSquare< LowerMatrix<MT,SO,DF> > :
public TrueType
290 template<
typename MT,
bool SO,
bool DF >
291 struct IsLower< LowerMatrix<MT,SO,DF> > :
public TrueType
310 template<
typename MT,
bool SO,
bool DF >
311 struct IsAdaptor< LowerMatrix<MT,SO,DF> > :
public TrueType
330 template<
typename MT,
bool SO,
bool DF >
331 struct IsRestricted< LowerMatrix<MT,SO,DF> > :
public TrueType
350 template<
typename MT,
bool SO >
351 struct HasConstDataAccess< LowerMatrix<MT,SO,true> > :
public TrueType
370 template<
typename MT,
bool SO,
bool DF >
371 struct IsResizable< LowerMatrix<MT,SO,DF> > :
public IsResizable<MT>::Type
373 enum { value = IsResizable<MT>::value };
374 typedef typename IsResizable<MT>::Type Type;
390 template<
typename MT,
bool SO,
bool DF >
391 struct RemoveAdaptor< LowerMatrix<MT,SO,DF> >
409 template<
typename MT,
bool SO,
bool DF >
410 struct DerestrictTrait< LowerMatrix<MT,SO,DF> >
428 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
429 struct AddTrait< LowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
431 typedef typename AddTrait< MT, StaticMatrix<T,M,N,SO2> >::Type Type;
434 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
435 struct AddTrait< StaticMatrix<T,M,N,SO1>, LowerMatrix<MT,SO2,DF> >
437 typedef typename AddTrait< StaticMatrix<T,M,N,SO1>, MT >::Type Type;
440 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
441 struct AddTrait< LowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
443 typedef typename AddTrait< MT, HybridMatrix<T,M,N,SO2> >::Type Type;
446 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
447 struct AddTrait< HybridMatrix<T,M,N,SO1>, LowerMatrix<MT,SO2,DF> >
449 typedef typename AddTrait< HybridMatrix<T,M,N,SO1>, MT >::Type Type;
452 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
453 struct AddTrait< LowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
455 typedef typename AddTrait< MT, DynamicMatrix<T,SO2> >::Type Type;
458 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
459 struct AddTrait< DynamicMatrix<T,SO1>, LowerMatrix<MT,SO2,DF> >
461 typedef typename AddTrait< DynamicMatrix<T,SO1>, MT >::Type Type;
464 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
465 struct AddTrait< LowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
467 typedef typename AddTrait< MT, CompressedMatrix<T,SO2> >::Type Type;
470 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
471 struct AddTrait< CompressedMatrix<T,SO1>, LowerMatrix<MT,SO2,DF> >
473 typedef typename AddTrait< CompressedMatrix<T,SO1>, MT >::Type Type;
476 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
477 struct AddTrait< LowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
479 typedef typename AddTrait<MT1,MT2>::Type Type;
482 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
483 struct AddTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, LowerMatrix<MT2,SO2,DF2> >
485 typedef typename AddTrait<MT1,MT2>::Type Type;
488 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
489 struct AddTrait< LowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
491 typedef LowerMatrix< typename AddTrait<MT1,MT2>::Type > Type;
507 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
508 struct SubTrait< LowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
510 typedef typename SubTrait< MT, StaticMatrix<T,M,N,SO2> >::Type Type;
513 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
514 struct SubTrait< StaticMatrix<T,M,N,SO1>, LowerMatrix<MT,SO2,DF> >
516 typedef typename SubTrait< StaticMatrix<T,M,N,SO1>, MT >::Type Type;
519 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
520 struct SubTrait< LowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
522 typedef typename SubTrait< MT, HybridMatrix<T,M,N,SO2> >::Type Type;
525 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
526 struct SubTrait< HybridMatrix<T,M,N,SO1>, LowerMatrix<MT,SO2,DF> >
528 typedef typename SubTrait< HybridMatrix<T,M,N,SO1>, MT >::Type Type;
531 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
532 struct SubTrait< LowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
534 typedef typename SubTrait< MT, DynamicMatrix<T,SO2> >::Type Type;
537 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
538 struct SubTrait< DynamicMatrix<T,SO1>, LowerMatrix<MT,SO2,DF> >
540 typedef typename SubTrait< DynamicMatrix<T,SO1>, MT >::Type Type;
543 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
544 struct SubTrait< LowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
546 typedef typename SubTrait< MT, CompressedMatrix<T,SO2> >::Type Type;
549 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
550 struct SubTrait< CompressedMatrix<T,SO1>, LowerMatrix<MT,SO2,DF> >
552 typedef typename SubTrait< CompressedMatrix<T,SO1>, MT >::Type Type;
555 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
556 struct SubTrait< LowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
558 typedef typename SubTrait<MT1,MT2>::Type Type;
561 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
562 struct SubTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, LowerMatrix<MT2,SO2,DF2> >
564 typedef typename SubTrait<MT1,MT2>::Type Type;
567 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
568 struct SubTrait< LowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
570 typedef LowerMatrix< typename SubTrait<MT1,MT2>::Type > Type;
586 template<
typename MT,
bool SO,
bool DF,
typename T >
587 struct MultTrait< LowerMatrix<MT,SO,DF>, T >
589 typedef LowerMatrix< typename MultTrait<MT,T>::Type > Type;
593 template<
typename T,
typename MT,
bool SO,
bool DF >
594 struct MultTrait< T, LowerMatrix<MT,SO,DF> >
596 typedef LowerMatrix< typename MultTrait<T,MT>::Type > Type;
600 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
601 struct MultTrait< LowerMatrix<MT,SO,DF>, StaticVector<T,N,false> >
603 typedef typename MultTrait< MT, StaticVector<T,N,false> >::Type Type;
606 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
607 struct MultTrait< StaticVector<T,N,true>, LowerMatrix<MT,SO,DF> >
609 typedef typename MultTrait< StaticVector<T,N,true>, MT >::Type Type;
612 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
613 struct MultTrait< LowerMatrix<MT,SO,DF>, HybridVector<T,N,false> >
615 typedef typename MultTrait< MT, HybridVector<T,N,false> >::Type Type;
618 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
619 struct MultTrait< HybridVector<T,N,true>, LowerMatrix<MT,SO,DF> >
621 typedef typename MultTrait< HybridVector<T,N,true>, MT >::Type Type;
624 template<
typename MT,
bool SO,
bool DF,
typename T >
625 struct MultTrait< LowerMatrix<MT,SO,DF>, DynamicVector<T,false> >
627 typedef typename MultTrait< MT, DynamicVector<T,false> >::Type Type;
630 template<
typename T,
typename MT,
bool SO,
bool DF >
631 struct MultTrait< DynamicVector<T,true>, LowerMatrix<MT,SO,DF> >
633 typedef typename MultTrait< DynamicVector<T,true>, MT >::Type Type;
636 template<
typename MT,
bool SO,
bool DF,
typename T >
637 struct MultTrait< LowerMatrix<MT,SO,DF>, CompressedVector<T,false> >
639 typedef typename MultTrait< MT, CompressedVector<T,false> >::Type Type;
642 template<
typename T,
typename MT,
bool SO,
bool DF >
643 struct MultTrait< CompressedVector<T,true>, LowerMatrix<MT,SO,DF> >
645 typedef typename MultTrait< CompressedVector<T,true>, MT >::Type Type;
648 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
649 struct MultTrait< LowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
651 typedef typename MultTrait< MT, StaticMatrix<T,M,N,SO2> >::Type Type;
654 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
655 struct MultTrait< StaticMatrix<T,M,N,SO1>, LowerMatrix<MT,SO2,DF> >
657 typedef typename MultTrait< StaticMatrix<T,M,N,SO1>, MT >::Type Type;
660 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
661 struct MultTrait< LowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
663 typedef typename MultTrait< MT, HybridMatrix<T,M,N,SO2> >::Type Type;
666 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
667 struct MultTrait< HybridMatrix<T,M,N,SO1>, LowerMatrix<MT,SO2,DF> >
669 typedef typename MultTrait< HybridMatrix<T,M,N,SO1>, MT >::Type Type;
672 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
673 struct MultTrait< LowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
675 typedef typename MultTrait< MT, DynamicMatrix<T,SO2> >::Type Type;
678 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
679 struct MultTrait< DynamicMatrix<T,SO1>, LowerMatrix<MT,SO2,DF> >
681 typedef typename MultTrait< DynamicMatrix<T,SO1>, MT >::Type Type;
684 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
685 struct MultTrait< LowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
687 typedef typename MultTrait< MT, CompressedMatrix<T,SO2> >::Type Type;
690 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
691 struct MultTrait< CompressedMatrix<T,SO1>, LowerMatrix<MT,SO2,DF> >
693 typedef typename MultTrait< CompressedMatrix<T,SO1>, MT >::Type Type;
696 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
697 struct MultTrait< LowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
699 typedef typename MultTrait<MT1,MT2>::Type Type;
702 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
703 struct MultTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, LowerMatrix<MT2,SO2,DF2> >
705 typedef typename MultTrait<MT1,MT2>::Type Type;
708 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
709 struct MultTrait< LowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
711 typedef LowerMatrix< typename MultTrait<MT1,MT2>::Type > Type;
727 template<
typename MT,
bool SO,
bool DF,
typename T >
728 struct DivTrait< LowerMatrix<MT,SO,DF>, T >
730 typedef LowerMatrix< typename DivTrait<MT,T>::Type > Type;
747 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
748 struct MathTrait< LowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
750 typedef LowerMatrix< typename MathTrait<MT1,MT2>::HighType > HighType;
751 typedef LowerMatrix< typename MathTrait<MT1,MT2>::LowType > LowType;
767 template<
typename MT,
bool SO,
bool DF >
768 struct SubmatrixTrait< LowerMatrix<MT,SO,DF> >
770 typedef typename SubmatrixTrait<MT>::Type Type;
786 template<
typename MT,
bool SO,
bool DF >
787 struct RowTrait< LowerMatrix<MT,SO,DF> >
789 typedef typename RowTrait<MT>::Type Type;
805 template<
typename MT,
bool SO,
bool DF >
806 struct ColumnTrait< LowerMatrix<MT,SO,DF> >
808 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.
LowerMatrix specialization for dense matrices.
Matrix adapter for lower triangular matrices.
Definition: Forward.h:48
void reset(const DiagonalProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: DiagonalProxy.h:821
bool isDefault(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is in default state.
Definition: DiagonalProxy.h:861
Header file for the IsSquare type trait.
Header file for the multiplication trait.
Header file for the implementation of the base template of the LowerMatrix.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Header file for all forward declarations of the math module.
Header file for the Columns type trait.
Header file for the IsLower 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 DerestrictTrait class template.
Header file for the HasConstDataAccess type trait.
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.
LowerMatrix specialization for sparse matrices.
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.