11 #ifndef BOGUS_BLOCK_ZERO_HPP
12 #define BOGUS_BLOCK_ZERO_HPP
14 #include "IterableBlockObject.hpp"
20 template<
typename Scalar >
25 typedef typename Base::Index Index ;
26 typedef typename Base::ConstTransposeReturnType ConstTransposeReturnType ;
28 explicit Zero( Index rows = 0, Index cols = 0 )
29 : m_rows(rows), m_cols(cols)
32 m_rowOffsets[1] = rows ;
34 m_colOffsets[1] = cols ;
37 Index rows()
const {
return m_rows ; }
38 Index cols()
const {
return m_cols ; }
40 Index blockRows( Index )
const {
return rows() ; }
41 Index blockCols( Index )
const {
return cols() ; }
43 Index rowsOfBlocks()
const {
return 1 ; }
44 Index colsOfBlocks()
const {
return 1 ; }
46 const Index *rowOffsets( )
const {
return &m_rowOffsets ; }
47 const Index *colOffsets( )
const {
return &m_colOffsets ; }
49 ConstTransposeReturnType transpose()
const { *
this; }
51 template <
bool DoTranspose,
typename RhsT,
typename ResT >
52 void multiply(
const RhsT& , ResT& res, Scalar = 1, Scalar beta = 0 )
const ;
56 Index size()
const {
return 0 ; }
58 template <
typename Func>
59 void eachBlockOfRow(
const Index, Func ) {}
60 template <
typename Func>
61 void eachBlockOfCol(
const Index, Func ) {}
63 template <
bool DoTranspose,
typename RhsT,
typename ResT,
typename PreOp >
64 void rowMultiplyPrecompose(
const Index,
const RhsT&, ResT&,
const PreOp &)
const
66 template <
bool DoTranspose,
typename RhsT,
typename ResT,
typename PostOp >
67 void colMultiplyPostcompose(
const Index,
const RhsT&, ResT&,
const PostOp &)
const
73 Index m_rowOffsets[2] ;
74 Index m_colOffsets[2] ;
78 template <
typename Scalar_ >
82 typedef Scalar_ Scalar ;
Definition: Traits.hpp:19
Base class for matrix-like objects that define a block structure, but not a block type...
Definition: IterableBlockObject.hpp:22
Representation of the null matrix.
Definition: Zero.hpp:21