35#ifndef _BLAZE_MATH_EXPRESSIONS_DMATVAREXPR_H_
36#define _BLAZE_MATH_EXPRESSIONS_DMATVAREXPR_H_
77inline decltype(
auto) var_backend(
const DenseMatrix<MT,SO>& dm,
FalseType )
79 using BT = UnderlyingBuiltin_t<MT>;
83 const auto m( uniform<SO>(
rows( *dm ),
columns( *dm ),
mean( *dm ) ) );
85 return sum(
map( (*dm) - m, Pow2() ) ) *
inv( BT(
size( *dm )-1UL ) );
101inline decltype(
auto) var_backend(
const DenseMatrix<MT,SO>& dm,
TrueType )
107 return ElementType_t<MT>();
142 if(
size( *dm ) < 2UL ) {
159template< ReductionFlag RF
162decltype(
auto) var_backend(
const DenseMatrix<MT,SO>& dm,
FalseType )
164 using BT = UnderlyingBuiltin_t<MT>;
166 const size_t n( RF == rowwise ?
columns( *dm ) :
rows( *dm ) );
170 const auto m(
expand( mean<RF>( *dm ), n ) );
172 return sum<RF>(
map( (*dm) - m, Pow2() ) ) *
inv( BT( n-1UL ) );
189decltype(
auto) var_backend(
const DenseMatrix<MT,SO>& dm,
TrueType )
191 const size_t n( RF == rowwise ?
rows( *dm ) :
columns( *dm ) );
195 constexpr bool TF( ( RF == rowwise ? columnVector : rowVector ) );
197 return uniform<TF>( n, ElementType_t<MT>() );
Header file for the function trace functionality.
Header file for the IntegralConstant class template.
Header file for the invert shim.
Header file for the MAYBE_UNUSED function template.
Header file for the reduction flags.
constexpr ReductionFlag rowwise
Reduction flag for row-wise reduction operations.
Definition: ReductionFlag.h:77
size_t ReductionFlag
Type of the reduction flags.
Definition: ReductionFlag.h:57
Header file for the UnderlyingBuiltin type trait.
Base class for dense matrices.
Definition: DenseMatrix.h:82
Header file for the DenseMatrix base class.
Header file for the Pow2 functor.
decltype(auto) mean(const DenseMatrix< MT, SO > &dm)
Computes the (arithmetic) mean for the given dense matrix.
Definition: DMatMeanExpr.h:134
decltype(auto) map(const DenseMatrix< MT1, SO > &lhs, const DenseMatrix< MT2, SO > &rhs, OP op)
Elementwise evaluation of the given binary operation on each single element of the dense matrices lhs...
Definition: DMatDMatMapExpr.h:1144
decltype(auto) var(const DenseMatrix< MT, SO > &dm)
Computes the row-/column-wise variance function for the given dense matrix.
Definition: DMatVarExpr.h:241
decltype(auto) inv(const DenseMatrix< MT, SO > &dm)
Calculation of the inverse of the given dense matrix.
Definition: DMatInvExpr.h:405
decltype(auto) sum(const DenseMatrix< MT, SO > &dm)
Reduces the given dense matrix by means of addition.
Definition: DMatReduceExpr.h:2156
decltype(auto) expand(const DenseVector< VT, TF > &dv, size_t expansion)
Expansion of the given dense vector.
Definition: DVecExpandExpr.h:746
constexpr size_t rows(const Matrix< MT, SO > &matrix) noexcept
Returns the current number of rows of the matrix.
Definition: Matrix.h:644
constexpr size_t columns(const Matrix< MT, SO > &matrix) noexcept
Returns the current number of columns of the matrix.
Definition: Matrix.h:660
constexpr size_t size(const Matrix< MT, SO > &matrix) noexcept
Returns the total number of elements of the matrix.
Definition: Matrix.h:676
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.
Definition: Assert.h:101
#define BLAZE_STATIC_ASSERT_MSG(expr, msg)
Compile time assertion macro.
Definition: StaticAssert.h:123
BoolConstant< true > TrueType
Type traits base class.
Definition: IntegralConstant.h:132
BoolConstant< false > FalseType
Type/value traits base class.
Definition: IntegralConstant.h:121
constexpr void MAYBE_UNUSED(const Args &...)
Suppression of unused parameter warnings.
Definition: MaybeUnused.h:81
#define BLAZE_THROW_INVALID_ARGUMENT(MESSAGE)
Macro for the emission of a std::invalid_argument exception.
Definition: Exception.h:235
#define BLAZE_FUNCTION_TRACE
Function trace macro.
Definition: FunctionTrace.h:94
Header file for the exception macros of the math module.
Header file for basic type definitions.