35#ifndef _BLAZE_MATH_BAND_H_
36#define _BLAZE_MATH_BAND_H_
74class Rand< Band<MT,TF,true,MF,CBAs...> >
83 template<
typename BT >
88 using BandType = RemoveReference_t<BT>;
93 for(
size_t i=0UL; i<
band.size(); ++i ) {
107 template<
typename BT
113 using BandType = RemoveReference_t<BT>;
118 for(
size_t i=0UL; i<
band.size(); ++i ) {
147class Rand< Band<MT,TF,false,MF,CBAs...> >
156 template<
typename BT >
159 using BandType = RemoveReference_t<BT>;
160 using ElementType = ElementType_t<BandType>;
167 if(
size == 0UL )
return;
169 const size_t nonzeros( rand<size_t>( 1UL,
std::ceil( 0.5*
size ) ) );
172 band.reserve( nonzeros );
174 while(
band.nonZeros() < nonzeros ) {
175 band[ rand<size_t>( 0UL,
size-1UL ) ] = rand<ElementType>();
188 template<
typename BT >
191 using BandType = RemoveReference_t<BT>;
192 using ElementType = ElementType_t<BandType>;
199 if( nonzeros >
size ) {
203 if(
size == 0UL )
return;
206 band.reserve( nonzeros );
208 while(
band.nonZeros() < nonzeros ) {
209 band[ rand<size_t>( 0UL,
size-1UL ) ] = rand<ElementType>();
222 template<
typename BT
226 using BandType = RemoveReference_t<BT>;
227 using ElementType = ElementType_t<BandType>;
234 if(
size == 0UL )
return;
236 const size_t nonzeros( rand<size_t>( 1UL,
std::ceil( 0.5*
size ) ) );
239 band.reserve( nonzeros );
241 while(
band.nonZeros() < nonzeros ) {
242 band[ rand<size_t>( 0UL,
size-1UL ) ] = rand<ElementType>(
min,
max );
257 template<
typename BT
261 using BandType = RemoveReference_t<BT>;
262 using ElementType = ElementType_t<BandType>;
269 if( nonzeros >
size ) {
273 if(
size == 0UL )
return;
276 band.reserve( nonzeros );
278 while(
band.nonZeros() < nonzeros ) {
279 band[ rand<size_t>( 0UL,
size-1UL ) ] = rand<ElementType>(
min,
max );
Header file for auxiliary alias declarations.
Header file for the RemoveReference type trait.
Pointer difference type of the Blaze library.
Constraint on the data type.
Constraint on the data type.
Constraint on the data type.
decltype(auto) band(Matrix< MT, SO > &&matrix, ptrdiff_t index, RBAs... args)
Creating a view on a specific band of the given temporary matrix.
Definition: Band.h:343
decltype(auto) min(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the componentwise minimum of the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1339
decltype(auto) max(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the componentwise maximum of the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1375
decltype(auto) ceil(const DenseMatrix< MT, SO > &dm)
Applies the ceil() function to each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1380
#define BLAZE_CONSTRAINT_MUST_BE_BAND_TYPE(T)
Constraint on the data type.
Definition: Band.h:61
#define BLAZE_CONSTRAINT_MUST_BE_SPARSE_VECTOR_TYPE(T)
Constraint on the data type.
Definition: SparseVector.h:61
#define BLAZE_CONSTRAINT_MUST_BE_DENSE_VECTOR_TYPE(T)
Constraint on the data type.
Definition: DenseVector.h:61
constexpr size_t size(const Matrix< MT, SO > &matrix) noexcept
Returns the total number of elements of the matrix.
Definition: Matrix.h:676
void randomize(T &&value)
Randomization of a given variable.
Definition: Random.h:626
#define BLAZE_THROW_INVALID_ARGUMENT(MESSAGE)
Macro for the emission of a std::invalid_argument exception.
Definition: Exception.h:235
Header file for the exception macros of the math module.
Header file for the dense vector SMP implementation.
Header file for the sparse vector SMP implementation.
Implementation of a random number generator.
Header file for the implementation of the Band view.